Tizen 2.0 Release
[samples/web/ContactsExchanger.git] / js / nfc_common.js
1 /*jslint devel: true*/
2 /*global $, tizen, nfcAdapter: true, appStarted: true, timeOutHandler, nfcTarget: true, nfcStateMemory: true, convertNDEF2phoneNumber, loadStartPage, resolveContact, displayContact: true */
3
4 var fillRecordInfo = function (record) {
5         "use strict";
6         try {
7                 var contactsData = resolveContact(convertNDEF2phoneNumber(record.payload));
8                 displayContact(contactsData);
9         } catch (error) {
10                 console.log(error);
11         }
12 };
13
14 var readMessage = function (message) {
15         "use strict";
16         try {
17                 fillRecordInfo(message.records[0]);
18         } catch (e) {
19                 console.log(e.message);
20         }
21 };
22
23 var contact2NDEF = function (contact) {
24         "use strict";
25         var t, a = [], i, newMessage = new tizen.NDEFMessage();
26         if (typeof contact === 'string') {
27                 t = contact;
28         } else {
29                 t = contact.convertToString("VCARD_30");
30         }
31         a.length = t.length;
32         for (i = 0; i < a.length; i += 1) {
33                 a[i] = t.charCodeAt(i);
34         }
35         newMessage.records[0] = new tizen.NDEFRecordMedia('text/x-vcard', a);
36         return newMessage;
37 };
38
39 var phoneNumber2NDEF = function (contact) {
40         "use strict";
41         var phoneNumberArray = [], i, length = contact.length, newMessage = new tizen.NDEFMessage();
42         for (i = 0; i < length; i += 1) {
43                 phoneNumberArray.push(contact.charCodeAt(i));
44         }
45         newMessage.records[0] = new tizen.NDEFRecordMedia('text/x-vcard', phoneNumberArray);
46         return newMessage;
47 };
48
49 var convertNDEF2phoneNumber = function (contact) {
50         "use strict";
51         var i, length = contact.length, phoneNumber = '';
52         for (i = 0; i < length; i += 1) {
53                 phoneNumber += String.fromCharCode(contact[i]);
54         }
55         return phoneNumber;
56 };
57
58 var startNFC = function () {
59         "use strict";
60         var onPowerOn, onPowerOnFails;
61
62         onPowerOn = function () {
63                 appStarted = true;
64                 loadStartPage();
65         };
66         onPowerOnFails = function (err) {
67                 console.log('Power On error: ' + err.message);
68         };
69
70         try {
71                 nfcAdapter = tizen.nfc.getDefaultAdapter();
72                 try {
73                         if (nfcAdapter.powered) {
74                                 nfcStateMemory = true;
75                                 onPowerOn();
76                         } else {
77                                 nfcStateMemory = false;
78                                 nfcAdapter.setPowered(true, onPowerOn, onPowerOnFails);
79                         }
80                 } catch (err) {
81                         console.log('setPowered(true) problem: ' + err);
82                 }
83         } catch (e) {
84                 console.log('getDefaultAdapter() method problem: ' + e);
85         }
86 };
87
88 var stopNFC = function () {
89         "use strict";
90         var onPowerOff, onPowerOffFails;
91
92         onPowerOff = function () {
93                 tizen.application.getCurrentApplication().exit();
94         };
95
96         onPowerOffFails = function (err) {
97                 console.log('Power Off error: ' + err.message);
98                 tizen.application.getCurrentApplication().exit();
99         };
100
101         try {
102                 if (nfcStateMemory) {
103                         onPowerOff();
104                 } else {
105                         nfcAdapter.setPowered(false, onPowerOff, onPowerOffFails);
106                 }
107         } catch (err) {
108                 console.log('setPowered(false) problem: ' + err);
109         }
110 };
111
112 var unsetTargetDetect = function () {
113         "use strict";
114         try {
115                 nfcTarget.unsetReceiveNDEFListener();
116                 nfcTarget = null;
117         } catch (error) {
118                 console.log('error: ' + error.message);
119         }
120         try {
121                 nfcAdapter.unsetPeerListener();
122         } catch (e) {
123                 console.log('error: ' + e.message);
124         }
125 };
126
127 var unsetTagDetect = function () {
128         "use strict";
129         try {
130                 nfcAdapter.unsetTagListener();
131         } catch (error) {
132                 console.log('error: ' + error.message);
133         }
134 };
135
136 var moveToStartPage = function (monit) {
137         "use strict";
138         $('#start').data('monit', monit || '');
139         $.mobile.changePage('#start');
140 };
141
142 var moveToContactPage = function (obj) {
143         "use strict";
144         $('#start').data('monit', '');
145         $('#contact').data('contactsData', obj);
146         $.mobile.changePage('#contact');
147 };
148
149 var timeExpired = function (monit) {
150         "use strict";
151         clearTimeout(timeOutHandler);
152         if (nfcTarget) {
153                 unsetTargetDetect();
154         } else {
155                 unsetTagDetect();
156         }
157         moveToStartPage(monit);
158 };
159
160 var displayContact = function (obj) {
161         "use strict";
162         clearTimeout(timeOutHandler);
163         if (nfcTarget) {
164                 unsetTargetDetect();
165         } else {
166                 unsetTagDetect();
167         }
168         moveToContactPage(obj);
169 };
170
171 var sucDetach = function () {
172         "use strict";
173         console.log('sucDetach');
174 };