#include <TapiUtility.h>
#include <ITapiNetwork.h>
#include <glib.h>
+#include <device/battery-internal.h>
wifi_manager_h wifi = NULL;
static bool display_on;
static int ss_val = 0;
static int ss_flag = 0;
static history_item_s *data_obj = NULL;
+struct timeval prev_event_time;
display_state_e display_flag = DISPLAY_STATE_SCREEN_OFF;
static int listener_hsp = -1;
return BATTERY_MONITOR_ERROR_NONE;
}
-static int bm_battery_level_listener()
+static int fill_battery_info()
{
ENTER;
- int ret_val = BATTERY_MONITOR_ERROR_NONE;
-
- int battery_level;
- ret_val = device_battery_get_percent(&battery_level);
- if (ret_val != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery percentage (%d)", ret_val);
- return -1;
- }
-
- EXIT;
- return battery_level;
-}
-
-static int bm_battery_status_listener()
-{
- ENTER;
- int ret_val = BATTERY_MONITOR_ERROR_NONE;
-
- device_battery_status_e battery_status;
- ret_val = device_battery_get_status(&battery_status);
- if (ret_val != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery status (%d)", ret_val);
- return -1;
- }
-
- BD_BSTA_IDX bm_status;
- if (battery_status == DEVICE_BATTERY_STATUS_CHARGING)
- bm_status = BD_BSTA_CHAR;
- else if (battery_status == DEVICE_BATTERY_STATUS_DISCHARGING)
- bm_status = BD_BSTA_DISC;
- else if (battery_status == DEVICE_BATTERY_STATUS_FULL)
- bm_status = BD_BSTA_FULL;
- else if (battery_status == DEVICE_BATTERY_STATUS_NOT_CHARGING)
- bm_status = BD_BSTA_NCHA;
- else
- return BD_BSTA_NONE;
-
- EXIT;
- return bm_status;
-}
-
-static int bm_battery_health_listener()
-{
- ENTER;
- int ret_val = BATTERY_MONITOR_ERROR_NONE;
-
- device_battery_health_e health;
- BD_BHLT_IDX bm_health;
- ret_val = device_battery_get_health(&health);
- if (ret_val != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery health (%d)", ret_val);
- return -1;
- }
-
- if (health == DEVICE_BATTERY_HEALTH_GOOD)
- bm_health = BD_BHLT_GOOD;
- else if (health == DEVICE_BATTERY_HEALTH_COLD)
- bm_health = BD_BHLT_CLD;
- else if (health == DEVICE_BATTERY_HEALTH_DEAD)
- bm_health = BD_BHLT_DEAD;
- else if (health == DEVICE_BATTERY_HEALTH_OVER_HEAT)
- bm_health = BD_BHLT_OVRH;
- else if (health == DEVICE_BATTERY_HEALTH_OVER_VOLTAGE)
- bm_health = BD_BHLT_OVRV;
- else
- return BD_BHLT_NONE;
-
- EXIT;
- return bm_health;
-}
-
-static int bm_battery_plugtype_listener()
-{
- ENTER;
- int ret_val = BATTERY_MONITOR_ERROR_NONE;
-
- device_battery_power_source_e source;
- ret_val = device_battery_get_power_source(&source);
- if (ret_val != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery percentage (%d)", ret_val);
- return -1;
- }
-
- BD_BPLT_IDX bm_plugtype = BD_BPLT_NONE;
- if (source == DEVICE_BATTERY_POWER_SOURCE_AC)
- bm_plugtype = BD_BPLT_AC;
- else if (source == DEVICE_BATTERY_POWER_SOURCE_USB)
- bm_plugtype = BD_BPLT_USB;
- else if (source == DEVICE_BATTERY_POWER_SOURCE_WIRELESS)
- bm_plugtype = BD_BPLT_WL;
- else if (source == DEVICE_BATTERY_POWER_SOURCE_NONE)
- bm_plugtype = BD_BPLT_NONE;
-
- EXIT;
- return bm_plugtype;
-}
+ struct battery_info info;
+ int ret = device_battery_get_info(&info);
+ if (ret == DEVICE_ERROR_NONE) {
+ data_obj->battery_level = info.capacity;
+ if (data_obj->battery_level < 0)
+ _ERR("Failed to get ts->battery_level = %d ", data_obj->battery_level);
+
+ size_t len = strlen(info.status);
+ if (!strncmp(info.status, "Charging", len))
+ data_obj->battery_status = BD_BSTA_CHAR;
+ else if (!strncmp(info.status, "Discharging", len))
+ data_obj->battery_status = BD_BSTA_DISC;
+ else if (!strncmp(info.status, "Full", len))
+ data_obj->battery_status = BD_BSTA_FULL;
+ else if (!strncmp(info.status, "Not charging", len))
+ data_obj->battery_status = BD_BSTA_NCHA;
+ else {
+ _ERR("Failed to get info.status = %s ", info.status);
+ data_obj->battery_status = BD_BSTA_UNKN;
+ }
-static int bm_battery_voltage_temperature_charge_listener(history_item_s *ts)
-{
- ENTER;
+ len = strlen(info.health);
+ if (!strncmp(info.health, "Good", len))
+ data_obj->battery_health = BD_BHLT_GOOD;
+ else if (!strncmp(info.health, "Cold", len))
+ data_obj->battery_health = BD_BHLT_CLD;
+ else if (!strncmp(info.health, "Dead", len))
+ data_obj->battery_health = BD_BHLT_DEAD;
+ else if (!strncmp(info.health, "Overheat", len))
+ data_obj->battery_health = BD_BHLT_OVRH;
+ else if (!strncmp(info.health, "Over voltage", len))
+ data_obj->battery_health = BD_BHLT_OVRV;
+ else
+ data_obj->battery_health = BD_BHLT_UNKN;
+
+ len = strlen(info.power_source);
+ if (!strncmp(info.power_source, "ac", len))
+ data_obj->battery_plugtype = BD_BPLT_AC;
+ else if (!strncmp(info.power_source, "usb", len))
+ data_obj->battery_plugtype = BD_BPLT_USB;
+ else if (!strncmp(info.power_source, "wireless", len))
+ data_obj->battery_plugtype = BD_BPLT_WL;
+ else
+ data_obj->battery_plugtype = BD_BPLT_NONE;
- device_battery_property_e property;
- int val, ret;
+ _INFO("battery_level = %d, battery_status = %d, battery_health = %d, battery_plugtype = %d",
+ data_obj->battery_level, data_obj->battery_status, data_obj->battery_health, data_obj->battery_plugtype);
- /* get the battery voltage*/
- property = DEVICE_BATTERY_PROPERTY_VOLTAGE_NOW;
- ret = device_battery_get_property(property, &val);
- if (ret != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery voltage (%d)", ret);
- return ret;
- }
- ts->battery_voltage = val;
+ data_obj->battery_temperature = info.temperature;
+ data_obj->battery_voltage = info.voltage_now;
- /* get the battery temperature*/
- property = DEVICE_BATTERY_PROPERTY_TEMPERATURE;
- ret = device_battery_get_property(property, &val);
- if (ret != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery temperature (%d)", ret);
- return ret;
+ _INFO("battery_voltage = %d, battery_temperature = %d", data_obj->battery_voltage, data_obj->battery_temperature);
+ } else {
+ _ERR("Failed to get battery info (%d)", ret);
}
- ts->battery_temperature = val;
- /* get the battery charge*/
- /* property = DEVICE_BATTERY_PROPERTY_CAPACITY;
- ret = device_battery_get_property(property, &val);
- if (ret != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("Failed to get battery capacity (%d)", ret); //LCOV_EXCL_LINE Logs
- return ret;
- }
- _INFO("success to get battery capacity (%d)", ret);
- */
-
- ts->battery_charge = 0;
EXIT;
- return BATTERY_MONITOR_ERROR_NONE;
+ return ret;
}
static void fill_bt_adapter_state_changed_data(int adapter_state)
{
ENTER;
- _INFO("state: %s", (adapter_state == BT_ADAPTER_ENABLED) ? "ENABLED" : "DISABLED");
+ _WARN("state: %s", (adapter_state == BT_ADAPTER_ENABLED) ? "ENABLED" : "DISABLED");
int bt_state;
if (adapter_state == BT_ADAPTER_ENABLED)
bt_state = 1;
{
ENTER;
- _INFO(" discovery_state = %d", discovery_state);
+ _WARN(" discovery_state = %d", discovery_state);
if (data_obj) {
switch (discovery_state) {
{
ENTER;
- _INFO("__bt_device_connection_state_changed_cb [%d]", connected);
+ _WARN("__bt_device_connection_state_changed_cb [%d]", connected);
if (!connected)
_INFO("bt is disconnected");
{
ENTER;
- _INFO(" Wifi Device state changed callback");
+ _WARN(" Wifi Device state changed callback");
if (state == WIFI_MANAGER_DEVICE_STATE_ACTIVATED)
_INFO(", state : Activated\n");
{
ENTER;
- _INFO("Wifi Scan changed, scan state : %d\n", state);
+ _WARN("Wifi Scan changed, scan state : %d\n", state);
if (data_obj) {
if (state == WIFI_MANAGER_SCAN_STATE_SCANNING) {
data_obj->event_code = ET_NONE;
{
ENTER;
- _INFO("Wifi Connection changed, connection state : %d\n", state);
+ _WARN("Wifi Connection changed, connection state : %d\n", state);
if (data_obj) {
switch (state) {
static void fill_device_display_change(int value)
{
ENTER;
- _INFO("device state changed succeeded\n");
+ _WARN("device state changed succeeded\n");
switch (value) {
case DISPLAY_STATE_NORMAL:
{
ENTER;
- _INFO(" device brightness changed =%d ", brightness_level);
+ _WARN(" device brightness changed =%d ", brightness_level);
if (data_obj) {
data_obj->state_1 &= ~brightness_val;
brightness_val = brightness_level;
{
ENTER;
- _INFO(" device battery_capacity changed =%d ", charging_level);
+ _WARN(" device battery_capacity changed =%d ", charging_level);
if (data_obj) {
data_obj->event_code = ET_NONE;
data_obj->event_tag = NULL;
{
ENTER;
- _INFO(" device signal_strength changed =%d ", ss);
+ _WARN(" device signal_strength changed =%d ", ss);
if (data_obj) {
data_obj->state_1 &= ~ss_val << ST1_PHONE_SIGNAL_STRENGTH_SHIFT;
ss_val = ss;
{
ENTER;
- _INFO(" sleep/wake up changed =%d ", val);
+ _WARN(" sleep/wake up changed =%d ", val);
if (val) {
data_obj->event_code = ET_NONE;
data_obj->event_tag = NULL;
{
ENTER;
- _INFO(" maps location changed =%d ", gps);
+ _WARN(" maps location changed =%d ", gps);
if (data_obj) {
if (gps) {
data_obj->event_code = ET_NONE;
{
ENTER;
- _INFO(" fill_powerlock_change changed =%d ", lock);
- if(prev_wakeup == lock)
+ _WARN(" fill_powerlock_change changed =%d ", lock);
+ if (prev_wakeup == lock)
return 1;
else
prev_wakeup = lock;
void *prv_app_id = NULL;
int error_code = 0;
- _INFO(" App status changed for = %s ", app_id);
+ _WARN(" App status changed for = %s ", app_id);
if (data_obj) {
if (val) {
data_obj->event_code = ET_NONE;
{
ENTER;
- _INFO("fill_modem_power_state_change - state[%d]", state);
+ _WARN("fill_modem_power_state_change - state[%d]", state);
if (data_obj && state == 0) { /* ON */
data_obj->event_code = ET_NONE;
gettimeofday(&tv, NULL);
data_obj->time_s = ((long long)tv.tv_sec * 1000) + ((long long)tv.tv_usec / 1000);
- data_obj->battery_level = bm_battery_level_listener();
- if (data_obj->battery_level < 0) {
- _ERR("Failed to get ts->battery_level = %d ", data_obj->battery_level);
- return;
- } else {
- if (type == LISTEN_BATTERY_CAPACITY_CHANGE && prev_battery_level == data_obj->battery_level)
- return;
- else
- prev_battery_level = data_obj->battery_level;
- }
-
- data_obj->battery_status = bm_battery_status_listener();
- if (data_obj->battery_status < 0) {
- _ERR("Failed to get ts->battery_status = %d ", data_obj->battery_status);
- return;
- }
+ double time_taken;
+ time_taken = (tv.tv_sec - prev_event_time.tv_sec) * 1000000;
+ time_taken = (time_taken + (tv.tv_usec - prev_event_time.tv_usec)) * 0.000001;
- data_obj->battery_health = bm_battery_health_listener();
- if (data_obj->battery_health < 0) {
- _ERR("Failed to get ts->battery_health = %d ", data_obj->battery_health);
- return;
- }
+ _DBG("time_taken = %lf ", time_taken);
- data_obj->battery_plugtype = bm_battery_plugtype_listener();
- if (data_obj->battery_plugtype < 0)
- _WARN("Failed to get ts->battery_plugtype = %d ", data_obj->battery_plugtype);
+ if (time_taken >= BATTERY_INFO_DELAY) {
+ if (fill_battery_info() != DEVICE_ERROR_NONE)
+ _ERR("Fill Battery information failed ");
- _INFO("battery_level = %d, battery_status = %d, battery_health = %d, battery_plugtype = %d",
- data_obj->battery_level, data_obj->battery_status, data_obj->battery_health, data_obj->battery_plugtype);
+ prev_event_time = tv;
+ } else {
+ _DBG("Event occur too early, not updating battery information ");
+ }
- int ret = bm_battery_voltage_temperature_charge_listener(data_obj);
- if (ret != BATTERY_MONITOR_ERROR_NONE) {
- _ERR("bm_battery_voltage_temperature_charge_listener failed ");
+ if (type == LISTEN_BATTERY_CAPACITY_CHANGE && prev_battery_level == data_obj->battery_level)
return;
- } else
- _INFO("battery_voltage = %d, battery_temperature = %d, battery_charge = %d",
- data_obj->battery_voltage, data_obj->battery_temperature, data_obj->battery_charge);
+ else
+ prev_battery_level = data_obj->battery_level;
if (data_obj->event_tag) {
data_obj->event_tag->uid = 1000;
else
bt_state = 0;
- if(bt_adaptor == bt_state)
+ if (bt_adaptor == bt_state)
return;
else
bt_adaptor = bt_state;
display_state_e state = (display_state_e)value;
- if(state == display_flag)
+ if (state == display_flag)
return;
else
display_flag = state;
_INFO(" device location changed = %d ", location);
- if(location == location_flag)
+ if (location == location_flag)
return;
else
location_flag = location;
int state = -1;
/* handling only On/Off states */
- switch(*status) {
- case 0: /* ON */
- state = 0;
- modem_flag = 1;
- break;
- case 1: /* OFF */
- state = 1;
- modem_flag = 0;
- break;
- default:
- break;
+ switch (*status) {
+ case 0: /* ON */
+ state = 0;
+ modem_flag = 1;
+ break;
+ case 1: /* OFF */
+ state = 1;
+ modem_flag = 0;
+ break;
+ default:
+ break;
}
if (state != -1) {
gpointer user_data)
{
ENTER;
- int pid,val;
+ int pid, val;
char *appid;
char *status;
return BATTERY_MONITOR_ERROR_OUT_OF_MEMORY;
}
+ if (fill_battery_info() != DEVICE_ERROR_NONE) {
+ _ERR("Battery information failed ");
+ data_obj->battery_level = 0;
+ data_obj->battery_temperature = 0;
+ data_obj->battery_voltage = 0;
+ data_obj->battery_health = BD_BHLT_UNKN;
+ data_obj->battery_plugtype = BD_BPLT_NONE;
+ data_obj->battery_status = BD_BSTA_UNKN;
+ }
+
+ gettimeofday(&prev_event_time, NULL);
+
EXIT;
return BATTERY_MONITOR_ERROR_NONE;
}
_ERR("pthread_attr_setdetachstate failed");
/*Initialize DBus*/
- if(bm_listener_dbus_init())
+ if (bm_listener_dbus_init())
_ERR("bm_listener_dbus_init failed \n");
/* Wifi callbacks */
}
/*Dbus Deinitialize*/
- if(bm_listener_dbus_deinit())
+ if (bm_listener_dbus_deinit())
_ERR("failed to de-init dbus ");
/* de-initialize pthread attributes */