2 * Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License")
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <ua-internal.h>
20 #include <ua-common.h>
21 #include <ua-event-handler.h>
22 #include <ua-request-sender.h>
27 } uam_callback_info_t;
29 gboolean is_uam_active = FALSE;
31 static uam_callback_info_t cb_info;
33 UAM_EXPORT_API int _uam_init(uam_event_cb cb, void *user_data)
37 UAM_DBG("is_uam_active = %d", is_uam_active);
38 ret = _uam_sync_enable(TRUE);
39 if (UAM_ERROR_NONE != ret) {
40 UAM_ERR("_uam_sync_enable(TRUE) failed");
45 ret = _uam_register_event_handler(cb, user_data);
46 if (UAM_ERROR_NONE == ret || UAM_ERROR_ALREADY_REGISTERED == ret) {
47 cb_info.callback = cb;
48 cb_info.user_data = user_data;
49 return UAM_ERROR_NONE;
56 UAM_EXPORT_API int _uam_deinit(void)
61 ret = _uam_unregister_event_handler();
63 if (UAM_ERROR_NONE != ret && UAM_ERROR_NOT_REGISTERED != ret)
66 ret = _uam_sync_enable(FALSE);
67 if (UAM_ERROR_NONE != ret)
74 UAM_EXPORT_API int _uam_get_available_sensors(unsigned int *bitmask)
79 UAM_VALIDATE_INPUT_PARAMETER(bitmask);
82 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
84 ret = _uam_sync_request(UAM_REQUEST_GET_AVAILABLE_SENSORS,
85 in_param1, in_param2, in_param3, in_param4, &out_param);
86 if (UAM_ERROR_NONE == ret)
87 *bitmask = g_array_index(out_param, unsigned int, 0);
89 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
95 UAM_EXPORT_API int _uam_get_registered_users(GPtrArray **user_list)
100 UAM_VALIDATE_INPUT_PARAMETER(user_list);
103 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
105 ret = _uam_sync_request(UAM_REQUEST_GET_USERS,
106 in_param1, in_param2, in_param3, in_param4, &out_param);
107 if (UAM_ERROR_NONE == ret && NULL != out_param) {
111 count = (out_param->len)/sizeof(uam_user_info_s);
113 UAM_INFO("No registered users");
115 for (i = 0; i < count; i++) {
116 uam_user_info_s *user_info = NULL;
117 uam_user_info_s *info;
119 info = &g_array_index(out_param, uam_user_info_s, i);
120 user_info = g_memdup(info, sizeof(uam_user_info_s));
122 g_ptr_array_add(*user_list, (gpointer)user_info);
126 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
132 UAM_EXPORT_API int _uam_is_device_registered(uam_device_info_s *dev_info,
133 gboolean *is_registered)
138 UAM_VALIDATE_INPUT_PARAMETER(dev_info);
141 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
143 g_array_append_vals(in_param1, dev_info, sizeof(uam_device_info_s));
144 ret = _uam_sync_request(UAM_REQUEST_IS_DEVICE_ADDED,
145 in_param1, in_param2, in_param3, in_param4, &out_param);
146 if (UAM_ERROR_NONE == ret)
147 *is_registered = g_array_index(out_param, gboolean, 0);
149 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
155 UAM_EXPORT_API int _uam_get_default_user(uam_user_info_s *user)
160 UAM_VALIDATE_INPUT_PARAMETER(user);
163 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
165 ret = _uam_sync_request(UAM_REQUEST_GET_DEFAULT_USER,
166 in_param1, in_param2, in_param3, in_param4, &out_param);
168 if (UAM_ERROR_NONE == ret) {
169 if (out_param->len > 0) {
170 uam_user_info_s *info;
172 info = &g_array_index(out_param, uam_user_info_s, 0);
173 memcpy(user, info, sizeof(uam_user_info_s));
175 UAM_WARN("out_param length is 0");
179 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
185 UAM_EXPORT_API int _uam_add_user(uam_user_info_s *user)
189 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
190 char str1[UAM_USER_NAME_MAX_STRING_LEN];
192 UAM_VALIDATE_INPUT_PARAMETER(user);
193 UAM_VALIDATE_INPUT_PARAMETER(user->account);
194 UAM_VALIDATE_INPUT_PARAMETER(user->name);
197 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
199 g_strlcpy(str, user->account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
200 g_array_append_vals(in_param1, str, sizeof(str));
202 g_strlcpy(str1, user->name, UAM_USER_NAME_MAX_STRING_LEN);
203 g_array_append_vals(in_param2, str1, sizeof(str1));
204 ret = _uam_sync_request(UAM_REQUEST_ADD_USER,
205 in_param1, in_param2, in_param3, in_param4, &out_param);
207 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
213 UAM_EXPORT_API int _uam_remove_user(char *account)
217 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
219 UAM_VALIDATE_INPUT_PARAMETER(account);
222 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
224 g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
225 g_array_append_vals(in_param1, str, sizeof(str));
226 ret = _uam_sync_request(UAM_REQUEST_DELETE_USER,
227 in_param1, in_param2, in_param3, in_param4, &out_param);
229 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
235 UAM_EXPORT_API int _uam_update_user(uam_user_info_s *user)
240 UAM_VALIDATE_INPUT_PARAMETER(user);
243 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
245 g_array_append_vals(in_param1, user, sizeof(uam_user_info_s));
246 ret = _uam_sync_request(UAM_REQUEST_UPDATE_USER,
247 in_param1, in_param2, in_param3, in_param4, &out_param);
249 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
255 UAM_EXPORT_API int _uam_request_get_user_by_account(char *account,
256 uam_user_info_s *user)
260 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
262 UAM_VALIDATE_INPUT_PARAMETER(account);
263 UAM_VALIDATE_INPUT_PARAMETER(user);
266 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
268 g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
269 g_array_append_vals(in_param1, str, sizeof(str));
270 ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_ACCOUNT,
271 in_param1, in_param2, in_param3, in_param4, &out_param);
273 if (UAM_ERROR_NONE == ret) {
274 if (out_param->len > 0) {
275 uam_user_info_s *info;
277 info = &g_array_index(out_param, uam_user_info_s, 0);
278 memcpy(user, info, sizeof(uam_user_info_s));
280 UAM_WARN("out_param length is 0");
284 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
290 UAM_EXPORT_API int _uam_request_get_user_by_deviceid(char *device_id,
291 uam_user_info_s *user)
295 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
297 UAM_VALIDATE_INPUT_PARAMETER(device_id);
298 UAM_VALIDATE_INPUT_PARAMETER(user);
301 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
303 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
304 g_array_append_vals(in_param1, str, sizeof(str));
305 ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_DEVICE_ID,
306 in_param1, in_param2, in_param3, in_param4, &out_param);
308 if (UAM_ERROR_NONE == ret) {
309 if (out_param->len > 0) {
310 uam_user_info_s * info;
312 info = &g_array_index(out_param, uam_user_info_s, 0);
313 memcpy(user, info, sizeof(uam_user_info_s));
315 UAM_WARN("out_param length is 0");
319 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
325 UAM_EXPORT_API int _uam_request_get_user_by_mac(char *mac,
326 uam_user_info_s *user)
330 char str[UAM_MAC_ADDRESS_STRING_LEN];
332 UAM_VALIDATE_INPUT_PARAMETER(mac);
333 UAM_VALIDATE_INPUT_PARAMETER(user);
336 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
338 g_strlcpy(str, mac, UAM_MAC_ADDRESS_STRING_LEN);
339 g_array_append_vals(in_param1, str, sizeof(str));
340 ret = _uam_sync_request(UAM_REQUEST_GET_USER_BY_MAC,
341 in_param1, in_param2, in_param3, in_param4, &out_param);
343 if (UAM_ERROR_NONE == ret) {
344 if (out_param->len > 0) {
345 uam_user_info_s * info;
347 info = &g_array_index(out_param, uam_user_info_s, 0);
348 memcpy(user, info, sizeof(uam_user_info_s));
350 UAM_WARN("out_param length is 0");
354 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
360 UAM_EXPORT_API int _uam_request_add_device(char *account,
361 uam_device_info_s *device)
365 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
367 UAM_VALIDATE_INPUT_PARAMETER(account);
368 UAM_VALIDATE_INPUT_PARAMETER(device);
371 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
373 g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
374 g_array_append_vals(in_param1, str, sizeof(str));
375 g_array_append_vals(in_param2, device, sizeof(uam_device_info_s));
376 ret = _uam_async_request(UAM_REQUEST_ADD_DEVICE, in_param1, in_param2,
377 in_param3, in_param4, cb_info.callback, cb_info.user_data);
379 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
385 UAM_EXPORT_API int _uam_request_remove_device(char *account,
386 uam_device_info_s *device)
390 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
392 UAM_VALIDATE_INPUT_PARAMETER(account);
393 UAM_VALIDATE_INPUT_PARAMETER(device);
396 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
398 g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
399 g_array_append_vals(in_param1, str, sizeof(str));
400 g_array_append_vals(in_param2, device, sizeof(uam_device_info_s));
401 ret = _uam_sync_request(UAM_REQUEST_DELETE_DEVICE,
402 in_param1, in_param2, in_param3, in_param4, &out_param);
404 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
410 UAM_EXPORT_API int _uam_request_remove_device_by_deviceid(
411 const char *device_id, uam_tech_type_e tech_type)
415 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
417 UAM_VALIDATE_INPUT_PARAMETER(device_id);
420 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
422 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
423 g_array_append_vals(in_param1, str, sizeof(str));
424 g_array_append_vals(in_param2, &tech_type, sizeof(int));
425 ret = _uam_sync_request(UAM_REQUEST_DELETE_DEVICE_BY_DEVICE_ID,
426 in_param1, in_param2, in_param3, in_param4, &out_param);
428 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
434 UAM_EXPORT_API int _uam_request_remove_device_by_mac(const char *mac)
438 char str[UAM_MAC_ADDRESS_STRING_LEN];
440 UAM_VALIDATE_INPUT_PARAMETER(mac);
443 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
445 g_strlcpy(str, mac, UAM_MAC_ADDRESS_STRING_LEN);
446 g_array_append_vals(in_param1, str, sizeof(str));
447 ret = _uam_sync_request(UAM_REQUEST_DELETE_DEVICE_BY_MAC,
448 in_param1, in_param2, in_param3, in_param4, &out_param);
450 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
456 UAM_EXPORT_API int _uam_request_get_device_by_deviceid(const char *device_id,
457 uam_tech_type_e tech_type, uam_device_info_s *device)
461 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
463 UAM_VALIDATE_INPUT_PARAMETER(device_id);
464 UAM_VALIDATE_INPUT_PARAMETER(device);
467 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
469 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
470 g_array_append_vals(in_param1, str, sizeof(str));
471 g_array_append_vals(in_param2, &tech_type, sizeof(int));
472 ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_BY_DEVICE_ID,
473 in_param1, in_param2, in_param3, in_param4, &out_param);
475 if (UAM_ERROR_NONE == ret) {
476 if (out_param->len > 0) {
477 uam_device_info_s* info;
479 info = &g_array_index(out_param, uam_device_info_s, 0);
480 memcpy(device, info, sizeof(uam_device_info_s));
482 UAM_WARN("out_param length is 0");
486 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
492 UAM_EXPORT_API int _uam_request_get_device_by_mac(const char *mac,
493 uam_device_info_s *device)
497 char str[UAM_MAC_ADDRESS_STRING_LEN];
499 UAM_VALIDATE_INPUT_PARAMETER(mac);
500 UAM_VALIDATE_INPUT_PARAMETER(device);
503 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
505 g_strlcpy(str, mac, sizeof(str));
506 g_array_append_vals(in_param1, str, UAM_MAC_ADDRESS_STRING_LEN);
507 ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_BY_MAC,
508 in_param1, in_param2, in_param3, in_param4, &out_param);
510 if (UAM_ERROR_NONE == ret) {
511 if (out_param->len > 0) {
512 uam_device_info_s* info;
514 info = &g_array_index(out_param, uam_device_info_s, 0);
515 memcpy(device, info, sizeof(uam_device_info_s));
517 UAM_WARN("out_param length is 0");
521 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
527 UAM_EXPORT_API int _uam_request_get_devices(GPtrArray **devices_list)
532 UAM_VALIDATE_INPUT_PARAMETER(devices_list);
535 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
537 ret = _uam_sync_request(UAM_REQUEST_GET_DEVICES,
538 in_param1, in_param2, in_param3, in_param4, &out_param);
539 if (UAM_ERROR_NONE == ret && NULL != out_param) {
543 count = (out_param->len)/sizeof(uam_device_info_s);
545 UAM_INFO("No registered device");
547 for (i = 0; i < count; i++) {
548 uam_device_info_s *device_info = NULL;
549 uam_device_info_s *info;
551 info = &g_array_index(out_param, uam_device_info_s, i);
552 device_info = g_memdup(info, sizeof(uam_device_info_s));
554 g_ptr_array_add(*devices_list, (gpointer)device_info);
558 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
564 UAM_EXPORT_API int _uam_request_get_user_devices(char *account,
565 GPtrArray **devices_list)
569 char str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
571 UAM_VALIDATE_INPUT_PARAMETER(devices_list);
572 UAM_VALIDATE_INPUT_PARAMETER(account);
575 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
577 g_strlcpy(str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
578 g_array_append_vals(in_param1, str, sizeof(str));
580 ret = _uam_sync_request(UAM_REQUEST_GET_USER_DEVICES,
581 in_param1, in_param2, in_param3, in_param4, &out_param);
582 if (UAM_ERROR_NONE == ret && NULL != out_param) {
586 count = (out_param->len)/sizeof(uam_device_info_s);
588 UAM_INFO("No registered device");
590 for (i = 0; i < count; i++) {
591 uam_device_info_s *device_info = NULL;
592 uam_device_info_s *info;
594 info = &g_array_index(out_param, uam_device_info_s, i);
595 device_info = g_memdup(info, sizeof(uam_device_info_s));
597 g_ptr_array_add(*devices_list, (gpointer)device_info);
601 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
607 UAM_EXPORT_API int _uam_request_set_detection_threshold(
608 unsigned int sensor_type, int presence_threshold, int absence_threshold)
614 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
616 g_array_append_vals(in_param1, &sensor_type, sizeof(unsigned int));
617 g_array_append_vals(in_param2, &presence_threshold, sizeof(int));
618 g_array_append_vals(in_param3, &absence_threshold, sizeof(int));
620 ret = _uam_sync_request(UAM_REQUEST_SET_DETECTION_THRESHOLD,
621 in_param1, in_param2, in_param3, in_param4, &out_param);
623 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
629 UAM_EXPORT_API int _uam_start_presence_detection(unsigned int bitmask,
634 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
636 UAM_VALIDATE_INPUT_PARAMETER(service);
639 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
641 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
642 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
643 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
645 ret = _uam_sync_request(UAM_REQUEST_START_PRESENCE_DETECTION,
646 in_param1, in_param2, in_param3, in_param4, &out_param);
648 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
654 UAM_EXPORT_API int _uam_stop_presence_detection(unsigned int bitmask,
659 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
661 UAM_VALIDATE_INPUT_PARAMETER(service);
664 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
666 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
667 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
668 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
670 ret = _uam_sync_request(UAM_REQUEST_STOP_PRESENCE_DETECTION,
671 in_param1, in_param2, in_param3, in_param4, &out_param);
673 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
679 UAM_EXPORT_API int _uam_start_absence_detection(unsigned int bitmask,
684 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
686 UAM_VALIDATE_INPUT_PARAMETER(service);
689 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
691 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
692 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
693 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
695 ret = _uam_sync_request(UAM_REQUEST_START_ABSENCE_DETECTION,
696 in_param1, in_param2, in_param3, in_param4, &out_param);
698 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
704 UAM_EXPORT_API int _uam_stop_absence_detection(unsigned int bitmask,
709 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
711 UAM_VALIDATE_INPUT_PARAMETER(service);
714 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
716 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
717 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
718 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
720 ret = _uam_sync_request(UAM_REQUEST_STOP_ABSENCE_DETECTION,
721 in_param1, in_param2, in_param3, in_param4, &out_param);
723 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
729 UAM_EXPORT_API int _uam_start_location_detection(unsigned int bitmask,
734 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
736 UAM_VALIDATE_INPUT_PARAMETER(service);
739 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
741 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
742 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
743 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
745 ret = _uam_sync_request(UAM_REQUEST_START_LOCATION_DETECTION,
746 in_param1, in_param2, in_param3, in_param4, &out_param);
748 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
754 UAM_EXPORT_API int _uam_stop_location_detection(unsigned int bitmask,
759 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
761 UAM_VALIDATE_INPUT_PARAMETER(service);
764 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
766 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
767 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
768 g_array_append_vals(in_param2, svc_str, sizeof(svc_str));
770 ret = _uam_sync_request(UAM_REQUEST_STOP_LOCATION_DETECTION,
771 in_param1, in_param2, in_param3, in_param4, &out_param);
773 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
779 UAM_EXPORT_API int _uam_is_sensor_ready(unsigned int sensor, gboolean* status)
784 UAM_VALIDATE_INPUT_PARAMETER(status);
786 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
788 g_array_append_vals(in_param1, &sensor, sizeof(unsigned int));
789 ret = _uam_sync_request(UAM_REQUEST_IS_SENSOR_READY,
790 in_param1, in_param2, in_param3, in_param4, &out_param);
791 if (UAM_ERROR_NONE == ret)
792 *status = g_array_index(out_param, gboolean, 0);
794 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
800 UAM_EXPORT_API int _uam_set_low_power_mode(unsigned int sensor_bitmask,
807 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
809 UAM_INFO("sensor_bitmask [%x] mode [%d]", sensor_bitmask, mode);
811 g_array_append_vals(in_param1, &sensor_bitmask, sizeof(unsigned int));
812 g_array_append_vals(in_param2, &mode, sizeof(gboolean));
813 ret = _uam_sync_request(UAM_REQUEST_SET_LOW_POWER_MODE,
814 in_param1, in_param2, in_param3, in_param4, &out_param);
816 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
822 UAM_EXPORT_API int _uam_get_detection_window(unsigned int *window)
827 UAM_VALIDATE_INPUT_PARAMETER(window);
830 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
832 ret = _uam_sync_request(UAM_REQUEST_GET_DETECTION_WINDOW,
833 in_param1, in_param2, in_param3, in_param4, &out_param);
834 if (UAM_ERROR_NONE == ret) {
835 *window = g_array_index(out_param, unsigned int, 0);
836 UAM_INFO("Detection window: %d", *window);
839 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
845 UAM_EXPORT_API int _uam_set_detection_window(unsigned int window)
851 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
853 g_array_append_vals(in_param1, &window, sizeof(unsigned int));
854 ret = _uam_sync_request(UAM_REQUEST_SET_DETECTION_WINDOW,
855 in_param1, in_param2, in_param3, in_param4, &out_param);
857 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
863 UAM_EXPORT_API int _uam_start_search_active_devices(unsigned int bitmask,
864 int detection_period)
870 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
872 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
873 g_array_append_vals(in_param2, &detection_period, sizeof(int));
874 ret = _uam_sync_request(UAM_REQUEST_START_SEARCH_ACTIVE_DEVICES,
875 in_param1, in_param2, in_param3, in_param4, &out_param);
877 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
883 UAM_EXPORT_API int _uam_stop_search_active_devices(unsigned int bitmask)
889 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
891 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
892 ret = _uam_sync_request(UAM_REQUEST_STOP_SEARCH_ACTIVE_DEVICES,
893 in_param1, in_param2, in_param3, in_param4, &out_param);
895 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
901 UAM_EXPORT_API int _uam_register_app(const char *app_id, unsigned short uid)
905 uam_app_info_s app_info;
908 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
910 g_strlcpy(app_info.app_id, app_id, UAM_APP_ID_MAX_STRING_LEN);
913 g_array_append_vals(in_param1, &app_info, sizeof(uam_app_info_s));
914 ret = _uam_sync_request(UAM_REQUEST_REGISTER_APP,
915 in_param1, in_param2, in_param3, in_param4, &out_param);
917 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
923 UAM_EXPORT_API int _uam_deregister_app(const char *app_id, unsigned short uid)
927 uam_app_info_s app_info;
930 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
932 g_strlcpy(app_info.app_id, app_id, UAM_APP_ID_MAX_STRING_LEN);
935 g_array_append_vals(in_param1, &app_info, sizeof(uam_app_info_s));
936 ret = _uam_sync_request(UAM_REQUEST_DEREGISTER_APP,
937 in_param1, in_param2, in_param3, in_param4, &out_param);
939 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
945 UAM_EXPORT_API int _uam_service_add_user(const char *service, const char *account)
949 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
950 char account_str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
952 UAM_VALIDATE_INPUT_PARAMETER(service);
953 UAM_VALIDATE_INPUT_PARAMETER(account);
956 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
958 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
959 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
961 g_strlcpy(account_str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
962 g_array_append_vals(in_param2, account_str, sizeof(account_str));
964 ret = _uam_sync_request(UAM_REQUEST_ADD_USER_TO_SERVICE,
965 in_param1, in_param2, in_param3, in_param4, &out_param);
967 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
973 UAM_EXPORT_API int _uam_service_remove_user(const char *service,
978 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
979 char account_str[UAM_USER_ACCOUNT_MAX_STRING_LEN];
981 UAM_VALIDATE_INPUT_PARAMETER(service);
982 UAM_VALIDATE_INPUT_PARAMETER(account);
985 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
987 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
988 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
990 g_strlcpy(account_str, account, UAM_USER_ACCOUNT_MAX_STRING_LEN);
991 g_array_append_vals(in_param2, account_str, sizeof(account_str));
993 ret = _uam_sync_request(UAM_REQUEST_REMOVE_USER_FROM_SERVICE,
994 in_param1, in_param2, in_param3, in_param4, &out_param);
996 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1002 UAM_EXPORT_API int _uam_service_add_device(const char *service, char *device_id,
1003 uam_tech_type_e tech_type)
1007 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1008 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1010 UAM_VALIDATE_INPUT_PARAMETER(service);
1011 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1014 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1016 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1017 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1019 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1020 g_array_append_vals(in_param2, str, sizeof(str));
1021 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1023 ret = _uam_sync_request(UAM_REQUEST_ADD_DEVICE_TO_SERVICE,
1024 in_param1, in_param2, in_param3, in_param4, &out_param);
1026 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1032 UAM_EXPORT_API int _uam_service_remove_device(const char *service,
1033 char *device_id, uam_tech_type_e tech_type)
1037 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1038 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1040 UAM_VALIDATE_INPUT_PARAMETER(service);
1041 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1044 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1046 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1047 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1049 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1050 g_array_append_vals(in_param2, str, sizeof(str));
1051 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1053 ret = _uam_sync_request(UAM_REQUEST_REMOVE_DEVICE_FROM_SERVICE,
1054 in_param1, in_param2, in_param3, in_param4, &out_param);
1056 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1062 UAM_EXPORT_API int _uam_service_set_device_discriminant(const char *service,
1063 const char *device_id, uam_tech_type_e tech_type, gboolean discriminant)
1067 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1068 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1070 UAM_VALIDATE_INPUT_PARAMETER(service);
1071 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1074 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1076 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1077 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1079 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1080 g_array_append_vals(in_param2, str, sizeof(str));
1081 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1082 g_array_append_vals(in_param4, &discriminant, sizeof(gboolean));
1084 ret = _uam_sync_request(UAM_REQUEST_SET_DEVICE_SERVICES_DISCRIMINANT,
1085 in_param1, in_param2, in_param3, in_param4, &out_param);
1087 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1093 UAM_EXPORT_API int _uam_service_get_device_discriminant(const char *service,
1094 const char *device_id, uam_tech_type_e tech_type, gboolean *discriminant)
1098 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1099 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1101 UAM_VALIDATE_INPUT_PARAMETER(service);
1102 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1105 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1107 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1108 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1110 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1111 g_array_append_vals(in_param2, str, sizeof(str));
1112 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1114 ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_DISCRIMINANT,
1115 in_param1, in_param2, in_param3, in_param4, &out_param);
1116 if (UAM_ERROR_NONE == ret) {
1117 *discriminant = g_array_index(out_param, gboolean, 0);
1118 UAM_INFO("Discriminant: %d for %s-%d-%s", *discriminant, device_id,
1119 tech_type, service);
1121 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1127 UAM_EXPORT_API int _uam_service_get_device_last_seen(const char *service,
1128 const char *device_id, uam_tech_type_e tech_type, unsigned long long *last_seen)
1132 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1133 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1135 UAM_VALIDATE_INPUT_PARAMETER(service);
1136 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1139 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1141 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1142 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1144 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1145 g_array_append_vals(in_param2, str, sizeof(str));
1146 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1148 ret = _uam_sync_request(UAM_REQUEST_GET_DEVICE_SERVICES_LAST_SEEN,
1149 in_param1, in_param2, in_param3, in_param4, &out_param);
1150 if (UAM_ERROR_NONE == ret) {
1151 *last_seen = g_array_index(out_param, unsigned long long, 0);
1152 UAM_INFO("Last seen: %llu for %s-%d-%s", *last_seen, device_id,
1153 tech_type, service);
1155 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1162 UAM_EXPORT_API int _uam_set_service_detection_cycle(const char *service,
1167 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1169 UAM_VALIDATE_INPUT_PARAMETER(service);
1172 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1174 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1175 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1176 g_array_append_vals(in_param2, &cycle, sizeof(unsigned int));
1178 ret = _uam_sync_request(UAM_REQUEST_SET_SERVICE_DETECTION_CYCLE,
1179 in_param1, in_param2, in_param3, in_param4, &out_param);
1181 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1187 UAM_EXPORT_API int _uam_get_service_detection_cycle(const char *service,
1188 unsigned int *cycle)
1192 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1194 UAM_VALIDATE_INPUT_PARAMETER(service);
1197 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1199 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1200 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1202 ret = _uam_sync_request(UAM_REQUEST_GET_SERVICE_DETECTION_CYCLE,
1203 in_param1, in_param2, in_param3, in_param4, &out_param);
1204 if (UAM_ERROR_NONE == ret) {
1205 *cycle = g_array_index(out_param, unsigned int, 0);
1206 UAM_INFO("Detection cycle: %d for %s", *cycle, service);
1209 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1215 UAM_EXPORT_API int _uam_db_reset(void)
1221 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1223 ret = _uam_sync_request(UAM_REQUEST_RESET_DB,
1224 in_param1, in_param2, in_param3, in_param4, &out_param);
1226 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1232 UAM_EXPORT_API int _uam_get_default_service(uam_service_info_s *service)
1238 UAM_VALIDATE_INPUT_PARAMETER(service);
1241 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1243 ret = _uam_sync_request(UAM_REQUEST_GET_DEFAULT_SERVICE,
1244 in_param1, in_param2, in_param3, in_param4, &out_param);
1246 if (UAM_ERROR_NONE == ret) {
1247 if (out_param->len > 0) {
1248 uam_service_info_s *info;
1250 info = &g_array_index(out_param, uam_service_info_s, 0);
1251 memcpy(service, info, sizeof(uam_service_info_s));
1253 UAM_WARN("out_param length is 0");
1257 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1263 UAM_EXPORT_API int _uam_register_service(uam_service_info_s *service)
1268 UAM_VALIDATE_INPUT_PARAMETER(service);
1269 UAM_VALIDATE_INPUT_PARAMETER(service->name);
1272 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1274 g_array_append_vals(in_param1, service, sizeof(uam_service_info_s));
1275 ret = _uam_sync_request(UAM_REQUEST_REGISTER_SERVICE,
1276 in_param1, in_param2, in_param3, in_param4, &out_param);
1278 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1284 UAM_EXPORT_API int _uam_update_service(uam_service_info_s *service)
1289 UAM_VALIDATE_INPUT_PARAMETER(service);
1290 UAM_VALIDATE_INPUT_PARAMETER(service->name);
1293 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1295 g_array_append_vals(in_param1, service, sizeof(uam_service_info_s));
1296 ret = _uam_sync_request(UAM_REQUEST_UPDATE_SERVICE,
1297 in_param1, in_param2, in_param3, in_param4, &out_param);
1299 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1305 UAM_EXPORT_API int _uam_unregister_service(uam_service_info_s *service)
1309 char str1[UAM_SERVICE_MAX_STRING_LEN];
1311 UAM_VALIDATE_INPUT_PARAMETER(service);
1312 UAM_VALIDATE_INPUT_PARAMETER(service->name);
1315 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1317 g_strlcpy(str1, service->name, UAM_SERVICE_MAX_STRING_LEN);
1318 g_array_append_vals(in_param1, str1, sizeof(str1));
1319 ret = _uam_sync_request(UAM_REQUEST_UNREGISTER_SERVICE,
1320 in_param1, in_param2, in_param3, in_param4, &out_param);
1322 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1328 UAM_EXPORT_API int _uam_get_registered_services(GPtrArray **service_list)
1333 UAM_VALIDATE_INPUT_PARAMETER(service_list);
1336 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1338 ret = _uam_sync_request(UAM_REQUEST_GET_SERVICES,
1339 in_param1, in_param2, in_param3, in_param4, &out_param);
1340 if (UAM_ERROR_NONE == ret && NULL != out_param) {
1344 count = (out_param->len)/sizeof(uam_service_info_s);
1346 UAM_INFO("No registered services");
1348 for (i = 0; i < count; i++) {
1349 uam_service_info_s *service_info = NULL;
1350 uam_service_info_s *info;
1352 info = &g_array_index(out_param, uam_service_info_s, i);
1353 service_info = g_memdup(info, sizeof(uam_service_info_s));
1355 g_ptr_array_add(*service_list, (gpointer)service_info);
1359 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1365 UAM_EXPORT_API int _uam_request_get_service_devices(char *svc_name,
1366 GPtrArray **devices_list)
1370 char str[UAM_SERVICE_MAX_STRING_LEN];
1372 UAM_VALIDATE_INPUT_PARAMETER(devices_list);
1373 UAM_VALIDATE_INPUT_PARAMETER(svc_name);
1376 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1378 g_strlcpy(str, svc_name, UAM_SERVICE_MAX_STRING_LEN);
1379 g_array_append_vals(in_param1, str, sizeof(str));
1381 ret = _uam_sync_request(UAM_REQUEST_GET_SERVICE_DEVICES,
1382 in_param1, in_param2, in_param3, in_param4, &out_param);
1383 if (UAM_ERROR_NONE == ret && NULL != out_param) {
1387 count = (out_param->len)/sizeof(uam_device_info_s);
1389 UAM_INFO("No registered device");
1391 for (i = 0; i < count; i++) {
1392 uam_device_info_s *device_info = NULL;
1393 uam_device_info_s *info;
1395 info = &g_array_index(out_param, uam_device_info_s, i);
1396 device_info = g_memdup(info, sizeof(uam_device_info_s));
1398 g_ptr_array_add(*devices_list, (gpointer)device_info);
1402 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1408 UAM_EXPORT_API int _uam_request_get_service_users(char *svc_name,
1409 GPtrArray **users_list)
1413 char str[UAM_SERVICE_MAX_STRING_LEN];
1415 UAM_VALIDATE_INPUT_PARAMETER(users_list);
1416 UAM_VALIDATE_INPUT_PARAMETER(svc_name);
1419 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1421 g_strlcpy(str, svc_name, UAM_SERVICE_MAX_STRING_LEN);
1422 g_array_append_vals(in_param1, str, sizeof(str));
1424 ret = _uam_sync_request(UAM_REQUEST_GET_SERVICE_USERS,
1425 in_param1, in_param2, in_param3, in_param4, &out_param);
1426 if (UAM_ERROR_NONE == ret && NULL != out_param) {
1430 count = (out_param->len)/sizeof(uam_user_info_s);
1432 UAM_INFO("No registered user for this service");
1434 for (i = 0; i < count; i++) {
1435 uam_user_info_s *user_info = NULL;
1436 uam_user_info_s *info;
1438 info = &g_array_index(out_param, uam_user_info_s, i);
1439 user_info = g_memdup(info, sizeof(uam_user_info_s));
1441 g_ptr_array_add(*users_list, (gpointer)user_info);
1445 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1451 UAM_EXPORT_API int _uam_request_update_device(uam_device_info_s *device)
1456 UAM_VALIDATE_INPUT_PARAMETER(device);
1459 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1461 g_array_append_vals(in_param1, device, sizeof(uam_device_info_s));
1462 ret = _uam_sync_request(UAM_REQUEST_UPDATE_DEVICE,
1463 in_param1, in_param2, in_param3, in_param4, &out_param);
1465 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1471 UAM_EXPORT_API int _uam_add_ibeacon_adv_data(unsigned int adv_len, const char *ibeacon_adv)
1476 char payload_buf[UAM_IBEACON_ADV_MAX_LEN];
1479 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1481 if (adv_len >= UAM_IBEACON_ADV_MAX_LEN)
1482 len = UAM_IBEACON_ADV_MAX_LEN;
1484 memset(payload_buf, 0x00, UAM_IBEACON_ADV_MAX_LEN);
1485 memcpy(payload_buf, ibeacon_adv, len);
1487 g_array_append_vals(in_param1, &len, sizeof(unsigned int));
1488 g_array_append_vals(in_param2, &payload_buf, sizeof(payload_buf));
1489 ret = _uam_sync_request(UAM_REQUEST_ADD_IBEACON_ADV,
1490 in_param1, in_param2, in_param3, in_param4, &out_param);
1492 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1498 UAM_EXPORT_API int _uam_request_add_payload(uam_ble_payload_s *payload,
1499 char *device_id, uam_tech_type_e tech_type)
1503 char str[UAM_DEVICE_ID_MAX_STRING_LEN];
1505 UAM_VALIDATE_INPUT_PARAMETER(payload);
1506 UAM_VALIDATE_INPUT_PARAMETER(device_id);
1509 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1511 g_array_append_vals(in_param1, payload, sizeof(uam_ble_payload_s));
1512 g_strlcpy(str, device_id, UAM_DEVICE_ID_MAX_STRING_LEN);
1513 g_array_append_vals(in_param2, str, sizeof(str));
1514 g_array_append_vals(in_param3, &tech_type, sizeof(int));
1516 ret = _uam_sync_request(UAM_REQUEST_ADD_PAYLOAD,
1517 in_param1, in_param2, in_param3, in_param4, &out_param);
1519 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1525 UAM_EXPORT_API int _uam_service_add_payload(const char *service,
1526 uam_ble_payload_s *payload)
1530 char svc_str[UAM_SERVICE_MAX_STRING_LEN];
1532 UAM_VALIDATE_INPUT_PARAMETER(service);
1533 UAM_VALIDATE_INPUT_PARAMETER(payload);
1536 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1538 g_strlcpy(svc_str, service, UAM_SERVICE_MAX_STRING_LEN);
1539 g_array_append_vals(in_param1, svc_str, sizeof(svc_str));
1541 g_array_append_vals(in_param2, payload, sizeof(uam_ble_payload_s));
1543 ret = _uam_sync_request(UAM_REQUEST_ADD_PAYLOAD_TO_SERVICE,
1544 in_param1, in_param2, in_param3, in_param4, &out_param);
1546 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1552 UAM_EXPORT_API int _uam_get_added_payloads(GPtrArray **payload_list)
1557 UAM_VALIDATE_INPUT_PARAMETER(payload_list);
1560 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1562 ret = _uam_sync_request(UAM_REQUEST_GET_PAYLOADS,
1563 in_param1, in_param2, in_param3, in_param4, &out_param);
1564 if (UAM_ERROR_NONE == ret && NULL != out_param) {
1568 count = (out_param->len)/sizeof(uam_ble_payload_s);
1570 UAM_INFO("No registered payloads");
1572 for (i = 0; i < count; i++) {
1573 uam_ble_payload_s *payload_info = NULL;
1574 uam_ble_payload_s *info;
1576 info = &g_array_index(out_param, uam_ble_payload_s, i);
1577 payload_info = g_memdup(info, sizeof(uam_ble_payload_s));
1579 g_ptr_array_add(*payload_list, (gpointer)payload_info);
1583 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1589 UAM_EXPORT_API int _uam_request_add_sensor(unsigned int bitmask)
1595 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1597 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
1598 ret = _uam_sync_request(UAM_REQUEST_ADD_SENSOR,
1599 in_param1, in_param2, in_param3, in_param4, &out_param);
1601 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1607 UAM_EXPORT_API int _uam_request_remove_sensor(unsigned int bitmask)
1613 UAM_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
1615 g_array_append_vals(in_param1, &bitmask, sizeof(unsigned int));
1616 ret = _uam_sync_request(UAM_REQUEST_REMOVE_SENSOR,
1617 in_param1, in_param2, in_param3, in_param4, &out_param);
1619 UAM_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);