[Non-ACR] add modem power state listener 54/233554/5
authorAbhishek Vijay <abhishek.v@samsung.com>
Fri, 15 May 2020 09:17:02 +0000 (14:47 +0530)
committerAbhishek Vijay <abhishek.v@samsung.com>
Mon, 18 May 2020 10:14:25 +0000 (10:14 +0000)
Change-Id: I99664719e69106b8d5a556b89a8818f5ef180bf9

include/bm_listeners.h
src/battery_dump/bm_listeners.c

index f96028e..c9266bc 100644 (file)
@@ -44,7 +44,7 @@
 #define LISTEN_POWERLOCKUNLOCK_STATE 12
 #define LISTEN_SLEEP_WAKEUP_STATE 13
 #define LISTEN_APP_STATUS 14
-
+#define LISTEN_MODEM_POWER_STATE 15
 
 
 
index 0feddef..2aab39c 100644 (file)
@@ -1460,7 +1460,7 @@ static void __bm_location_change(keynode_t *key, void* data)
        return;
 }
 
-static void __bm_noti_signal_strength(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
+static void _bm_notify_signal_strength(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
 {
        ENTER;
        _INFO("device signal strength changed succeeded\n");
@@ -1539,6 +1539,53 @@ static void __bm_noti_signal_strength(TapiHandle *handle, const char *noti_id, v
        return;
 }
 
+static void _bm_notify_modem_power(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
+{
+       ENTER;
+
+       if (data == NULL) {
+               _ERR("invalid data");
+               return;
+       }
+
+       _INFO("modem power change notification - data[%d]", *((int *)data));
+
+       int *status = (int *)data;
+       int state = -1;
+
+       /* handling only On/Off states */
+       switch(*status) {
+               case 0: /* ON */
+                       state = 0;
+                       break;
+               case 1: /* OFF */
+                       state = 1;
+                       break;
+               default:
+                       break;
+       }
+
+       if (state != -1) {
+               event_pool *modem_power_event = (event_pool *)calloc(1, sizeof(event_pool));
+               if (!modem_power_event) {
+                       _ERR("Failed to allocated memory ");
+                       return;
+               }
+               modem_power_event->type = LISTEN_MODEM_POWER_STATE;
+               modem_power_event->val = state;
+               modem_power_event->app = NULL;
+
+               pthread_t producer;
+               if (pthread_create(&producer, NULL, event_producer, modem_power_event)) {
+                       _ERR("Failed to pthread_create.");
+                       return;
+               }
+       }
+
+       EXIT;
+       return;
+}
+
 
 static void create_lock_event(char *lock_type)
 {
@@ -1789,18 +1836,31 @@ static int  bm_screen_subscribe_listeners()
        return 0;
 }
 
-static int  bm_signal_strength_listeners()
+static int bm_telephony_listeners()
 {
        ENTER;
 
-       /* Screen callbacks */
+       /* get handle */
        handle = tel_init(NULL);
-       if (handle) {
-               int ret = tel_register_noti_event(handle, TAPI_NOTI_NETWORK_SIGNALSTRENGTH, __bm_noti_signal_strength, NULL);
-               if (ret != BATTERY_MONITOR_ERROR_NONE) {
-                       _ERR("device_add_callback failed: %s", get_error_message(ret));
-                       return 1;
-               }
+       if (handle == NULL) {
+               _ERR("invalid handle - signal strength");
+               return 1;
+       }
+
+       int ret = BATTERY_MONITOR_ERROR_NONE;
+
+       /* register signal strength notification */
+       ret = tel_register_noti_event(handle, TAPI_NOTI_NETWORK_SIGNALSTRENGTH, _bm_notify_signal_strength, NULL);
+       if (ret != BATTERY_MONITOR_ERROR_NONE) {
+               _ERR("register for signal-strength failed");
+               return 1;
+       }
+
+       /* register modem power notification */
+       ret = tel_register_noti_event(handle, TAPI_NOTI_MODEM_POWER, _bm_notify_modem_power, NULL);
+       if (ret != BATTERY_MONITOR_ERROR_NONE) {
+               _ERR("register for modem-power failed");
+               return 1;
        }
 
        EXIT;
@@ -2126,11 +2186,11 @@ int bd_initialize_listeners(void)
        else
                _ERR("location listeners failed to subscribed\n");
 
-       /* Signal strength callbacks */
-       if (!bm_signal_strength_listeners())
-               _INFO("Signal strength listeners succeeded to subscribed\n");
+       /* telephony listeners */
+       if (!bm_telephony_listeners())
+               _INFO("telephony listeners succeeded to subscribed\n");
        else
-               _ERR("Signal strength listeners failed to subscribed\n");
+               _ERR("telephony  listeners failed to subscribed\n");
 
        /* Powerlock callbacks */
        if (!bm_powerlock_unlock_subscribe_listener())
@@ -2203,12 +2263,18 @@ int bd_deinitialize_listeners()
        if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_CHARGER_STATUS, __bm_charging_status_change) < 0)
                _ERR("failed to de-register vconf callback");
 
+       /* de-register telephony callbacks */
        if (handle) {
                int ret = tel_deregister_noti_event(handle, TAPI_NOTI_NETWORK_SIGNALSTRENGTH);
                if (ret != BATTERY_MONITOR_ERROR_NONE) {
                        _ERR("tel_deregister_noti_event failed: %s", get_error_message(ret));
                        return 1;
                }
+               ret = tel_deregister_noti_event(handle, TAPI_NOTI_MODEM_POWER);
+               if (ret != BATTERY_MONITOR_ERROR_NONE) {
+                       _ERR("tel_deregister_noti_event failed: %s", get_error_message(ret));
+                       return 1;
+               }
                tel_deinit(handle);
        }