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.
22 #include "net_nfc_controller_private.h"
23 #include "net_nfc_util_private.h"
24 #include "net_nfc_typedef.h"
25 #include "net_nfc_debug_private.h"
26 #include "net_nfc_service_private.h"
27 #include "net_nfc_service_se_private.h"
28 #include "net_nfc_app_util_private.h"
29 #include "net_nfc_server_ipc_private.h"
30 #include "net_nfc_server_dispatcher_private.h"
31 #include "net_nfc_manager_util_private.h"
32 #include "net_nfc_service_tag_private.h"
33 #include "net_nfc_service_llcp_private.h"
34 #include "net_nfc_util_ndef_message.h"
35 #include "net_nfc_util_ndef_record.h"
36 #include "net_nfc_server_context_private.h"
40 /* static callback function */
44 #ifndef BROADCAST_MESSAGE
45 extern uint8_t g_se_cur_type;
46 extern uint8_t g_se_cur_mode;
48 static bool _net_nfc_service_check_internal_ese_detected()
50 if (g_se_cur_type == SECURE_ELEMENT_TYPE_ESE && g_se_cur_mode == SECURE_ELEMENT_WIRED_MODE)
59 static void _net_nfc_service_show_exception_msg(char* msg);
61 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
63 void net_nfc_service_target_detected_cb(void *info, void *user_context)
65 net_nfc_request_msg_t *req_msg = (net_nfc_request_msg_t *)info;
70 if (req_msg->request_type == NET_NFC_MESSAGE_SERVICE_RESTART_POLLING_LOOP)
72 net_nfc_dispatcher_queue_push(req_msg);
74 #ifdef BROADCAST_MESSAGE
77 net_nfc_server_set_tag_info(info);
79 req_msg->request_type = NET_NFC_MESSAGE_SERVICE_SLAVE_TARGET_DETECTED;
80 net_nfc_dispatcher_queue_push(req_msg);
83 else if (net_nfc_server_get_current_client_context(&client_context) == true &&
84 net_nfc_server_check_client_is_running(&client_context) == true)
86 net_nfc_request_target_detected_t *detail = (net_nfc_request_target_detected_t *)req_msg;
88 /* If target detected, sound should be played. */
89 net_nfc_manager_util_play_sound(NET_NFC_TASK_START);
91 net_nfc_server_set_tag_info(info);
93 if (!_net_nfc_service_check_internal_ese_detected())
95 req_msg->request_type = NET_NFC_MESSAGE_SERVICE_SLAVE_TARGET_DETECTED;
99 req_msg->request_type = NET_NFC_MESSAGE_SERVICE_SLAVE_ESE_DETECTED;
101 (detail->handle)->connection_type = NET_NFC_SE_CONNECTION;
104 net_nfc_server_set_current_client_target_handle(client_context, detail->handle);
106 net_nfc_dispatcher_queue_push(req_msg);
108 DEBUG_SERVER_MSG("current client is listener. stand alone mode will be activated");
112 /* If target detected, sound should be played. */
113 net_nfc_manager_util_play_sound(NET_NFC_TASK_START);
115 req_msg->request_type = NET_NFC_MESSAGE_SERVICE_STANDALONE_TARGET_DETECTED;
116 net_nfc_dispatcher_queue_push(req_msg);
121 void net_nfc_service_se_transaction_cb(void *info, void *user_context)
123 net_nfc_request_se_event_t *req_msg = (net_nfc_request_se_event_t *)info;
125 DEBUG_SERVER_MSG("se event [%d]", req_msg->request_type);
127 net_nfc_dispatcher_queue_push((net_nfc_request_msg_t *)req_msg);
130 void net_nfc_service_llcp_event_cb(void* info, void* user_context)
132 net_nfc_request_llcp_msg_t *req_msg = (net_nfc_request_llcp_msg_t *)info;
136 DEBUG_SERVER_MSG("req msg is null");
140 if (req_msg->request_type == NET_NFC_MESSAGE_SERVICE_LLCP_ACCEPT)
142 net_nfc_request_accept_socket_t *detail = (net_nfc_request_accept_socket_t *)req_msg;
143 detail->trans_param = user_context;
146 req_msg->user_param = (uint32_t)user_context;
148 net_nfc_dispatcher_queue_push((net_nfc_request_msg_t *)req_msg);
151 static bool _is_isp_dep_ndef_formatable(net_nfc_target_handle_s *handle, int dev_type)
154 uint8_t cmd[] = { 0x90, 0x60, 0x00, 0x00, 0x00 };
155 net_nfc_transceive_info_s info;
156 data_s *response = NULL;
157 net_nfc_error_e error = NET_NFC_OK;
159 info.dev_type = dev_type;
160 info.trans_data.buffer = cmd;
161 info.trans_data.length = sizeof(cmd);
163 if (net_nfc_controller_transceive(handle, &info, &response, &error) == true)
165 if (response != NULL)
167 if (response->length == 9 && response->buffer[7] == (uint8_t)0x91 &&
168 response->buffer[8] == (uint8_t)0xAF)
174 DEBUG_ERR_MSG("Unknown response....");
175 DEBUG_MSG_PRINT_BUFFER(response->buffer, response->length);
180 DEBUG_ERR_MSG("net_nfc_controller_transceive response is null");
185 DEBUG_ERR_MSG("net_nfc_controller_transceive is failed, [%d]", error);
191 static net_nfc_error_e _read_ndef_message(net_nfc_target_handle_s *handle, int dev_type, data_s **read_ndef)
193 net_nfc_error_e result = NET_NFC_OK;
196 if (handle == NULL || read_ndef == NULL)
197 return NET_NFC_INVALID_PARAM;
202 if (dev_type == NET_NFC_MIFARE_DESFIRE_PICC)
204 DEBUG_SERVER_MSG("DESFIRE : check ISO-DEP ndef formatable");
206 if (_is_isp_dep_ndef_formatable(handle, dev_type) == true)
208 DEBUG_SERVER_MSG("DESFIRE : ISO-DEP ndef formatable");
210 if (!net_nfc_controller_connect(handle, &result))
212 DEBUG_ERR_MSG("net_nfc_controller_connect failed & Retry Polling!!");
214 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_RESUME,
215 NET_NFC_ALL_ENABLE, &result) == false)
217 net_nfc_controller_exception_handler();
220 return NET_NFC_TAG_READ_FAILED;
225 DEBUG_ERR_MSG("DESFIRE : ISO-DEP ndef not formatable");
227 return NET_NFC_TAG_READ_FAILED;
231 if (net_nfc_controller_read_ndef(handle, &temp, &result) == true)
233 DEBUG_SERVER_MSG("net_nfc_controller_read_ndef success");
235 if (dev_type == NET_NFC_MIFARE_DESFIRE_PICC)
237 if (!net_nfc_controller_connect(handle, &result))
239 DEBUG_ERR_MSG("net_nfc_controller_connect failed & Retry Polling!!");
241 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_RESUME, NET_NFC_ALL_ENABLE, &result) == false)
243 net_nfc_controller_exception_handler();
246 net_nfc_util_free_data(temp);
247 _net_nfc_util_free_mem(temp);
249 return NET_NFC_TAG_READ_FAILED;
257 DEBUG_ERR_MSG("net_nfc_controller_read_ndef failed [%d]", result);
263 #ifndef BROADCAST_MESSAGE
264 bool net_nfc_service_standalone_mode_target_detected(net_nfc_request_msg_t* msg)
266 net_nfc_request_target_detected_t* stand_alone = (net_nfc_request_target_detected_t *)msg;
267 net_nfc_error_e error_status = NET_NFC_OK;
269 data_s *recv_data = NULL;
271 DEBUG_SERVER_MSG("*** Detected! type [0x%X)] ***", stand_alone->devType);
273 switch (stand_alone->devType)
275 case NET_NFC_NFCIP1_TARGET :
276 case NET_NFC_NFCIP1_INITIATOR :
278 DEBUG_SERVER_MSG(" LLCP is detected");
280 net_nfc_service_llcp_process(stand_alone->handle, stand_alone->devType, &error_status);
289 DEBUG_SERVER_MSG(" PICC or PCD is detectd.");
290 recv_data = net_nfc_service_tag_process(stand_alone->handle, stand_alone->devType, &error_status);
295 if (recv_data != NULL)
297 net_nfc_service_msg_processing(recv_data);
301 if (((stand_alone->devType == NET_NFC_NFCIP1_INITIATOR) || (stand_alone->devType == NET_NFC_NFCIP1_TARGET)))
303 DEBUG_SERVER_MSG("p2p operation. recv data is NULL");
307 if (error_status == NET_NFC_NO_NDEF_SUPPORT)
309 DEBUG_SERVER_MSG("device type = [%d], it has null data", stand_alone->devType);
311 /* launch empty tag */
312 uint8_t empty[] = { 0xd0, 0x00, 0x00 }; /* raw-data of empty ndef-message */
313 data_s rawdata = { &empty, sizeof(empty) };
315 net_nfc_service_msg_processing(&rawdata);
319 _net_nfc_service_show_exception_msg("Try again");
324 if (stand_alone->devType != NET_NFC_NFCIP1_INITIATOR && stand_alone->devType != NET_NFC_NFCIP1_TARGET)
326 net_nfc_request_watch_dog_t* watch_dog_msg = NULL;
328 _net_nfc_util_alloc_mem(watch_dog_msg, sizeof(net_nfc_request_watch_dog_t));
330 if (watch_dog_msg != NULL)
332 watch_dog_msg->length = sizeof(net_nfc_request_watch_dog_t);
333 watch_dog_msg->request_type = NET_NFC_MESSAGE_SERVICE_WATCH_DOG;
334 watch_dog_msg->devType = stand_alone->devType;
335 watch_dog_msg->handle = stand_alone->handle;
337 net_nfc_dispatcher_queue_push((net_nfc_request_msg_t *)watch_dog_msg);
341 DEBUG_SERVER_MSG("stand alone mode is end");
348 bool net_nfc_service_slave_mode_target_detected(net_nfc_request_msg_t *msg)
350 net_nfc_request_target_detected_t *detail_msg = (net_nfc_request_target_detected_t *)msg;
351 net_nfc_error_e result = NET_NFC_OK;
354 DEBUG_SERVER_MSG("target detected callback for client, device type = [%d]", detail_msg->devType);
356 if (detail_msg == NULL)
361 if (detail_msg->devType != NET_NFC_NFCIP1_TARGET && detail_msg->devType != NET_NFC_NFCIP1_INITIATOR)
363 net_nfc_response_tag_discovered_t resp_msg = { 0, };
364 int request_type = NET_NFC_MESSAGE_TAG_DISCOVERED;
365 data_s *recv_data = NULL;
367 if (!net_nfc_controller_connect(detail_msg->handle, &result))
369 DEBUG_ERR_MSG("connect failed & Retry Polling!!");
371 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_RESUME, NET_NFC_ALL_ENABLE, &result) == false)
373 net_nfc_controller_exception_handler();
378 #ifdef BROADCAST_MESSAGE
379 net_nfc_server_set_server_state(NET_NFC_TAG_CONNECTED);
381 DEBUG_SERVER_MSG("tag is connected");
383 uint8_t ndef_card_state = 0;
384 int max_data_size = 0;
385 int real_data_size = 0;
387 if (net_nfc_controller_check_ndef(detail_msg->handle, &ndef_card_state, &max_data_size, &real_data_size, &result) == true)
389 resp_msg.ndefCardState = ndef_card_state;
390 resp_msg.maxDataSize = max_data_size;
391 resp_msg.actualDataSize = real_data_size;
392 resp_msg.is_ndef_supported = 1;
395 resp_msg.devType = detail_msg->devType;
396 resp_msg.handle = detail_msg->handle;
397 resp_msg.number_of_keys = detail_msg->number_of_keys;
398 resp_msg.raw_data.length = 0;
400 net_nfc_util_duplicate_data(&resp_msg.target_info_values, &detail_msg->target_info_values);
402 if (resp_msg.is_ndef_supported)
404 DEBUG_SERVER_MSG("support NDEF");
406 if ((result = _read_ndef_message(detail_msg->handle, detail_msg->devType, &recv_data)) == NET_NFC_OK &&
409 DEBUG_SERVER_MSG("net_nfc_controller_read_ndef success");
410 #ifdef BROADCAST_MESSAGE
411 net_nfc_service_msg_processing(recv_data);
413 resp_msg.raw_data.length = recv_data->length;
414 success = net_nfc_broadcast_response_msg(request_type, (void *)&resp_msg, sizeof(net_nfc_response_tag_discovered_t),
415 (void *)(resp_msg.target_info_values.buffer), resp_msg.target_info_values.length,
416 (void *)(recv_data->buffer), recv_data->length, NULL);
418 net_nfc_util_free_data(recv_data);
419 _net_nfc_util_free_mem(recv_data);
423 DEBUG_ERR_MSG("net_nfc_controller_read_ndef failed");
425 success = net_nfc_broadcast_response_msg(request_type, (void *)&resp_msg, sizeof(net_nfc_response_tag_discovered_t),
426 (void *)(resp_msg.target_info_values.buffer), resp_msg.target_info_values.length, NULL);
431 DEBUG_SERVER_MSG("not support NDEF");
432 #ifdef BROADCAST_MESSAGE
433 /* launch empty tag */
434 uint8_t empty[] = { 0xd0, 0x00, 0x00 }; /* raw-data of empty ndef-message */
435 data_s rawdata = { empty, sizeof(empty) };
437 net_nfc_service_msg_processing(&rawdata);
439 success = net_nfc_broadcast_response_msg(request_type, (void *)&resp_msg, sizeof(net_nfc_response_tag_discovered_t),
440 (void *)(resp_msg.target_info_values.buffer), resp_msg.target_info_values.length, NULL);
443 net_nfc_util_free_data(&resp_msg.target_info_values);
445 DEBUG_SERVER_MSG("turn on watch dog");
447 net_nfc_request_watch_dog_t* watch_dog_msg = NULL;
449 _net_nfc_util_alloc_mem(watch_dog_msg, sizeof(net_nfc_request_watch_dog_t));
450 if (watch_dog_msg != NULL)
452 watch_dog_msg->length = sizeof(net_nfc_request_watch_dog_t);
453 watch_dog_msg->request_type = NET_NFC_MESSAGE_SERVICE_WATCH_DOG;
454 watch_dog_msg->devType = detail_msg->devType;
455 watch_dog_msg->handle = detail_msg->handle;
457 net_nfc_dispatcher_queue_push((net_nfc_request_msg_t *)watch_dog_msg);
462 net_nfc_error_e error_status = NET_NFC_OK;
464 net_nfc_service_llcp_process(detail_msg->handle, detail_msg->devType, &error_status);
467 /* If target detected, sound should be played. */
468 net_nfc_manager_util_play_sound(NET_NFC_TASK_START);
473 bool net_nfc_service_termination(net_nfc_request_msg_t* msg)
475 net_nfc_error_e result;
477 if (net_nfc_controller_is_ready(&result) == true)
482 DEBUG_SERVER_MSG("Not initialized");
483 net_nfc_controller_init(&result);
486 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_CONFIG, NET_NFC_ALL_DISABLE, &result) != true)
488 DEBUG_SERVER_MSG("failed to discover off %d", result);
491 if (net_nfc_controller_set_secure_element_mode(NET_NFC_SE_CMD_UICC_ON, SECURE_ELEMENT_VIRTUAL_MODE, &result) != true)
493 DEBUG_SERVER_MSG("failed to set se mode to default mode: %d", result);
499 void net_nfc_service_msg_processing(data_s* data)
503 net_nfc_app_util_process_ndef(data);
507 _net_nfc_service_show_exception_msg("unknown type tag");
511 static void _net_nfc_service_show_exception_msg(char* msg)
515 kb = bundle_create();
516 bundle_add(kb, "type", "default");
517 bundle_add(kb, "text", msg);
519 net_nfc_app_util_aul_launch_app("com.samsung.nfc-app", kb); /* empty_tag */
524 void net_nfc_service_is_tag_connected(net_nfc_request_msg_t *msg)
526 net_nfc_request_is_tag_connected_t *detail = (net_nfc_request_is_tag_connected_t *)msg;
527 net_nfc_current_target_info_s *target_info;
529 target_info = net_nfc_server_get_tag_info();
530 if (net_nfc_server_check_client_is_running(msg->client_fd))
532 net_nfc_response_is_tag_connected_t resp = { 0, };
534 resp.length = sizeof(net_nfc_response_is_tag_connected_t);
535 resp.flags = detail->flags;
536 resp.trans_param = detail->trans_param;
538 if (target_info != NULL)
540 resp.result = NET_NFC_OK;
541 resp.devType = target_info->devType;
545 resp.result = NET_NFC_NOT_CONNECTED;
546 resp.devType = NET_NFC_UNKNOWN_TARGET;
549 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
550 (void *)&resp, sizeof(net_nfc_response_is_tag_connected_t), NULL);
554 void net_nfc_service_get_current_tag_info(net_nfc_request_msg_t *msg)
556 net_nfc_response_get_current_tag_info_t resp = { 0, };
557 net_nfc_request_get_current_tag_info_t *detail = (net_nfc_request_get_current_tag_info_t *)msg;
558 net_nfc_current_target_info_s *target_info = NULL;
559 net_nfc_error_e result = NET_NFC_OK;
561 resp.length = sizeof(net_nfc_response_get_current_tag_info_t);
562 resp.flags = detail->flags;
563 resp.trans_param = detail->trans_param;
565 target_info = net_nfc_server_get_tag_info();
566 if (target_info != NULL)
569 data_s *recv_data = NULL;
571 if (target_info->devType != NET_NFC_NFCIP1_TARGET && target_info->devType != NET_NFC_NFCIP1_INITIATOR)
573 #ifdef BROADCAST_MESSAGE
574 net_nfc_server_set_server_state(NET_NFC_TAG_CONNECTED);
576 DEBUG_SERVER_MSG("tag is connected");
578 uint8_t ndef_card_state = 0;
579 int max_data_size = 0;
580 int real_data_size = 0;
582 if (net_nfc_controller_check_ndef(target_info->handle,
583 &ndef_card_state, &max_data_size, &real_data_size, &result) == true)
585 resp.ndefCardState = ndef_card_state;
586 resp.maxDataSize = max_data_size;
587 resp.actualDataSize = real_data_size;
588 resp.is_ndef_supported = 1;
591 resp.devType = target_info->devType;
592 resp.handle = target_info->handle;
593 resp.number_of_keys = target_info->number_of_keys;
595 net_nfc_util_duplicate_data(&resp.target_info_values, &target_info->target_info_values);
597 if (resp.is_ndef_supported)
599 if (net_nfc_controller_read_ndef(target_info->handle, &recv_data, &(resp.result)) == true)
601 DEBUG_SERVER_MSG("net_nfc_controller_read_ndef is success");
603 resp.raw_data.length = recv_data->length;
605 success = net_nfc_send_response_msg(msg->client_fd, msg->request_type, (void *)&resp, sizeof(net_nfc_response_get_current_tag_info_t),
606 (void *)(resp.target_info_values.buffer), resp.target_info_values.length,
607 (void *)(recv_data->buffer), recv_data->length, NULL);
611 DEBUG_SERVER_MSG("net_nfc_controller_read_ndef is fail");
613 resp.raw_data.length = 0;
615 success = net_nfc_send_response_msg(msg->client_fd, msg->request_type, (void *)&resp, sizeof(net_nfc_response_get_current_tag_info_t),
616 (void *)(resp.target_info_values.buffer), resp.target_info_values.length, NULL);
621 resp.raw_data.length = 0;
623 success = net_nfc_send_response_msg(msg->client_fd, msg->request_type, (void *)&resp, sizeof(net_nfc_response_get_current_tag_info_t),
624 (void *)(resp.target_info_values.buffer), resp.target_info_values.length, NULL);
627 net_nfc_util_free_data(&resp.target_info_values);
632 resp.result = NET_NFC_NOT_CONNECTED;
633 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
634 (void *)&resp, sizeof(net_nfc_response_get_current_tag_info_t), NULL);
639 resp.result = NET_NFC_NOT_CONNECTED;
640 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
641 (void *)&resp, sizeof(net_nfc_response_get_current_tag_info_t), NULL);
645 void net_nfc_service_get_current_target_handle(net_nfc_request_msg_t *msg)
647 net_nfc_request_get_current_target_handle_t *detail = (net_nfc_request_get_current_target_handle_t *)msg;
648 net_nfc_current_target_info_s *target_info = NULL;
650 target_info = net_nfc_server_get_tag_info();
651 if (net_nfc_server_check_client_is_running(msg->client_fd))
653 net_nfc_response_get_current_target_handle_t resp = { 0, };
655 resp.length = sizeof(net_nfc_response_get_current_target_handle_t);
656 resp.flags = detail->flags;
657 resp.trans_param = detail->trans_param;
659 if (target_info != NULL)
661 resp.handle = target_info->handle;
662 resp.devType = target_info->devType;
663 resp.result = NET_NFC_OK;
667 resp.result = NET_NFC_NOT_CONNECTED;
670 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
671 (void *)&resp, sizeof(net_nfc_response_get_current_target_handle_t), NULL);
675 void net_nfc_service_deinit(net_nfc_request_msg_t *msg)
677 net_nfc_error_e result;
679 result = net_nfc_service_se_change_se(SECURE_ELEMENT_TYPE_INVALID);
681 net_nfc_server_free_current_tag_info();
683 if (net_nfc_controller_deinit() == TRUE)
685 DEBUG_SERVER_MSG("net_nfc_controller_deinit success [%d]", result);
688 if (vconf_set_bool(VCONFKEY_NFC_STATE, FALSE) != 0)
690 DEBUG_ERR_MSG("vconf_set_bool failed");
693 net_nfc_response_test_t resp = { 0, };
695 resp.length = sizeof(net_nfc_response_test_t);
696 resp.flags = msg->flags;
697 resp.result = NET_NFC_OK;
698 resp.trans_param = (void *)msg->user_param;
700 net_nfc_broadcast_response_msg(msg->request_type, (void *)&resp,
701 sizeof(net_nfc_response_test_t), NULL);
705 DEBUG_SERVER_MSG("net_nfc_controller_deinit failed");
707 if (net_nfc_server_check_client_is_running(msg->client_fd))
709 net_nfc_response_test_t resp = { 0, };
711 resp.length = sizeof(net_nfc_response_test_t);
712 resp.flags = msg->flags;
713 resp.result = NET_NFC_UNKNOWN_ERROR;
714 resp.trans_param = (void *)msg->user_param;
716 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
717 (void *)&resp, sizeof(net_nfc_response_test_t), NULL);
722 void net_nfc_service_init(net_nfc_request_msg_t *msg)
724 net_nfc_error_e result;
726 if (net_nfc_controller_init(&result) == true)
728 net_nfc_llcp_config_info_s config = { 128, 1, 100, 0 };
730 if (net_nfc_controller_register_listener(net_nfc_service_target_detected_cb,
731 net_nfc_service_se_transaction_cb, net_nfc_service_llcp_event_cb, &result) == true)
733 DEBUG_SERVER_MSG("net_nfc_controller_register_listener Success!!");
737 DEBUG_ERR_MSG("net_nfc_controller_register_listener failed [%d]", result);
740 if (net_nfc_controller_llcp_config(&config, &result) == true)
742 /*We need to check the stack that supports the llcp or not.*/
743 DEBUG_SERVER_MSG("llcp is enabled");
747 DEBUG_ERR_MSG("net_nfc_controller_llcp_config failed [%d]", result);
750 result = net_nfc_service_se_change_se(SECURE_ELEMENT_TYPE_UICC);
752 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_CONFIG,
753 NET_NFC_ALL_ENABLE, &result) == true)
755 DEBUG_SERVER_MSG("now, nfc is ready");
759 DEBUG_ERR_MSG("net_nfc_controller_confiure_discovery failed [%d]", result);
762 /*Send the Init Success Response Msg*/
764 net_nfc_response_test_t resp = { 0, };
766 DEBUG_SERVER_MSG("net_nfc_controller_init success [%d]", result);
768 resp.length = sizeof(net_nfc_response_test_t);
769 resp.flags = msg->flags;
770 resp.result = NET_NFC_OK;
771 resp.trans_param = (void *)msg->user_param;
774 if (vconf_set_bool(VCONFKEY_NFC_STATE, TRUE) != 0)
776 DEBUG_ERR_MSG("vconf_set_bool failed");
779 net_nfc_broadcast_response_msg(msg->request_type,
780 (void *)&resp, sizeof(net_nfc_response_test_t), NULL);
785 DEBUG_ERR_MSG("net_nfc_controller_init failed [%d]", result);
787 if (net_nfc_server_check_client_is_running(msg->client_fd))
789 net_nfc_response_test_t resp = { 0, };
791 resp.length = sizeof(net_nfc_response_test_t);
792 resp.flags = msg->flags;
793 resp.result = result;
794 resp.trans_param = (void *)msg->user_param;
796 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
797 (void *)&resp, sizeof(net_nfc_response_test_t), NULL);
802 void net_nfc_service_restart_polling(net_nfc_request_msg_t *msg)
804 net_nfc_request_msg_t *discovery_req = (net_nfc_request_msg_t *)msg;
805 net_nfc_error_e result = NET_NFC_OK;
809 pm_state = discovery_req->user_param;
811 DEBUG_SERVER_MSG("NET_NFC_MESSAGE_SERVICE_RESTART_POLLING_LOOP PM State = [%d]", pm_state);
815 set_config = NET_NFC_ALL_ENABLE;
817 else if (pm_state == 3)
819 set_config = NET_NFC_ALL_DISABLE;
823 DEBUG_SERVER_MSG("Do not anything!!");
826 if (net_nfc_controller_confiure_discovery(NET_NFC_DISCOVERY_MODE_CONFIG, set_config, &result) == true)
828 DEBUG_SERVER_MSG("now, nfc polling loop is running again");
832 void net_nfc_service_get_server_state(net_nfc_request_msg_t *msg)
834 if (net_nfc_server_check_client_is_running(msg->client_fd))
836 net_nfc_response_get_server_state_t resp = { 0, };
838 resp.length = sizeof(net_nfc_response_get_server_state_t);
839 resp.flags = msg->flags;
840 resp.state = net_nfc_server_get_server_state();
841 resp.result = NET_NFC_OK;
843 net_nfc_send_response_msg(msg->client_fd, msg->request_type,
844 (void *)&resp, sizeof(net_nfc_response_get_server_state_t), NULL);