[Non-ACR] get app_id for UI based events 96/242396/2
authorAbhishek Vijay <abhishek.v@samsung.com>
Wed, 26 Aug 2020 09:06:11 +0000 (14:36 +0530)
committerAbhishek Vijay <abhishek.v@samsung.com>
Wed, 26 Aug 2020 09:30:16 +0000 (09:30 +0000)
- location On/Off
- bt On/Off, connection change
- wifi On/Off, connection change

Change-Id: Ie65b64bdc2ddd6d1d51b0088a4ac144f51df4924
Signed-off-by: Abhishek Vijay <abhishek.v@samsung.com>
CMakeLists.txt
packaging/batterymonitor.spec
src/battery_dump/bm_listeners.c

index 3ed25fd..a4d135c 100644 (file)
@@ -25,6 +25,7 @@ pkg_check_modules(pkgs REQUIRED
        capi-network-connection
        vconf
        tapi
+       capi-appfw-app-manager
 )
 
 ADD_CUSTOM_COMMAND(
index 8f1735f..9e9e5c4 100644 (file)
@@ -1,6 +1,6 @@
 Name:          batterymonitor
 Summary:       batterymonitor service daemon
-Version:       0.0.4
+Version:       0.0.5
 Release:       1
 License:       Apache-2.0
 Source0:       %{name}-%{version}.tar.gz
@@ -32,6 +32,7 @@ BuildRequires:  pkgconfig(capi-network-bluetooth)
 BuildRequires:  pkgconfig(capi-network-connection)
 BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(tapi)
+BuildRequires:  pkgconfig(capi-appfw-app-manager)
 
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
index 678c906..ed2cb49 100644 (file)
@@ -22,6 +22,9 @@
 #include <ITapiNetwork.h>
 #include <glib.h>
 #include <device/battery-internal.h>
+#include <app_context.h>
+#include <app_manager_extension.h>
+
 #include "bm_listeners.h"
 #include "bm_dbg.h"
 #include "bm_common.h"
@@ -48,20 +51,62 @@ static int buff_count = 0;
 
 GHashTable *app_list = NULL;
 
+void bd_get_focussed_app_id(char **app_name)
+{
+       ENTER;
+
+       if (*app_name == NULL) {
+               _ERR("invalid storage for app_id");
+               return;
+       }
+
+       int return_val = APP_MANAGER_ERROR_NONE;
+
+       app_context_h app_context;
+       char *app_id = NULL;
+
+       return_val  = app_manager_get_focused_app_context(&app_context);
+       if (return_val != APP_MANAGER_ERROR_NONE) {
+               _ERR("failed to get app-context");
+               return;
+       }
+
+       return_val = app_context_get_app_id(app_context, &app_id);
+       if(return_val != APP_MANAGER_ERROR_NONE) {
+               _ERR("failed to get app_id");
+               app_context_destroy(app_context);
+               return;
+       }
+
+       _DBG("focussed app_id = %s", app_id);
+
+       *app_name = app_id;
+
+       return_val = app_context_destroy(app_context);
+       if (return_val != APP_MANAGER_ERROR_NONE) {
+               _ERR("failed to destroy app-context");
+               return;
+       }
+
+       app_context = NULL;
+
+       EXIT;
+       return;
+}
+
 static int bd_listener_set_appId_info(char *app_id)
 {
        ENTER;
-       int ret = 0;
+
        data_obj->event_tag->uid = 1000;
        data_obj->event_tag->string_info = g_string_sized_new(7);
        if (!data_obj->event_tag->string_info) {
                _ERR("memory allocation  failed ");
-               ret = 1;
-               return ret;
+               return 1;
        }
        g_string_append_printf(data_obj->event_tag->string_info, "%s", app_id);
        EXIT;
-       return ret;
+       return 0;
 }
 
 static int bd_listener_set_battery_info()
@@ -1153,6 +1198,7 @@ void _bd_listener_bt_adapter_state_change_cb(int result, bt_adapter_state_e adap
 
        _INFO("state: %s", (adapter_state == BT_ADAPTER_ENABLED) ? "ENABLED" : "DISABLED");
 
+       char* app_id = NULL;
        static int bt_adaptor = 0;
        int bt_state ;
 
@@ -1167,8 +1213,13 @@ void _bd_listener_bt_adapter_state_change_cb(int result, bt_adapter_state_e adap
 
        _INFO("buff_count: %d and fill_ptr = %d", buff_count , fill_ptr);
 
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_STATE, bt_state, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_STATE, bt_state, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1185,15 +1236,20 @@ void _bd_listener_bt_device_connection_state_change_cb(bool connected, bt_device
 {
        ENTER;
 
-       _INFO("__bt_device_connection_state_changed_cb [%d]", connected);
-       _INFO("address [%s]", conn_info->remote_address);
-       _INFO("link type [%d]", conn_info->link);
+       _INFO("connected[%d], address[%s], link_type[%d]", connected, conn_info->remote_address, conn_info->link);
+
+       char *app_id = NULL;
 
        if (!connected)
                _INFO("disconnection reason [%d]", conn_info->disconn_reason);
 
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_CONNECTION_STATE, connected, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_CONNECTION_STATE, connected, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1216,6 +1272,7 @@ static void _bd_listener_bt_device_discovery_state_change_cb(int result,
        _INFO("__bt_adapter_state_changed_cb");
        _INFO("result: %d  , discovery_state = %d", result, discovery_state);
 
+       char *app_id = NULL;
        static int bt_discovery_state = 1;
 
        if (discovery_state > 1) {
@@ -1230,8 +1287,13 @@ static void _bd_listener_bt_device_discovery_state_change_cb(int result,
                bt_discovery_state = discovery_state;
        }
 
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_SCAN_STATE, (int)discovery_state, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_BT_SCAN_STATE, (int)discovery_state, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1250,13 +1312,20 @@ static void _bd_listener_wifi_device_state_callback(wifi_manager_device_state_e
 
        _INFO("Wifi Device state changed callback");
 
+       char* app_id = NULL;
+
        if (state == WIFI_MANAGER_DEVICE_STATE_ACTIVATED)
                _INFO(", state : Activated\n");
        else
                _INFO(", state : Deactivated\n");
 
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_STATE, state, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_STATE, state, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1275,8 +1344,15 @@ static void _bd_listener_wifi_scan_change_callback(wifi_manager_scan_state_e sta
 
        _INFO("Wifi Scan changed, scan state : [%d]", state);
 
+       char* app_id = NULL;
+
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_SCAN_STATE, state, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_SCAN_STATE, state, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1296,13 +1372,20 @@ static void _bd_listener_wifi_connection_state_change_callback(wifi_manager_conn
 
        _INFO("Wifi Connection changed, new connection state : [%d]", state);
 
+       char* app_id = NULL;
+
        if (state == -1 || state == 1 || state == 2) {
                _WARN("These connection states are not related ");
                return;
        }
 
+       /* get app_id */
+       bd_get_focussed_app_id(&app_id);
+       if (app_id == NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_CONNECTION_STATE, state, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_WIFI_CONNECTION_STATE, state, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1459,6 +1542,7 @@ static void _bd_listener_location_change(keynode_t *key, void* data)
        ENTER;
        _INFO("device location changed succeeded\n");
 
+       char* app_id = NULL;
        static int location_flag = 0;
 
        int location = 0;
@@ -1471,8 +1555,12 @@ static void _bd_listener_location_change(keynode_t *key, void* data)
        else
                location_flag = location;
 
+       bd_get_focussed_app_id(&app_id);
+       if (app_id != NULL)
+               _ERR("failed to get app_id");
+
        /* get event object */
-       event_pool *event = bd_listener_get_event_obj(LISTEN_LOCATION_CHANGE, location, NULL);
+       event_pool *event = bd_listener_get_event_obj(LISTEN_LOCATION_CHANGE, location, app_id);
        if (event == NULL) {
                _ERR("Failed to get event pool object");
                return;
@@ -1607,13 +1695,8 @@ static void _bd_listener_create_lock_event(char *lock_type)
        return;
 }
 
-static void _bd_listener_powerlock_signal_cb(GDBusConnection *conn,
-               const gchar *sender,
-               const gchar *path,
-               const gchar *iface,
-               const gchar *signal,
-               GVariant *params,
-               gpointer user_data)
+static void _bd_listener_powerlock_signal_cb(GDBusConnection *conn, const gchar *sender, const gchar *path,
+                       const gchar *iface, const gchar *signal, GVariant *params, gpointer user_data)
 {
        ENTER;
        pid_t pid;
@@ -1841,21 +1924,15 @@ static int  bd_subscribe_wifi_listeners()
        int rv = wifi_manager_initialize(&wifi);
        if (rv == WIFI_MANAGER_ERROR_NONE) {
                int ret = wifi_manager_set_device_state_changed_cb(wifi, _bd_listener_wifi_device_state_callback, NULL);
-               if (ret == WIFI_MANAGER_ERROR_NONE)
-                       _INFO("wifi_manager_set_device_state_changed_cb  success  : [%p]\n", _bd_listener_wifi_device_state_callback);
-               else
+               if (ret != WIFI_MANAGER_ERROR_NONE)
                        _ERR("wifi_manager_set_device_state_changed_cb failed");
 
                ret = wifi_manager_set_scan_state_changed_cb(wifi, _bd_listener_wifi_scan_change_callback, NULL);
-               if (ret == WIFI_MANAGER_ERROR_NONE)
-                       _INFO("wifi_manager_set_scan_state_changed_cb  success\n");
-               else
+               if (ret != WIFI_MANAGER_ERROR_NONE)
                        _ERR("wifi_manager_set_scan_state_changed_cb failed");
 
                ret = wifi_manager_set_connection_state_changed_cb(wifi, _bd_listener_wifi_connection_state_change_callback, NULL);
-               if (ret == WIFI_MANAGER_ERROR_NONE)
-                       _INFO("wifi_manager_set_connection_state_changed_cb  success\n");
-               else
+               if (ret != WIFI_MANAGER_ERROR_NONE)
                        _ERR("wifi_manager_set_scan_state_changed_cb failed");
        } else {
                _ERR(" Wifi init failed \n");