2 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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.
17 #include <linux/limits.h>
21 #include <sys/types.h>
27 #include <dd-display.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 = display_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
342 NFC_DBG("display_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 = display_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
395 NFC_DBG("display_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 = display_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
431 NFC_DBG("net_nfc_controller_connect display_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 = display_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
452 NFC_ERR("net_nfc_controller_disconnect display_unlock_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_check_llcp(net_nfc_target_handle_s *handle,
590 net_nfc_error_e *result)
592 if (g_interface.check_llcp_status != NULL)
594 return g_interface.check_llcp_status(handle, result);
598 NFC_ERR("interface is null");
599 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
603 bool net_nfc_controller_llcp_activate_llcp(net_nfc_target_handle_s *handle,
604 net_nfc_error_e *result)
606 if (g_interface.activate_llcp != NULL)
608 return g_interface.activate_llcp(handle, result);
612 NFC_ERR("interface is null");
613 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
618 static GSList *llcp_sockets;
620 static gint _compare_socket_info(gconstpointer a, gconstpointer b)
623 socket_info_t *info = (socket_info_t *)a;
625 if (info->socket == (net_nfc_llcp_socket_t)b)
633 static socket_info_t* _get_socket_info(net_nfc_llcp_socket_t socket)
636 socket_info_t *result;
638 item = g_slist_find_custom(llcp_sockets, GUINT_TO_POINTER(socket),
639 _compare_socket_info);
641 result = (socket_info_t *)item->data;
648 static socket_info_t* _add_socket_info(net_nfc_llcp_socket_t socket)
650 socket_info_t *result;
652 _net_nfc_util_alloc_mem(result, sizeof(socket_info_t));
655 result->socket = socket;
657 llcp_sockets = g_slist_append(llcp_sockets, result);
663 static void _remove_socket_info(net_nfc_llcp_socket_t socket)
667 item = g_slist_find_custom(llcp_sockets, GUINT_TO_POINTER(socket),
668 _compare_socket_info);
671 llcp_sockets = g_slist_remove_link(llcp_sockets, item);
676 void net_nfc_controller_llcp_socket_error_cb(net_nfc_llcp_socket_t socket,
677 net_nfc_error_e result, void *data, void *user_param)
681 info = _get_socket_info(socket);
684 if (info->err_cb != NULL)
685 info->err_cb(socket, result, NULL, NULL, info->err_param);
687 _remove_socket_info(socket);
691 bool net_nfc_controller_llcp_create_socket(net_nfc_llcp_socket_t *socket,
692 net_nfc_socket_type_e socketType,
695 net_nfc_error_e *result,
696 net_nfc_service_llcp_cb cb,
699 if (g_interface.create_llcp_socket != NULL)
704 info = _add_socket_info(-1);
707 NFC_ERR("_net_nfc_util_alloc_mem failed");
708 *result = NET_NFC_ALLOC_FAIL;
712 ret = g_interface.create_llcp_socket(socket, socketType, miu, rw, result, NULL);
715 info->socket = *socket;
717 info->err_param = user_param;
721 _remove_socket_info(-1);
728 NFC_ERR("interface is null");
729 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
734 bool net_nfc_controller_llcp_bind(net_nfc_llcp_socket_t socket,
735 uint8_t service_access_point, net_nfc_error_e *result)
737 if (g_interface.bind_llcp_socket != NULL)
739 return g_interface.bind_llcp_socket(socket, service_access_point, result);
743 NFC_ERR("interface is null");
744 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
749 void net_nfc_controller_llcp_incoming_cb(net_nfc_llcp_socket_t socket,
750 net_nfc_error_e result, void *data, void *user_param)
752 socket_info_t *info = (socket_info_t *)user_param;
754 info = _get_socket_info(info->socket);
757 if (_add_socket_info(socket) != NULL)
759 if (info->work_cb != NULL)
760 info->work_cb(socket, result, NULL, NULL, info->work_param);
764 NFC_ERR("_net_nfc_util_alloc_mem failed");
769 bool net_nfc_controller_llcp_listen(net_nfc_target_handle_s* handle,
770 uint8_t *service_access_name,
771 net_nfc_llcp_socket_t socket,
772 net_nfc_error_e *result,
773 net_nfc_service_llcp_cb cb,
776 if (g_interface.listen_llcp_socket != NULL)
780 info = _get_socket_info(socket);
783 NFC_ERR("_get_socket_info failed");
784 *result = NET_NFC_INVALID_HANDLE;
789 info->work_param = user_param;
791 return g_interface.listen_llcp_socket(handle, service_access_name, socket,
796 NFC_ERR("interface is null");
797 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
802 bool net_nfc_controller_llcp_accept(net_nfc_llcp_socket_t socket,
803 net_nfc_error_e *result, net_nfc_service_llcp_cb cb, void *user_param)
805 if (g_interface.accept_llcp_socket != NULL)
809 info = _get_socket_info(socket);
812 NFC_ERR("_get_socket_info failed");
813 *result = NET_NFC_INVALID_HANDLE;
818 info->err_param = user_param;
820 return g_interface.accept_llcp_socket(socket, result, NULL);
824 NFC_ERR("interface is null");
825 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
830 bool net_nfc_controller_llcp_reject(net_nfc_target_handle_s *handle,
831 net_nfc_llcp_socket_t socket, net_nfc_error_e *result)
833 if (g_interface.reject_llcp != NULL)
837 ret = g_interface.reject_llcp(handle, socket, result);
839 _remove_socket_info(socket);
845 NFC_ERR("interface is null");
846 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
851 void net_nfc_controller_llcp_connected_cb(net_nfc_llcp_socket_t socket,
852 net_nfc_error_e result, void *data, void *user_param)
854 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
856 RET_IF(NULL == param);
858 if (param->cb != NULL)
859 param->cb(param->socket, result, NULL, NULL, param->user_param);
861 _net_nfc_util_free_mem(param);
864 bool net_nfc_controller_llcp_connect_by_url(net_nfc_target_handle_s *handle,
865 net_nfc_llcp_socket_t socket,
866 uint8_t *service_access_name,
867 net_nfc_error_e *result,
868 net_nfc_service_llcp_cb cb,
873 ret_val = display_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
875 NFC_DBG("display_lock_state[%d]!!", ret_val);
877 if (g_interface.connect_llcp_by_url != NULL)
879 net_nfc_llcp_param_t *param = NULL;
881 _net_nfc_util_alloc_mem(param, sizeof(*param));
884 NFC_ERR("_net_nfc_util_alloc_mem failed");
885 *result = NET_NFC_ALLOC_FAIL;
889 param->socket = socket;
891 param->user_param = user_param;
893 return g_interface.connect_llcp_by_url(handle, socket, service_access_name,
898 NFC_ERR("interface is null");
899 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
904 bool net_nfc_controller_llcp_connect(net_nfc_target_handle_s *handle,
905 net_nfc_llcp_socket_t socket,
906 uint8_t service_access_point,
907 net_nfc_error_e *result,
908 net_nfc_service_llcp_cb cb,
913 ret_val = display_lock_state(LCD_NORMAL, GOTO_STATE_NOW, 0);
915 NFC_DBG("net_nfc_controller_llcp_connect display_lock_state [%d]!!", ret_val);
917 if (g_interface.connect_llcp != NULL)
919 net_nfc_llcp_param_t *param = NULL;
921 _net_nfc_util_alloc_mem(param, sizeof(*param));
923 NFC_ERR("_net_nfc_util_alloc_mem failed");
924 *result = NET_NFC_ALLOC_FAIL;
928 param->socket = socket;
930 param->user_param = user_param;
932 return g_interface.connect_llcp(handle, socket, service_access_point, result, param);
936 NFC_ERR("interface is null");
937 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
942 void net_nfc_controller_llcp_disconnected_cb(net_nfc_llcp_socket_t socket,
943 net_nfc_error_e result, void *data, void *user_param)
945 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
947 RET_IF(NULL == param);
949 if (param->cb != NULL)
950 param->cb(param->socket, result, NULL, NULL, param->user_param);
952 _net_nfc_util_free_mem(param);
955 bool net_nfc_controller_llcp_disconnect(net_nfc_target_handle_s *handle,
956 net_nfc_llcp_socket_t socket,
957 net_nfc_error_e *result,
958 net_nfc_service_llcp_cb cb,
963 ret_val = display_unlock_state(LCD_NORMAL, PM_RESET_TIMER);
965 NFC_DBG("net_nfc_controller_llcp_disconnect display_unlock_state [%d]!!", ret_val);
967 if (g_interface.disconnect_llcp != NULL)
969 net_nfc_llcp_param_t *param = NULL;
971 _net_nfc_util_alloc_mem(param, sizeof(net_nfc_llcp_param_t));
974 NFC_ERR("_net_nfc_util_alloc_mem failed");
975 *result = NET_NFC_ALLOC_FAIL;
979 param->socket = socket;
981 param->user_param = user_param;
983 return g_interface.disconnect_llcp(handle, socket, result, param);
987 NFC_ERR("interface is null");
988 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
993 bool net_nfc_controller_llcp_socket_close(net_nfc_llcp_socket_t socket,
994 net_nfc_error_e *result)
996 if (g_interface.close_llcp_socket != NULL)
998 return g_interface.close_llcp_socket(socket, result);
1002 NFC_ERR("interface is null");
1003 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1008 void net_nfc_controller_llcp_received_cb(net_nfc_llcp_socket_t socket,
1009 net_nfc_error_e result, void *data, void *user_param)
1011 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
1013 RET_IF(NULL == param);
1015 if (param->cb != NULL)
1016 param->cb(param->socket, result, ¶m->data, data, param->user_param);
1018 if (param->data.buffer != NULL)
1019 _net_nfc_util_free_mem(param->data.buffer);
1021 _net_nfc_util_free_mem(param);
1024 bool net_nfc_controller_llcp_recv(net_nfc_target_handle_s *handle,
1025 net_nfc_llcp_socket_t socket,
1027 net_nfc_error_e *result,
1028 net_nfc_service_llcp_cb cb,
1031 if (g_interface.recv_llcp != NULL)
1033 net_nfc_llcp_param_t *param = NULL;
1035 _net_nfc_util_alloc_mem(param, sizeof(*param));
1038 NFC_ERR("_net_nfc_util_alloc_mem failed");
1039 *result = NET_NFC_ALLOC_FAIL;
1043 param->socket = socket;
1047 _net_nfc_util_alloc_mem(param->data.buffer, max_len);
1048 if (param->data.buffer == NULL)
1050 NFC_ERR("_net_nfc_util_alloc_mem failed");
1051 _net_nfc_util_free_mem(param);
1052 *result = NET_NFC_ALLOC_FAIL;
1055 param->data.length = max_len;
1057 param->user_param = user_param;
1059 return g_interface.recv_llcp(handle, socket, ¶m->data, result, param);
1063 NFC_ERR("interface is null");
1064 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1069 void net_nfc_controller_llcp_sent_cb(net_nfc_llcp_socket_t socket,
1070 net_nfc_error_e result, void *data, void *user_param)
1072 net_nfc_llcp_param_t *param = (net_nfc_llcp_param_t *)user_param;
1074 RET_IF(NULL == param);
1076 if (param->cb != NULL)
1077 param->cb(param->socket, result, NULL, NULL, param->user_param);
1079 _net_nfc_util_free_mem(param);
1082 bool net_nfc_controller_llcp_send(net_nfc_target_handle_s *handle,
1083 net_nfc_llcp_socket_t socket,
1085 net_nfc_error_e *result,
1086 net_nfc_service_llcp_cb cb,
1089 if (g_interface.send_llcp != NULL)
1091 net_nfc_llcp_param_t *param = NULL;
1093 _net_nfc_util_alloc_mem(param, sizeof(*param));
1096 NFC_ERR("_net_nfc_util_alloc_mem failed");
1097 *result = NET_NFC_ALLOC_FAIL;
1101 param->socket = socket;
1103 param->user_param = user_param;
1105 return g_interface.send_llcp(handle, socket, data, result, param);
1109 NFC_ERR("interface is null");
1110 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1114 bool net_nfc_controller_llcp_recv_from(net_nfc_target_handle_s *handle,
1115 net_nfc_llcp_socket_t socket,
1117 net_nfc_error_e *result,
1118 net_nfc_service_llcp_cb cb,
1121 if (g_interface.recv_from_llcp != NULL)
1123 net_nfc_llcp_param_t *param = NULL;
1125 _net_nfc_util_alloc_mem(param, sizeof(*param));
1128 NFC_ERR("_net_nfc_util_alloc_mem failed");
1129 *result = NET_NFC_ALLOC_FAIL;
1133 param->socket = socket;
1137 _net_nfc_util_alloc_mem(param->data.buffer, max_len);
1138 if (NULL == param->data.buffer)
1140 NFC_ERR("_net_nfc_util_alloc_mem failed");
1141 _net_nfc_util_free_mem(param);
1142 *result = NET_NFC_ALLOC_FAIL;
1145 param->data.length = max_len;
1147 param->user_param = user_param;
1149 return g_interface.recv_from_llcp(handle, socket, ¶m->data, result, param);
1153 NFC_ERR("interface is null");
1154 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1158 bool net_nfc_controller_llcp_send_to(net_nfc_target_handle_s *handle,
1159 net_nfc_llcp_socket_t socket,
1161 uint8_t service_access_point,
1162 net_nfc_error_e *result,
1163 net_nfc_service_llcp_cb cb,
1166 if (g_interface.send_to_llcp != NULL)
1168 net_nfc_llcp_param_t *param = NULL;
1170 _net_nfc_util_alloc_mem(param, sizeof(*param));
1173 NFC_ERR("_net_nfc_util_alloc_mem failed");
1174 *result = NET_NFC_ALLOC_FAIL;
1178 param->socket = socket;
1180 param->user_param = user_param;
1182 return g_interface.send_to_llcp(handle, socket, data, service_access_point,
1187 NFC_ERR("interface is null");
1188 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1193 bool net_nfc_controller_llcp_get_remote_config(net_nfc_target_handle_s *handle,
1194 net_nfc_llcp_config_info_s *config, net_nfc_error_e *result)
1196 if (g_interface.get_remote_config != NULL)
1198 return g_interface.get_remote_config(handle, config, result);
1202 NFC_ERR("interface is null");
1203 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1207 bool net_nfc_controller_llcp_get_remote_socket_info(
1208 net_nfc_target_handle_s *handle,
1209 net_nfc_llcp_socket_t socket,
1210 net_nfc_llcp_socket_option_s *option,
1211 net_nfc_error_e *result)
1213 if (g_interface.get_remote_socket_info != NULL)
1215 return g_interface.get_remote_socket_info(handle, socket, option, result);
1219 NFC_ERR("interface is null");
1220 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1226 bool net_nfc_controller_sim_test(net_nfc_error_e *result)
1228 if (g_interface.sim_test != NULL)
1230 return g_interface.sim_test(result);
1234 NFC_ERR("interface is null");
1235 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1240 bool net_nfc_controller_prbs_test(net_nfc_error_e *result, uint32_t tech,
1243 if (g_interface.prbs_test != NULL)
1245 return g_interface.prbs_test(result, tech, rate);
1249 NFC_ERR("interface is null");
1250 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1255 bool net_nfc_controller_test_mode_on(net_nfc_error_e *result)
1257 if (g_interface.test_mode_on != NULL)
1259 return g_interface.test_mode_on(result);
1263 NFC_ERR("interface is null");
1264 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1269 bool net_nfc_controller_test_mode_off(net_nfc_error_e *result)
1271 if (g_interface.test_mode_off != NULL)
1273 return g_interface.test_mode_off(result);
1277 NFC_ERR("interface is null");
1278 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1283 bool net_nfc_controller_support_nfc(net_nfc_error_e *result)
1285 if (g_interface.support_nfc != NULL)
1287 return g_interface.support_nfc(result);
1291 NFC_ERR("interface is null");
1292 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;
1297 bool net_nfc_controller_eedata_register_set(net_nfc_error_e *result,
1298 uint32_t mode, uint32_t reg_id, data_s *data)
1300 if (g_interface.eedata_register_set != NULL)
1302 return g_interface.eedata_register_set(result, mode, reg_id, data);
1306 NFC_ERR("interface is null");
1307 *result = NET_NFC_DEVICE_DOES_NOT_SUPPORT_NFC;