return ret;
}
-UAM_EXPORT_API int _uam_get_default_user(uam_user_info_s *user)
+static int __uam_sync_request(
+ int req_func,
+ uam_user_info_s *user,
+ GArray *in_param1,
+ GArray *in_param2,
+ GArray *in_param3,
+ GArray *in_param4,
+ GArray *out_param)
{
- FUNC_ENTRY;
- int ret;
-
- UAM_VALIDATE_INPUT_PARAMETER(user);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- ret = _uam_sync_request(UAM_REQUEST_GET_DEFAULT_USER,
+ int ret = _uam_sync_request(req_func,
in_param1, in_param2, in_param3, in_param4, &out_param);
if (UAM_ERROR_NONE == ret) {
return ret;
}
+UAM_EXPORT_API int _uam_get_default_user(uam_user_info_s *user)
+{
+ FUNC_ENTRY;
+
+ UAM_VALIDATE_INPUT_PARAMETER(user);
+
+ UAM_INIT_PARAMS();
+ UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ return __uam_sync_request(UAM_REQUEST_GET_DEFAULT_USER, user,
+ in_param1, in_param2, in_param3, in_param4, out_param);
+}
+
UAM_EXPORT_API int _uam_add_user(uam_user_info_s *user)
{
FUNC_ENTRY;
uam_user_info_s *user)
{
FUNC_ENTRY;
- int ret;
char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
UAM_VALIDATE_INPUT_PARAMETER(account);
g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
g_array_append_vals(in_param1, str, sizeof(str));
- ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_ACCOUNT,
- in_param1, in_param2, in_param3, in_param4, &out_param);
-
- if (UAM_ERROR_NONE == ret) {
- if (out_param->len > 0) {
- uam_user_info_s *info;
-
- info = &g_array_index(out_param, uam_user_info_s, 0);
- memcpy(user, info, sizeof(uam_user_info_s));
- } else {
- UAM_WARN("out_param length is 0");
- }
- }
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- FUNC_EXIT;
- return ret;
+ return __uam_sync_request(UAM_REQUEST_GET_USER_BY_ACCOUNT, user,
+ in_param1, in_param2, in_param3, in_param4, out_param);
}
UAM_EXPORT_API int _uam_request_get_user_by_deviceid(char *device_id,
uam_user_info_s *user)
{
FUNC_ENTRY;
- int ret;
char str[UAM_DEVICE_ID_MAX_STRING_LEN];
UAM_VALIDATE_INPUT_PARAMETER(device_id);
g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
g_array_append_vals(in_param1, str, sizeof(str));
- ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_DEVICE_ID,
- in_param1, in_param2, in_param3, in_param4, &out_param);
-
- if (UAM_ERROR_NONE == ret) {
- if (out_param->len > 0) {
- uam_user_info_s * info;
-
- info = &g_array_index(out_param, uam_user_info_s, 0);
- memcpy(user, info, sizeof(uam_user_info_s));
- } else {
- UAM_WARN("out_param length is 0");
- }
- }
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- FUNC_EXIT;
- return ret;
+ return __uam_sync_request(UAM_REQUEST_GET_USER_BY_DEVICE_ID, user,
+ in_param1, in_param2, in_param3, in_param4, out_param);
}
UAM_EXPORT_API int _uam_request_get_user_by_mac(char *mac,
uam_user_info_s *user)
{
FUNC_ENTRY;
- int ret;
char str[UAM_MAC_ADDRESS_STRING_LEN];
UAM_VALIDATE_INPUT_PARAMETER(mac);
g_strlcpy(str, mac, UAM_MAC_ADDRESS_STRING_LEN);
g_array_append_vals(in_param1, str, sizeof(str));
- ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_MAC,
- in_param1, in_param2, in_param3, in_param4, &out_param);
-
- if (UAM_ERROR_NONE == ret) {
- if (out_param->len > 0) {
- uam_user_info_s * info;
-
- info = &g_array_index(out_param, uam_user_info_s, 0);
- memcpy(user, info, sizeof(uam_user_info_s));
- } else {
- UAM_WARN("out_param length is 0");
- }
- }
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- FUNC_EXIT;
- return ret;
+ return __uam_sync_request(UAM_REQUEST_GET_USER_BY_MAC, user,
+ in_param1, in_param2, in_param3, in_param4, out_param);
}
UAM_EXPORT_API int _uam_request_add_device(char *account,
return ret;
}
-UAM_EXPORT_API int _uam_request_get_devices(GPtrArray **devices_list)
+static int _uam_sync_request_get(
+ GPtrArray **devices_list,
+ int req_func,
+ GArray *in_param1,
+ GArray *in_param2,
+ GArray *in_param3,
+ GArray *in_param4,
+ GArray **out_param
+ )
{
FUNC_ENTRY;
- int ret;
-
- UAM_VALIDATE_INPUT_PARAMETER(devices_list);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- ret = _uam_sync_request(UAM_REQUEST_GET_DEVICES,
- in_param1, in_param2, in_param3, in_param4, &out_param);
+ int ret = _uam_sync_request(req_func,
+ in_param1, in_param2, in_param3, in_param4, out_param);
if (UAM_ERROR_NONE == ret && NULL != out_param) {
int i;
int count;
- count = (out_param->len)/sizeof(uam_device_info_s);
+ count = ((*out_param)->len)/sizeof(uam_device_info_s);
if (0 == count)
UAM_INFO("No registered device");
uam_device_info_s *device_info = NULL;
uam_device_info_s *info;
- info = &g_array_index(out_param, uam_device_info_s, i);
+ info = &g_array_index(*out_param, uam_device_info_s, i);
device_info = g_memdup2(info, sizeof(uam_device_info_s));
if (device_info)
g_ptr_array_add(*devices_list, (gpointer)device_info);
}
}
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+ UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, *out_param);
FUNC_EXIT;
return ret;
}
+UAM_EXPORT_API int _uam_request_get_devices(GPtrArray **devices_list)
+{
+ FUNC_ENTRY;
+
+ UAM_VALIDATE_INPUT_PARAMETER(devices_list);
+
+ UAM_INIT_PARAMS();
+ UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ return _uam_sync_request_get(devices_list, UAM_REQUEST_GET_DEVICES,
+ in_param1, in_param2, in_param3, in_param4, &out_param);
+}
+
UAM_EXPORT_API int _uam_request_get_user_devices(char *account,
GPtrArray **devices_list)
{
FUNC_ENTRY;
- int ret;
char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
UAM_VALIDATE_INPUT_PARAMETER(devices_list);
g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
g_array_append_vals(in_param1, str, sizeof(str));
- ret = _uam_sync_request(UAM_REQUEST_GET_USER_DEVICES,
+ return _uam_sync_request_get(devices_list, UAM_REQUEST_GET_USER_DEVICES,
in_param1, in_param2, in_param3, in_param4, &out_param);
- if (UAM_ERROR_NONE == ret && NULL != out_param) {
- int i;
- int count;
-
- count = (out_param->len)/sizeof(uam_device_info_s);
- if (0 == count)
- UAM_INFO("No registered device");
-
- for (i = 0; i < count; i++) {
- uam_device_info_s *device_info = NULL;
- uam_device_info_s *info;
-
- info = &g_array_index(out_param, uam_device_info_s, i);
- device_info = g_memdup2(info, sizeof(uam_device_info_s));
- if (device_info)
- g_ptr_array_add(*devices_list, (gpointer)device_info);
- }
- }
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
}
UAM_EXPORT_API int _uam_request_set_detection_threshold(
return ret;
}
-UAM_EXPORT_API int _uam_service_add_device(const char *service, char *device_id,
- uam_tech_type_e tech_type)
+static int __uam_service_sync_request(int req_func, const char *service,
+ const char *device_id, uam_tech_type_e tech_type, void *user_data)
{
FUNC_ENTRY;
int ret;
g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
g_array_append_vals(in_param2, str, sizeof(str));
g_array_append_vals(in_param3, &tech_type, sizeof(int));
+ if (req_func == UAM_REQUEST_SET_DEVICE_SERVICES_DISCRIMINANT) {
+ gboolean *discriminant = (gboolean *)user_data;
+ g_array_append_vals(in_param4, discriminant, sizeof(gboolean));
+ }
- ret = _uam_sync_request(UAM_REQUEST_ADD_DEVICE_TO_SERVICE,
- in_param1, in_param2, in_param3, in_param4, &out_param);
+ ret = _uam_sync_request(req_func, in_param1, in_param2, in_param3, in_param4, &out_param);
+ if (req_func == UAM_REQUEST_GET_DEVICE_SERVICES_DISCRIMINANT && UAM_ERROR_NONE == ret) {
+ gboolean *discriminant = (gboolean *)user_data;
+ *discriminant = g_array_index(out_param, gboolean, 0);
+ UAM_INFO("Discriminant: %d for %s-%d-%s", *discriminant, device_id,
+ tech_type, service);
+ }
+ if (req_func == UAM_REQUEST_GET_DEVICE_SERVICES_LAST_SEEN && UAM_ERROR_NONE == ret) {
+ unsigned long long *last_seen = (unsigned long long *)user_data;
+ *last_seen = g_array_index(out_param, unsigned long long, 0);
+ UAM_INFO("Last seen: %llu for %s-%d-%s", *last_seen, device_id,
+ tech_type, service);
+ }
UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
return ret;
}
+UAM_EXPORT_API int _uam_service_add_device(const char *service, char *device_id,
+ uam_tech_type_e tech_type)
+{
+ return __uam_service_sync_request(UAM_REQUEST_ADD_DEVICE_TO_SERVICE,
+ service, device_id, tech_type, NULL);
+}
+
UAM_EXPORT_API int _uam_service_remove_device(const char *service,
char *device_id, uam_tech_type_e tech_type)
{
- FUNC_ENTRY;
- int ret;
- char svc_str[UAM_SERVICE_MAX_STRING_LEN];
- char str[UAM_DEVICE_ID_MAX_STRING_LEN];
-
- UAM_VALIDATE_INPUT_PARAMETER(service);
- UAM_VALIDATE_INPUT_PARAMETER(device_id);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
- g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
-
- g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
- g_array_append_vals(in_param2, str, sizeof(str));
- g_array_append_vals(in_param3, &tech_type, sizeof(int));
-
- ret = _uam_sync_request(UAM_REQUEST_REMOVE_DEVICE_FROM_SERVICE,
- in_param1, in_param2, in_param3, in_param4, &out_param);
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
+ return __uam_service_sync_request(UAM_REQUEST_REMOVE_DEVICE_FROM_SERVICE,
+ service, device_id, tech_type, NULL);
}
UAM_EXPORT_API int _uam_service_set_device_discriminant(const char *service,
const char *device_id, uam_tech_type_e tech_type, gboolean discriminant)
{
- FUNC_ENTRY;
- int ret;
- char svc_str[UAM_SERVICE_MAX_STRING_LEN];
- char str[UAM_DEVICE_ID_MAX_STRING_LEN];
-
- UAM_VALIDATE_INPUT_PARAMETER(service);
- UAM_VALIDATE_INPUT_PARAMETER(device_id);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
- g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
-
- g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
- g_array_append_vals(in_param2, str, sizeof(str));
- g_array_append_vals(in_param3, &tech_type, sizeof(int));
- g_array_append_vals(in_param4, &discriminant, sizeof(gboolean));
-
- ret = _uam_sync_request(UAM_REQUEST_SET_DEVICE_SERVICES_DISCRIMINANT,
- in_param1, in_param2, in_param3, in_param4, &out_param);
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
+ return __uam_service_sync_request(UAM_REQUEST_SET_DEVICE_SERVICES_DISCRIMINANT,
+ service, device_id, tech_type, &discriminant);
}
UAM_EXPORT_API int _uam_service_get_device_discriminant(const char *service,
const char *device_id, uam_tech_type_e tech_type, gboolean *discriminant)
{
- FUNC_ENTRY;
- int ret;
- char svc_str[UAM_SERVICE_MAX_STRING_LEN];
- char str[UAM_DEVICE_ID_MAX_STRING_LEN];
-
- UAM_VALIDATE_INPUT_PARAMETER(service);
- UAM_VALIDATE_INPUT_PARAMETER(device_id);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
- g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
-
- g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
- g_array_append_vals(in_param2, str, sizeof(str));
- g_array_append_vals(in_param3, &tech_type, sizeof(int));
-
- ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_DISCRIMINANT,
- in_param1, in_param2, in_param3, in_param4, &out_param);
- if (UAM_ERROR_NONE == ret) {
- *discriminant = g_array_index(out_param, gboolean, 0);
- UAM_INFO("Discriminant: %d for %s-%d-%s", *discriminant, device_id,
- tech_type, service);
- }
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
+ return __uam_service_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_DISCRIMINANT,
+ service, device_id, tech_type, discriminant);
}
UAM_EXPORT_API int _uam_service_get_device_last_seen(const char *service,
const char *device_id, uam_tech_type_e tech_type, unsigned long long *last_seen)
{
- FUNC_ENTRY;
- int ret;
- char svc_str[UAM_SERVICE_MAX_STRING_LEN];
- char str[UAM_DEVICE_ID_MAX_STRING_LEN];
-
- UAM_VALIDATE_INPUT_PARAMETER(service);
- UAM_VALIDATE_INPUT_PARAMETER(device_id);
-
- UAM_INIT_PARAMS();
- UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
- g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
-
- g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
- g_array_append_vals(in_param2, str, sizeof(str));
- g_array_append_vals(in_param3, &tech_type, sizeof(int));
-
- ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_LAST_SEEN,
- in_param1, in_param2, in_param3, in_param4, &out_param);
- if (UAM_ERROR_NONE == ret) {
- *last_seen = g_array_index(out_param, unsigned long long, 0);
- UAM_INFO("Last seen: %llu for %s-%d-%s", *last_seen, device_id,
- tech_type, service);
- }
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
+ return __uam_service_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_LAST_SEEN,
+ service, device_id, tech_type, last_seen);
}
GPtrArray **devices_list)
{
FUNC_ENTRY;
- int ret;
char str[UAM_SERVICE_MAX_STRING_LEN];
UAM_VALIDATE_INPUT_PARAMETER(devices_list);
g_strlcpy(str, svc_name, UAM_SERVICE_MAX_STRING_LEN);
g_array_append_vals(in_param1, str, sizeof(str));
- ret = _uam_sync_request(UAM_REQUEST_GET_SERVICE_DEVICES,
+ return _uam_sync_request_get(devices_list, UAM_REQUEST_GET_SERVICE_DEVICES,
in_param1, in_param2, in_param3, in_param4, &out_param);
- if (UAM_ERROR_NONE == ret && NULL != out_param) {
- int i;
- int count;
-
- count = (out_param->len)/sizeof(uam_device_info_s);
- if (0 == count)
- UAM_INFO("No registered device");
-
- for (i = 0; i < count; i++) {
- uam_device_info_s *device_info = NULL;
- uam_device_info_s *info;
-
- info = &g_array_index(out_param, uam_device_info_s, i);
- device_info = g_memdup2(info, sizeof(uam_device_info_s));
- if (device_info)
- g_ptr_array_add(*devices_list, (gpointer)device_info);
- }
- }
-
- UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
-
- FUNC_EXIT;
- return ret;
}
UAM_EXPORT_API int _uam_request_get_service_users(char *svc_name,
return ret;
}
+static int __uam_core_search_user(int user_id, uam_db_user_info_t *user)
+{
+ GSList *l = g_slist_find_custom(users, &user_id, __compare_user_id);
+ if (NULL == l) {
+ UAM_ERR("Invalid user_id [%d]", user_id);
+ return UAM_ERROR_INVALID_PARAMETER;
+ }
+
+ user = l->data;
+ return UAM_ERROR_NONE;
+}
+
+static int __uam_core_search_device(uam_device_info_s *dev_info,
+ int user_id, uam_db_user_info_t *user, uam_db_device_info_t *device)
+{
+ GSList *l = g_slist_find_custom(user->devices,
+ dev_info->device_id, __compare_device_id);
+ if (NULL == l) {
+ UAM_ERR("Valid user_id [%d] but Invalid device_id [%s]",
+ user_id, dev_info->device_id);
+ return UAM_ERROR_INVALID_PARAMETER;
+ }
+
+ device = l->data;
+ return UAM_ERROR_NONE;
+}
+
+static int __uam_core_search_tech(uam_device_info_s *dev_info,
+ uam_db_device_info_t *device, uam_db_tech_info_t *tech)
+{
+ GSList *l = g_slist_find_custom(device->tech_list,
+ &(dev_info->type), __compare_tech_type);
+ if (NULL == l) {
+ UAM_ERR("Strange, tech type [%d] not found", dev_info->type);
+ return UAM_ERROR_INVALID_PARAMETER;
+ }
+
+ tech = l->data;
+ return UAM_ERROR_NONE;
+}
+
int _uam_core_handle_presence_detected(unsigned int sensor,
int user_id, void *info, uam_ble_payload_s *payload)
{
int ret = UAM_ERROR_NONE;
GSList *l;
- uam_db_user_info_t *user;
- uam_db_device_info_t *device;
- uam_db_tech_info_t *tech;
+ uam_db_user_info_t *user = NULL;
+ uam_db_device_info_t *device = NULL;
+ uam_db_tech_info_t *tech = NULL;
uam_device_info_s *dev_info = NULL;
uam_sensor_info_s *sensor_info = NULL;
/* fetch the app_num info for the corresponding user_id */
_uam_core_get_app_num_from_userid(user_id, &dev_info->app_num);
- l = g_slist_find_custom(users, &user_id, __compare_user_id);
- if (NULL == l) {
- UAM_ERR("Invalid user_id [%d]", user_id);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- user = l->data;
-
- l = g_slist_find_custom(user->devices,
- dev_info->device_id, __compare_device_id);
- if (NULL == l) {
- UAM_ERR("Valid user_id [%d] but Invalid device_id [%s]",
- user_id, dev_info->device_id);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- device = l->data;
+ retv_if(UAM_ERROR_NONE != __uam_core_search_user(user_id, user), UAM_ERROR_INVALID_PARAMETER);
+ retv_if(UAM_ERROR_NONE != __uam_core_search_device(dev_info, user_id, user, device), UAM_ERROR_INVALID_PARAMETER);
if (!(device->supported_techs & dev_info->type)) {
UAM_ERR("Valid device_id [%s] but Invalid tech type [%d]",
dev_info->device_id, dev_info->type);
return UAM_ERROR_INVALID_PARAMETER;
}
- l = g_slist_find_custom(device->tech_list,
- &(dev_info->type), __compare_tech_type);
- if (NULL == l) {
- UAM_ERR("Strange, tech type [%d] not found", dev_info->type);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- tech = l->data;
-
+ retv_if(UAM_ERROR_NONE != __uam_core_search_tech(dev_info, device, tech), UAM_ERROR_INVALID_PARAMETER);
tech->presence_state = UAM_PRESENCE_STATE_PRESENT;
tech->last_seen = dev_info->last_seen;
FUNC_ENTRY;
int ret = UAM_ERROR_NONE;
- GSList *l;
- uam_db_user_info_t *user;
- uam_db_device_info_t *device;
- uam_db_tech_info_t *tech;
+ uam_db_user_info_t *user = NULL;
+ uam_db_device_info_t *device = NULL;
+ uam_db_tech_info_t *tech = NULL;
uam_device_info_s *dev_info = NULL;
UAM_INFO("sensor: 0x%8.8X, user_id: %d", sensor, user_id);
_uam_core_get_app_num_from_userid(user_id, &dev_info->app_num);
/* Search user */
- l = g_slist_find_custom(users, &user_id, __compare_user_id);
- if (NULL == l) {
- UAM_ERR("Invalid user_id [%d]", user_id);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- user = l->data;
+ retv_if(UAM_ERROR_NONE != __uam_core_search_user(user_id, user), UAM_ERROR_INVALID_PARAMETER);
/* Search device */
- l = g_slist_find_custom(user->devices,
- dev_info->device_id, __compare_device_id);
- if (NULL == l) {
- UAM_ERR("Valid user_id [%d] but Invalid device_id [%s]",
- user_id, dev_info->device_id);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- device = l->data;
-
+ retv_if(UAM_ERROR_NONE != __uam_core_search_device(dev_info, user_id, user, device), UAM_ERROR_INVALID_PARAMETER);
if (!(device->supported_techs & dev_info->type)) {
UAM_ERR("Valid device_id [%s] but Invalid tech type [%d]",
dev_info->device_id, dev_info->type);
return UAM_ERROR_INVALID_PARAMETER;
}
- l = g_slist_find_custom(device->tech_list,
- &(dev_info->type), __compare_tech_type);
- if (NULL == l) {
- UAM_ERR("Strange, tech type [%d] not found", dev_info->type);
- return UAM_ERROR_INVALID_PARAMETER;
- }
- tech = l->data;
+ /* Search tech */
+ retv_if(UAM_ERROR_NONE != __uam_core_search_tech(dev_info, device, tech), UAM_ERROR_INVALID_PARAMETER);
/* Send user location event */
__send_user_location_event(tech, sensor, dev_info);