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 "net_nfc_typedef_internal.h"
18 #include "net_nfc_debug_internal.h"
19 #include "net_nfc_util_internal.h"
20 #include "net_nfc_util_gdbus_internal.h"
21 #include "net_nfc_gdbus.h"
22 #include "net_nfc_client.h"
23 #include "net_nfc_client_manager.h"
24 #include "net_nfc_client_llcp.h"
26 typedef struct _LlcpFuncData LlcpFuncData;
34 static NetNfcGDbusLlcp *llcp_proxy = NULL;
35 static net_nfc_llcp_config_info_s llcp_config = { 128, 0, 0, 1 };
36 static net_nfc_target_handle_s *llcp_handle = NULL;
37 static GList *socket_data_list = NULL;
38 static guint socket_handle = 0;
41 void llcp_socket_data_append(net_nfc_llcp_internal_socket_s *socket_data);
43 void llcp_socket_data_remove(net_nfc_llcp_internal_socket_s *socket_data);
45 net_nfc_llcp_internal_socket_s *llcp_socket_data_find(net_nfc_llcp_socket_t socket);
48 static void llcp_call_config(GObject *source_object,
52 static void llcp_call_listen(GObject *source_object,
56 static void llcp_call_connect(GObject *source_object,
60 static void llcp_call_connect_sap(GObject *source_object,
64 static void llcp_call_send(GObject *source_object,
68 static void llcp_call_send_to(GObject *source_object,
72 static void llcp_call_receive(GObject *source_object,
76 static void llcp_call_receive_from(GObject *source_object,
80 static void llcp_call_close(GObject *source_object,
84 static void llcp_call_disconnect(GObject *source_object,
89 static void llcp_error(NetNfcGDbusLlcp *object,
95 static void llcp_incoming(NetNfcGDbusLlcp *object,
98 guint incoming_socket,
101 void llcp_socket_data_append(net_nfc_llcp_internal_socket_s *socket_data)
103 if (socket_data_list == NULL)
108 socket_data_list = g_list_append(socket_data_list,
113 void llcp_socket_data_remove(net_nfc_llcp_internal_socket_s *socket_data)
115 if (socket_data_list == NULL)
120 socket_data_list = g_list_remove(socket_data_list,
123 g_free(socket_data->service_name);
128 net_nfc_llcp_internal_socket_s *llcp_socket_data_find(net_nfc_llcp_socket_t socket)
132 if (socket_data_list == NULL)
136 for (pos = g_list_first(socket_data_list); pos ; pos = pos->data)
138 net_nfc_llcp_internal_socket_s *data;
144 if (data->client_socket == socket)
154 static void llcp_call_config(GObject *source_object,
158 LlcpFuncData *func_data = user_data;
159 net_nfc_error_e result;
160 GError *error = NULL;
162 g_assert(func_data != NULL);
164 if (net_nfc_gdbus_llcp_call_config_finish(
165 NET_NFC_GDBUS_LLCP(source_object),
170 NFC_ERR("Can not finish config: %s",
175 result = NET_NFC_IPC_FAIL;
178 if (func_data->callback != NULL)
180 net_nfc_client_llcp_config_completed callback =
181 (net_nfc_client_llcp_config_completed)func_data->callback;
183 callback(result, func_data->user_data);
189 static void llcp_call_listen(GObject *source_object,
193 LlcpFuncData *func_data = user_data;
194 net_nfc_error_e result;
195 guint32 out_client_socket;
196 GError *error = NULL;
197 net_nfc_llcp_internal_socket_s *socket_data = NULL;
199 g_assert(func_data != NULL);
201 if (net_nfc_gdbus_llcp_call_listen_finish(
202 NET_NFC_GDBUS_LLCP(source_object),
208 NFC_ERR("Can not finish listen: %s",
213 result = NET_NFC_IPC_FAIL;
216 socket_data = llcp_socket_data_find(out_client_socket);
217 if (socket_data == NULL)
219 NFC_ERR("Wrong client socket is returned");
223 if (func_data->callback != NULL)
225 net_nfc_client_llcp_listen_completed callback =
226 (net_nfc_client_llcp_listen_completed)func_data->callback;
228 callback(result, out_client_socket, func_data->user_data);
231 /* TODO : release resource when socket is closed */
232 // g_free(func_data);
235 static void llcp_call_accept(GObject *source_object,
239 LlcpFuncData *func_data = user_data;
240 net_nfc_error_e result;
241 GError *error = NULL;
243 g_assert(func_data != NULL);
245 if (net_nfc_gdbus_llcp_call_accept_finish(
246 NET_NFC_GDBUS_LLCP(source_object),
251 NFC_ERR("Can not finish accept: %s",
256 result = NET_NFC_IPC_FAIL;
259 if (func_data->callback != NULL)
261 net_nfc_client_llcp_accept_completed callback =
262 (net_nfc_client_llcp_accept_completed)func_data->callback;
264 callback(result, func_data->user_data);
270 static void llcp_call_reject(GObject *source_object,
274 LlcpFuncData *func_data = user_data;
275 net_nfc_error_e result;
276 GError *error = NULL;
278 g_assert(func_data != NULL);
280 if (net_nfc_gdbus_llcp_call_reject_finish(
281 NET_NFC_GDBUS_LLCP(source_object),
286 NFC_ERR("Can not finish reject: %s",
291 result = NET_NFC_IPC_FAIL;
294 if (func_data->callback != NULL)
296 net_nfc_client_llcp_reject_completed callback =
297 (net_nfc_client_llcp_reject_completed)func_data->callback;
299 callback(result, func_data->user_data);
305 static void llcp_call_connect(GObject *source_object,
309 LlcpFuncData *func_data = user_data;
310 net_nfc_error_e result;
311 guint32 out_client_socket;
312 GError *error = NULL;
313 net_nfc_llcp_internal_socket_s *socket_data = NULL;
315 g_assert(func_data != NULL);
317 if (net_nfc_gdbus_llcp_call_connect_finish(
318 NET_NFC_GDBUS_LLCP(source_object),
324 NFC_ERR("Can not finish connect: %s", error->message);
328 result = NET_NFC_IPC_FAIL;
331 socket_data = llcp_socket_data_find(out_client_socket);
332 if (socket_data == NULL)
334 NFC_ERR("Wrong client socket is returned");
338 if (func_data->callback != NULL)
340 net_nfc_client_llcp_connect_completed callback =
341 (net_nfc_client_llcp_connect_completed)func_data->callback;
343 callback(result, out_client_socket, func_data->user_data);
346 /* TODO : release resource when socket is closed */
347 // g_free(func_data);
350 static void llcp_call_connect_sap(GObject *source_object,
354 LlcpFuncData *func_data = user_data;
355 net_nfc_error_e result;
356 guint32 out_client_socket;
357 GError *error = NULL;
358 net_nfc_llcp_internal_socket_s *socket_data = NULL;
360 g_assert(func_data != NULL);
362 if (net_nfc_gdbus_llcp_call_connect_sap_finish(
363 NET_NFC_GDBUS_LLCP(source_object),
369 NFC_ERR("Can not finish connect sap: %s", error->message);
372 result = NET_NFC_IPC_FAIL;
375 socket_data = llcp_socket_data_find(out_client_socket);
376 if (socket_data == NULL)
378 NFC_ERR("Wrong client socket is returned");
382 if (func_data->callback != NULL)
384 net_nfc_client_llcp_connect_sap_completed callback =
385 (net_nfc_client_llcp_connect_sap_completed)func_data->callback;
387 callback(result, out_client_socket, func_data->user_data);
390 /* TODO : release resource when socket is closed */
391 // g_free(func_data);
394 static void llcp_call_send(GObject *source_object,
398 LlcpFuncData *func_data = user_data;
399 net_nfc_error_e result;
400 guint32 out_client_socket;
401 GError *error = NULL;
403 g_assert(func_data != NULL);
405 if (net_nfc_gdbus_llcp_call_send_finish(
406 NET_NFC_GDBUS_LLCP(source_object),
412 NFC_ERR("Can not finish send: %s",
417 result = NET_NFC_IPC_FAIL;
420 if (func_data->callback != NULL)
422 net_nfc_client_llcp_send_completed callback =
423 (net_nfc_client_llcp_send_completed)func_data->callback;
425 callback(result, func_data->user_data);
431 static void llcp_call_send_to(GObject *source_object,
435 LlcpFuncData *func_data = user_data;
436 net_nfc_error_e result;
437 guint32 out_client_socket;
438 GError *error = NULL;
440 g_assert(func_data != NULL);
442 if (net_nfc_gdbus_llcp_call_send_to_finish(
443 NET_NFC_GDBUS_LLCP(source_object),
449 NFC_ERR("Can not finish send to: %s", error->message);
453 result = NET_NFC_IPC_FAIL;
456 if (func_data->callback != NULL)
458 net_nfc_client_llcp_send_to_completed callback =
459 (net_nfc_client_llcp_send_to_completed)func_data->callback;
461 callback(result, func_data->user_data);
467 static void llcp_call_receive(GObject *source_object,
471 LlcpFuncData *func_data = user_data;
472 net_nfc_error_e result;
474 GError *error = NULL;
476 g_assert(func_data != NULL);
478 if (net_nfc_gdbus_llcp_call_receive_finish(
479 NET_NFC_GDBUS_LLCP(source_object),
485 NFC_ERR("Can not finish receive: %s", error->message);
489 result = NET_NFC_IPC_FAIL;
492 if (func_data->callback != NULL)
494 net_nfc_client_llcp_receive_completed callback =
495 (net_nfc_client_llcp_receive_completed)func_data->callback;
496 data_s data = { NULL, 0 };
498 net_nfc_util_gdbus_variant_to_data_s(variant, &data);
500 callback(result, &data, func_data->user_data);
502 net_nfc_util_free_data(&data);
508 static void llcp_call_receive_from(GObject *source_object,
512 LlcpFuncData *func_data = user_data;
513 net_nfc_error_e result;
516 GError *error = NULL;
518 g_assert(func_data != NULL);
520 if (net_nfc_gdbus_llcp_call_receive_from_finish(
521 NET_NFC_GDBUS_LLCP(source_object),
528 NFC_ERR("Can not finish receive from: %s",
533 result = NET_NFC_IPC_FAIL;
536 if (func_data->callback != NULL)
538 net_nfc_client_llcp_receive_from_completed callback =
539 (net_nfc_client_llcp_receive_from_completed)func_data->callback;
540 data_s data = { NULL, 0 };
542 net_nfc_util_gdbus_variant_to_data_s(variant, &data);
544 callback(result, sap, &data, func_data->user_data);
546 net_nfc_util_free_data(&data);
552 static void llcp_call_close(GObject *source_object,
556 LlcpFuncData *func_data = user_data;
557 net_nfc_error_e result;
558 guint32 out_client_socket;
559 GError *error = NULL;
561 net_nfc_llcp_internal_socket_s *socket_data = NULL;
563 g_assert(func_data != NULL);
565 if (net_nfc_gdbus_llcp_call_close_finish(
566 NET_NFC_GDBUS_LLCP(source_object),
572 NFC_ERR("Can not finish close: %s", error->message);
576 result = NET_NFC_IPC_FAIL;
579 socket_data = llcp_socket_data_find(out_client_socket);
580 if (socket_data == NULL)
582 NFC_ERR("Wrong client socket is returned");
586 if (func_data->callback != NULL)
588 net_nfc_client_llcp_close_completed callback =
589 (net_nfc_client_llcp_close_completed)func_data->callback;
591 callback(result, func_data->user_data);
597 static void llcp_call_disconnect(GObject *source_object,
601 LlcpFuncData *func_data = user_data;
602 net_nfc_error_e result;
603 guint32 out_client_socket;
604 GError *error = NULL;
606 net_nfc_llcp_internal_socket_s *socket_data = NULL;
608 g_assert(func_data != NULL);
610 if (net_nfc_gdbus_llcp_call_disconnect_finish(
611 NET_NFC_GDBUS_LLCP(source_object),
617 NFC_ERR("Can not finish disconnect: %s", error->message);
621 result = NET_NFC_IPC_FAIL;
624 socket_data = llcp_socket_data_find(out_client_socket);
625 if (socket_data == NULL)
627 NFC_ERR("Wrong client socket is returned");
631 if (func_data->callback != NULL) {
632 net_nfc_client_llcp_disconnect_completed callback =
633 (net_nfc_client_llcp_disconnect_completed)func_data->callback;
635 callback(result, func_data->user_data);
641 static void llcp_error(NetNfcGDbusLlcp *object,
647 NFC_INFO(">>> SIGNAL arrived");
650 static void llcp_incoming(NetNfcGDbusLlcp *object,
653 guint incoming_socket,
656 NFC_INFO(">>> SIGNAL arrived");
660 API net_nfc_error_e net_nfc_client_llcp_config(net_nfc_llcp_config_info_h config,
661 net_nfc_client_llcp_config_completed callback,
664 LlcpFuncData *func_data;
667 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
669 if (config == NULL) {
670 return NET_NFC_NULL_PARAMETER;
674 /* prevent executing daemon when nfc is off */
675 if (net_nfc_client_manager_is_activated() == false) {
676 return NET_NFC_INVALID_STATE;
679 func_data = g_new0(LlcpFuncData, 1);
680 if (func_data == NULL) {
681 NFC_ERR("g_new0 failed");
683 return NET_NFC_ALLOC_FAIL;
686 func_data->callback = (gpointer)callback;
687 func_data->user_data = user_data;
689 memcpy(&llcp_config, config, sizeof(net_nfc_llcp_config_info_s));
691 variant = g_variant_new("(qqyy)",
697 net_nfc_gdbus_llcp_call_config(llcp_proxy,
699 net_nfc_client_gdbus_get_privilege(),
707 API net_nfc_error_e net_nfc_client_llcp_config_sync(
708 net_nfc_llcp_config_info_h config)
710 net_nfc_error_e result;
711 GVariant *variant = NULL;
712 GError *error = NULL;
714 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
716 /* prevent executing daemon when nfc is off */
717 if (net_nfc_client_manager_is_activated() == false) {
718 return NET_NFC_INVALID_STATE;
721 memcpy(&llcp_config, config, sizeof(net_nfc_llcp_config_info_s));
723 variant = g_variant_new("(qqyy)",
729 if (net_nfc_gdbus_llcp_call_config_sync(llcp_proxy,
731 net_nfc_client_gdbus_get_privilege(),
736 NFC_ERR("can not config: %s", error->message);
740 result = NET_NFC_IPC_FAIL;
746 API net_nfc_error_e net_nfc_client_llcp_get_config(
747 net_nfc_llcp_config_info_h *config)
750 return NET_NFC_NULL_PARAMETER;
752 *config = (net_nfc_llcp_config_info_h)&llcp_config;
757 API net_nfc_error_e net_nfc_client_llcp_listen(net_nfc_llcp_socket_t socket,
758 const char *service_name,
760 net_nfc_client_llcp_listen_completed callback,
763 LlcpFuncData *func_data;
764 net_nfc_llcp_internal_socket_s *socket_data = NULL;
766 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
768 socket_data = llcp_socket_data_find(socket);
769 if (socket_data == NULL)
771 NFC_ERR("can not get socket_data");
772 return NET_NFC_LLCP_INVALID_SOCKET;
775 /* FIXME: temporary typecast to (uint8_t *) */
776 socket_data->service_name = (uint8_t *)g_strdup(service_name);
777 socket_data->sap = sap;
779 /* prevent executing daemon when nfc is off */
780 if (net_nfc_client_manager_is_activated() == false) {
781 return NET_NFC_INVALID_STATE;
784 func_data = g_new0(LlcpFuncData, 1);
785 if (func_data == NULL) {
786 NFC_ERR("g_new0 failed");
788 return NET_NFC_ALLOC_FAIL;
791 func_data->callback = (gpointer)callback;
792 func_data->user_data = user_data;
794 net_nfc_gdbus_llcp_call_listen(llcp_proxy,
795 GPOINTER_TO_UINT(llcp_handle),
796 socket_data->client_socket,
802 net_nfc_client_gdbus_get_privilege(),
810 API net_nfc_error_e net_nfc_client_llcp_listen_sync(net_nfc_llcp_socket_t socket,
811 const char *service_name,
813 net_nfc_llcp_socket_t *out_socket)
815 net_nfc_error_e result;
816 GError *error = NULL;
817 guint32 out_client_socket;
819 net_nfc_llcp_internal_socket_s *socket_data = NULL;
820 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
822 if (out_socket == NULL) {
823 return NET_NFC_NULL_PARAMETER;
826 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
828 if (service_name == NULL)
830 NFC_ERR("service_name is empty");
831 return NET_NFC_UNKNOWN_ERROR;
834 socket_data = llcp_socket_data_find(socket);
835 if (socket_data == NULL)
837 NFC_ERR("can not get socket_data");
838 return NET_NFC_LLCP_INVALID_SOCKET;
841 /* FIXME: temporary typecast to (uint8_t *) */
842 socket_data->service_name = (uint8_t *)g_strdup(service_name);
843 socket_data->sap = sap;
845 /* prevent executing daemon when nfc is off */
846 if (net_nfc_client_manager_is_activated() == false) {
847 return NET_NFC_INVALID_STATE;
850 if (net_nfc_gdbus_llcp_call_listen_sync(llcp_proxy,
851 GPOINTER_TO_UINT(llcp_handle),
852 socket_data->client_socket,
858 net_nfc_client_gdbus_get_privilege(),
863 out_socket_data = llcp_socket_data_find(out_client_socket);
864 if (out_socket_data == NULL || out_socket_data != socket_data)
866 NFC_ERR("Wrong client socket is returned");
867 return NET_NFC_UNKNOWN_ERROR;
870 // out_socket_data->oal_socket = out_oal_socket;
873 *out_socket = out_client_socket;
875 NFC_ERR("can not listen: %s", error->message);
877 result = NET_NFC_IPC_FAIL;
883 API net_nfc_error_e net_nfc_client_llcp_accept(net_nfc_llcp_socket_t socket,
884 net_nfc_client_llcp_accept_completed callback, void *user_data)
886 LlcpFuncData *func_data;
888 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
890 /* prevent executing daemon when nfc is off */
891 if (net_nfc_client_manager_is_activated() == false) {
892 return NET_NFC_INVALID_STATE;
895 func_data = g_new0(LlcpFuncData, 1);
896 if (func_data == NULL) {
897 NFC_ERR("g_new0 failed");
898 return NET_NFC_ALLOC_FAIL;
901 func_data->callback = (gpointer)callback;
902 func_data->user_data = user_data;
904 net_nfc_gdbus_llcp_call_accept(llcp_proxy,
905 GPOINTER_TO_UINT(llcp_handle),
907 net_nfc_client_gdbus_get_privilege(),
915 API net_nfc_error_e net_nfc_client_llcp_accept_sync(net_nfc_llcp_socket_t socket)
917 net_nfc_error_e result;
918 GError *error = NULL;
920 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
922 /* prevent executing daemon when nfc is off */
923 if (net_nfc_client_manager_is_activated() == false) {
924 return NET_NFC_INVALID_STATE;
927 if (net_nfc_gdbus_llcp_call_accept_sync(llcp_proxy,
928 GPOINTER_TO_UINT(llcp_handle),
930 net_nfc_client_gdbus_get_privilege(),
935 NFC_ERR("can not connect: %s", error->message);
937 result = NET_NFC_IPC_FAIL;
943 API net_nfc_error_e net_nfc_client_llcp_reject(net_nfc_llcp_socket_t socket,
944 net_nfc_client_llcp_reject_completed callback,
947 LlcpFuncData *func_data;
949 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
951 /* prevent executing daemon when nfc is off */
952 if (net_nfc_client_manager_is_activated() == false) {
953 return NET_NFC_INVALID_STATE;
956 func_data = g_new0(LlcpFuncData, 1);
957 if (func_data == NULL) {
958 NFC_ERR("g_new0 failed");
959 return NET_NFC_ALLOC_FAIL;
962 func_data->callback = (gpointer)callback;
963 func_data->user_data = user_data;
965 net_nfc_gdbus_llcp_call_reject(llcp_proxy,
966 GPOINTER_TO_UINT(llcp_handle),
968 net_nfc_client_gdbus_get_privilege(),
976 API net_nfc_error_e net_nfc_client_llcp_reject_sync(net_nfc_llcp_socket_t socket)
978 net_nfc_error_e result;
979 GError *error = NULL;
981 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
983 /* prevent executing daemon when nfc is off */
984 if (net_nfc_client_manager_is_activated() == false) {
985 return NET_NFC_INVALID_STATE;
988 if (net_nfc_gdbus_llcp_call_reject_sync(llcp_proxy,
989 GPOINTER_TO_UINT(llcp_handle),
991 net_nfc_client_gdbus_get_privilege(),
996 NFC_ERR("can not connect: %s", error->message);
998 result = NET_NFC_IPC_FAIL;
1004 API net_nfc_error_e net_nfc_client_llcp_connect(net_nfc_llcp_socket_t socket,
1005 const char *service_name,
1006 net_nfc_client_llcp_connect_completed callback,
1009 LlcpFuncData *func_data;
1010 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1012 if (service_name == NULL) {
1013 return NET_NFC_NULL_PARAMETER;
1016 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1018 socket_data = llcp_socket_data_find(socket);
1019 if (socket_data == NULL)
1021 NFC_ERR("can not get socket_data");
1022 return NET_NFC_LLCP_INVALID_SOCKET;
1025 /* prevent executing daemon when nfc is off */
1026 if (net_nfc_client_manager_is_activated() == false) {
1027 return NET_NFC_INVALID_STATE;
1030 func_data = g_new0(LlcpFuncData, 1);
1031 if (func_data == NULL) {
1032 NFC_ERR("g_new0 failed");
1034 return NET_NFC_ALLOC_FAIL;
1037 func_data->callback = (gpointer)callback;
1038 func_data->user_data = user_data;
1040 net_nfc_gdbus_llcp_call_connect(llcp_proxy,
1041 GPOINTER_TO_UINT(llcp_handle),
1042 socket_data->client_socket,
1047 net_nfc_client_gdbus_get_privilege(),
1055 API net_nfc_error_e net_nfc_client_llcp_connect_sync(net_nfc_llcp_socket_t socket,
1056 const char *service_name,
1057 net_nfc_llcp_socket_t *out_socket)
1059 net_nfc_error_e result;
1060 GError *error = NULL;
1061 guint32 out_client_socket;
1062 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1063 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1065 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1067 if (service_name == NULL || out_socket == NULL) {
1068 return NET_NFC_NULL_PARAMETER;
1071 socket_data = llcp_socket_data_find(socket);
1072 if (socket_data == NULL)
1074 NFC_ERR("can not get socket_data");
1075 return NET_NFC_LLCP_INVALID_SOCKET;
1078 /* prevent executing daemon when nfc is off */
1079 if (net_nfc_client_manager_is_activated() == false) {
1080 return NET_NFC_INVALID_STATE;
1083 if (net_nfc_gdbus_llcp_call_connect_sync(llcp_proxy,
1084 GPOINTER_TO_UINT(llcp_handle),
1085 socket_data->client_socket,
1090 net_nfc_client_gdbus_get_privilege(),
1095 out_socket_data = llcp_socket_data_find(out_client_socket);
1096 if (out_socket_data == NULL || out_socket_data != socket_data)
1098 NFC_ERR("Wrong client socket is returned");
1099 return NET_NFC_UNKNOWN_ERROR;
1102 // out_socket_data->oal_socket = out_oal_socket;
1105 *out_socket = out_client_socket;
1107 NFC_ERR("can not connect: %s", error->message);
1109 g_error_free(error);
1111 result = NET_NFC_IPC_FAIL;
1117 API net_nfc_error_e net_nfc_client_llcp_connect_sap(net_nfc_llcp_socket_t socket,
1119 net_nfc_client_llcp_connect_sap_completed callback,
1122 LlcpFuncData *func_data;
1123 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1125 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1128 return NET_NFC_INVALID_PARAM;
1131 socket_data = llcp_socket_data_find(socket);
1132 if (socket_data == NULL)
1134 NFC_ERR("can not get socket_data");
1135 return NET_NFC_LLCP_INVALID_SOCKET;
1138 /* prevent executing daemon when nfc is off */
1139 if (net_nfc_client_manager_is_activated() == false) {
1140 return NET_NFC_INVALID_STATE;
1143 func_data = g_new0(LlcpFuncData, 1);
1144 if (func_data == NULL) {
1145 NFC_ERR("g_new0 failed");
1147 return NET_NFC_ALLOC_FAIL;
1150 func_data->callback = (gpointer)callback;
1151 func_data->user_data = user_data;
1153 net_nfc_gdbus_llcp_call_connect_sap(llcp_proxy,
1154 GPOINTER_TO_UINT(llcp_handle),
1155 socket_data->client_socket,
1160 net_nfc_client_gdbus_get_privilege(),
1162 llcp_call_connect_sap,
1168 API net_nfc_error_e net_nfc_client_llcp_connect_sap_sync(
1169 net_nfc_llcp_socket_t socket,
1171 net_nfc_llcp_socket_t *out_socket)
1173 net_nfc_error_e result;
1174 GError *error = NULL;
1175 guint32 out_client_socket;
1176 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1177 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1179 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1181 if (out_socket == NULL) {
1182 return NET_NFC_NULL_PARAMETER;
1186 return NET_NFC_INVALID_PARAM;
1189 socket_data = llcp_socket_data_find(socket);
1190 if (socket_data == NULL)
1192 NFC_ERR("can not get socket_data");
1193 return NET_NFC_LLCP_INVALID_SOCKET;
1196 /* prevent executing daemon when nfc is off */
1197 if (net_nfc_client_manager_is_activated() == false) {
1198 return NET_NFC_INVALID_STATE;
1201 if (net_nfc_gdbus_llcp_call_connect_sap_sync(llcp_proxy,
1202 GPOINTER_TO_UINT(llcp_handle),
1203 socket_data->client_socket,
1208 net_nfc_client_gdbus_get_privilege(),
1213 out_socket_data = llcp_socket_data_find(out_client_socket);
1214 if (out_socket_data == NULL || out_socket_data != socket_data)
1216 NFC_ERR("Wrong client socket is returned");
1217 return NET_NFC_UNKNOWN_ERROR;
1220 // out_socket_data->oal_socket = out_oal_socket;
1223 *out_socket = out_client_socket;
1225 NFC_ERR("can not connect: %s", error->message);
1227 g_error_free(error);
1229 result = NET_NFC_IPC_FAIL;
1235 API net_nfc_error_e net_nfc_client_llcp_send(net_nfc_llcp_socket_t socket,
1237 net_nfc_client_llcp_send_completed callback,
1240 LlcpFuncData *func_data;
1242 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1244 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1247 return NET_NFC_NULL_PARAMETER;
1251 return NET_NFC_INVALID_PARAM;
1254 /* prevent executing daemon when nfc is off */
1255 if (net_nfc_client_manager_is_activated() == false) {
1256 return NET_NFC_INVALID_STATE;
1259 socket_data = llcp_socket_data_find(socket);
1260 if (socket_data == NULL)
1262 NFC_ERR("can not get socket_data");
1263 return NET_NFC_LLCP_INVALID_SOCKET;
1266 func_data = g_new0(LlcpFuncData, 1);
1267 if (func_data == NULL) {
1268 NFC_ERR("g_new0 failed");
1270 return NET_NFC_ALLOC_FAIL;
1273 func_data->callback = (gpointer)callback;
1274 func_data->user_data = user_data;
1276 variant = net_nfc_util_gdbus_data_to_variant(data);
1278 net_nfc_gdbus_llcp_call_send(llcp_proxy,
1279 GPOINTER_TO_UINT(llcp_handle),
1280 socket_data->client_socket,
1282 net_nfc_client_gdbus_get_privilege(),
1290 API net_nfc_error_e net_nfc_client_llcp_send_sync(net_nfc_llcp_socket_t socket,
1293 net_nfc_error_e result;
1295 GError *error = NULL;
1296 guint32 out_client_socket;
1297 net_nfc_llcp_internal_socket_s *socket_data;
1298 net_nfc_llcp_internal_socket_s *out_socket_data;
1300 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1303 return NET_NFC_NULL_PARAMETER;
1307 return NET_NFC_INVALID_PARAM;
1310 socket_data = llcp_socket_data_find(socket);
1311 if (socket_data == NULL)
1313 NFC_ERR("can not get socket_data");
1314 return NET_NFC_LLCP_INVALID_SOCKET;
1319 NFC_ERR("data is empty");
1320 return NET_NFC_INVALID_PARAM;
1323 /* prevent executing daemon when nfc is off */
1324 if (net_nfc_client_manager_is_activated() == false) {
1325 return NET_NFC_INVALID_STATE;
1328 variant = net_nfc_util_gdbus_data_to_variant(data);
1330 if (net_nfc_gdbus_llcp_call_send_sync(llcp_proxy,
1331 GPOINTER_TO_UINT(llcp_handle),
1332 socket_data->client_socket,
1334 net_nfc_client_gdbus_get_privilege(),
1339 out_socket_data = llcp_socket_data_find(out_client_socket);
1340 if (out_socket_data == NULL)
1342 NFC_ERR("can not find socket_data");
1343 return NET_NFC_UNKNOWN_ERROR;
1346 NFC_ERR("can not call send: %s", error->message);
1348 g_error_free(error);
1350 result = NET_NFC_IPC_FAIL;
1356 API net_nfc_error_e net_nfc_client_llcp_send_to(net_nfc_llcp_socket_t socket,
1359 net_nfc_client_llcp_send_to_completed callback,
1362 LlcpFuncData *func_data;
1364 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1366 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1369 return NET_NFC_NULL_PARAMETER;
1372 if (socket <= 0 || sap == 0) {
1373 return NET_NFC_INVALID_PARAM;
1376 socket_data = llcp_socket_data_find(socket);
1377 if (socket_data == NULL)
1379 NFC_ERR("can not get socket_data");
1380 return NET_NFC_LLCP_INVALID_SOCKET;
1383 /* prevent executing daemon when nfc is off */
1384 if (net_nfc_client_manager_is_activated() == false) {
1385 return NET_NFC_INVALID_STATE;
1388 func_data = g_new0(LlcpFuncData, 1);
1389 if (func_data == NULL) {
1390 NFC_ERR("g_new0 failed");
1392 return NET_NFC_ALLOC_FAIL;
1395 func_data->callback = (gpointer)callback;
1396 func_data->user_data = user_data;
1398 variant = net_nfc_util_gdbus_data_to_variant(data);
1400 net_nfc_gdbus_llcp_call_send_to(llcp_proxy,
1401 GPOINTER_TO_UINT(llcp_handle),
1402 socket_data->client_socket,
1405 net_nfc_client_gdbus_get_privilege(),
1413 API net_nfc_error_e net_nfc_client_llcp_send_to_sync(net_nfc_llcp_socket_t socket,
1414 sap_t sap, data_h data)
1416 net_nfc_error_e result;
1418 GError *error = NULL;
1419 guint32 out_client_socket;
1421 net_nfc_llcp_internal_socket_s *socket_data;
1422 net_nfc_llcp_internal_socket_s *out_socket_data;
1424 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1427 return NET_NFC_NULL_PARAMETER;
1430 if (socket <= 0 || sap == 0) {
1431 return NET_NFC_INVALID_PARAM;
1434 socket_data = llcp_socket_data_find(socket);
1435 if (socket_data == NULL)
1437 NFC_ERR("can not get socket_data");
1438 return NET_NFC_LLCP_INVALID_SOCKET;
1441 /* prevent executing daemon when nfc is off */
1442 if (net_nfc_client_manager_is_activated() == false) {
1443 return NET_NFC_INVALID_STATE;
1446 variant = net_nfc_util_gdbus_data_to_variant(data);
1448 if (net_nfc_gdbus_llcp_call_send_to_sync(llcp_proxy,
1449 GPOINTER_TO_UINT(llcp_handle),
1450 socket_data->client_socket,
1453 net_nfc_client_gdbus_get_privilege(),
1458 out_socket_data = llcp_socket_data_find(out_client_socket);
1459 if (out_socket_data == NULL)
1461 NFC_ERR("can not find socket_data");
1462 return NET_NFC_UNKNOWN_ERROR;
1465 NFC_ERR("can not call send to: %s", error->message);
1467 g_error_free(error);
1469 result = NET_NFC_IPC_FAIL;
1475 API net_nfc_error_e net_nfc_client_llcp_receive(net_nfc_llcp_socket_t socket,
1476 size_t request_length,
1477 net_nfc_client_llcp_receive_completed callback,
1480 LlcpFuncData *func_data;
1481 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1483 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1485 if (socket <= 0 || request_length == 0) {
1486 return NET_NFC_INVALID_PARAM;
1489 socket_data = llcp_socket_data_find(socket);
1490 if (socket_data == NULL)
1492 NFC_ERR("can not get socket_data");
1493 return NET_NFC_LLCP_INVALID_SOCKET;
1496 /* prevent executing daemon when nfc is off */
1497 if (net_nfc_client_manager_is_activated() == false) {
1498 return NET_NFC_INVALID_STATE;
1501 func_data = g_new0(LlcpFuncData, 1);
1502 if (func_data == NULL) {
1503 NFC_ERR("g_new0 failed");
1505 return NET_NFC_ALLOC_FAIL;
1508 func_data->callback = (gpointer)callback;
1509 func_data->user_data = user_data;
1511 net_nfc_gdbus_llcp_call_receive(llcp_proxy,
1512 GPOINTER_TO_UINT(llcp_handle),
1513 socket_data->client_socket,
1515 net_nfc_client_gdbus_get_privilege(),
1523 API net_nfc_error_e net_nfc_client_llcp_receive_sync(net_nfc_llcp_socket_t socket,
1524 size_t request_length,
1527 net_nfc_error_e result;
1529 GError *error = NULL;
1530 net_nfc_llcp_internal_socket_s *socket_data;
1532 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1534 if (out_data == NULL) {
1535 return NET_NFC_NULL_PARAMETER;
1540 if (socket <= 0 || request_length == 0) {
1541 return NET_NFC_INVALID_PARAM;
1544 socket_data = llcp_socket_data_find(socket);
1545 if (socket_data == NULL)
1547 NFC_ERR("can not get socket_data");
1548 return NET_NFC_LLCP_INVALID_SOCKET;
1551 /* prevent executing daemon when nfc is off */
1552 if (net_nfc_client_manager_is_activated() == false) {
1553 return NET_NFC_INVALID_STATE;
1556 if (net_nfc_gdbus_llcp_call_receive_sync(llcp_proxy,
1557 GPOINTER_TO_UINT(llcp_handle),
1558 socket_data->client_socket,
1560 net_nfc_client_gdbus_get_privilege(),
1565 *out_data = net_nfc_util_gdbus_variant_to_data(variant);
1567 NFC_ERR("can not call receive: %s", error->message);
1569 g_error_free(error);
1571 result = NET_NFC_IPC_FAIL;
1577 API net_nfc_error_e net_nfc_client_llcp_receive_from(net_nfc_llcp_socket_t socket,
1578 size_t request_length,
1579 net_nfc_client_llcp_receive_from_completed callback,
1582 LlcpFuncData *func_data;
1583 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1585 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1587 if (socket <= 0 || request_length == 0) {
1588 return NET_NFC_INVALID_PARAM;
1591 socket_data = llcp_socket_data_find(socket);
1592 if (socket_data == NULL)
1594 NFC_ERR("can not get socket_data");
1595 return NET_NFC_LLCP_INVALID_SOCKET;
1598 func_data = g_new0(LlcpFuncData, 1);
1599 if (func_data == NULL) {
1600 NFC_ERR("g_new0 failed");
1602 return NET_NFC_ALLOC_FAIL;
1605 func_data->callback = (gpointer)callback;
1606 func_data->user_data = user_data;
1608 net_nfc_gdbus_llcp_call_receive_from(llcp_proxy,
1609 GPOINTER_TO_UINT(llcp_handle),
1610 socket_data->client_socket,
1612 net_nfc_client_gdbus_get_privilege(),
1614 llcp_call_receive_from,
1620 API net_nfc_error_e net_nfc_client_llcp_receive_from_sync(
1621 net_nfc_llcp_socket_t socket,
1622 size_t request_length,
1626 net_nfc_error_e result;
1627 GError *error = NULL;
1630 net_nfc_llcp_internal_socket_s *socket_data;
1632 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1634 if (out_sap == NULL || out_data == NULL) {
1635 return NET_NFC_NULL_PARAMETER;
1641 if (socket <= 0 || request_length == 0) {
1642 return NET_NFC_INVALID_PARAM;
1645 socket_data = llcp_socket_data_find(socket);
1646 if (socket_data == NULL)
1648 NFC_ERR("can not get socket_data");
1649 return NET_NFC_LLCP_INVALID_SOCKET;
1652 /* prevent executing daemon when nfc is off */
1653 if (net_nfc_client_manager_is_activated() == false) {
1654 return NET_NFC_INVALID_STATE;
1657 if (net_nfc_gdbus_llcp_call_receive_from_sync(llcp_proxy,
1658 GPOINTER_TO_UINT(llcp_handle),
1659 socket_data->client_socket,
1661 net_nfc_client_gdbus_get_privilege(),
1668 *out_data = net_nfc_util_gdbus_variant_to_data(variant);
1670 NFC_ERR("can not call receive from: %s", error->message);
1672 g_error_free(error);
1674 result = NET_NFC_IPC_FAIL;
1680 API net_nfc_error_e net_nfc_client_llcp_close(net_nfc_llcp_socket_t socket,
1681 net_nfc_client_llcp_close_completed callback,
1684 LlcpFuncData *func_data;
1685 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1687 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1690 return NET_NFC_INVALID_PARAM;
1693 socket_data = llcp_socket_data_find(socket);
1694 if (socket_data == NULL)
1696 NFC_ERR("can not get socket_data");
1697 return NET_NFC_LLCP_INVALID_SOCKET;
1700 /* prevent executing daemon when nfc is off */
1701 if (net_nfc_client_manager_is_activated() == false) {
1702 return NET_NFC_INVALID_STATE;
1705 func_data = g_new0(LlcpFuncData, 1);
1706 if (func_data == NULL) {
1707 NFC_ERR("g_new0 failed");
1709 return NET_NFC_ALLOC_FAIL;
1712 func_data->callback = (gpointer)callback;
1713 func_data->user_data = user_data;
1715 net_nfc_gdbus_llcp_call_close(llcp_proxy,
1716 GPOINTER_TO_UINT(llcp_handle),
1717 socket_data->client_socket,
1718 net_nfc_client_gdbus_get_privilege(),
1726 API net_nfc_error_e net_nfc_client_llcp_close_sync(net_nfc_llcp_socket_t socket)
1728 net_nfc_error_e result;
1729 GError *error = NULL;
1730 guint32 out_client_socket;
1731 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1732 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1734 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1737 return NET_NFC_INVALID_PARAM;
1740 socket_data = llcp_socket_data_find(socket);
1741 if (socket_data == NULL)
1743 NFC_ERR("can not get socket_data");
1744 return NET_NFC_LLCP_INVALID_SOCKET;
1747 /* prevent executing daemon when nfc is off */
1748 if (net_nfc_client_manager_is_activated() == false) {
1749 return NET_NFC_INVALID_STATE;
1752 if (net_nfc_gdbus_llcp_call_close_sync(llcp_proxy,
1753 GPOINTER_TO_UINT(llcp_handle),
1754 socket_data->client_socket,
1755 net_nfc_client_gdbus_get_privilege(),
1760 out_socket_data = llcp_socket_data_find(out_client_socket);
1761 if (out_socket_data == NULL || out_socket_data != socket_data)
1763 NFC_ERR("Wrong client socket is returned");
1764 return NET_NFC_UNKNOWN_ERROR;
1767 NFC_ERR("can not close: %s", error->message);
1769 g_error_free(error);
1771 result = NET_NFC_IPC_FAIL;
1777 API net_nfc_error_e net_nfc_client_llcp_disconnect(net_nfc_llcp_socket_t socket,
1778 net_nfc_client_llcp_disconnect_completed callback,
1781 LlcpFuncData *func_data;
1782 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1784 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1787 return NET_NFC_INVALID_PARAM;
1790 socket_data = llcp_socket_data_find(socket);
1791 if (socket_data == NULL)
1793 NFC_ERR("can not get socket_data");
1794 return NET_NFC_LLCP_INVALID_SOCKET;
1797 /* prevent executing daemon when nfc is off */
1798 if (net_nfc_client_manager_is_activated() == false) {
1799 return NET_NFC_INVALID_STATE;
1802 func_data = g_new0(LlcpFuncData, 1);
1803 if (func_data == NULL) {
1804 NFC_ERR("g_new0 failed");
1806 return NET_NFC_ALLOC_FAIL;
1809 func_data->callback = (gpointer)callback;
1810 func_data->user_data = user_data;
1812 net_nfc_gdbus_llcp_call_disconnect(llcp_proxy,
1813 GPOINTER_TO_UINT(llcp_handle),
1814 socket_data->client_socket,
1815 net_nfc_client_gdbus_get_privilege(),
1817 llcp_call_disconnect,
1823 API net_nfc_error_e net_nfc_client_llcp_disconnect_sync(
1824 net_nfc_llcp_socket_t socket)
1826 net_nfc_error_e result;
1827 GError *error = NULL;
1828 guint32 out_client_socket;
1829 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1830 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1832 RETVM_IF(NULL == llcp_proxy, NET_NFC_NOT_INITIALIZED, "Can not get LlcpProxy");
1835 return NET_NFC_INVALID_PARAM;
1838 socket_data = llcp_socket_data_find(socket);
1839 if (socket_data == NULL)
1841 NFC_ERR("can not get socket_data");
1842 return NET_NFC_LLCP_INVALID_SOCKET;
1845 /* prevent executing daemon when nfc is off */
1846 if (net_nfc_client_manager_is_activated() == false) {
1847 return NET_NFC_INVALID_STATE;
1850 if (net_nfc_gdbus_llcp_call_disconnect_sync(llcp_proxy,
1851 GPOINTER_TO_UINT(llcp_handle),
1852 socket_data->client_socket,
1853 net_nfc_client_gdbus_get_privilege(),
1858 out_socket_data = llcp_socket_data_find(out_client_socket);
1859 if (out_socket_data == NULL || out_socket_data != socket_data)
1861 NFC_ERR("Wrong client socket is returned");
1862 return NET_NFC_UNKNOWN_ERROR;
1865 NFC_ERR("can not disconnect: %s", error->message);
1867 g_error_free(error);
1869 result = NET_NFC_IPC_FAIL;
1875 API void net_nfc_client_llcp_create_socket(net_nfc_llcp_socket_t *socket,
1876 net_nfc_llcp_socket_option_h option)
1878 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1880 socket_data = g_new0(net_nfc_llcp_internal_socket_s, 1);
1882 socket_data->client_socket = socket_handle++;
1886 socket_data->miu = option->miu;
1887 socket_data->rw = option->rw;
1888 socket_data->type = option->type;
1892 socket_data->miu = 128;
1893 socket_data->rw = 1;
1895 NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED;
1898 socket_data->device_id = llcp_handle;
1899 socket_data->close_requested = false;
1903 *socket = socket_data->client_socket;
1907 API net_nfc_error_e net_nfc_client_llcp_get_local_config(
1908 net_nfc_llcp_config_info_h *config)
1911 return NET_NFC_NULL_PARAMETER;
1913 *config = (net_nfc_llcp_config_info_h)&llcp_config;
1918 API net_nfc_error_e net_nfc_client_llcp_get_local_socket_option(
1919 net_nfc_llcp_socket_t socket,
1920 net_nfc_llcp_socket_option_h *info)
1922 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1924 socket_data = llcp_socket_data_find(socket);
1925 if (socket_data == NULL)
1926 return NET_NFC_LLCP_INVALID_SOCKET;
1928 *info = (net_nfc_llcp_socket_option_h)socket_data;
1933 API net_nfc_error_e net_nfc_client_llcp_create_socket_option(
1934 net_nfc_llcp_socket_option_h *option,
1937 net_nfc_socket_type_e type)
1939 net_nfc_llcp_socket_option_s *struct_option = NULL;
1943 return NET_NFC_NULL_PARAMETER;
1946 if (miu < 128 || miu > 1152 ||
1947 rw < 1 || rw > 15 ||
1948 type < NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED ||
1949 type > NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONLESS)
1951 return NET_NFC_OUT_OF_BOUND;
1954 _net_nfc_util_alloc_mem(struct_option, sizeof(net_nfc_llcp_socket_option_s));
1955 if (struct_option != NULL)
1957 struct_option->miu = miu;
1958 struct_option->rw = rw;
1959 struct_option->type = type;
1961 *option = (net_nfc_llcp_socket_option_h)struct_option;
1967 return NET_NFC_ALLOC_FAIL;
1971 API net_nfc_error_e net_nfc_client_llcp_create_socket_option_default(
1972 net_nfc_llcp_socket_option_h *option)
1974 return net_nfc_client_llcp_create_socket_option(
1978 NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED);
1981 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_miu(
1982 net_nfc_llcp_socket_option_h option,
1985 net_nfc_llcp_socket_option_s *struct_option =
1986 (net_nfc_llcp_socket_option_s *)option;
1988 if (option == NULL || miu == NULL)
1990 return NET_NFC_NULL_PARAMETER;
1993 *miu = struct_option->miu;
1998 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_miu(
1999 net_nfc_llcp_socket_option_h option,
2002 net_nfc_llcp_socket_option_s *struct_option =
2003 (net_nfc_llcp_socket_option_s *)option;
2007 return NET_NFC_NULL_PARAMETER;
2010 struct_option->miu = miu;
2015 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_rw(
2016 net_nfc_llcp_socket_option_h option,
2019 if (option == NULL || rw == NULL)
2021 return NET_NFC_NULL_PARAMETER;
2023 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2025 *rw = struct_option->rw;
2029 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_rw(
2030 net_nfc_llcp_socket_option_h option,
2035 return NET_NFC_NULL_PARAMETER;
2037 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2039 struct_option->rw = rw;
2043 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_type(
2044 net_nfc_llcp_socket_option_h option,
2045 net_nfc_socket_type_e * type)
2047 if (option == NULL || type == NULL)
2049 return NET_NFC_NULL_PARAMETER;
2051 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2053 *type = struct_option->type;
2057 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_type(
2058 net_nfc_llcp_socket_option_h option,
2059 net_nfc_socket_type_e type)
2063 return NET_NFC_NULL_PARAMETER;
2065 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2067 struct_option->type = type;
2071 API net_nfc_error_e net_nfc_client_llcp_free_socket_option(
2072 net_nfc_llcp_socket_option_h option)
2076 return NET_NFC_NULL_PARAMETER;
2079 _net_nfc_util_free_mem(option);
2084 API net_nfc_error_e net_nfc_client_llcp_create_config(
2085 net_nfc_llcp_config_info_h *config,
2091 net_nfc_llcp_config_info_s *tmp_config;
2094 return NET_NFC_NULL_PARAMETER;
2096 _net_nfc_util_alloc_mem(tmp_config, sizeof(net_nfc_llcp_config_info_s));
2098 if (tmp_config == NULL)
2099 return NET_NFC_ALLOC_FAIL;
2101 tmp_config->miu = miu;
2102 tmp_config->wks = wks;
2103 tmp_config->lto = lto;
2104 tmp_config->option = option;
2106 *config = (net_nfc_llcp_config_info_h)tmp_config;
2111 API net_nfc_error_e net_nfc_client_llcp_create_config_default(
2112 net_nfc_llcp_config_info_h *config)
2114 return net_nfc_client_llcp_create_config(config, 128, 1, 10, 0);
2117 API net_nfc_error_e net_nfc_client_llcp_get_config_miu(
2118 net_nfc_llcp_config_info_h config, uint16_t *miu)
2120 if (config == NULL || miu == NULL)
2121 return NET_NFC_NULL_PARAMETER;
2123 net_nfc_llcp_config_info_s *tmp_config =
2124 (net_nfc_llcp_config_info_s *)config;
2126 *miu = tmp_config->miu;
2131 API net_nfc_error_e net_nfc_client_llcp_get_config_wks(
2132 net_nfc_llcp_config_info_h config, uint16_t *wks)
2134 if (config == NULL || wks == NULL)
2135 return NET_NFC_NULL_PARAMETER;
2137 net_nfc_llcp_config_info_s *tmp_config =
2138 (net_nfc_llcp_config_info_s *)config;
2140 *wks = tmp_config->wks;
2145 API net_nfc_error_e net_nfc_client_llcp_get_config_lto(
2146 net_nfc_llcp_config_info_h config, uint8_t *lto)
2148 if (config == NULL || lto == NULL)
2149 return NET_NFC_NULL_PARAMETER;
2151 net_nfc_llcp_config_info_s *tmp_config =
2152 (net_nfc_llcp_config_info_s *)config;
2154 *lto = tmp_config->lto;
2159 API net_nfc_error_e net_nfc_client_llcp_get_config_option(
2160 net_nfc_llcp_config_info_h config, uint8_t *option)
2162 if (config == NULL || option == NULL)
2163 return NET_NFC_NULL_PARAMETER;
2165 net_nfc_llcp_config_info_s *tmp_config =
2166 (net_nfc_llcp_config_info_s *)config;
2168 *option = tmp_config->option;
2173 API net_nfc_error_e net_nfc_client_llcp_set_config_miu(
2174 net_nfc_llcp_config_info_h config, uint16_t miu)
2177 return NET_NFC_NULL_PARAMETER;
2179 if (miu < 128 || miu > 1152)
2180 return NET_NFC_OUT_OF_BOUND;
2182 net_nfc_llcp_config_info_s * tmp_config =
2183 (net_nfc_llcp_config_info_s *)config;
2185 tmp_config->miu = miu;
2190 API net_nfc_error_e net_nfc_client_llcp_set_config_wks(
2191 net_nfc_llcp_config_info_h config, uint16_t wks)
2194 return NET_NFC_NULL_PARAMETER;
2196 net_nfc_llcp_config_info_s *tmp_config =
2197 (net_nfc_llcp_config_info_s *)config;
2199 tmp_config->wks = wks;
2204 API net_nfc_error_e net_nfc_client_llcp_set_config_lto(
2205 net_nfc_llcp_config_info_h config, uint8_t lto)
2208 return NET_NFC_NULL_PARAMETER;
2210 net_nfc_llcp_config_info_s *tmp_config =
2211 (net_nfc_llcp_config_info_s *)config;
2213 tmp_config->lto = lto;
2218 API net_nfc_error_e net_nfc_client_llcp_set_config_option(
2219 net_nfc_llcp_config_info_h config, uint8_t option)
2222 return NET_NFC_NULL_PARAMETER;
2224 net_nfc_llcp_config_info_s * tmp_config =
2225 (net_nfc_llcp_config_info_s *)config;
2227 tmp_config->option = option;
2232 API net_nfc_error_e net_nfc_client_llcp_free_config(
2233 net_nfc_llcp_config_info_h config)
2236 return NET_NFC_NULL_PARAMETER;
2238 _net_nfc_util_free_mem(config);
2242 net_nfc_error_e net_nfc_client_llcp_init(void)
2244 GError *error = NULL;
2248 NFC_WARN("Already initialized");
2252 llcp_proxy = net_nfc_gdbus_llcp_proxy_new_for_bus_sync(
2254 G_DBUS_PROXY_FLAGS_NONE,
2255 "org.tizen.NetNfcService",
2256 "/org/tizen/NetNfcService/Llcp",
2260 if (llcp_proxy == NULL)
2262 NFC_ERR("Can not create proxy : %s", error->message);
2263 g_error_free(error);
2264 return NET_NFC_UNKNOWN_ERROR;
2267 g_signal_connect(llcp_proxy, "error",
2268 G_CALLBACK(llcp_error), NULL);
2270 g_signal_connect(llcp_proxy, "incoming",
2271 G_CALLBACK(llcp_incoming), NULL);
2276 void net_nfc_client_llcp_deinit(void)
2280 g_object_unref(llcp_proxy);