return;
_I("Restart health timer.");
- abnormal_timer = g_timeout_add_seconds(ABNORMAL_CHECK_TIMER_INTERVAL,
+ abnormal_timer = g_timeout_add_seconds(DEVICED_BATTERY_ABNORMAL_CHECK_TIMER_INTERVAL,
health_timer_cb, NULL);
if (abnormal_timer == 0)
_E("Failed to add abnormal check timer.");
#define BATTERY_LEVEL_CHECK_LOW 5
#define BATTERY_LEVEL_CHECK_CRITICAL 1
-enum battery_option_type {
- BAT_OPT_NONE,
- BAT_OPT_WARNING,
- BAT_OPT_CRITICAL,
- BAT_OPT_POWEROFF,
- BAT_OPT_ERR_TEMP_LOW,
- BAT_OPT_ERR_TEMP_HIGH,
- BAT_OPT_ERR_CF_OPEN,
-};
-
#define METHOD_NAME_MAX 32
struct battery_config_charger_event_handler {
popup = 0;
if (battery->charge_now != CHARGER_CHARGING &&
battery->charge_full != CHARGING_FULL)
- lowbat_popup(BAT_OPT_NONE);
+ lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_NONE);
else
_I("Skip low battery popup during charging.");
}
static int lowbat_popup_option;
static char *value;
- if (option == BAT_OPT_NONE) {
+ if (option == SYSCOMMON_DEVICED_BATTERY_OPT_NONE) {
if (!value)
return -1;
else
goto direct_launch;
}
- if (option == BAT_OPT_POWEROFF)
+ if (option == SYSCOMMON_DEVICED_BATTERY_OPT_POWEROFF)
launched_poweroff = 0;
switch (option) {
- case BAT_OPT_CRITICAL:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_CRITICAL:
value = "lowbattery_critical";
break;
- case BAT_OPT_WARNING:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_WARNING:
value = "lowbattery_warning";
break;
- case BAT_OPT_POWEROFF:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_POWEROFF:
value = "poweroff";
break;
- case BAT_OPT_ERR_TEMP_LOW:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_LOW:
value = "chargeerrlow";
break;
- case BAT_OPT_ERR_TEMP_HIGH:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_HIGH:
value = "chargeerrhigh";
break;
- case BAT_OPT_ERR_CF_OPEN:
+ case SYSCOMMON_DEVICED_BATTERY_OPT_ERR_CF_OPEN:
value = "battdisconnect";
break;
default:
return 0;
}
- if (lowbat_popup_option == BAT_OPT_POWEROFF)
+ if (lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_POWEROFF)
launched_poweroff = 1;
if (battery_do_not_disturb()) {
_I("block LCD and %s Popup", value);
return 0;
}
- if (lowbat_popup_option == BAT_OPT_ERR_TEMP_LOW ||
- lowbat_popup_option == BAT_OPT_ERR_TEMP_HIGH ||
- lowbat_popup_option == BAT_OPT_ERR_CF_OPEN) {
+ if (lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_LOW ||
+ lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_HIGH ||
+ lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_CF_OPEN) {
display_state_transition_request_state_transition_with_option(DEVICED_EVENT_BATTERY_CAPACITY_LOW, LCD_DIM);
} else {
display_state_transition_request_state_transition_with_option(DEVICED_EVENT_BATTERY_CAPACITY_LOW, LCD_NORMAL);
}
- if (lowbat_popup_option == BAT_OPT_ERR_TEMP_LOW ||
- lowbat_popup_option == BAT_OPT_ERR_TEMP_HIGH ||
- lowbat_popup_option == BAT_OPT_ERR_CF_OPEN)
+ if (lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_LOW ||
+ lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_HIGH ||
+ lowbat_popup_option == SYSCOMMON_DEVICED_BATTERY_OPT_ERR_CF_OPEN)
return launch_system_app(APP_ABNORMAL,
2, APP_KEY_TYPE, value);
return launch_system_app(APP_DEFAULT,
static int battery_warning_low_act(void *data)
{
- (void)lowbat_popup(BAT_OPT_WARNING);
+ (void)lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_WARNING);
return 0;
}
static int battery_critical_low_act(void *data)
{
- (void)lowbat_popup(BAT_OPT_CRITICAL);
+ (void)lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_CRITICAL);
return 0;
}
int battery_charge_err_cf_act(void *data)
{
- return lowbat_popup(BAT_OPT_ERR_CF_OPEN);
+ return lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_ERR_CF_OPEN);
}
int battery_charge_err_low_act(void *data)
{
display_lock_request_lock_with_option(DEVICED_EVENT_BATTERY_HEALTH_OVERCOOL, LCD_OFF, STAY_CUR_STATE, 60000);
- return lowbat_popup(BAT_OPT_ERR_TEMP_LOW);
+ return lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_LOW);
}
int battery_charge_err_high_act(void *data)
{
display_lock_request_lock_with_option(DEVICED_EVENT_BATTERY_HEALTH_OVERHEAT, LCD_OFF, STAY_CUR_STATE, 60000);
- return lowbat_popup(BAT_OPT_ERR_TEMP_HIGH);
+ return lowbat_popup(SYSCOMMON_DEVICED_BATTERY_OPT_ERR_TEMP_HIGH);
}
static void lowbat_scenario_init(void)
CRITICAL_LOG("Popup: Battery health status is not good, %s.", battery.health_s);
launch_health_popup();
if (!abnormal_health_popup_timer)
- abnormal_health_popup_timer = g_timeout_add_seconds(ABNORMAL_CHECK_TIMER_INTERVAL, health_popup_cb, NULL);
+ abnormal_health_popup_timer = g_timeout_add_seconds(DEVICED_BATTERY_ABNORMAL_CHECK_TIMER_INTERVAL, health_popup_cb, NULL);
} else {
battery_pm_change_internal(DEVICED_EVENT_MISC_POPUP, LCD_NORMAL);
syscommon_notifier_emit_notify(DEVICED_NOTIFIER_BATTERY_HEALTH, (void *)&battery.health);
else if (battery.health == SYSCOMMON_DEVICED_BATTERY_HEALTH_HIGH)
battery_charge_err_high_act(NULL);
- abnormal_health_popup_timer = g_timeout_add_seconds(ABNORMAL_CHECK_TIMER_INTERVAL, health_popup_cb, NULL);
+ abnormal_health_popup_timer = g_timeout_add_seconds(DEVICED_BATTERY_ABNORMAL_CHECK_TIMER_INTERVAL, health_popup_cb, NULL);
launching_health_popup = false;
}
#define CHARGER_TYPE_SIGNAL "ChargerType"
#define SIGNAL_CHARGEERR_RESPONSE "ChargeErrResponse"
-#define ABNORMAL_CHECK_TIMER_INTERVAL 60
-
enum device_change_type {
DEVICE_CHANGE_ABNORMAL,
DEVICE_CHANGE_NORMAL,
#include <system/syscommon-plugin-deviced-battery-interface.h>
#include <system/syscommon-plugin-deviced-common-interface.h>
+#include "battery.h"
+#include "lowbat-handler.h"
#include "power-supply.h"
#include "shared/common.h"
#include "core/log.h"
case DEVICED_BATTERY_ATTR_STRING_STATUS_HEALTH:
ret = power_supply_get_battery_status_health_string(&attr_data.s);
break;
+ case DEVICED_BATTERY_ATTR_BOOL_DO_NOT_DISTURB:
+ attr_data.b = battery_do_not_disturb();
+ break;
default:
ret = -EINVAL;
break;
return 0;
}
+static int set_battery_attr_data(int resource_id,
+ const struct syscommon_resman_resource_attribute *attr,
+ const void *data, int count)
+{
+ int ret = 0;
+
+ if (!data)
+ return -EINVAL;
+
+ switch (attr->id) {
+ case DEVICED_BATTERY_ATTR_INT_LOW_BATTERY_POPUP:
+ {
+ enum syscommon_deviced_battery_option_type battery_option = *(enum syscommon_deviced_battery_option_type *) data;
+ ret = lowbat_popup(battery_option);
+ if (ret < 0)
+ return ret;
+ }
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static const struct syscommon_resman_resource_attribute battery_attrs[] = {
{
.name = "DEVICED_BATTERY_ATTR_INT_STATUS_HEALTH",
.get = get_battery_attr_data,
.is_supported = syscommon_resman_resource_attr_supported_always,
},
- },
+ }, {
+ .name = "DEVICED_BATTERY_ATTR_BOOL_DO_NOT_DISTURB",
+ .id = DEVICED_BATTERY_ATTR_BOOL_DO_NOT_DISTURB,
+ .type = SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN,
+ .flag = SYSCOMMON_RESMAN_RESOURCE_FLAG_PUBLIC,
+ .ops = {
+ .get = get_battery_attr_data,
+ .is_supported = syscommon_resman_resource_attr_supported_always,
+ },
+ }, {
+ .name = "DEVICED_BATTERY_ATTR_INT_LOW_BATTERY_POPUP",
+ .id = DEVICED_BATTERY_ATTR_INT_LOW_BATTERY_POPUP,
+ .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
+ .flag = SYSCOMMON_RESMAN_RESOURCE_FLAG_PUBLIC,
+ .ops = {
+ .set = set_battery_attr_data,
+ .is_supported = syscommon_resman_resource_attr_supported_always,
+ },
+ }
};
static const struct syscommon_resman_resource_driver deviced_battery_driver = {