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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 DEBUG_ERR_MSG("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 INFO_MSG(">>> SIGNAL arrived");
650 static void llcp_incoming(NetNfcGDbusLlcp *object,
653 guint incoming_socket,
656 INFO_MSG(">>> 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 if (config == NULL) {
668 return NET_NFC_NULL_PARAMETER;
671 if (llcp_proxy == NULL)
673 DEBUG_ERR_MSG("Can not get LlcpProxy");
675 return NET_NFC_NOT_INITIALIZED;
678 /* prevent executing daemon when nfc is off */
679 if (net_nfc_client_manager_is_activated() == false) {
680 return NET_NFC_INVALID_STATE;
683 func_data = g_new0(LlcpFuncData, 1);
684 if (func_data == NULL) {
685 DEBUG_ERR_MSG("g_new0 failed");
687 return NET_NFC_ALLOC_FAIL;
690 func_data->callback = (gpointer)callback;
691 func_data->user_data = user_data;
693 memcpy(&llcp_config, config, sizeof(net_nfc_llcp_config_info_s));
695 variant = g_variant_new("(qqyy)",
701 net_nfc_gdbus_llcp_call_config(llcp_proxy,
703 net_nfc_client_gdbus_get_privilege(),
711 API net_nfc_error_e net_nfc_client_llcp_config_sync(
712 net_nfc_llcp_config_info_h config)
714 net_nfc_error_e result;
715 GVariant *variant = NULL;
716 GError *error = NULL;
718 if (llcp_proxy == NULL)
720 DEBUG_ERR_MSG("Can not get LlcpProxy");
722 return NET_NFC_NOT_INITIALIZED;
725 /* prevent executing daemon when nfc is off */
726 if (net_nfc_client_manager_is_activated() == false) {
727 return NET_NFC_INVALID_STATE;
730 memcpy(&llcp_config, config, sizeof(net_nfc_llcp_config_info_s));
732 variant = g_variant_new("(qqyy)",
738 if (net_nfc_gdbus_llcp_call_config_sync(llcp_proxy,
740 net_nfc_client_gdbus_get_privilege(),
745 DEBUG_ERR_MSG("can not config: %s", error->message);
749 result = NET_NFC_IPC_FAIL;
755 API net_nfc_error_e net_nfc_client_llcp_get_config(
756 net_nfc_llcp_config_info_h *config)
759 return NET_NFC_NULL_PARAMETER;
761 *config = (net_nfc_llcp_config_info_h)&llcp_config;
766 API net_nfc_error_e net_nfc_client_llcp_listen(net_nfc_llcp_socket_t socket,
767 const char *service_name,
769 net_nfc_client_llcp_listen_completed callback,
772 LlcpFuncData *func_data;
773 net_nfc_llcp_internal_socket_s *socket_data = NULL;
775 if (llcp_proxy == NULL)
777 DEBUG_ERR_MSG("Can not get LlcpProxy");
779 return NET_NFC_NOT_INITIALIZED;
782 socket_data = llcp_socket_data_find(socket);
783 if (socket_data == NULL)
785 DEBUG_ERR_MSG("can not get socket_data");
786 return NET_NFC_LLCP_INVALID_SOCKET;
789 /* FIXME: temporary typecast to (uint8_t *) */
790 socket_data->service_name = (uint8_t *)g_strdup(service_name);
791 socket_data->sap = sap;
793 /* prevent executing daemon when nfc is off */
794 if (net_nfc_client_manager_is_activated() == false) {
795 return NET_NFC_INVALID_STATE;
798 func_data = g_new0(LlcpFuncData, 1);
799 if (func_data == NULL) {
800 DEBUG_ERR_MSG("g_new0 failed");
802 return NET_NFC_ALLOC_FAIL;
805 func_data->callback = (gpointer)callback;
806 func_data->user_data = user_data;
808 net_nfc_gdbus_llcp_call_listen(llcp_proxy,
809 GPOINTER_TO_UINT(llcp_handle),
810 socket_data->client_socket,
816 net_nfc_client_gdbus_get_privilege(),
824 API net_nfc_error_e net_nfc_client_llcp_listen_sync(net_nfc_llcp_socket_t socket,
825 const char *service_name,
827 net_nfc_llcp_socket_t *out_socket)
829 net_nfc_error_e result;
830 GError *error = NULL;
831 guint32 out_client_socket;
833 net_nfc_llcp_internal_socket_s *socket_data = NULL;
834 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
836 if (out_socket == NULL) {
837 return NET_NFC_NULL_PARAMETER;
840 if (llcp_proxy == NULL)
842 DEBUG_ERR_MSG("Can not get LlcpProxy");
844 return NET_NFC_NOT_INITIALIZED;
847 if (service_name == NULL)
849 DEBUG_ERR_MSG("service_name is empty");
850 return NET_NFC_UNKNOWN_ERROR;
853 socket_data = llcp_socket_data_find(socket);
854 if (socket_data == NULL)
856 DEBUG_ERR_MSG("can not get socket_data");
857 return NET_NFC_LLCP_INVALID_SOCKET;
860 /* FIXME: temporary typecast to (uint8_t *) */
861 socket_data->service_name = (uint8_t *)g_strdup(service_name);
862 socket_data->sap = sap;
864 /* prevent executing daemon when nfc is off */
865 if (net_nfc_client_manager_is_activated() == false) {
866 return NET_NFC_INVALID_STATE;
869 if (net_nfc_gdbus_llcp_call_listen_sync(llcp_proxy,
870 GPOINTER_TO_UINT(llcp_handle),
871 socket_data->client_socket,
877 net_nfc_client_gdbus_get_privilege(),
882 out_socket_data = llcp_socket_data_find(out_client_socket);
883 if (out_socket_data == NULL || out_socket_data != socket_data)
885 DEBUG_ERR_MSG("Wrong client socket is returned");
886 return NET_NFC_UNKNOWN_ERROR;
889 // out_socket_data->oal_socket = out_oal_socket;
892 *out_socket = out_client_socket;
894 DEBUG_ERR_MSG("can not listen: %s", error->message);
898 result = NET_NFC_IPC_FAIL;
904 API net_nfc_error_e net_nfc_client_llcp_accept(net_nfc_llcp_socket_t socket,
905 net_nfc_client_llcp_accept_completed callback, void *user_data)
907 LlcpFuncData *func_data;
909 if (llcp_proxy == NULL)
911 DEBUG_ERR_MSG("Can not get LlcpProxy");
913 return NET_NFC_NOT_INITIALIZED;
916 /* prevent executing daemon when nfc is off */
917 if (net_nfc_client_manager_is_activated() == false) {
918 return NET_NFC_INVALID_STATE;
921 func_data = g_new0(LlcpFuncData, 1);
922 if (func_data == NULL) {
923 DEBUG_ERR_MSG("g_new0 failed");
925 return NET_NFC_ALLOC_FAIL;
928 func_data->callback = (gpointer)callback;
929 func_data->user_data = user_data;
931 net_nfc_gdbus_llcp_call_accept(llcp_proxy,
932 GPOINTER_TO_UINT(llcp_handle),
934 net_nfc_client_gdbus_get_privilege(),
942 API net_nfc_error_e net_nfc_client_llcp_accept_sync(net_nfc_llcp_socket_t socket)
944 net_nfc_error_e result;
945 GError *error = NULL;
947 if (llcp_proxy == NULL)
949 DEBUG_ERR_MSG("Can not get LlcpProxy");
951 return NET_NFC_NOT_INITIALIZED;
954 /* prevent executing daemon when nfc is off */
955 if (net_nfc_client_manager_is_activated() == false) {
956 return NET_NFC_INVALID_STATE;
959 if (net_nfc_gdbus_llcp_call_accept_sync(llcp_proxy,
960 GPOINTER_TO_UINT(llcp_handle),
962 net_nfc_client_gdbus_get_privilege(),
966 DEBUG_ERR_MSG("can not connect: %s", error->message);
970 result = NET_NFC_IPC_FAIL;
976 API net_nfc_error_e net_nfc_client_llcp_reject(net_nfc_llcp_socket_t socket,
977 net_nfc_client_llcp_reject_completed callback,
980 LlcpFuncData *func_data;
982 if (llcp_proxy == NULL)
984 DEBUG_ERR_MSG("Can not get LlcpProxy");
986 return NET_NFC_NOT_INITIALIZED;
989 /* prevent executing daemon when nfc is off */
990 if (net_nfc_client_manager_is_activated() == false) {
991 return NET_NFC_INVALID_STATE;
994 func_data = g_new0(LlcpFuncData, 1);
995 if (func_data == NULL) {
996 DEBUG_ERR_MSG("g_new0 failed");
998 return NET_NFC_ALLOC_FAIL;
1001 func_data->callback = (gpointer)callback;
1002 func_data->user_data = user_data;
1004 net_nfc_gdbus_llcp_call_reject(llcp_proxy,
1005 GPOINTER_TO_UINT(llcp_handle),
1007 net_nfc_client_gdbus_get_privilege(),
1015 API net_nfc_error_e net_nfc_client_llcp_reject_sync(net_nfc_llcp_socket_t socket)
1017 net_nfc_error_e result;
1018 GError *error = NULL;
1020 if (llcp_proxy == NULL)
1022 DEBUG_ERR_MSG("Can not get LlcpProxy");
1024 return NET_NFC_NOT_INITIALIZED;
1027 /* prevent executing daemon when nfc is off */
1028 if (net_nfc_client_manager_is_activated() == false) {
1029 return NET_NFC_INVALID_STATE;
1032 if (net_nfc_gdbus_llcp_call_reject_sync(llcp_proxy,
1033 GPOINTER_TO_UINT(llcp_handle),
1035 net_nfc_client_gdbus_get_privilege(),
1039 DEBUG_ERR_MSG("can not connect: %s", error->message);
1041 g_error_free(error);
1043 result = NET_NFC_IPC_FAIL;
1049 API net_nfc_error_e net_nfc_client_llcp_connect(net_nfc_llcp_socket_t socket,
1050 const char *service_name,
1051 net_nfc_client_llcp_connect_completed callback,
1054 LlcpFuncData *func_data;
1055 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1057 if (service_name == NULL) {
1058 return NET_NFC_NULL_PARAMETER;
1061 if (llcp_proxy == NULL)
1063 DEBUG_ERR_MSG("Can not get LlcpProxy");
1065 return NET_NFC_NOT_INITIALIZED;
1068 socket_data = llcp_socket_data_find(socket);
1069 if (socket_data == NULL)
1071 DEBUG_ERR_MSG("can not get socket_data");
1072 return NET_NFC_LLCP_INVALID_SOCKET;
1075 /* prevent executing daemon when nfc is off */
1076 if (net_nfc_client_manager_is_activated() == false) {
1077 return NET_NFC_INVALID_STATE;
1080 func_data = g_new0(LlcpFuncData, 1);
1081 if (func_data == NULL) {
1082 DEBUG_ERR_MSG("g_new0 failed");
1084 return NET_NFC_ALLOC_FAIL;
1087 func_data->callback = (gpointer)callback;
1088 func_data->user_data = user_data;
1090 net_nfc_gdbus_llcp_call_connect(llcp_proxy,
1091 GPOINTER_TO_UINT(llcp_handle),
1092 socket_data->client_socket,
1097 net_nfc_client_gdbus_get_privilege(),
1105 API net_nfc_error_e net_nfc_client_llcp_connect_sync(net_nfc_llcp_socket_t socket,
1106 const char *service_name,
1107 net_nfc_llcp_socket_t *out_socket)
1109 net_nfc_error_e result;
1110 GError *error = NULL;
1111 guint32 out_client_socket;
1113 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1114 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1116 if (service_name == NULL || out_socket == NULL) {
1117 return NET_NFC_NULL_PARAMETER;
1120 if (llcp_proxy == NULL)
1122 DEBUG_ERR_MSG("Can not get LlcpProxy");
1124 return NET_NFC_NOT_INITIALIZED;
1127 socket_data = llcp_socket_data_find(socket);
1128 if (socket_data == NULL)
1130 DEBUG_ERR_MSG("can not get socket_data");
1131 return NET_NFC_LLCP_INVALID_SOCKET;
1134 /* prevent executing daemon when nfc is off */
1135 if (net_nfc_client_manager_is_activated() == false) {
1136 return NET_NFC_INVALID_STATE;
1139 if (net_nfc_gdbus_llcp_call_connect_sync(llcp_proxy,
1140 GPOINTER_TO_UINT(llcp_handle),
1141 socket_data->client_socket,
1146 net_nfc_client_gdbus_get_privilege(),
1151 out_socket_data = llcp_socket_data_find(out_client_socket);
1152 if (out_socket_data == NULL || out_socket_data != socket_data)
1154 DEBUG_ERR_MSG("Wrong client socket is returned");
1155 return NET_NFC_UNKNOWN_ERROR;
1158 // out_socket_data->oal_socket = out_oal_socket;
1161 *out_socket = out_client_socket;
1163 DEBUG_ERR_MSG("can not connect: %s", error->message);
1165 g_error_free(error);
1167 result = NET_NFC_IPC_FAIL;
1173 API net_nfc_error_e net_nfc_client_llcp_connect_sap(net_nfc_llcp_socket_t socket,
1175 net_nfc_client_llcp_connect_sap_completed callback,
1178 LlcpFuncData *func_data;
1179 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1182 return NET_NFC_INVALID_PARAM;
1185 if (llcp_proxy == NULL)
1187 DEBUG_ERR_MSG("Can not get LlcpProxy");
1189 return NET_NFC_NOT_INITIALIZED;
1192 socket_data = llcp_socket_data_find(socket);
1193 if (socket_data == NULL)
1195 DEBUG_ERR_MSG("can not get socket_data");
1196 return NET_NFC_LLCP_INVALID_SOCKET;
1199 /* prevent executing daemon when nfc is off */
1200 if (net_nfc_client_manager_is_activated() == false) {
1201 return NET_NFC_INVALID_STATE;
1204 func_data = g_new0(LlcpFuncData, 1);
1205 if (func_data == NULL) {
1206 DEBUG_ERR_MSG("g_new0 failed");
1208 return NET_NFC_ALLOC_FAIL;
1211 func_data->callback = (gpointer)callback;
1212 func_data->user_data = user_data;
1214 net_nfc_gdbus_llcp_call_connect_sap(llcp_proxy,
1215 GPOINTER_TO_UINT(llcp_handle),
1216 socket_data->client_socket,
1221 net_nfc_client_gdbus_get_privilege(),
1223 llcp_call_connect_sap,
1229 API net_nfc_error_e net_nfc_client_llcp_connect_sap_sync(
1230 net_nfc_llcp_socket_t socket,
1232 net_nfc_llcp_socket_t *out_socket)
1234 net_nfc_error_e result;
1235 GError *error = NULL;
1236 guint32 out_client_socket;
1238 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1239 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1241 if (out_socket == NULL) {
1242 return NET_NFC_NULL_PARAMETER;
1246 return NET_NFC_INVALID_PARAM;
1249 if (llcp_proxy == NULL)
1251 DEBUG_ERR_MSG("Can not get LlcpProxy");
1253 return NET_NFC_NOT_INITIALIZED;
1256 socket_data = llcp_socket_data_find(socket);
1257 if (socket_data == NULL)
1259 DEBUG_ERR_MSG("can not get socket_data");
1260 return NET_NFC_LLCP_INVALID_SOCKET;
1263 /* prevent executing daemon when nfc is off */
1264 if (net_nfc_client_manager_is_activated() == false) {
1265 return NET_NFC_INVALID_STATE;
1268 if (net_nfc_gdbus_llcp_call_connect_sap_sync(llcp_proxy,
1269 GPOINTER_TO_UINT(llcp_handle),
1270 socket_data->client_socket,
1275 net_nfc_client_gdbus_get_privilege(),
1280 out_socket_data = llcp_socket_data_find(out_client_socket);
1281 if (out_socket_data == NULL || out_socket_data != socket_data)
1283 DEBUG_ERR_MSG("Wrong client socket is returned");
1284 return NET_NFC_UNKNOWN_ERROR;
1287 // out_socket_data->oal_socket = out_oal_socket;
1290 *out_socket = out_client_socket;
1292 DEBUG_ERR_MSG("can not connect: %s", error->message);
1294 g_error_free(error);
1296 result = NET_NFC_IPC_FAIL;
1302 API net_nfc_error_e net_nfc_client_llcp_send(net_nfc_llcp_socket_t socket,
1304 net_nfc_client_llcp_send_completed callback,
1307 LlcpFuncData *func_data;
1309 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1312 return NET_NFC_NULL_PARAMETER;
1316 return NET_NFC_INVALID_PARAM;
1319 if (llcp_proxy == NULL)
1321 DEBUG_ERR_MSG("Can not get LlcpProxy");
1323 return NET_NFC_NOT_INITIALIZED;
1326 /* prevent executing daemon when nfc is off */
1327 if (net_nfc_client_manager_is_activated() == false) {
1328 return NET_NFC_INVALID_STATE;
1331 socket_data = llcp_socket_data_find(socket);
1332 if (socket_data == NULL)
1334 DEBUG_ERR_MSG("can not get socket_data");
1335 return NET_NFC_LLCP_INVALID_SOCKET;
1338 func_data = g_new0(LlcpFuncData, 1);
1339 if (func_data == NULL) {
1340 DEBUG_ERR_MSG("g_new0 failed");
1342 return NET_NFC_ALLOC_FAIL;
1345 func_data->callback = (gpointer)callback;
1346 func_data->user_data = user_data;
1348 variant = net_nfc_util_gdbus_data_to_variant(data);
1350 net_nfc_gdbus_llcp_call_send(llcp_proxy,
1351 GPOINTER_TO_UINT(llcp_handle),
1352 socket_data->client_socket,
1354 net_nfc_client_gdbus_get_privilege(),
1362 API net_nfc_error_e net_nfc_client_llcp_send_sync(net_nfc_llcp_socket_t socket,
1365 net_nfc_error_e result;
1367 GError *error = NULL;
1368 guint32 out_client_socket;
1370 net_nfc_llcp_internal_socket_s *socket_data;
1371 net_nfc_llcp_internal_socket_s *out_socket_data;
1374 return NET_NFC_NULL_PARAMETER;
1378 return NET_NFC_INVALID_PARAM;
1381 if (llcp_proxy == NULL)
1383 DEBUG_ERR_MSG("Can not get LlcpProxy");
1385 return NET_NFC_NOT_INITIALIZED;
1388 socket_data = llcp_socket_data_find(socket);
1389 if (socket_data == NULL)
1391 DEBUG_ERR_MSG("can not get socket_data");
1392 return NET_NFC_LLCP_INVALID_SOCKET;
1397 DEBUG_ERR_MSG("data is empty");
1398 return NET_NFC_INVALID_PARAM;
1401 /* prevent executing daemon when nfc is off */
1402 if (net_nfc_client_manager_is_activated() == false) {
1403 return NET_NFC_INVALID_STATE;
1406 variant = net_nfc_util_gdbus_data_to_variant(data);
1408 if (net_nfc_gdbus_llcp_call_send_sync(llcp_proxy,
1409 GPOINTER_TO_UINT(llcp_handle),
1410 socket_data->client_socket,
1412 net_nfc_client_gdbus_get_privilege(),
1417 out_socket_data = llcp_socket_data_find(out_client_socket);
1418 if (out_socket_data == NULL)
1420 DEBUG_ERR_MSG("can not find socket_data");
1421 return NET_NFC_UNKNOWN_ERROR;
1424 DEBUG_ERR_MSG("can not call send: %s", error->message);
1426 g_error_free(error);
1428 result = NET_NFC_IPC_FAIL;
1434 API net_nfc_error_e net_nfc_client_llcp_send_to(net_nfc_llcp_socket_t socket,
1437 net_nfc_client_llcp_send_to_completed callback,
1440 LlcpFuncData *func_data;
1442 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1445 return NET_NFC_NULL_PARAMETER;
1448 if (socket <= 0 || sap == 0) {
1449 return NET_NFC_INVALID_PARAM;
1452 if (llcp_proxy == NULL)
1454 DEBUG_ERR_MSG("Can not get LlcpProxy");
1456 return NET_NFC_NOT_INITIALIZED;
1459 socket_data = llcp_socket_data_find(socket);
1460 if (socket_data == NULL)
1462 DEBUG_ERR_MSG("can not get socket_data");
1463 return NET_NFC_LLCP_INVALID_SOCKET;
1466 /* prevent executing daemon when nfc is off */
1467 if (net_nfc_client_manager_is_activated() == false) {
1468 return NET_NFC_INVALID_STATE;
1471 func_data = g_new0(LlcpFuncData, 1);
1472 if (func_data == NULL) {
1473 DEBUG_ERR_MSG("g_new0 failed");
1475 return NET_NFC_ALLOC_FAIL;
1478 func_data->callback = (gpointer)callback;
1479 func_data->user_data = user_data;
1481 variant = net_nfc_util_gdbus_data_to_variant(data);
1483 net_nfc_gdbus_llcp_call_send_to(llcp_proxy,
1484 GPOINTER_TO_UINT(llcp_handle),
1485 socket_data->client_socket,
1488 net_nfc_client_gdbus_get_privilege(),
1496 API net_nfc_error_e net_nfc_client_llcp_send_to_sync(net_nfc_llcp_socket_t socket,
1497 sap_t sap, data_h data)
1499 net_nfc_error_e result;
1501 GError *error = NULL;
1502 guint32 out_client_socket;
1504 net_nfc_llcp_internal_socket_s *socket_data;
1505 net_nfc_llcp_internal_socket_s *out_socket_data;
1508 return NET_NFC_NULL_PARAMETER;
1511 if (socket <= 0 || sap == 0) {
1512 return NET_NFC_INVALID_PARAM;
1515 if (llcp_proxy == NULL)
1517 DEBUG_ERR_MSG("Can not get LlcpProxy");
1519 return NET_NFC_NOT_INITIALIZED;
1522 socket_data = llcp_socket_data_find(socket);
1523 if (socket_data == NULL)
1525 DEBUG_ERR_MSG("can not get socket_data");
1526 return NET_NFC_LLCP_INVALID_SOCKET;
1529 /* prevent executing daemon when nfc is off */
1530 if (net_nfc_client_manager_is_activated() == false) {
1531 return NET_NFC_INVALID_STATE;
1534 variant = net_nfc_util_gdbus_data_to_variant(data);
1536 if (net_nfc_gdbus_llcp_call_send_to_sync(llcp_proxy,
1537 GPOINTER_TO_UINT(llcp_handle),
1538 socket_data->client_socket,
1541 net_nfc_client_gdbus_get_privilege(),
1546 out_socket_data = llcp_socket_data_find(out_client_socket);
1547 if (out_socket_data == NULL)
1549 DEBUG_ERR_MSG("can not find socket_data");
1550 return NET_NFC_UNKNOWN_ERROR;
1553 DEBUG_ERR_MSG("can not call send to: %s", error->message);
1555 g_error_free(error);
1557 result = NET_NFC_IPC_FAIL;
1563 API net_nfc_error_e net_nfc_client_llcp_receive(net_nfc_llcp_socket_t socket,
1564 size_t request_length,
1565 net_nfc_client_llcp_receive_completed callback,
1568 LlcpFuncData *func_data;
1569 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1571 if (socket <= 0 || request_length == 0) {
1572 return NET_NFC_INVALID_PARAM;
1575 if (llcp_proxy == NULL)
1577 DEBUG_ERR_MSG("Can not get LlcpProxy");
1579 return NET_NFC_NOT_INITIALIZED;
1582 socket_data = llcp_socket_data_find(socket);
1583 if (socket_data == NULL)
1585 DEBUG_ERR_MSG("can not get socket_data");
1586 return NET_NFC_LLCP_INVALID_SOCKET;
1589 /* prevent executing daemon when nfc is off */
1590 if (net_nfc_client_manager_is_activated() == false) {
1591 return NET_NFC_INVALID_STATE;
1594 func_data = g_new0(LlcpFuncData, 1);
1595 if (func_data == NULL) {
1596 DEBUG_ERR_MSG("g_new0 failed");
1598 return NET_NFC_ALLOC_FAIL;
1601 func_data->callback = (gpointer)callback;
1602 func_data->user_data = user_data;
1604 net_nfc_gdbus_llcp_call_receive(llcp_proxy,
1605 GPOINTER_TO_UINT(llcp_handle),
1606 socket_data->client_socket,
1608 net_nfc_client_gdbus_get_privilege(),
1616 API net_nfc_error_e net_nfc_client_llcp_receive_sync(net_nfc_llcp_socket_t socket,
1617 size_t request_length,
1620 net_nfc_error_e result;
1622 GError *error = NULL;
1623 net_nfc_llcp_internal_socket_s *socket_data;
1625 if (out_data == NULL) {
1626 return NET_NFC_NULL_PARAMETER;
1631 if (socket <= 0 || request_length == 0) {
1632 return NET_NFC_INVALID_PARAM;
1635 if (llcp_proxy == NULL)
1637 DEBUG_ERR_MSG("Can not get LlcpProxy");
1639 return NET_NFC_NOT_INITIALIZED;
1642 socket_data = llcp_socket_data_find(socket);
1643 if (socket_data == NULL)
1645 DEBUG_ERR_MSG("can not get socket_data");
1646 return NET_NFC_LLCP_INVALID_SOCKET;
1649 /* prevent executing daemon when nfc is off */
1650 if (net_nfc_client_manager_is_activated() == false) {
1651 return NET_NFC_INVALID_STATE;
1654 if (net_nfc_gdbus_llcp_call_receive_sync(llcp_proxy,
1655 GPOINTER_TO_UINT(llcp_handle),
1656 socket_data->client_socket,
1658 net_nfc_client_gdbus_get_privilege(),
1663 *out_data = net_nfc_util_gdbus_variant_to_data(variant);
1665 DEBUG_ERR_MSG("can not call receive: %s", error->message);
1667 g_error_free(error);
1669 result = NET_NFC_IPC_FAIL;
1675 API net_nfc_error_e net_nfc_client_llcp_receive_from(net_nfc_llcp_socket_t socket,
1676 size_t request_length,
1677 net_nfc_client_llcp_receive_from_completed callback,
1680 LlcpFuncData *func_data;
1681 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1683 if (socket <= 0 || request_length == 0) {
1684 return NET_NFC_INVALID_PARAM;
1687 if (llcp_proxy == NULL)
1689 DEBUG_ERR_MSG("Can not get LlcpProxy");
1691 return NET_NFC_NOT_INITIALIZED;
1694 socket_data = llcp_socket_data_find(socket);
1695 if (socket_data == NULL)
1697 DEBUG_ERR_MSG("can not get socket_data");
1698 return NET_NFC_LLCP_INVALID_SOCKET;
1701 func_data = g_new0(LlcpFuncData, 1);
1702 if (func_data == NULL) {
1703 DEBUG_ERR_MSG("g_new0 failed");
1705 return NET_NFC_ALLOC_FAIL;
1708 func_data->callback = (gpointer)callback;
1709 func_data->user_data = user_data;
1711 net_nfc_gdbus_llcp_call_receive_from(llcp_proxy,
1712 GPOINTER_TO_UINT(llcp_handle),
1713 socket_data->client_socket,
1715 net_nfc_client_gdbus_get_privilege(),
1717 llcp_call_receive_from,
1723 API net_nfc_error_e net_nfc_client_llcp_receive_from_sync(
1724 net_nfc_llcp_socket_t socket,
1725 size_t request_length,
1729 net_nfc_error_e result;
1730 GError *error = NULL;
1734 net_nfc_llcp_internal_socket_s *socket_data;
1736 if (out_sap == NULL || out_data == NULL) {
1737 return NET_NFC_NULL_PARAMETER;
1743 if (socket <= 0 || request_length == 0) {
1744 return NET_NFC_INVALID_PARAM;
1747 if (llcp_proxy == NULL)
1749 DEBUG_ERR_MSG("Can not get LlcpProxy");
1751 return NET_NFC_NOT_INITIALIZED;
1754 socket_data = llcp_socket_data_find(socket);
1755 if (socket_data == NULL)
1757 DEBUG_ERR_MSG("can not get socket_data");
1758 return NET_NFC_LLCP_INVALID_SOCKET;
1761 /* prevent executing daemon when nfc is off */
1762 if (net_nfc_client_manager_is_activated() == false) {
1763 return NET_NFC_INVALID_STATE;
1766 if (net_nfc_gdbus_llcp_call_receive_from_sync(llcp_proxy,
1767 GPOINTER_TO_UINT(llcp_handle),
1768 socket_data->client_socket,
1770 net_nfc_client_gdbus_get_privilege(),
1777 *out_data = net_nfc_util_gdbus_variant_to_data(variant);
1779 DEBUG_ERR_MSG("can not call receive from: %s", error->message);
1781 g_error_free(error);
1783 result = NET_NFC_IPC_FAIL;
1789 API net_nfc_error_e net_nfc_client_llcp_close(net_nfc_llcp_socket_t socket,
1790 net_nfc_client_llcp_close_completed callback,
1793 LlcpFuncData *func_data;
1794 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1797 return NET_NFC_INVALID_PARAM;
1800 if (llcp_proxy == NULL)
1802 DEBUG_ERR_MSG("Can not get LlcpProxy");
1804 return NET_NFC_NOT_INITIALIZED;
1807 socket_data = llcp_socket_data_find(socket);
1808 if (socket_data == NULL)
1810 DEBUG_ERR_MSG("can not get socket_data");
1811 return NET_NFC_LLCP_INVALID_SOCKET;
1814 /* prevent executing daemon when nfc is off */
1815 if (net_nfc_client_manager_is_activated() == false) {
1816 return NET_NFC_INVALID_STATE;
1819 func_data = g_new0(LlcpFuncData, 1);
1820 if (func_data == NULL) {
1821 DEBUG_ERR_MSG("g_new0 failed");
1823 return NET_NFC_ALLOC_FAIL;
1826 func_data->callback = (gpointer)callback;
1827 func_data->user_data = user_data;
1829 net_nfc_gdbus_llcp_call_close(llcp_proxy,
1830 GPOINTER_TO_UINT(llcp_handle),
1831 socket_data->client_socket,
1832 net_nfc_client_gdbus_get_privilege(),
1840 API net_nfc_error_e net_nfc_client_llcp_close_sync(net_nfc_llcp_socket_t socket)
1842 net_nfc_error_e result;
1843 GError *error = NULL;
1844 guint32 out_client_socket;
1846 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1847 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1850 return NET_NFC_INVALID_PARAM;
1853 if (llcp_proxy == NULL)
1855 DEBUG_ERR_MSG("Can not get LlcpProxy");
1857 return NET_NFC_NOT_INITIALIZED;
1860 socket_data = llcp_socket_data_find(socket);
1861 if (socket_data == NULL)
1863 DEBUG_ERR_MSG("can not get socket_data");
1864 return NET_NFC_LLCP_INVALID_SOCKET;
1867 /* prevent executing daemon when nfc is off */
1868 if (net_nfc_client_manager_is_activated() == false) {
1869 return NET_NFC_INVALID_STATE;
1872 if (net_nfc_gdbus_llcp_call_close_sync(llcp_proxy,
1873 GPOINTER_TO_UINT(llcp_handle),
1874 socket_data->client_socket,
1875 net_nfc_client_gdbus_get_privilege(),
1880 out_socket_data = llcp_socket_data_find(out_client_socket);
1881 if (out_socket_data == NULL || out_socket_data != socket_data)
1883 DEBUG_ERR_MSG("Wrong client socket is returned");
1884 return NET_NFC_UNKNOWN_ERROR;
1887 DEBUG_ERR_MSG("can not close: %s", error->message);
1889 g_error_free(error);
1891 result = NET_NFC_IPC_FAIL;
1897 API net_nfc_error_e net_nfc_client_llcp_disconnect(net_nfc_llcp_socket_t socket,
1898 net_nfc_client_llcp_disconnect_completed callback,
1901 LlcpFuncData *func_data;
1902 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1905 return NET_NFC_INVALID_PARAM;
1908 if (llcp_proxy == NULL)
1910 DEBUG_ERR_MSG("Can not get LlcpProxy");
1912 return NET_NFC_NOT_INITIALIZED;
1915 socket_data = llcp_socket_data_find(socket);
1916 if (socket_data == NULL)
1918 DEBUG_ERR_MSG("can not get socket_data");
1919 return NET_NFC_LLCP_INVALID_SOCKET;
1922 /* prevent executing daemon when nfc is off */
1923 if (net_nfc_client_manager_is_activated() == false) {
1924 return NET_NFC_INVALID_STATE;
1927 func_data = g_new0(LlcpFuncData, 1);
1928 if (func_data == NULL) {
1929 DEBUG_ERR_MSG("g_new0 failed");
1931 return NET_NFC_ALLOC_FAIL;
1934 func_data->callback = (gpointer)callback;
1935 func_data->user_data = user_data;
1937 net_nfc_gdbus_llcp_call_disconnect(llcp_proxy,
1938 GPOINTER_TO_UINT(llcp_handle),
1939 socket_data->client_socket,
1940 net_nfc_client_gdbus_get_privilege(),
1942 llcp_call_disconnect,
1948 API net_nfc_error_e net_nfc_client_llcp_disconnect_sync(
1949 net_nfc_llcp_socket_t socket)
1951 net_nfc_error_e result;
1952 GError *error = NULL;
1953 guint32 out_client_socket;
1955 net_nfc_llcp_internal_socket_s *socket_data = NULL;
1956 net_nfc_llcp_internal_socket_s *out_socket_data = NULL;
1959 return NET_NFC_INVALID_PARAM;
1962 if (llcp_proxy == NULL)
1964 DEBUG_ERR_MSG("Can not get LlcpProxy");
1966 return NET_NFC_NOT_INITIALIZED;
1969 socket_data = llcp_socket_data_find(socket);
1970 if (socket_data == NULL)
1972 DEBUG_ERR_MSG("can not get socket_data");
1973 return NET_NFC_LLCP_INVALID_SOCKET;
1976 /* prevent executing daemon when nfc is off */
1977 if (net_nfc_client_manager_is_activated() == false) {
1978 return NET_NFC_INVALID_STATE;
1981 if (net_nfc_gdbus_llcp_call_disconnect_sync(llcp_proxy,
1982 GPOINTER_TO_UINT(llcp_handle),
1983 socket_data->client_socket,
1984 net_nfc_client_gdbus_get_privilege(),
1989 out_socket_data = llcp_socket_data_find(out_client_socket);
1990 if (out_socket_data == NULL || out_socket_data != socket_data)
1992 DEBUG_ERR_MSG("Wrong client socket is returned");
1993 return NET_NFC_UNKNOWN_ERROR;
1996 DEBUG_ERR_MSG("can not disconnect: %s", error->message);
1998 g_error_free(error);
2000 result = NET_NFC_IPC_FAIL;
2006 API void net_nfc_client_llcp_create_socket(net_nfc_llcp_socket_t *socket,
2007 net_nfc_llcp_socket_option_h option)
2009 net_nfc_llcp_internal_socket_s *socket_data = NULL;
2011 socket_data = g_new0(net_nfc_llcp_internal_socket_s, 1);
2013 socket_data->client_socket = socket_handle++;
2017 socket_data->miu = option->miu;
2018 socket_data->rw = option->rw;
2019 socket_data->type = option->type;
2023 socket_data->miu = 128;
2024 socket_data->rw = 1;
2026 NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED;
2029 socket_data->device_id = llcp_handle;
2030 socket_data->close_requested = false;
2034 *socket = socket_data->client_socket;
2038 API net_nfc_error_e net_nfc_client_llcp_get_local_config(
2039 net_nfc_llcp_config_info_h *config)
2042 return NET_NFC_NULL_PARAMETER;
2044 *config = (net_nfc_llcp_config_info_h)&llcp_config;
2049 API net_nfc_error_e net_nfc_client_llcp_get_local_socket_option(
2050 net_nfc_llcp_socket_t socket,
2051 net_nfc_llcp_socket_option_h *info)
2053 net_nfc_llcp_internal_socket_s *socket_data = NULL;
2055 DEBUG_CLIENT_MSG("function %s is called", __func__);
2057 socket_data = llcp_socket_data_find(socket);
2058 if (socket_data == NULL)
2059 return NET_NFC_LLCP_INVALID_SOCKET;
2061 *info = (net_nfc_llcp_socket_option_h)socket_data;
2066 API net_nfc_error_e net_nfc_client_llcp_create_socket_option(
2067 net_nfc_llcp_socket_option_h *option,
2070 net_nfc_socket_type_e type)
2072 net_nfc_llcp_socket_option_s *struct_option = NULL;
2076 return NET_NFC_NULL_PARAMETER;
2079 if (miu < 128 || miu > 1152 ||
2080 rw < 1 || rw > 15 ||
2081 type < NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED ||
2082 type > NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONLESS)
2084 return NET_NFC_OUT_OF_BOUND;
2087 _net_nfc_util_alloc_mem(struct_option, sizeof(net_nfc_llcp_socket_option_s));
2088 if (struct_option != NULL)
2090 struct_option->miu = miu;
2091 struct_option->rw = rw;
2092 struct_option->type = type;
2094 *option = (net_nfc_llcp_socket_option_h)struct_option;
2100 return NET_NFC_ALLOC_FAIL;
2104 API net_nfc_error_e net_nfc_client_llcp_create_socket_option_default(
2105 net_nfc_llcp_socket_option_h *option)
2107 return net_nfc_client_llcp_create_socket_option(
2111 NET_NFC_LLCP_SOCKET_TYPE_CONNECTIONORIENTED);
2114 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_miu(
2115 net_nfc_llcp_socket_option_h option,
2118 net_nfc_llcp_socket_option_s *struct_option =
2119 (net_nfc_llcp_socket_option_s *)option;
2121 if (option == NULL || miu == NULL)
2123 return NET_NFC_NULL_PARAMETER;
2126 *miu = struct_option->miu;
2131 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_miu(
2132 net_nfc_llcp_socket_option_h option,
2135 net_nfc_llcp_socket_option_s *struct_option =
2136 (net_nfc_llcp_socket_option_s *)option;
2140 return NET_NFC_NULL_PARAMETER;
2143 struct_option->miu = miu;
2148 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_rw(
2149 net_nfc_llcp_socket_option_h option,
2152 if (option == NULL || rw == NULL)
2154 return NET_NFC_NULL_PARAMETER;
2156 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2158 *rw = struct_option->rw;
2162 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_rw(
2163 net_nfc_llcp_socket_option_h option,
2168 return NET_NFC_NULL_PARAMETER;
2170 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2172 struct_option->rw = rw;
2176 API net_nfc_error_e net_nfc_client_llcp_get_socket_option_type(
2177 net_nfc_llcp_socket_option_h option,
2178 net_nfc_socket_type_e * type)
2180 if (option == NULL || type == NULL)
2182 return NET_NFC_NULL_PARAMETER;
2184 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2186 *type = struct_option->type;
2190 API net_nfc_error_e net_nfc_client_llcp_set_socket_option_type(
2191 net_nfc_llcp_socket_option_h option,
2192 net_nfc_socket_type_e type)
2196 return NET_NFC_NULL_PARAMETER;
2198 net_nfc_llcp_socket_option_s *struct_option = (net_nfc_llcp_socket_option_s *)option;
2200 struct_option->type = type;
2204 API net_nfc_error_e net_nfc_client_llcp_free_socket_option(
2205 net_nfc_llcp_socket_option_h option)
2209 return NET_NFC_NULL_PARAMETER;
2212 _net_nfc_util_free_mem(option);
2217 API net_nfc_error_e net_nfc_client_llcp_create_config(
2218 net_nfc_llcp_config_info_h *config,
2224 net_nfc_llcp_config_info_s *tmp_config;
2227 return NET_NFC_NULL_PARAMETER;
2229 _net_nfc_util_alloc_mem(tmp_config, sizeof(net_nfc_llcp_config_info_s));
2231 if (tmp_config == NULL)
2232 return NET_NFC_ALLOC_FAIL;
2234 tmp_config->miu = miu;
2235 tmp_config->wks = wks;
2236 tmp_config->lto = lto;
2237 tmp_config->option = option;
2239 *config = (net_nfc_llcp_config_info_h)tmp_config;
2244 API net_nfc_error_e net_nfc_client_llcp_create_config_default(
2245 net_nfc_llcp_config_info_h *config)
2247 return net_nfc_client_llcp_create_config(config, 128, 1, 10, 0);
2250 API net_nfc_error_e net_nfc_client_llcp_get_config_miu(
2251 net_nfc_llcp_config_info_h config, uint16_t *miu)
2253 if (config == NULL || miu == NULL)
2254 return NET_NFC_NULL_PARAMETER;
2256 net_nfc_llcp_config_info_s *tmp_config =
2257 (net_nfc_llcp_config_info_s *)config;
2259 *miu = tmp_config->miu;
2264 API net_nfc_error_e net_nfc_client_llcp_get_config_wks(
2265 net_nfc_llcp_config_info_h config, uint16_t *wks)
2267 if (config == NULL || wks == NULL)
2268 return NET_NFC_NULL_PARAMETER;
2270 net_nfc_llcp_config_info_s *tmp_config =
2271 (net_nfc_llcp_config_info_s *)config;
2273 *wks = tmp_config->wks;
2278 API net_nfc_error_e net_nfc_client_llcp_get_config_lto(
2279 net_nfc_llcp_config_info_h config, uint8_t *lto)
2281 if (config == NULL || lto == NULL)
2282 return NET_NFC_NULL_PARAMETER;
2284 net_nfc_llcp_config_info_s *tmp_config =
2285 (net_nfc_llcp_config_info_s *)config;
2287 *lto = tmp_config->lto;
2292 API net_nfc_error_e net_nfc_client_llcp_get_config_option(
2293 net_nfc_llcp_config_info_h config, uint8_t *option)
2295 if (config == NULL || option == NULL)
2296 return NET_NFC_NULL_PARAMETER;
2298 net_nfc_llcp_config_info_s *tmp_config =
2299 (net_nfc_llcp_config_info_s *)config;
2301 *option = tmp_config->option;
2306 API net_nfc_error_e net_nfc_client_llcp_set_config_miu(
2307 net_nfc_llcp_config_info_h config, uint16_t miu)
2310 return NET_NFC_NULL_PARAMETER;
2312 if (miu < 128 || miu > 1152)
2313 return NET_NFC_OUT_OF_BOUND;
2315 net_nfc_llcp_config_info_s * tmp_config =
2316 (net_nfc_llcp_config_info_s *)config;
2318 tmp_config->miu = miu;
2323 API net_nfc_error_e net_nfc_client_llcp_set_config_wks(
2324 net_nfc_llcp_config_info_h config, uint16_t wks)
2327 return NET_NFC_NULL_PARAMETER;
2329 net_nfc_llcp_config_info_s *tmp_config =
2330 (net_nfc_llcp_config_info_s *)config;
2332 tmp_config->wks = wks;
2337 API net_nfc_error_e net_nfc_client_llcp_set_config_lto(
2338 net_nfc_llcp_config_info_h config, uint8_t lto)
2341 return NET_NFC_NULL_PARAMETER;
2343 net_nfc_llcp_config_info_s *tmp_config =
2344 (net_nfc_llcp_config_info_s *)config;
2346 tmp_config->lto = lto;
2351 API net_nfc_error_e net_nfc_client_llcp_set_config_option(
2352 net_nfc_llcp_config_info_h config, uint8_t option)
2355 return NET_NFC_NULL_PARAMETER;
2357 net_nfc_llcp_config_info_s * tmp_config =
2358 (net_nfc_llcp_config_info_s *)config;
2360 tmp_config->option = option;
2365 API net_nfc_error_e net_nfc_client_llcp_free_config(
2366 net_nfc_llcp_config_info_h config)
2369 return NET_NFC_NULL_PARAMETER;
2371 _net_nfc_util_free_mem(config);
2375 net_nfc_error_e net_nfc_client_llcp_init(void)
2377 GError *error = NULL;
2381 DEBUG_CLIENT_MSG("Already initialized");
2385 llcp_proxy = net_nfc_gdbus_llcp_proxy_new_for_bus_sync(
2387 G_DBUS_PROXY_FLAGS_NONE,
2388 "org.tizen.NetNfcService",
2389 "/org/tizen/NetNfcService/Llcp",
2393 if (llcp_proxy == NULL)
2395 DEBUG_ERR_MSG("Can not create proxy : %s", error->message);
2396 g_error_free(error);
2397 return NET_NFC_UNKNOWN_ERROR;
2400 g_signal_connect(llcp_proxy, "error",
2401 G_CALLBACK(llcp_error), NULL);
2403 g_signal_connect(llcp_proxy, "incoming",
2404 G_CALLBACK(llcp_incoming), NULL);
2409 void net_nfc_client_llcp_deinit(void)
2413 g_object_unref(llcp_proxy);