ListenerManager.prototype.onListenerCalled = function(msg) {
var d = undefined;
+ var e = undefined;
switch (msg.action) {
+ case 'onSEError':
+ e = new WebAPIException(WebAPIException.IO_ERR, 'I/O error occurred on Secure Element reader');
case 'onSEReady':
case 'onSENotReady':
d = new Reader(msg.handle);
for (var watchId in this.listeners) {
if (this.listeners.hasOwnProperty(watchId) && this.listeners[watchId][msg.action]) {
- this.listeners[watchId][msg.action](d);
+ this.listeners[watchId][msg.action](d, e);
}
}
};
{
name : 'eventCallback',
type : types_.LISTENER,
- values: ['onSEReady', 'onSENotReady']
+ values: ['onSEReady', 'onSENotReady', 'onSEError']
}
]);
const std::string kListener = "SecureElementChangeListener";
const std::string kReady = "onSEReady";
const std::string kNotReady = "onSENotReady";
+const std::string kError = "onSEError";
TizenResult ConvertErrorCode(int error) {
switch (error) {
void SecureElementEventCb(int reader, smartcard_reader_event_type_e event_type, void *user_data) {
ScopeLogger();
- //TODO What action should be performed in case of SMARTCARD_READER_EVENT_TYPE_IO_ERROR event
- if (SMARTCARD_READER_EVENT_TYPE_INSERTED != event_type &&
- SMARTCARD_READER_EVENT_TYPE_REMOVED != event_type) {
- LoggerD("Incorrect event type");
- return;
+ std::string action = "";
+ switch (event_type) {
+ case SMARTCARD_READER_EVENT_TYPE_IO_ERROR:
+ action = kError;
+ break;
+ case SMARTCARD_READER_EVENT_TYPE_INSERTED:
+ action = kReady;
+ break;
+ case SMARTCARD_READER_EVENT_TYPE_REMOVED:
+ action = kNotReady;
+ break;
+ default:
+ LoggerD("Incorrect event type");
+ return;
}
SecureElementInstance* instance = static_cast<SecureElementInstance*>(user_data);
picojson::value result{picojson::object{}};
auto& obj = result.get<picojson::object>();
- std::string action = SMARTCARD_READER_EVENT_TYPE_INSERTED == event_type ? kReady : kNotReady;
-
obj.insert(std::make_pair(kAction, picojson::value(action)));
obj.insert(std::make_pair(kHandle, picojson::value(static_cast<double>(reader))));
obj.insert(std::make_pair(kListenerId, picojson::value(kListener)));
for (int i = 0; i < count; i++) {
ret = smartcard_reader_is_secure_element_present(readers[i], &is_present);
if (SMARTCARD_ERROR_NONE == ret && is_present) {
- array.push_back(picojson::value(static_cast<double>(readers[i])));
+ array.push_back(picojson::value(static_cast<double>(readers[i])));
}
}