2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.1 (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://floralicense.org/license/
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.
17 #include <linux/limits.h>
21 #include <sys/types.h>
27 #include <pmapi.h>/*for pm lock*/
29 #include "net_nfc_oem_controller.h"
30 #include "net_nfc_server_controller.h"
31 #include "net_nfc_util_internal.h"
32 #include "net_nfc_debug_internal.h"
33 #include "net_nfc_server_tag.h"
35 #define NET_NFC_DEFAULT_PLUGIN "libnfc-plugin.so"
37 static net_nfc_oem_interface_s g_interface;
39 static void *net_nfc_controller_load_file(const char *dir_path, const char *filename)
43 net_nfc_error_e result;
44 char path[PATH_MAX] = { '\0' };
46 bool (*onload)(net_nfc_oem_interface_s *interfaces);
48 snprintf(path, PATH_MAX, "%s/%s", dir_path, filename);
49 NFC_DBG("path : %s", path);
51 if (stat(path, &st) == -1)
53 NFC_ERR("stat failed : file not found");
57 if (S_ISREG(st.st_mode) == 0)
59 NFC_ERR("S_ISREG(st.st_mode) == 0");
63 handle = dlopen(path, RTLD_LAZY);
67 NFC_ERR("dlopen failed, [%d] : %s",
68 errno, strerror_r(errno, buffer, sizeof(buffer)));
72 onload = dlsym(handle, "onload");
76 NFC_ERR("dlsym failed, [%d] : %s",
77 errno, strerror_r(errno, buffer, sizeof(buffer)));
81 memset(&g_interface, 0, sizeof(g_interface));
82 if (onload(&g_interface) == false)
84 NFC_ERR("onload failed");
88 if (net_nfc_controller_support_nfc(&result) == false)
90 NFC_ERR("net_nfc_controller_support_nfc failed, [%d]", result);
103 void *net_nfc_controller_onload()
110 dirp = opendir(NFC_MANAGER_MODULEDIR);
113 NFC_ERR("Can not open directory %s", NFC_MANAGER_MODULEDIR);
117 while ((dir = readdir(dirp)))
119 if ((strcmp(dir->d_name, ".") == 0) || (strcmp(dir->d_name, "..") == 0))
122 /* check ".so" suffix */
123 if (strcmp(dir->d_name + (strlen(dir->d_name) - strlen(".so")), ".so") != 0)
126 /* check default plugin later */
127 if (strcmp(dir->d_name, NET_NFC_DEFAULT_PLUGIN) == 0)
130 handle = net_nfc_controller_load_file(NFC_MANAGER_MODULEDIR, dir->d_name);
133 SECURE_LOGD("Successfully loaded : %s", dir->d_name);
141 /* load default plugin */
142 handle = net_nfc_controller_load_file(NFC_MANAGER_MODULEDIR, NET_NFC_DEFAULT_PLUGIN);
146 NFC_DBG("loaded default plugin : %s", NET_NFC_DEFAULT_PLUGIN);
151 NFC_ERR("can not load default plugin : %s", NET_NFC_DEFAULT_PLUGIN);
156 bool net_nfc_controller_unload(void *handle)
158 memset(&g_interface, 0x00, sizeof(net_nfc_oem_interface_s));
168 bool net_nfc_controller_init(net_nfc_error_e *result)
170 if (g_interface.init != NULL)
172 return g_interface.init(result);
176 NFC_ERR("interface is null");
177 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
182 bool net_nfc_controller_deinit(void)
184 if (g_interface.deinit != NULL)
186 return g_interface.deinit();
190 NFC_ERR("interface is null");
195 bool net_nfc_controller_register_listener(
196 target_detection_listener_cb target_detection_listener,
197 se_transaction_listener_cb se_transaction_listener,
198 llcp_event_listener_cb llcp_event_listener, net_nfc_error_e *result)
200 if (g_interface.register_listener != NULL)
202 return g_interface.register_listener(target_detection_listener,
203 se_transaction_listener, llcp_event_listener, result);
207 NFC_ERR("interface is null");
208 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
213 bool net_nfc_controller_unregister_listener()
215 if (g_interface.unregister_listener != NULL)
217 return g_interface.unregister_listener();
221 NFC_ERR("interface is null");
226 bool net_nfc_controller_get_firmware_version(data_s **data,
227 net_nfc_error_e *result)
229 if (g_interface.get_firmware_version != NULL)
231 return g_interface.get_firmware_version(data, result);
235 NFC_ERR("interface is null");
236 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
241 bool net_nfc_controller_check_firmware_version(net_nfc_error_e *result)
243 if (g_interface.check_firmware_version != NULL)
245 return g_interface.check_firmware_version(result);
249 NFC_ERR("interface is null");
250 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
255 bool net_nfc_controller_update_firmware(net_nfc_error_e *result)
257 if (g_interface.update_firmeware != NULL)
259 return g_interface.update_firmeware(result);
263 NFC_ERR("interface is null");
264 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
269 bool net_nfc_controller_get_stack_information(
270 net_nfc_stack_information_s *stack_info, net_nfc_error_e *result)
272 if (g_interface.get_stack_information != NULL)
274 return g_interface.get_stack_information(stack_info, result);
278 NFC_ERR("interface is null");
279 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
284 bool net_nfc_controller_configure_discovery(net_nfc_discovery_mode_e mode,
285 net_nfc_event_filter_e config, net_nfc_error_e *result)
287 if (g_interface.configure_discovery != NULL)
289 return g_interface.configure_discovery(mode, config, result);
293 NFC_ERR("interface is null");
294 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
299 bool net_nfc_controller_get_secure_element_list(
300 net_nfc_secure_element_info_s *list,
302 net_nfc_error_e *result)
304 if (g_interface.get_secure_element_list != NULL)
306 return g_interface.get_secure_element_list(list, count, result);
310 NFC_ERR("interface is null");
311 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
316 bool net_nfc_controller_set_secure_element_mode(
317 net_nfc_secure_element_type_e element_type,
318 net_nfc_secure_element_mode_e mode,
319 net_nfc_error_e *result)
321 if (g_interface.set_secure_element_mode != NULL)
323 return g_interface.set_secure_element_mode(element_type, mode, result);
327 NFC_ERR("interface is null");
328 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
333 bool net_nfc_controller_secure_element_open(
334 net_nfc_secure_element_type_e element_type,
335 net_nfc_target_handle_s **handle,
336 net_nfc_error_e *result)
340 ret_val = pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
342 NFC_DBG("pm_lock_state [%d]!!", ret_val);
344 if (g_interface.secure_element_open != NULL)
346 return g_interface.secure_element_open(element_type, handle, result);
350 NFC_ERR("interface is null");
351 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
356 bool net_nfc_controller_secure_element_get_atr(net_nfc_target_handle_s *handle,
357 data_s **atr, net_nfc_error_e *result)
359 if (g_interface.secure_element_get_atr != NULL)
361 return g_interface.secure_element_get_atr(handle, atr, result);
365 NFC_ERR("interface is null");
366 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
371 bool net_nfc_controller_secure_element_send_apdu(
372 net_nfc_target_handle_s *handle,
375 net_nfc_error_e *result)
377 if (g_interface.secure_element_send_apdu != NULL)
379 return g_interface.secure_element_send_apdu(handle, command, response, result);
383 NFC_ERR("interface is null");
384 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
389 bool net_nfc_controller_secure_element_close(net_nfc_target_handle_s *handle,
390 net_nfc_error_e *result)
394 ret_val = pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
395 NFC_DBG("pm_unlock_state [%d]!!", ret_val);
397 if (g_interface.secure_element_close != NULL)
399 return g_interface.secure_element_close(handle, result);
403 NFC_ERR("interface is null");
404 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
409 bool net_nfc_controller_check_target_presence(net_nfc_target_handle_s *handle,
410 net_nfc_error_e *result)
412 if (g_interface.check_presence != NULL)
414 return g_interface.check_presence(handle, result);
418 NFC_ERR("interface is null");
419 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
424 bool net_nfc_controller_connect(net_nfc_target_handle_s *handle,
425 net_nfc_error_e *result)
429 ret_val = pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
431 NFC_DBG("net_nfc_controller_connect pm_lock_state [%d]!!", ret_val);
433 if (g_interface.connect != NULL)
435 return g_interface.connect(handle, result);
439 NFC_ERR("interface is null");
440 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
445 bool net_nfc_controller_disconnect(net_nfc_target_handle_s *handle,
446 net_nfc_error_e *result)
450 ret_val = pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
452 NFC_ERR("net_nfc_controller_disconnect pm_lock_state [%d]!!", ret_val);
454 if (g_interface.disconnect != NULL)
456 net_nfc_server_free_target_info();
458 return g_interface.disconnect(handle, result);
462 NFC_ERR("interface is null");
463 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
468 bool net_nfc_controller_check_ndef(net_nfc_target_handle_s *handle,
469 uint8_t *ndef_card_state,
472 net_nfc_error_e *result)
474 if (g_interface.check_ndef != NULL)
476 return g_interface.check_ndef(handle, ndef_card_state, max_data_size,
477 real_data_size, result);
481 NFC_ERR("interface is null");
482 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
487 bool net_nfc_controller_read_ndef(net_nfc_target_handle_s *handle, data_s **data,
488 net_nfc_error_e *result)
490 if (g_interface.read_ndef != NULL)
492 return g_interface.read_ndef(handle, data, result);
496 NFC_ERR("interface is null");
497 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
502 bool net_nfc_controller_write_ndef(net_nfc_target_handle_s *handle, data_s *data,
503 net_nfc_error_e *result)
505 if (g_interface.write_ndef != NULL)
507 return g_interface.write_ndef(handle, data, result);
511 NFC_ERR("interface is null");
512 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
517 bool net_nfc_controller_make_read_only_ndef(net_nfc_target_handle_s *handle,
518 net_nfc_error_e *result)
520 if (g_interface.make_read_only_ndef != NULL)
522 return g_interface.make_read_only_ndef(handle, result);
526 NFC_ERR("interface is null");
527 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
532 bool net_nfc_controller_format_ndef(net_nfc_target_handle_s *handle,
533 data_s *secure_key, net_nfc_error_e *result)
535 if (g_interface.format_ndef != NULL)
537 return g_interface.format_ndef(handle, secure_key, result);
541 NFC_ERR("interface is null");
542 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
547 bool net_nfc_controller_transceive(net_nfc_target_handle_s *handle,
548 net_nfc_transceive_info_s *info, data_s **data, net_nfc_error_e *result)
550 if (g_interface.transceive != NULL)
552 return g_interface.transceive(handle, info, data, result);
556 NFC_ERR("interface is null");
557 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
562 bool net_nfc_controller_exception_handler()
564 if (g_interface.exception_handler != NULL)
566 return g_interface.exception_handler();
570 NFC_ERR("interface is null");
575 bool net_nfc_controller_is_ready(net_nfc_error_e *result)
577 if (g_interface.is_ready != NULL)
579 return g_interface.is_ready(result);
583 NFC_ERR("interface is null");
584 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
589 bool net_nfc_controller_llcp_config(net_nfc_llcp_config_info_s *config,
590 net_nfc_error_e *result)
592 if (g_interface.config_llcp != NULL)
594 return g_interface.config_llcp(config, result);
598 NFC_ERR("interface is null");
599 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
603 bool net_nfc_controller_llcp_check_llcp(net_nfc_target_handle_s *handle,
604 net_nfc_error_e *result)
606 if (g_interface.check_llcp_status != NULL)
608 return g_interface.check_llcp_status(handle, result);
612 NFC_ERR("interface is null");
613 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
617 bool net_nfc_controller_llcp_activate_llcp(net_nfc_target_handle_s *handle,
618 net_nfc_error_e *result)
620 if (g_interface.activate_llcp != NULL)
622 return g_interface.activate_llcp(handle, result);
626 NFC_ERR("interface is null");
627 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
632 static GSList *llcp_sockets;
634 static gint _compare_socket_info(gconstpointer a, gconstpointer b)
637 socket_info_t *info = (socket_info_t *)a;
639 if (info->socket == (net_nfc_llcp_socket_t)b)
647 static socket_info_t* _get_socket_info(net_nfc_llcp_socket_t socket)
650 socket_info_t *result;
652 item = g_slist_find_custom(llcp_sockets, GUINT_TO_POINTER(socket),
653 _compare_socket_info);
655 result = (socket_info_t *)item->data;
662 static socket_info_t* _add_socket_info(net_nfc_llcp_socket_t socket)
664 socket_info_t *result;
666 _net_nfc_util_alloc_mem(result, sizeof(socket_info_t));
669 result->socket = socket;
671 llcp_sockets = g_slist_append(llcp_sockets, result);
677 static void _remove_socket_info(net_nfc_llcp_socket_t socket)
681 item = g_slist_find_custom(llcp_sockets, GUINT_TO_POINTER(socket),
682 _compare_socket_info);
685 llcp_sockets = g_slist_remove_link(llcp_sockets, item);
690 void net_nfc_controller_llcp_socket_error_cb(net_nfc_llcp_socket_t socket,
691 net_nfc_error_e result, void *data, void *user_param)
695 info = _get_socket_info(socket);
698 if (info->err_cb != NULL)
699 info->err_cb(socket, result, NULL, NULL, info->err_param);
701 _remove_socket_info(socket);
705 bool net_nfc_controller_llcp_create_socket(net_nfc_llcp_socket_t *socket,
706 net_nfc_socket_type_e socketType,
709 net_nfc_error_e *result,
710 net_nfc_service_llcp_cb cb,
713 if (g_interface.create_llcp_socket != NULL)
718 info = _add_socket_info(-1);
721 NFC_ERR("_net_nfc_util_alloc_mem failed");
722 *result = NET_NFC_ALLOC_FAIL;
726 ret = g_interface.create_llcp_socket(socket, socketType, miu, rw, result, NULL);
729 info->socket = *socket;
731 info->err_param = user_param;
735 _remove_socket_info(-1);
742 NFC_ERR("interface is null");
743 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
748 bool net_nfc_controller_llcp_bind(net_nfc_llcp_socket_t socket,
749 uint8_t service_access_point, net_nfc_error_e *result)
751 if (g_interface.bind_llcp_socket != NULL)
753 return g_interface.bind_llcp_socket(socket, service_access_point, result);
757 NFC_ERR("interface is null");
758 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
763 void net_nfc_controller_llcp_incoming_cb(net_nfc_llcp_socket_t socket,
764 net_nfc_error_e result, void *data, void *user_param)
766 socket_info_t *info = (socket_info_t *)user_param;
768 info = _get_socket_info(info->socket);
771 if (_add_socket_info(socket) != NULL)
773 if (info->work_cb != NULL)
774 info->work_cb(socket, result, NULL, NULL, info->work_param);
778 NFC_ERR("_net_nfc_util_alloc_mem failed");
783 bool net_nfc_controller_llcp_listen(net_nfc_target_handle_s* handle,
784 uint8_t *service_access_name,
785 net_nfc_llcp_socket_t socket,
786 net_nfc_error_e *result,
787 net_nfc_service_llcp_cb cb,
790 if (g_interface.listen_llcp_socket != NULL)
794 info = _get_socket_info(socket);
797 NFC_ERR("_get_socket_info failed");
798 *result = NET_NFC_INVALID_HANDLE;
803 info->work_param = user_param;
805 return g_interface.listen_llcp_socket(handle, service_access_name, socket,
810 NFC_ERR("interface is null");
811 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
816 bool net_nfc_controller_llcp_accept(net_nfc_llcp_socket_t socket,
817 net_nfc_error_e *result, net_nfc_service_llcp_cb cb, void *user_param)
819 if (g_interface.accept_llcp_socket != NULL)
823 info = _get_socket_info(socket);
826 NFC_ERR("_get_socket_info failed");
827 *result = NET_NFC_INVALID_HANDLE;
832 info->err_param = user_param;
834 return g_interface.accept_llcp_socket(socket, result, NULL);
838 NFC_ERR("interface is null");
839 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
844 bool net_nfc_controller_llcp_reject(net_nfc_target_handle_s *handle,
845 net_nfc_llcp_socket_t socket, net_nfc_error_e *result)
847 if (g_interface.reject_llcp != NULL)
851 ret = g_interface.reject_llcp(handle, socket, result);
853 _remove_socket_info(socket);
859 NFC_ERR("interface is null");
860 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
865 void net_nfc_controller_llcp_connected_cb(net_nfc_llcp_socket_t socket,
866 net_nfc_error_e result, void *data, void *user_param)
868 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
870 RET_IF(NULL == param);
872 if (param->cb != NULL)
873 param->cb(param->socket, result, NULL, NULL, param->user_param);
875 _net_nfc_util_free_mem(param);
878 bool net_nfc_controller_llcp_connect_by_url(net_nfc_target_handle_s *handle,
879 net_nfc_llcp_socket_t socket,
880 uint8_t *service_access_name,
881 net_nfc_error_e *result,
882 net_nfc_service_llcp_cb cb,
887 ret_val = pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
889 NFC_DBG("pm_lock_state[%d]!!", ret_val);
891 if (g_interface.connect_llcp_by_url != NULL)
893 net_nfc_llcp_param_t *param = NULL;
895 _net_nfc_util_alloc_mem(param, sizeof(*param));
898 NFC_ERR("_net_nfc_util_alloc_mem failed");
899 *result = NET_NFC_ALLOC_FAIL;
903 param->socket = socket;
905 param->user_param = user_param;
907 return g_interface.connect_llcp_by_url(handle, socket, service_access_name,
912 NFC_ERR("interface is null");
913 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
918 bool net_nfc_controller_llcp_connect(net_nfc_target_handle_s *handle,
919 net_nfc_llcp_socket_t socket,
920 uint8_t service_access_point,
921 net_nfc_error_e *result,
922 net_nfc_service_llcp_cb cb,
927 ret_val = pm_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
929 NFC_DBG("net_nfc_controller_llcp_connect pm_lock_state [%d]!!", ret_val);
931 if (g_interface.connect_llcp != NULL)
933 net_nfc_llcp_param_t *param = NULL;
935 _net_nfc_util_alloc_mem(param, sizeof(*param));
937 NFC_ERR("_net_nfc_util_alloc_mem failed");
938 *result = NET_NFC_ALLOC_FAIL;
942 param->socket = socket;
944 param->user_param = user_param;
946 return g_interface.connect_llcp(handle, socket, service_access_point, result, param);
950 NFC_ERR("interface is null");
951 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
956 void net_nfc_controller_llcp_disconnected_cb(net_nfc_llcp_socket_t socket,
957 net_nfc_error_e result, void *data, void *user_param)
959 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
961 RET_IF(NULL == param);
963 if (param->cb != NULL)
964 param->cb(param->socket, result, NULL, NULL, param->user_param);
966 _net_nfc_util_free_mem(param);
969 bool net_nfc_controller_llcp_disconnect(net_nfc_target_handle_s *handle,
970 net_nfc_llcp_socket_t socket,
971 net_nfc_error_e *result,
972 net_nfc_service_llcp_cb cb,
977 ret_val = pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
979 NFC_DBG("net_nfc_controller_llcp_disconnect pm_unlock_state [%d]!!", ret_val);
981 if (g_interface.disconnect_llcp != NULL)
983 net_nfc_llcp_param_t *param = NULL;
985 _net_nfc_util_alloc_mem(param, sizeof(net_nfc_llcp_param_t));
988 NFC_ERR("_net_nfc_util_alloc_mem failed");
989 *result = NET_NFC_ALLOC_FAIL;
993 param->socket = socket;
995 param->user_param = user_param;
997 return g_interface.disconnect_llcp(handle, socket, result, param);
1001 NFC_ERR("interface is null");
1002 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1007 bool net_nfc_controller_llcp_socket_close(net_nfc_llcp_socket_t socket,
1008 net_nfc_error_e *result)
1010 if (g_interface.close_llcp_socket != NULL)
1012 return g_interface.close_llcp_socket(socket, result);
1016 NFC_ERR("interface is null");
1017 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1022 void net_nfc_controller_llcp_received_cb(net_nfc_llcp_socket_t socket,
1023 net_nfc_error_e result, void *data, void *user_param)
1025 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
1027 RET_IF(NULL == param);
1029 if (param->cb != NULL)
1030 param->cb(param->socket, result, ¶m->data, data, param->user_param);
1032 if (param->data.buffer != NULL)
1033 _net_nfc_util_free_mem(param->data.buffer);
1035 _net_nfc_util_free_mem(param);
1038 bool net_nfc_controller_llcp_recv(net_nfc_target_handle_s *handle,
1039 net_nfc_llcp_socket_t socket,
1041 net_nfc_error_e *result,
1042 net_nfc_service_llcp_cb cb,
1045 if (g_interface.recv_llcp != NULL)
1047 net_nfc_llcp_param_t *param = NULL;
1049 _net_nfc_util_alloc_mem(param, sizeof(*param));
1052 NFC_ERR("_net_nfc_util_alloc_mem failed");
1053 *result = NET_NFC_ALLOC_FAIL;
1057 param->socket = socket;
1061 _net_nfc_util_alloc_mem(param->data.buffer, max_len);
1062 if (param->data.buffer == NULL)
1064 NFC_ERR("_net_nfc_util_alloc_mem failed");
1065 _net_nfc_util_free_mem(param);
1066 *result = NET_NFC_ALLOC_FAIL;
1069 param->data.length = max_len;
1071 param->user_param = user_param;
1073 return g_interface.recv_llcp(handle, socket, ¶m->data, result, param);
1077 NFC_ERR("interface is null");
1078 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1083 void net_nfc_controller_llcp_sent_cb(net_nfc_llcp_socket_t socket,
1084 net_nfc_error_e result, void *data, void *user_param)
1086 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
1088 RET_IF(NULL == param);
1090 if (param->cb != NULL)
1091 param->cb(param->socket, result, NULL, NULL, param->user_param);
1093 _net_nfc_util_free_mem(param);
1096 bool net_nfc_controller_llcp_send(net_nfc_target_handle_s *handle,
1097 net_nfc_llcp_socket_t socket,
1099 net_nfc_error_e *result,
1100 net_nfc_service_llcp_cb cb,
1103 if (g_interface.send_llcp != NULL)
1105 net_nfc_llcp_param_t *param = NULL;
1107 _net_nfc_util_alloc_mem(param, sizeof(*param));
1110 NFC_ERR("_net_nfc_util_alloc_mem failed");
1111 *result = NET_NFC_ALLOC_FAIL;
1115 param->socket = socket;
1117 param->user_param = user_param;
1119 return g_interface.send_llcp(handle, socket, data, result, param);
1123 NFC_ERR("interface is null");
1124 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1128 bool net_nfc_controller_llcp_recv_from(net_nfc_target_handle_s *handle,
1129 net_nfc_llcp_socket_t socket,
1131 net_nfc_error_e *result,
1132 net_nfc_service_llcp_cb cb,
1135 if (g_interface.recv_from_llcp != NULL)
1137 net_nfc_llcp_param_t *param = NULL;
1139 _net_nfc_util_alloc_mem(param, sizeof(*param));
1142 NFC_ERR("_net_nfc_util_alloc_mem failed");
1143 *result = NET_NFC_ALLOC_FAIL;
1147 param->socket = socket;
1151 _net_nfc_util_alloc_mem(param->data.buffer, max_len);
1152 if (NULL == param->data.buffer)
1154 NFC_ERR("_net_nfc_util_alloc_mem failed");
1155 _net_nfc_util_free_mem(param);
1156 *result = NET_NFC_ALLOC_FAIL;
1159 param->data.length = max_len;
1161 param->user_param = user_param;
1163 return g_interface.recv_from_llcp(handle, socket, ¶m->data, result, param);
1167 NFC_ERR("interface is null");
1168 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1172 bool net_nfc_controller_llcp_send_to(net_nfc_target_handle_s *handle,
1173 net_nfc_llcp_socket_t socket,
1175 uint8_t service_access_point,
1176 net_nfc_error_e *result,
1177 net_nfc_service_llcp_cb cb,
1180 if (g_interface.send_to_llcp != NULL)
1182 net_nfc_llcp_param_t *param = NULL;
1184 _net_nfc_util_alloc_mem(param, sizeof(*param));
1187 NFC_ERR("_net_nfc_util_alloc_mem failed");
1188 *result = NET_NFC_ALLOC_FAIL;
1192 param->socket = socket;
1194 param->user_param = user_param;
1196 return g_interface.send_to_llcp(handle, socket, data, service_access_point,
1201 NFC_ERR("interface is null");
1202 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1207 bool net_nfc_controller_llcp_get_remote_config(net_nfc_target_handle_s *handle,
1208 net_nfc_llcp_config_info_s *config, net_nfc_error_e *result)
1210 if (g_interface.get_remote_config != NULL)
1212 return g_interface.get_remote_config(handle, config, result);
1216 NFC_ERR("interface is null");
1217 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1221 bool net_nfc_controller_llcp_get_remote_socket_info(
1222 net_nfc_target_handle_s *handle,
1223 net_nfc_llcp_socket_t socket,
1224 net_nfc_llcp_socket_option_s *option,
1225 net_nfc_error_e *result)
1227 if (g_interface.get_remote_socket_info != NULL)
1229 return g_interface.get_remote_socket_info(handle, socket, option, result);
1233 NFC_ERR("interface is null");
1234 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1240 bool net_nfc_controller_sim_test(net_nfc_error_e *result)
1242 if (g_interface.sim_test != NULL)
1244 return g_interface.sim_test(result);
1248 NFC_ERR("interface is null");
1249 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1254 bool net_nfc_controller_prbs_test(net_nfc_error_e *result, uint32_t tech,
1257 if (g_interface.prbs_test != NULL)
1259 return g_interface.prbs_test(result, tech, rate);
1263 NFC_ERR("interface is null");
1264 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1269 bool net_nfc_controller_test_mode_on(net_nfc_error_e *result)
1271 if (g_interface.test_mode_on != NULL)
1273 return g_interface.test_mode_on(result);
1277 NFC_ERR("interface is null");
1278 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1283 bool net_nfc_controller_test_mode_off(net_nfc_error_e *result)
1285 if (g_interface.test_mode_off != NULL)
1287 return g_interface.test_mode_off(result);
1291 NFC_ERR("interface is null");
1292 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1297 bool net_nfc_controller_support_nfc(net_nfc_error_e *result)
1299 if (g_interface.support_nfc != NULL)
1301 return g_interface.support_nfc(result);
1305 NFC_ERR("interface is null");
1306 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1311 bool net_nfc_controller_eedata_register_set(net_nfc_error_e *result,
1312 uint32_t mode, uint32_t reg_id, data_s *data)
1314 if (g_interface.eedata_register_set != NULL)
1316 return g_interface.eedata_register_set(result, mode, reg_id, data);
1320 NFC_ERR("interface is null");
1321 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;