Remove duplicay in validating plugin interface 25/282025/1
authorAbhay Agarwal <ay.agarwal@samsung.com>
Mon, 19 Sep 2022 09:12:25 +0000 (14:42 +0530)
committerAbhay Agarwal <ay.agarwal@samsung.com>
Mon, 26 Sep 2022 08:58:19 +0000 (14:28 +0530)
Change-Id: I088a0c14152d92f4ea4133441c82d318d4505f50
Signed-off-by: Abhay Agarwal <ay.agarwal@samsung.com>
ua-daemon/src/pm/ua-plugin-manager.c

index b2d5e5a802dba5f5e1ac0af6623bd2a20e8a8e7b..8289016147200c1e260a877f173b635143a669b5 100644 (file)
@@ -40,6 +40,22 @@ typedef struct {
 
 uam_sensor_plugin_info_t* plugins[UAS_PLUGIN_ID_MAX];
 
+int _uam_validate_plugin_interface(int plugin_id, unsigned int bitmask)
+{
+       retv_if(UAS_PLUGIN_ID_MAX <= plugin_id, UAM_ERROR_INVALID_PARAMETER);
+
+       uam_sensor_plugin_info_t *plugin = plugins[plugin_id];
+       unsigned int sensor = _pm_util_uas_plugin_id_to_sensor_bitmask(plugin_id);
+
+       retv_if(!(sensor & bitmask), UAM_ERROR_INTERNAL);
+       retv_if((!plugin || !plugin->api), UAM_ERROR_INTERNAL);
+
+       if (plugin->module)
+               UAM_INFO("call on [%s]", plugin->module->name);
+
+       return UAM_ERROR_NONE;
+}
+
 static gboolean __add_plugin(void *handle, uas_module_t *module)
 {
        FUNC_ENTRY;
@@ -493,13 +509,11 @@ int _uam_pm_set_registered_devices(GSList *devices, unsigned int bitmask)
        for (id = UAS_PLUGIN_ID_BLE; id < UAS_PLUGIN_ID_MAX; id++) {
                uas_device_info_t *dev_list = NULL;
                int num_devices = 0;
-               uam_sensor_plugin_info_t *plugin = plugins[id];
-               unsigned int sensor = _pm_util_uas_plugin_id_to_sensor_bitmask(id);
-
-               if (!(sensor & bitmask))
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, bitmask))
                        continue;
 
-               if (!plugin || !plugin->api || !plugin->api->set_registered_devices)
+               uam_sensor_plugin_info_t *plugin = plugins[id];
+               if (!plugin->api->set_registered_devices)
                        continue;
 
                if (UAS_SUPPORT_USER != plugin->capability)
@@ -544,18 +558,10 @@ int _uam_pm_start_detection(unsigned int detection_mode, unsigned int bitmask)
        UAM_INFO("The scan_level is [%d]", scan_mode);
 
        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))
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, bitmask))
                        continue;
 
-               if (!plugin || !plugin->api)
-                       continue;
-
-               if (plugin->module)
-                       UAM_INFO("Start detection on [%s]", plugin->module->name);
-
+               uam_sensor_plugin_info_t *plugin = plugins[id];
                status = plugin->api->start_detection(type, scan_mode);
 
                if (UAS_STATUS_SUCCESS != status && UAS_STATUS_ALREADY_DONE != status) {
@@ -581,18 +587,10 @@ int _uam_pm_stop_detection(unsigned int detection_mode, unsigned int bitmask)
        uas_detection_type_e type = _pm_util_uam_detection_to_uas_detection(detection_mode);
 
        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))
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, bitmask))
                        continue;
 
-               if (!plugin || !plugin->api)
-                       continue;
-
-               if (plugin->module)
-                       UAM_INFO("Stop detection on [%s]", plugin->module->name);
-
+               uam_sensor_plugin_info_t *plugin = plugins[id];
                status = plugin->api->stop_detection(type);
 
                if (UAS_STATUS_SUCCESS != status && UAS_STATUS_ALREADY_DONE != status) {
@@ -614,18 +612,10 @@ int _uam_pm_set_low_power_mode(unsigned int bitmask, gboolean mode)
        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)
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, bitmask))
                        continue;
 
-               if (plugin->module)
-                       UAM_INFO("Set low power mode on [%s]", plugin->module->name);
-
+               uam_sensor_plugin_info_t *plugin = plugins[id];
                if (UAS_STATUS_SUCCESS !=
                                plugin->api->set_low_power_mode(mode ? 1 : 0))
                        UAM_ERR("plugin->set_low_power_mode() failed for %d", id);
@@ -667,17 +657,12 @@ int _uam_pm_set_detection_threshold(unsigned int sensor,
                int presence_threshold, int absence_threshold)
 {
        FUNC_ENTRY;
-       int id;
-       uam_sensor_plugin_info_t *plugin;
-
-       id = _pm_util_sensor_bitmask_to_plugin_id(sensor);
-       retv_if(UAS_PLUGIN_ID_MAX <= id, UAM_ERROR_INVALID_PARAMETER);
 
-       plugin = plugins[id];
-       retv_if(!plugin || !plugin->api, UAM_ERROR_NOT_SUPPORTED);
+       int id = _pm_util_sensor_bitmask_to_plugin_id(sensor);
+       if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, sensor))
+               return UAM_ERROR_INTERNAL;
 
-       if (plugin->module)
-               UAM_INFO("Set detection threshold on [%s]", plugin->module->name);
+       uam_sensor_plugin_info_t *plugin = plugins[id];
 
        if (UAS_STATUS_SUCCESS != plugin->api->set_detection_threshold(
                                presence_threshold, absence_threshold)) {
@@ -699,17 +684,13 @@ int _uam_pm_start_active_device_scan(unsigned int* bitmask, int detection_period
        unsigned int scanning_sensor = 0;
 
        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)))
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, *bitmask))
                        continue;
 
-               if (!plugin || !plugin->api || !plugin->api->scan_active_devices)
-                       continue;
+               uam_sensor_plugin_info_t *plugin = plugins[id];
 
-               if (plugin->module)
-                       UAM_INFO("Start active scan on [%s]", plugin->module->name);
+               if (!plugin->api->scan_active_devices)
+                       continue;
 
                status = plugin->api->scan_active_devices(detection_period);
 
@@ -718,7 +699,7 @@ int _uam_pm_start_active_device_scan(unsigned int* bitmask, int detection_period
                        continue;
                }
 
-               scanning_sensor |= sensor;
+               scanning_sensor |= _pm_util_uas_plugin_id_to_sensor_bitmask(id);
                /* Result success if scanning started for atleast 1 of the sensor */
                ret = UAM_ERROR_NONE;
        }
@@ -737,18 +718,13 @@ int _uam_pm_stop_active_device_scan(unsigned int bitmask)
        int ret = UAM_ERROR_INTERNAL;
 
        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))
+               if (UAM_ERROR_NONE != _uam_validate_plugin_interface(id, bitmask))
                        continue;
 
-               if (!plugin || !plugin->api || !plugin->api->cancel_active_device_scan)
+               uam_sensor_plugin_info_t *plugin = plugins[id];
+               if (!plugin->api->cancel_active_device_scan)
                        continue;
 
-               if (plugin->module)
-                       UAM_INFO("Stop active scan on [%s]", plugin->module->name);
-
                status = plugin->api->cancel_active_device_scan();
 
                if (UAS_STATUS_SUCCESS != status && UAS_STATUS_ALREADY_DONE != status) {