Added support for activeSecureElement attribute in NFCAdapter.
Some logs added in cardEmulationMode attribute handling.
Change-Id: I3209ac80b0f4a04d7480df6b8d15debaf85f3649
Signed-off-by: Marcin Kaminski <marcin.ka@samsung.com>
LoggerD("Entered");
- nfc_se_card_emulation_mode_type_e newmode =
+ nfc_se_card_emulation_mode_type_e new_mode =
NFCUtil::toCardEmulationMode(mode);
+ LoggerD("Card emulation mode value: %x", (int)new_mode);
+
std::string current_mode = GetCardEmulationMode();
if (mode.compare(current_mode) == 0) {
}
int ret = NFC_ERROR_NONE;
- switch (newmode) {
+ switch (new_mode) {
case NFC_SE_CARD_EMULATION_MODE_OFF:
ret = nfc_se_disable_card_emulation();
break;
}
}
+std::string NFCAdapter::GetActiveSecureElement() {
+
+ LoggerD("Entered");
+
+ nfc_se_type_e type;
+ int ret = nfc_manager_get_se_type(&type);
+ if (NFC_ERROR_NONE != ret) {
+ LoggerE("Failed to get active secure element type: %d", ret);
+ NFCUtil::throwNFCException(ret, "Unable to get active secure element type");
+ }
+
+ return NFCUtil::toStringSecureElementType(type);
+}
+
+void NFCAdapter::SetActiveSecureElement(std::string element) {
+
+ LoggerD("Entered");
+
+ // if given value is not correct secure element type then
+ // there's no sense to get current value for comparison
+ nfc_se_type_e new_type = NFCUtil::toSecureElementType(element);
+ LoggerD("Secure element type value: %x", (int)new_type);
+
+ std::string current_type = GetActiveSecureElement();
+ if (element == current_type) {
+ LoggerD("Active secure element type already set to: %s", element.c_str());
+ return;
+ }
+
+ int ret = nfc_manager_set_se_type(new_type);
+ if (NFC_ERROR_NONE != ret) {
+ LoggerE("Failed to set active secure element type: %d", ret);
+ NFCUtil::throwNFCException(ret, "Unable to set active secure element type");
+ }
+}
}// nfc
}// extension
bool GetPowered();
void SetPowered(const picojson::value& args);
-// cardEmulationModer getter and setter
+// cardEmulationMode getter and setter
std::string GetCardEmulationMode();
void SetCardEmulationMode(std::string mode);
-
+// activeSecureElement getter and setter
+ std::string GetActiveSecureElement();
+ void SetActiveSecureElement(std::string element);
static NFCAdapter* GetInstance();
NFCInstance *xwalk_instance;
}
function cardEmulationModeSetter(cem) {
- // "NFCAdapter_cardEmulationModeSetter"
var args = validator_.validateArgs(arguments, [
{name: 'emulationMode', type: types_.STRING}
return;
}
+ function activeSecureElementGetter() {
+
+ var result = native_.callSync('NFCAdapter_activeSecureElementGetter');
+
+ if (native_.isFailure(result)) {
+ throw new tizen.WebAPIException(0, result.error.message, result.error.name);
+ }
+
+ return native_.getResultObject(result);
+ }
+
+ function activeSecureElementSetter(ase) {
+
+ var args = validator_.validateArgs(arguments, [
+ {name: 'secureElement', type: types_.STRING}
+ ]);
+
+ var result = native_.callSync(
+ 'NFCAdapter_activeSecureElementSetter',
+ { 'secureElement': args.secureElement}
+ );
+
+ if(native_.isFailure(result)) {
+ throw new tizen.WebAPIException(0, result.error.message, result.error.name);
+ }
+ return;
+ }
+
Object.defineProperties(this, {
powered: {enumerable: true,
set : function(){},
get : cardEmulationModeGetter
},
activeSecureElement: {enumerable: true,
- set : function(){},
- get : function(){}
+ set : activeSecureElementSetter,
+ get : activeSecureElementGetter
}
});
};
REGISTER_SYNC("NFCAdapter_getPowered", GetPowered);
REGISTER_SYNC("NFCAdapter_cardEmulationModeSetter", CardEmulationModeSetter);
REGISTER_SYNC("NFCAdapter_cardEmulationModeGetter", CardEmulationModeGetter);
+ REGISTER_SYNC("NFCAdapter_activeSecureElementSetter", ActiveSecureElementSetter);
+ REGISTER_SYNC("NFCAdapter_activeSecureElementGetter", ActiveSecureElementGetter);
REGISTER_SYNC("NFCAdapter_setPeerListener", SetPeerListener);
REGISTER_SYNC("NFCAdapter_setTagListener", SetTagListener);
REGISTER_SYNC("NFCAdapter_setPeerListener", SetPeerListener);
ReportSuccess(picojson::value(mode), out);
}
+void NFCInstance::ActiveSecureElementSetter(
+ const picojson::value& args, picojson::object& out) {
+
+ std::string ase = args.get("secureElement").get<std::string>();
+ try {
+ NFCAdapter::GetInstance()->SetActiveSecureElement(ase);
+ }
+ catch(const common::PlatformException& ex) {
+ ReportError(ex, out);
+ }
+ ReportSuccess(out);
+}
+
+void NFCInstance::ActiveSecureElementGetter(
+ const picojson::value& args, picojson::object& out) {
+
+ std::string ase;
+ try {
+ ase = NFCAdapter::GetInstance()->GetActiveSecureElement();
+ }
+ catch(const common::PlatformException& ex) {
+ ReportError(ex, out);
+ }
+ ReportSuccess(picojson::value(ase), out);
+}
+
void NFCInstance::SetTagListener(
const picojson::value& args, picojson::object& out) {
void GetPowered(const picojson::value& args, picojson::object& out);
void CardEmulationModeSetter(const picojson::value& args, picojson::object& out);
void CardEmulationModeGetter(const picojson::value& args, picojson::object& out);
+ void ActiveSecureElementSetter(const picojson::value& args, picojson::object& out);
+ void ActiveSecureElementGetter(const picojson::value& args, picojson::object& out);
void SetTagListener(const picojson::value& args, picojson::object& out);
void SetPeerListener(const picojson::value& args, picojson::object& out);
void UnsetTagListener(const picojson::value& args, picojson::object& out);