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;
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)
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) {
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) {
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);
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)) {
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);
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;
}
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) {