1 // Copyright 2014 Samsung Electronics Co, Ltd. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 var validator_ = xwalk.utils.validator;
6 var types_ = validator_.Types;
7 var native_ = new xwalk.utils.NativeManager(extension);
9 //enumeration NDEFRecordTextEncoding ////////////////////////////////////////////////////
10 var NDEFRecordTextEncoding = {
15 //enumeration NFCTagType ////////////////////////////////////////////////////
17 GENERIC_TARGET : 'GENERIC_TARGET',
18 ISO14443_A : 'ISO14443_A',
19 ISO14443_4A : 'ISO14443_4A',
20 ISO14443_3A : 'ISO14443_3A',
21 MIFARE_MINI : 'MIFARE_MINI',
22 MIFARE_1K : 'MIFARE_1K',
23 MIFARE_4K : 'MIFARE_4K',
24 MIFARE_ULTRA : 'MIFARE_ULTRA',
25 MIFARE_DESFIRE : 'MIFARE_DESFIRE',
26 ISO14443_B : 'ISO14443_B',
27 ISO14443_4B : 'ISO14443_4B',
28 ISO14443_BPRIME : 'ISO14443_BPRIME',
31 ISO15693 : 'ISO15693',
32 UNKNOWN_TARGET : 'UNKNOWN_TARGET'
35 ////enumeration CardEmulationMode ////////////////////////////////////////////////////
36 var CardEmulationMode = {
37 ALWAYS_ON : 'ALWAYS_ON',
41 ////enumeration SecureElementType ////////////////////////////////////////////////////
42 var SecureElementType = {
47 //////////////////NFCManager /////////////////
49 function NFCManager() {
50 Object.defineProperties(this, {
51 NFC_RECORD_TNF_EMPTY: {value: 0, writable: false, enumerable: true},
52 NFC_RECORD_TNF_WELL_KNOWN: {value: 1, writable: false, enumerable: true},
53 NFC_RECORD_TNF_MIME_MEDIA: {value: 2, writable: false, enumerable: true},
54 NFC_RECORD_TNF_URI: {value: 3, writable: false, enumerable: true},
55 NFC_RECORD_TNF_EXTERNAL_RTD: {value: 4, writable: false, enumerable: true},
56 NFC_RECORD_TNF_UNKNOWN: {value: 5, writable: false, enumerable: true},
57 NFC_RECORD_TNF_UNCHANGED: {value: 6, writable: false, enumerable: true}
61 NFCManager.prototype.getDefaultAdapter = function() {
62 return new NFCAdapter();
65 NFCManager.prototype.setExclusiveMode = function() {
67 var args = validator_.validateArgs(arguments, [
68 {name: 'exclusiveMode', type: types_.BOOLEAN}
71 var result = native_.callSync(
72 'NFCManager_setExclusiveMode',
73 { 'exclusiveMode': args.exclusiveMode}
76 // If failed then exception should be thrown.
77 if(native_.isFailure(result)) {
78 throw new tizen.WebAPIException(0, result.error.message, result.error.name);
79 // Uncoment line below (and remove line above) when problem
80 // with error conversion is fixed:
82 //throw native_.getErrorObject(result);
84 // Otherwise just return
88 //////////////////NFCAdapter /////////////////
90 function NFCAdapter() {
91 function poweredGetter() {
92 var ret = native_.callSync('NFCAdapter_getPowered');
94 if (native_.isFailure(ret)) {
98 return native_.getResultObject(ret);
101 function cardEmulationModeGetter() {
102 var result = native_.callSync('NFCAdapter_cardEmulationModeGetter');
104 if (native_.isFailure(result)) {
105 throw new tizen.WebAPIException(0, result.error.message, result.error.name);
108 return native_.getResultObject(result);
111 function cardEmulationModeSetter(cem) {
113 var args = validator_.validateArgs(arguments, [
114 {name: 'emulationMode', type: types_.STRING}
117 var result = native_.callSync(
118 'NFCAdapter_cardEmulationModeSetter',
119 { 'emulationMode': args.emulationMode}
122 if(native_.isFailure(result)) {
123 throw new tizen.WebAPIException(0, result.error.message, result.error.name);
128 function activeSecureElementGetter() {
130 var result = native_.callSync('NFCAdapter_activeSecureElementGetter');
132 if (native_.isFailure(result)) {
133 throw new tizen.WebAPIException(0, result.error.message, result.error.name);
136 return native_.getResultObject(result);
139 function activeSecureElementSetter(ase) {
141 var args = validator_.validateArgs(arguments, [
142 {name: 'secureElement', type: types_.STRING}
145 var result = native_.callSync(
146 'NFCAdapter_activeSecureElementSetter',
147 { 'secureElement': args.secureElement}
150 if(native_.isFailure(result)) {
151 throw new tizen.WebAPIException(0, result.error.message, result.error.name);
156 Object.defineProperties(this, {
157 powered: {enumerable: true,
161 cardEmulationMode: {enumerable: true,
162 set : cardEmulationModeSetter,
163 get : cardEmulationModeGetter
165 activeSecureElement: {enumerable: true,
166 set : activeSecureElementSetter,
167 get : activeSecureElementGetter
172 NFCAdapter.prototype.setPowered = function() {
173 var args = validator_.validateArgs(arguments, [
176 type : types_.BOOLEAN
179 name : 'successCallback',
180 type : types_.FUNCTION,
185 name : 'errorCallback',
186 type : types_.FUNCTION,
192 native_.call('NFCAdapter_setPowered', {
193 powered: args.powered
194 }, function(result) {
195 if (native_.isFailure(result)) {
196 args.errorCallback(result.error);
198 args.successCallback();
203 NFCAdapter.prototype.setTagListener = function() {
207 NFCAdapter.prototype.setPeerListener = function() {
211 NFCAdapter.prototype.unsetTagListener = function() {
215 NFCAdapter.prototype.unsetPeerListener = function() {
219 NFCAdapter.prototype.addCardEmulationModeChangeListener = function() {
223 NFCAdapter.prototype.removeCardEmulationModeChangeListener = function() {
227 NFCAdapter.prototype.addTransactionEventListener = function() {
231 NFCAdapter.prototype.removeTransactionEventListener = function() {
235 NFCAdapter.prototype.addActiveSecureElementChangeListener = function() {
239 NFCAdapter.prototype.removeActiveSecureElementChangeListener = function() {
243 NFCAdapter.prototype.getCachedMessage = function() {
247 NFCAdapter.prototype.setExclusiveModeForTransaction = function() {
251 //////////////////NFCTag /////////////////
253 function NFCTag(data) {
254 Object.defineProperties(this, {
255 type: {value: data.type, writable: false, enumerable: true},
256 isSupportedNDEF: {value: data.isSupportedNDEF,
257 writable: true, enumerable: true},
258 ndefSize: {value: data.ndefSize,
259 writable: true, enumerable: true},
260 properties: {value: data.properties, writable: true, enumerable: true},
261 isConnected: {value: data.isConnected,
262 writable: true, enumerable: true}
266 NFCTag.prototype.readNDEF = function() {
270 NFCTag.prototype.writeNDEF = function() {
274 NFCTag.prototype.transceive = function() {
278 //////////////////NFCPeer /////////////////
280 function NFCPeer(data) {
281 Object.defineProperties(this, {
282 isConnected: {value: data.isConnected,
283 writable: true, enumerable: true}
287 NFCPeer.prototype.setReceiveNDEFListener = function() {
291 NFCPeer.prototype.unsetReceiveNDEFListener = function() {
295 NFCPeer.prototype.sendNDEF = function() {
299 //////////////////NDEFMessage /////////////////
301 tizen.NDEFMessage = function(data) {
305 tizen.NDEFMessage.prototype.toByte = function() {
309 //////////////////NDEFRecord /////////////////
311 tizen.NDEFRecord = function(data, type, payload, id) {
315 //////////////////NDEFRecordText /////////////////
317 tizen.NDEFRecordText = function(text, languageCode, encoding) {
321 //////////////////NDEFRecordURI /////////////////
323 tizen.NDEFRecordURI = function(uri) {
327 //////////////////NDEFRecordMedia /////////////////
329 tizen.NDEFRecordMedia = function(mimeType, data) {
334 exports = new NFCManager();