[NFC] NFCAdapter::activeSecureElement impl.
[platform/core/api/webapi-plugins.git] / src / nfc / nfc_api.js
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.
4
5 var validator_ = xwalk.utils.validator;
6 var types_ = validator_.Types;
7 var native_ = new xwalk.utils.NativeManager(extension);
8
9 //enumeration NDEFRecordTextEncoding ////////////////////////////////////////////////////
10 var NDEFRecordTextEncoding = {
11     UTF8 : 'UTF8',
12     UTF16 : 'UTF16'
13 };
14
15 //enumeration NFCTagType ////////////////////////////////////////////////////
16 var 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',
29     FELICA : 'FELICA',
30     JEWEL : 'JEWEL',
31     ISO15693 : 'ISO15693',
32     UNKNOWN_TARGET : 'UNKNOWN_TARGET'
33 };
34
35 ////enumeration CardEmulationMode ////////////////////////////////////////////////////
36 var CardEmulationMode = {
37     ALWAYS_ON : 'ALWAYS_ON',
38     OFF : 'OFF'
39 };
40
41 ////enumeration SecureElementType ////////////////////////////////////////////////////
42 var SecureElementType = {
43     ESE : 'ESE',
44     UICC : 'UICC'
45 };
46
47 //////////////////NFCManager /////////////////
48
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}
58     });
59 }
60
61 NFCManager.prototype.getDefaultAdapter = function() {
62     return new NFCAdapter();
63 };
64
65 NFCManager.prototype.setExclusiveMode = function() {
66
67     var args = validator_.validateArgs(arguments, [
68         {name: 'exclusiveMode', type: types_.BOOLEAN}
69     ]);
70
71     var result = native_.callSync(
72         'NFCManager_setExclusiveMode',
73         { 'exclusiveMode': args.exclusiveMode}
74     );
75
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:
81         //
82         //throw native_.getErrorObject(result);
83     }
84     // Otherwise just return
85     return;
86 };
87
88 //////////////////NFCAdapter /////////////////
89
90 function NFCAdapter() {
91     function poweredGetter() {
92         var ret = native_.callSync('NFCAdapter_getPowered');
93
94         if (native_.isFailure(ret)) {
95             return '';
96         }
97
98         return native_.getResultObject(ret);
99     }
100
101     function cardEmulationModeGetter() {
102         var result = native_.callSync('NFCAdapter_cardEmulationModeGetter');
103
104         if (native_.isFailure(result)) {
105             throw new tizen.WebAPIException(0, result.error.message, result.error.name);
106         }
107
108         return native_.getResultObject(result);
109     }
110
111     function cardEmulationModeSetter(cem) {
112
113         var args = validator_.validateArgs(arguments, [
114             {name: 'emulationMode', type: types_.STRING}
115         ]);
116
117         var result = native_.callSync(
118             'NFCAdapter_cardEmulationModeSetter',
119             { 'emulationMode': args.emulationMode}
120         );
121
122         if(native_.isFailure(result)) {
123             throw new tizen.WebAPIException(0, result.error.message, result.error.name);
124         }
125         return;
126     }
127
128     function activeSecureElementGetter() {
129
130         var result = native_.callSync('NFCAdapter_activeSecureElementGetter');
131
132         if (native_.isFailure(result)) {
133             throw new tizen.WebAPIException(0, result.error.message, result.error.name);
134         }
135
136         return native_.getResultObject(result);
137     }
138
139     function activeSecureElementSetter(ase) {
140
141         var args = validator_.validateArgs(arguments, [
142             {name: 'secureElement', type: types_.STRING}
143         ]);
144
145         var result = native_.callSync(
146             'NFCAdapter_activeSecureElementSetter',
147             { 'secureElement': args.secureElement}
148         );
149
150         if(native_.isFailure(result)) {
151             throw new tizen.WebAPIException(0, result.error.message, result.error.name);
152         }
153         return;
154     }
155
156     Object.defineProperties(this, {
157         powered:   {enumerable: true,
158             set : function(){},
159             get : poweredGetter
160         },
161         cardEmulationMode:   {enumerable: true,
162             set : cardEmulationModeSetter,
163             get : cardEmulationModeGetter
164         },
165         activeSecureElement:   {enumerable: true,
166             set : activeSecureElementSetter,
167             get : activeSecureElementGetter
168         }
169     });
170 };
171
172 NFCAdapter.prototype.setPowered = function() {
173     var args = validator_.validateArgs(arguments, [
174         {
175             name : 'powered',
176             type : types_.BOOLEAN
177         },
178         {
179             name : 'successCallback',
180             type : types_.FUNCTION,
181             optional : true,
182             nullable : true
183         },
184         {
185             name : 'errorCallback',
186             type : types_.FUNCTION,
187             optional : true,
188             nullable : true
189         }
190     ]);
191
192     native_.call('NFCAdapter_setPowered', {
193         powered: args.powered
194     }, function(result) {
195         if (native_.isFailure(result)) {
196             args.errorCallback(result.error);
197         } else {
198             args.successCallback();
199         }
200     });
201 };
202
203 NFCAdapter.prototype.setTagListener  = function() {
204
205 };
206
207 NFCAdapter.prototype.setPeerListener = function() {
208
209 };
210
211 NFCAdapter.prototype.unsetTagListener = function() {
212
213 };
214
215 NFCAdapter.prototype.unsetPeerListener = function() {
216
217 };
218
219 NFCAdapter.prototype.addCardEmulationModeChangeListener = function() {
220
221 };
222
223 NFCAdapter.prototype.removeCardEmulationModeChangeListener = function() {
224
225 };
226
227 NFCAdapter.prototype.addTransactionEventListener = function() {
228
229 };
230
231 NFCAdapter.prototype.removeTransactionEventListener = function() {
232
233 };
234
235 NFCAdapter.prototype.addActiveSecureElementChangeListener = function() {
236
237 };
238
239 NFCAdapter.prototype.removeActiveSecureElementChangeListener = function() {
240
241 };
242
243 NFCAdapter.prototype.getCachedMessage = function() {
244
245 };
246
247 NFCAdapter.prototype.setExclusiveModeForTransaction = function() {
248
249 };
250
251 //////////////////NFCTag /////////////////
252
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}
263     });
264 }
265
266 NFCTag.prototype.readNDEF = function() {
267
268 };
269
270 NFCTag.prototype.writeNDEF = function() {
271
272 };
273
274 NFCTag.prototype.transceive = function() {
275
276 };
277
278 //////////////////NFCPeer /////////////////
279
280 function NFCPeer(data) {
281     Object.defineProperties(this, {
282         isConnected:   {value: data.isConnected,
283             writable: true, enumerable: true}
284     });
285 }
286
287 NFCPeer.prototype.setReceiveNDEFListener = function() {
288
289 };
290
291 NFCPeer.prototype.unsetReceiveNDEFListener = function() {
292
293 };
294
295 NFCPeer.prototype.sendNDEF = function() {
296
297 };
298
299 //////////////////NDEFMessage /////////////////
300
301 tizen.NDEFMessage = function(data) {
302
303 };
304
305 tizen.NDEFMessage.prototype.toByte = function() {
306
307 };
308
309 //////////////////NDEFRecord /////////////////
310
311 tizen.NDEFRecord = function(data, type, payload, id) {
312
313 };
314
315 //////////////////NDEFRecordText /////////////////
316
317 tizen.NDEFRecordText = function(text, languageCode, encoding) {
318
319 };
320
321 //////////////////NDEFRecordURI /////////////////
322
323 tizen.NDEFRecordURI = function(uri) {
324
325 };
326
327 //////////////////NDEFRecordMedia /////////////////
328
329 tizen.NDEFRecordMedia = function(mimeType, data) {
330
331 };
332
333 //Exports
334 exports = new NFCManager();