return 0;
}
-static gint __compare_svc_name(gconstpointer data, gconstpointer user_data)
+static gint __compare_service(gconstpointer data, gconstpointer user_data)
{
const uam_db_service_info_t *service = data;
- const char *svc_name = user_data;
+ const uam_db_service_info_t *tmp = user_data;
retv_if(NULL == service, -1);
retv_if(NULL == service->name, -1);
- retv_if(NULL == svc_name, -1);
+ retv_if(NULL == tmp, -1);
+ retv_if(NULL == tmp->name, -1);
- return g_strcmp0(service->name, svc_name);
+ if (service->app_num == tmp->app_num)
+ return g_strcmp0(service->name, tmp->name);
+ else
+ return -1;
}
static gint __compare_svc_user(gconstpointer data, gconstpointer user_data)
}
/* Utility functions to search */
+GSList* __search_service(GSList* list, const char *svc_name, int app_num)
+{
+ /* Search user in existing user list */
+ GSList *l;
+ uam_db_service_info_t *temp_svc;
+
+ temp_svc = g_new0(uam_db_service_info_t, 1);
+ temp_svc->name = g_strdup(svc_name);
+ temp_svc->app_num = app_num;
+
+ l = g_slist_find_custom(list, temp_svc, __compare_service);
+
+ g_free(temp_svc->name);
+ g_free(temp_svc);
+
+ return l;
+}
+
GSList* __search_user(const char *account, int app_num)
{
/* Search user in existing user list */
}
static uam_monitor_info_t *__uam_find_monitor(GSList *monitor_list,
- const char *name, const char *svc_name, uam_pm_detection_mode_e mode)
+ const char *name, const char *svc_name, uam_pm_detection_mode_e mode, const int app_num)
{
// FUNC_ENTRY;
GSList *l;
if ((mode == monitor->mode) &&
(0 == g_strcmp0(monitor->name, name)) &&
- (0 == g_strcmp0(monitor->service->name, svc_name))) {
+ (0 == g_strcmp0(monitor->service->name, svc_name)) &&
+ (monitor->service->app_num == app_num)) {
UAM_DBG("Monitoring application found in list");
return monitor;
}
for (l = db_svc_list; NULL != l; l = g_slist_next(l)) {
db_service_info_t *db_svc = l->data;
uam_db_service_info_t *service;
- GSList *l1;
+ GSList *ll;
if (!db_svc)
continue;
- l1 = g_slist_find_custom(services,
- db_svc->service_name, __compare_svc_name);
- if (!l1) {
+ ll = __search_service(services, db_svc->service_name, db_svc->app_num);
+
+ if (!ll) {
service = g_new0(uam_db_service_info_t, 1);
__uam_copy_db_service_info(service, db_svc);
services = g_slist_append(services, service);
} else
- service = l1->data;
+ service = ll->data;
svc_list = g_slist_append(svc_list, service);
}
user = l->data;
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
if (!tech)
continue;
- l2 = g_slist_find_custom(tech->svc_list, svc_name,
- __compare_svc_name);
+ l2 = __search_service(tech->svc_list, svc_name, app_num);
if (NULL != l2)
continue;
user = l->data;
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
retv_if(UAM_ERROR_NONE != __uam_db_begin_transaction(), UAM_ERROR_DB_FAILED);
if (!tech)
continue;
- l2 = g_slist_find_custom(tech->svc_list, svc_name,
- __compare_svc_name);
+ l2 = __search_service(tech->svc_list, svc_name, app_num);
if (NULL == l2)
continue;
tech_info = __uam_core_get_dev_tech_info(device_id, tech_type);
retv_if(NULL == tech_info, UAM_ERROR_INVALID_PARAMETER);
- l = g_slist_find_custom(tech_info->svc_list, svc_name, __compare_svc_name);
+ l = __search_service(tech_info->svc_list, svc_name, app_num);
retv_if(NULL != l, UAM_ERROR_ALREADY_REGISTERED);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
retv_if(UAM_TECH_TYPE_MAX <= tech_type, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
tech_info = __uam_core_get_dev_tech_info(device_id, tech_type);
retv_if(NULL == tech_info, UAM_ERROR_INVALID_PARAMETER);
- l = g_slist_find_custom(tech_info->svc_list, svc_name, __compare_svc_name);
+ l = __search_service(tech_info->svc_list, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_NOT_REGISTERED);
__remove_service_to_dev_tech_mapping(tech_info, (uam_db_service_info_t *)l->data);
retv_if(NULL == tech_info, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
retv_if(UAM_DETECTION_CYCLE_MIN > new_cycle, UAM_ERROR_INVALID_PARAMETER);
retv_if(0 != (new_cycle % UAM_DETECTION_CYCLE_MIN), UAM_ERROR_INVALID_PARAMETER);
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
retv_if(NULL == cycle, UAM_ERROR_INVALID_PARAMETER);
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
}
static int __uam_core_start_detection(int detection_type,
- const char *svc_name, char *sender, unsigned int sensors)
+ const char *svc_name, char *sender, unsigned int sensors, int app_num)
{
FUNC_ENTRY;
uam_monitor_info_t *monitor;
retv_if(NULL == sender, UAM_ERROR_INVALID_PARAMETER);
retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
if (!l)
UAM_ERR("Service not found");
retv_if(NULL == l->data, UAM_ERROR_INTERNAL);
service = l->data;
- monitor = __uam_find_monitor(monitors, sender, svc_name, detection_type);
+ monitor = __uam_find_monitor(monitors, sender, svc_name, detection_type, app_num);
if (!monitor) {
monitor = g_malloc0(sizeof(uam_monitor_info_t));
if (monitor) {
}
}
- UAM_DBG("Name: %s, Service: %s, Mode: %d", monitor->name, svc_name, monitor->mode);
+ UAM_DBG("Name: %s, Service: %s, Mode: %d, App_num: %d", monitor->name, svc_name,
+ monitor->mode, app_num);
monitor->sensors |= sensors;
if (!is_monitor_added) {
}
static int __uam_core_stop_detection(int detection_type,
- const char *svc_name, char *sender, unsigned int sensors)
+ const char *svc_name, char *sender, unsigned int sensors, int app_num)
{
FUNC_ENTRY;
int ret = UAM_ERROR_NONE;
retv_if(NULL == sender, UAM_ERROR_INVALID_PARAMETER);
retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
- monitor = __uam_find_monitor(monitors, sender, svc_name, detection_type);
+ monitor = __uam_find_monitor(monitors, sender, svc_name, detection_type, app_num);
retv_if(NULL == monitor, UAM_ERROR_NOT_IN_OPERATION);
service = monitor->service;
retv_if(0 != g_strcmp0(service->name, svc_name), UAM_ERROR_NOT_IN_OPERATION);
return ret;
}
-int _uam_core_start_presence_detection(const char *svc_name, char *sender, unsigned int sensors)
+int _uam_core_start_presence_detection(const char *svc_name, char *sender,
+ unsigned int sensors, int app_num)
{
FUNC_ENTRY;
int ret;
- ret = __uam_core_start_detection(UAM_DETECT_PRESENCE, svc_name, sender, sensors);
+ ret = __uam_core_start_detection(UAM_DETECT_PRESENCE, svc_name,
+ sender, sensors, app_num);
FUNC_EXIT;
return ret;
}
-int _uam_core_stop_presence_detection(const char *svc_name, char *sender, unsigned int sensors)
+int _uam_core_stop_presence_detection(const char *svc_name, char *sender,
+ unsigned int sensors, int app_num)
{
FUNC_ENTRY;
int ret;
- ret = __uam_core_stop_detection(UAM_DETECT_PRESENCE, svc_name, sender, sensors);
+ ret = __uam_core_stop_detection(UAM_DETECT_PRESENCE, svc_name,
+ sender, sensors, app_num);
FUNC_EXIT;
return ret;
}
-int _uam_core_start_absence_detection(const char *svc_name, char *sender, unsigned int sensors)
+int _uam_core_start_absence_detection(const char *svc_name, char *sender,
+ unsigned int sensors, int app_num)
{
FUNC_ENTRY;
int ret;
- ret = __uam_core_start_detection(UAM_DETECT_ABSENCE, svc_name, sender, sensors);
+ ret = __uam_core_start_detection(UAM_DETECT_ABSENCE, svc_name, sender,
+ sensors, app_num);
FUNC_EXIT;
return ret;
}
-int _uam_core_stop_absence_detection(const char *svc_name, char *sender, unsigned int sensors)
+int _uam_core_stop_absence_detection(const char *svc_name, char *sender,
+ unsigned int sensors, int app_num)
{
FUNC_ENTRY;
int ret;
- ret = __uam_core_stop_detection(UAM_DETECT_ABSENCE, svc_name, sender, sensors);
+ ret = __uam_core_stop_detection(UAM_DETECT_ABSENCE, svc_name, sender,
+ sensors, app_num);
FUNC_EXIT;
return ret;
/* Get default service */
__get_default_service_name(dev_info->app_num, &default_service_name);
- l = g_slist_find_custom(services, default_service_name, __compare_svc_name);
+ l = __search_service(services, default_service_name, dev_info->app_num);
if (!l)
UAM_WARN("Default service not found");
else
* and free the monitor structure in the memory. */
UAM_INFO("clear %s's monitor info.", monitor->name);
__uam_core_stop_detection(monitor->mode,
- monitor->service->name, name, monitor->sensors);
+ monitor->service->name, name, monitor->sensors, monitor->service->app_num);
}
}
retv_if(NULL == svc->name, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc->name, __compare_svc_name);
+ UAM_INFO("Registering for : service name->[%s] and app_num->[%d]",
+ svc->name, app_num);
+
+ l = __search_service(services, svc->name, app_num);
retv_if((NULL != l) && (l->data != NULL), UAM_ERROR_ALREADY_REGISTERED);
service = g_new0(uam_db_service_info_t, 1);
retv_if(NULL == svc->name, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc->name, __compare_svc_name);
+ l = __search_service(services, svc->name, svc->app_num);
retv_if((NULL == l) || (l->data == NULL), UAM_ERROR_NOT_REGISTERED);
service = l->data;
__get_default_service_name(app_num, &default_service_name);
UAM_DBG("default_service_name is [%s]", default_service_name);
- l = g_slist_find_custom(services, default_service_name, __compare_svc_name);
+ l = __search_service(services, default_service_name, app_num);
if (NULL == l) {
/* Register default service */
memset(service_info, 0x00, sizeof(uam_service_info_s));
retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if((NULL == l), UAM_ERROR_NOT_REGISTERED);
service = l->data;
GSList *l;
int ret = UAM_ERROR_NONE;
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;
retv_if(NULL == svc_name, UAM_ERROR_INVALID_PARAMETER);
/* Retrieve service from list */
- l = g_slist_find_custom(services, svc_name, __compare_svc_name);
+ l = __search_service(services, svc_name, app_num);
retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER);
service = l->data;