From 543d4fadbcaa368ef726caa512c63533fb1046ee Mon Sep 17 00:00:00 2001 From: SangSoo Lee Date: Thu, 21 Nov 2013 13:37:45 +0900 Subject: [PATCH] GSMA api update and transaction callback change Change-Id: I15855e9f22aa52eef9bcd833f3bd8bb9aa7af2c0 Signed-off-by: Jihoon Jung --- client/include/net_nfc_client_se.h | 5 ++- client/net_nfc_client_se.c | 76 +++++++++++++++++++++++++++++++++----- packaging/nfc-manager.spec | 2 +- tests/net_nfc_test_se.c | 2 +- 4 files changed, 72 insertions(+), 13 deletions(-) diff --git a/client/include/net_nfc_client_se.h b/client/include/net_nfc_client_se.h index d1285af..6a82eff 100644 --- a/client/include/net_nfc_client_se.h +++ b/client/include/net_nfc_client_se.h @@ -86,6 +86,9 @@ net_nfc_error_e net_nfc_client_se_open_internal_secure_element( net_nfc_se_open_se_cb callback, void *user_data); +net_nfc_error_e net_nfc_get_card_emulation_mode( + net_nfc_se_type_e *type); + net_nfc_error_e net_nfc_client_se_open_internal_secure_element_sync( net_nfc_se_type_e se_type, net_nfc_target_handle_s **handle); @@ -119,7 +122,7 @@ void net_nfc_client_se_set_transaction_event_cb( net_nfc_client_se_transaction_event callback, void *user_data); -void net_nfc_client_se_unset_transaction_event_cb(void); +void net_nfc_client_se_unset_transaction_event_cb(net_nfc_se_type_e type); void net_nfc_client_se_set_event_cb(net_nfc_client_se_event callback, void *user_data); diff --git a/client/net_nfc_client_se.c b/client/net_nfc_client_se.c index fef1133..3b8e0b8 100644 --- a/client/net_nfc_client_se.c +++ b/client/net_nfc_client_se.c @@ -46,8 +46,10 @@ typedef struct _SeTransEventHandler SeTransEventHandler; struct _SeTransEventHandler { net_nfc_se_type_e se_type; - net_nfc_client_se_transaction_event se_transaction_event_cb; - gpointer se_transaction_event_data; + net_nfc_client_se_transaction_event eSE_transaction_event_cb; + net_nfc_client_se_transaction_event UICC_transaction_event_cb; + gpointer eSE_transaction_event_data; + gpointer UICC_transaction_event_data; }; typedef struct _SeESEDetectedHandler SeESEDetectedHandler; @@ -94,7 +96,8 @@ static void se_type_changed(GObject *source_object, gint arg_se_type) RET_IF(NULL == se_eventhandler.se_event_cb); callback = se_eventhandler.se_event_cb; - callback((net_nfc_message_e)arg_se_type, se_eventhandler.se_event_data); + callback((net_nfc_message_e)NET_NFC_MESSAGE_SE_TYPE_CHANGED, + se_eventhandler.se_event_data); } @@ -105,13 +108,15 @@ static void se_transaction_event(GObject *source_object, gint fg_dispatch, gint focus_app_pid) { + void *user_data = NULL; data_s aid = { NULL, 0 }; data_s param = { NULL, 0 }; net_nfc_client_se_transaction_event callback; NFC_INFO(">>> SIGNAL arrived"); - RET_IF(NULL == se_transeventhandler.se_transaction_event_cb); + RET_IF(NULL == se_transeventhandler.eSE_transaction_event_cb); + RET_IF(NULL == se_transeventhandler.UICC_transaction_event_cb); if (se_transeventhandler.se_type == arg_se_type) { @@ -122,9 +127,18 @@ static void se_transaction_event(GObject *source_object, net_nfc_util_gdbus_variant_to_data_s(arg_aid, &aid); net_nfc_util_gdbus_variant_to_data_s(arg_param, ¶m); - callback = se_transeventhandler.se_transaction_event_cb; - callback(arg_se_type, &aid, ¶m, - se_transeventhandler.se_transaction_event_data); + if(arg_se_type == NET_NFC_SE_TYPE_ESE) + { + callback = se_transeventhandler.eSE_transaction_event_cb; + user_data = se_transeventhandler.eSE_transaction_event_data; + } + else if(arg_se_type == NET_NFC_SE_TYPE_UICC) + { + callback = se_transeventhandler.UICC_transaction_event_cb; + user_data = se_transeventhandler.UICC_transaction_event_data; + } + + callback(arg_se_type, &aid, ¶m, user_data); net_nfc_util_free_data(¶m); net_nfc_util_free_data(&aid); @@ -524,6 +538,38 @@ API net_nfc_error_e net_nfc_set_card_emulation_mode( return NET_NFC_OK; } +API net_nfc_error_e net_nfc_get_card_emulation_mode(net_nfc_se_type_e *type) +{ + int ret; + int se_type; + net_nfc_error_e result = NET_NFC_OK; + + ret = vconf_get_int(VCONFKEY_NFC_SE_TYPE, &se_type); + + if (0 == ret) + { + switch(se_type) + { + case VCONFKEY_NFC_SE_TYPE_UICC: + *type = NET_NFC_SE_TYPE_UICC; + break; + + case VCONFKEY_NFC_SE_TYPE_ESE: + *type = NET_NFC_SE_TYPE_ESE; + break; + + default : + *type = NET_NFC_SE_TYPE_NONE; + break; + } + } + else + { + result = NET_NFC_UNKNOWN_ERROR; + } + + return result; +} API net_nfc_error_e net_nfc_set_card_emulation_mode_sync( net_nfc_card_emulation_mode_t mode) @@ -985,13 +1031,23 @@ API void net_nfc_client_se_set_transaction_event_cb( void *user_data) { se_transeventhandler.se_type = se_type; - se_transeventhandler.se_transaction_event_cb = callback; - se_transeventhandler.se_transaction_event_data = user_data; + + if(se_type == NET_NFC_SE_TYPE_ESE) + { + se_transeventhandler.eSE_transaction_event_cb = callback; + se_transeventhandler.eSE_transaction_event_data = user_data; + } + else if(se_type == NET_NFC_SE_TYPE_UICC) + { + se_transeventhandler.UICC_transaction_event_cb = callback; + se_transeventhandler.UICC_transaction_event_data = user_data; + } } -API void net_nfc_client_se_unset_transaction_event_cb(void) +API void net_nfc_client_se_unset_transaction_event_cb(net_nfc_se_type_e type) { + net_nfc_client_se_set_transaction_event_cb(type, NULL, NULL); net_nfc_client_se_set_transaction_event_cb(NET_NFC_SE_TYPE_NONE, NULL, NULL); } diff --git a/packaging/nfc-manager.spec b/packaging/nfc-manager.spec index c6898cf..6ba2c0d 100755 --- a/packaging/nfc-manager.spec +++ b/packaging/nfc-manager.spec @@ -1,6 +1,6 @@ Name: nfc-manager Summary: NFC framework manager -Version: 0.1.5 +Version: 0.1.6 Release: 0 Group: Network & Connectivity/NFC License: Flora diff --git a/tests/net_nfc_test_se.c b/tests/net_nfc_test_se.c index a63a2f9..9cce74f 100644 --- a/tests/net_nfc_test_se.c +++ b/tests/net_nfc_test_se.c @@ -276,6 +276,6 @@ void net_nfc_test_se_set_transaction_event_cb(gpointer data, gpointer user_data) void net_nfc_test_se_unset_transaction_event_cb(gpointer data, gpointer user_data) { - net_nfc_client_se_unset_transaction_event_cb(); + net_nfc_client_se_unset_transaction_event_cb(NET_NFC_SE_TYPE_UICC); g_print("Transaction unset callback successfully\n"); } -- 2.7.4