From: Lukasz Bardeli Date: Fri, 19 Dec 2014 08:54:11 +0000 (+0100) Subject: [NFC] add and remove ActiveSecureElementChangeListener implementation X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~773^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa6eeefade09ea847638e285f1554c11dbaf3eba;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [NFC] add and remove ActiveSecureElementChangeListener implementation [Verification] Code compiles without errors. Change-Id: I9fe0482f93b0c89e706941f3f9ce0e3f9f196ce2 Signed-off-by: Lukasz Bardeli --- diff --git a/src/nfc/nfc_adapter.cc b/src/nfc/nfc_adapter.cc index 80d21a83..7a434ba6 100644 --- a/src/nfc/nfc_adapter.cc +++ b/src/nfc/nfc_adapter.cc @@ -100,18 +100,19 @@ static void se_event_callback(nfc_se_event_e se_event, void *user_data) { string result; switch (se_event) { case NFC_SE_EVENT_SE_TYPE_CHANGED: - // TODO: fill when addActiveSecureElementChangeListener will be added + result = NFCAdapter::GetInstance()->GetActiveSecureElement(); + obj.insert(make_pair("listenerId", "ActiveSecureElementChanged")); break; case NFC_SE_EVENT_CARD_EMULATION_CHANGED: result = NFCAdapter::GetInstance()->GetCardEmulationMode(); - obj.insert(make_pair("mode", result)); obj.insert(make_pair("listenerId", "CardEmulationModeChanged")); break; default: LOGD("se_event_occured: %d", se_event); - break; + return; } + obj.insert(make_pair("mode", result)); NFCInstance::getInstance().PostMessage(event.serialize().c_str()); } @@ -326,7 +327,7 @@ void NFCAdapter::AddCardEmulationModeChangeListener() { if (!m_is_listener_set) { int ret = nfc_manager_set_se_event_cb(se_event_callback, NULL); if (NFC_ERROR_NONE != ret) { - LOGE("addCardEmulationModeChangeListener failed: %d", ret); + LOGE("AddCardEmulationModeChangeListener failed: %d", ret); NFCUtil::throwNFCException(ret, NFCUtil::getNFCErrorMessage(ret).c_str()); } @@ -346,5 +347,29 @@ void NFCAdapter::RemoveCardEmulationModeChangeListener() { m_is_listener_set = false; } +void NFCAdapter::AddActiveSecureElementChangeListener() { + if (!m_is_listener_set) { + int ret = nfc_manager_set_se_event_cb(se_event_callback, NULL); + if (NFC_ERROR_NONE != ret) { + LOGE("AddActiveSecureElementChangeListener failed: %d", ret); + NFCUtil::throwNFCException(ret, + NFCUtil::getNFCErrorMessage(ret).c_str()); + } + } + + m_is_listener_set = true; +} + +void NFCAdapter::RemoveActiveSecureElementChangeListener() { + if (!nfc_manager_is_supported()) { + throw NotSupportedException("NFC Not Supported"); + } + + if (m_is_listener_set) { + nfc_manager_unset_se_event_cb(); + } + m_is_listener_set = false; +} + }// nfc }// extension diff --git a/src/nfc/nfc_adapter.h b/src/nfc/nfc_adapter.h index 3eaab193..1524d247 100644 --- a/src/nfc/nfc_adapter.h +++ b/src/nfc/nfc_adapter.h @@ -36,6 +36,8 @@ public: void AddCardEmulationModeChangeListener(); void RemoveCardEmulationModeChangeListener(); + void AddActiveSecureElementChangeListener(); + void RemoveActiveSecureElementChangeListener(); static NFCAdapter* GetInstance(); private: diff --git a/src/nfc/nfc_api.js b/src/nfc/nfc_api.js index dd6a3199..9a02379c 100644 --- a/src/nfc/nfc_api.js +++ b/src/nfc/nfc_api.js @@ -41,7 +41,9 @@ ListenerManager.prototype.removeListener = function(watchId) { }; var CARD_EMULATION_MODE_LISTENER = 'CardEmulationModeChanged'; +var ACTIVE_SECURE_ELEMENT_LISTENER = 'ActiveSecureElementChanged'; var cardEmulationModeListener = new ListenerManager(native_, CARD_EMULATION_MODE_LISTENER); +var activeSecureElementChangeListener = new ListenerManager(native_, ACTIVE_SECURE_ELEMENT_LISTENER); //enumeration NDEFRecordTextEncoding //////////////////////////////////////////////////// var NDEFRecordTextEncoding = { @@ -262,7 +264,8 @@ NFCAdapter.prototype.addCardEmulationModeChangeListener = function() { } ]); - if (T_.isEmptyObject(cardEmulationModeListener.listeners)) { + if (T_.isEmptyObject(cardEmulationModeListener.listeners) && + T_.isEmptyObject(activeSecureElementChangeListener.listeners)) { native_.callSync('NFCAdapter_addCardEmulationModeChangeListener'); } @@ -278,7 +281,8 @@ NFCAdapter.prototype.removeCardEmulationModeChangeListener = function() { ]); cardEmulationModeListener.removeListener(args.listenerId); - if (T_.isEmptyObject(cardEmulationModeListener.listeners)) { + if (T_.isEmptyObject(cardEmulationModeListener.listeners) && + T_.isEmptyObject(activeSecureElementChangeListener.listeners)) { native_.callSync('NFCAdapter_removeCardEmulationModeChangeListener'); } }; @@ -292,11 +296,35 @@ NFCAdapter.prototype.removeTransactionEventListener = function() { }; NFCAdapter.prototype.addActiveSecureElementChangeListener = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'callback', + type: types_.LISTENER, + values: ['onchanged'] + } + ]); + + if (T_.isEmptyObject(cardEmulationModeListener.listeners) && + T_.isEmptyObject(activeSecureElementChangeListener.listeners)) { + native_.callSync('NFCAdapter_addActiveSecureElementChangeListener '); + } + return activeSecureElementChangeListener.addListener(args.callback); }; NFCAdapter.prototype.removeActiveSecureElementChangeListener = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'listenerId', + type: types_.LONG + } + ]); + activeSecureElementChangeListener.removeListener(args.listenerId); + if (T_.isEmptyObject(cardEmulationModeListener.listeners) && + T_.isEmptyObject(activeSecureElementChangeListener.listeners)) { + native_.callSync('NFCAdapter_removeCardEmulationModeChangeListener'); + } }; NFCAdapter.prototype.getCachedMessage = function() { diff --git a/src/nfc/nfc_instance.cc b/src/nfc/nfc_instance.cc index 7816b3c7..712333b8 100644 --- a/src/nfc/nfc_instance.cc +++ b/src/nfc/nfc_instance.cc @@ -216,12 +216,12 @@ void NFCInstance::AddTransactionEventListener( void NFCInstance::AddActiveSecureElementChangeListener( const picojson::value& args, picojson::object& out) { - + NFCAdapter::GetInstance()->AddActiveSecureElementChangeListener(); } void NFCInstance::RemoveActiveSecureElementChangeListener( const picojson::value& args, picojson::object& out) { - + NFCAdapter::GetInstance()->RemoveActiveSecureElementChangeListener(); } void NFCInstance::GetCachedMessage(