Modify APIs to set low power mode for individual plugin
authorAbhay agarwal <ay.agarwal@samsung.com>
Wed, 16 Oct 2019 15:23:23 +0000 (20:53 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 17 Oct 2019 10:17:32 +0000 (19:17 +0900)
Change-Id: I582417d1ee1df84043b17e36a97e4b8c06153016
Signed-off-by: Abhay agarwal <ay.agarwal@samsung.com>
include/ua-api.h
packaging/ua-manager.spec
ua-api/src/ua-api.c
ua-daemon/include/ua-manager-core.h
ua-daemon/include/ua-plugin-manager.h
ua-daemon/src/pm/ua-plugin-manager.c
ua-daemon/src/pm/ua-power-plugin-handler.c
ua-daemon/src/ua-manager-core.c
ua-daemon/src/ua-manager-request-handler.c

index 8cbce1b..ec70d5e 100644 (file)
@@ -968,7 +968,7 @@ int _uam_request_set_detection_threshold(unsigned int sensor_type,
  * @pre
  * @post
  */
-int _uam_enable_low_power_mode(void);
+int _uam_enable_low_power_mode(unsigned int bitmask);
 
 /**
  * @brief Disables low-power mode.
@@ -982,7 +982,7 @@ int _uam_enable_low_power_mode(void);
  * @pre
  * @post
  */
-int _uam_disable_low_power_mode(void);
+int _uam_disable_low_power_mode(unsigned int bitmask);
 
 /**
  * @brief Gets default service info.
index d11a711..0244ca3 100644 (file)
@@ -1,6 +1,6 @@
 Name:       ua-manager
 Summary:    User awareness manager
-Version:    0.11.6
+Version:    0.11.7
 Release:    1
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index f66fdf0..4bfedef 100644 (file)
@@ -720,7 +720,7 @@ UAM_EXPORT_API int _uam_is_sensor_ready(unsigned int sensor, gboolean* status)
        return ret;
 }
 
-UAM_EXPORT_API int _uam_enable_low_power_mode(void)
+UAM_EXPORT_API int _uam_enable_low_power_mode(unsigned int bitmask)
 {
        FUNC_ENTRY;
        int ret;
@@ -730,6 +730,7 @@ UAM_EXPORT_API int _uam_enable_low_power_mode(void)
        UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
 
        g_array_append_vals(in_param1, &mode, sizeof(gboolean));
+       g_array_append_vals(in_param2, &bitmask, sizeof(unsigned int));
        ret = _uam_sync_request(UAM_REQUEST_SET_LOW_POWER_MODE,
                        in_param1, in_param2, in_param3, in_param4, &out_param);
 
@@ -739,7 +740,7 @@ UAM_EXPORT_API int _uam_enable_low_power_mode(void)
        return ret;
 }
 
-UAM_EXPORT_API int _uam_disable_low_power_mode(void)
+UAM_EXPORT_API int _uam_disable_low_power_mode(unsigned int bitmask)
 {
        FUNC_ENTRY;
        int ret;
@@ -749,6 +750,7 @@ UAM_EXPORT_API int _uam_disable_low_power_mode(void)
        UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
 
        g_array_append_vals(in_param1, &mode, sizeof(gboolean));
+       g_array_append_vals(in_param2, &bitmask, sizeof(unsigned int));
        ret = _uam_sync_request(UAM_REQUEST_SET_LOW_POWER_MODE,
                        in_param1, in_param2, in_param3, in_param4, &out_param);
 
index faa3b4b..9fd38b7 100644 (file)
@@ -160,7 +160,7 @@ int _uam_core_start_absence_detection(const char *svc_name, char *sender, unsign
 
 int _uam_core_stop_absence_detection(const char *svc_name, char *sender, unsigned int sensors);
 
-int _uam_core_set_low_power_mode(gboolean mode);
+int _uam_core_set_low_power_mode(gboolean mode, unsigned int sensors);
 
 int _uam_core_get_detection_window(unsigned int *window);
 
index 564e8fd..9fdcdbd 100644 (file)
@@ -50,7 +50,7 @@ int _uam_pm_stop_detection(unsigned int detection_mode, unsigned int sensor_bitm
 
 int _uam_pm_set_registered_devices(GSList *devices);
 
-int _uam_pm_set_low_power_mode(gboolean mode);
+int _uam_pm_set_low_power_mode(gboolean mode, unsigned int bitmask);
 
 int _uam_pm_set_detection_window(unsigned int detection_window);
 
index 5120a66..00a00cd 100644 (file)
@@ -596,13 +596,17 @@ int _uam_pm_stop_detection(unsigned int detection_mode, unsigned int bitmask)
        return ret;
 }
 
-int _uam_pm_set_low_power_mode(gboolean mode)
+int _uam_pm_set_low_power_mode(gboolean mode, unsigned int bitmask)
 {
        FUNC_ENTRY;
        int id;
 
        for (id = UAS_PLUGIN_ID_BLE; id < UAS_PLUGIN_ID_MAX; id++) {
                uam_sensor_plugin_info_t *plugin = plugins[id];
+               unsigned int sensor = _pm_util_uas_plugin_id_to_sensor_bitmask(id);
+
+               if (!(sensor & bitmask))
+                       continue;
 
                if (!plugin || !plugin->api || !plugin->api->set_low_power_mode)
                        continue;
index 75c2d0b..ae16ed4 100644 (file)
@@ -43,7 +43,7 @@ static int do_presence_check_callback(unsigned int sensors)
                return UAP_STATUS_FAIL;
        }
 
-       ret = _uam_pm_set_low_power_mode(FALSE);
+       ret = _uam_pm_set_low_power_mode(FALSE, sensors);
        if (UAM_ERROR_NONE != ret) {
                UAM_ERR("Failed with error: %s (0x%4.4X)",
                                _uam_manager_error_to_str(ret), ret);
@@ -80,7 +80,7 @@ static void stop_presence_check_callback(unsigned int sensors)
                UAM_ERR("Failed with error: %s (0x%4.4X)",
                                _uam_manager_error_to_str(ret), ret);
 
-       ret = _uam_pm_set_low_power_mode(TRUE);
+       ret = _uam_pm_set_low_power_mode(TRUE, sensors);
        if (UAM_ERROR_NONE != ret)
                UAM_ERR("Failed with error: %s (0x%4.4X)",
                                _uam_manager_error_to_str(ret), ret);
@@ -111,7 +111,7 @@ static void set_lpm(int mode)
        int ret;
 
        UAM_INFO("lpm_mode = %s", ((mode != 0) ? "TRUE" : "FALSE"));
-       ret = _uam_pm_set_low_power_mode((mode == 0) ? FALSE : TRUE);
+       ret = _uam_pm_set_low_power_mode((mode == 0) ? FALSE : TRUE, UAM_SENSOR_ALL);
        if (UAM_ERROR_NONE != ret)
                UAM_ERR("Failed with error: %s (0x%4.4X)",
                                _uam_manager_error_to_str(ret), ret);
index 2d7129d..0958fd1 100644 (file)
@@ -2125,12 +2125,12 @@ int _uam_core_stop_absence_detection(const char *svc_name, char *sender, unsigne
        return ret;
 }
 
-int _uam_core_set_low_power_mode(gboolean mode)
+int _uam_core_set_low_power_mode(gboolean mode, unsigned int sensors)
 {
        FUNC_ENTRY;
        int ret;
 
-       ret = _uam_pm_set_low_power_mode(mode);
+       ret = _uam_pm_set_low_power_mode(mode, sensors);
        if (UAM_ERROR_NONE != ret) {
                UAM_ERR("_uam_pm_set_low_power_mode failed with %s",
                                _uam_manager_error_to_str(ret));
index cef31d7..626f7c7 100644 (file)
@@ -384,11 +384,14 @@ static int __uam_manager_sync_request_handler(
        }
        case UAM_REQUEST_SET_LOW_POWER_MODE: {
                gboolean mode = FALSE;
+               unsigned int sensors;
 
                __uam_manager_copy_params(in_param1,
                                &mode, sizeof(gboolean));
+               __uam_manager_copy_params(in_param2,
+                               &sensors, sizeof(unsigned int));
 
-               result = _uam_core_set_low_power_mode(mode);
+               result = _uam_core_set_low_power_mode(mode, sensors);
                break;
        }
        case UAM_REQUEST_START_SEARCH_ACTIVE_DEVICES: {