@iotize/device-com-nfc.cordova 3.1.4 → 3.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/iotize-device-com-nfc.cordova.umd.js +127 -38
- package/bundles/iotize-device-com-nfc.cordova.umd.js.map +1 -1
- package/bundles/iotize-device-com-nfc.cordova.umd.min.js +2 -2
- package/bundles/iotize-device-com-nfc.cordova.umd.min.js.map +1 -1
- package/esm2015/www/errors.js +3 -0
- package/esm2015/www/errors.js.map +1 -1
- package/esm2015/www/nfc-com-protocol.js +88 -43
- package/esm2015/www/nfc-com-protocol.js.map +1 -1
- package/esm2015/www/nfc-com-protocol.metadata.json +1 -1
- package/esm2015/www/nfc-com-protocol.ngsummary.json +1 -1
- package/fesm2015/iotize-device-com-nfc.cordova.js +90 -37
- package/fesm2015/iotize-device-com-nfc.cordova.js.map +1 -1
- package/iotize-device-com-nfc.cordova.metadata.json +1 -1
- package/package.json +1 -1
- package/src/android/.gradle/4.10.1/fileHashes/fileHashes.bin +0 -0
- package/src/android/.gradle/4.10.1/fileHashes/fileHashes.lock +0 -0
- package/src/android/src/com/chariotsolutions/nfc/plugin/NfcPlugin.java +2 -17
- package/www/errors.d.ts +1 -0
- package/www/nfc-com-protocol.d.ts +21 -0
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
73
73
|
return Reflect.metadata(metadataKey, metadataValue);
|
|
74
74
|
}
|
|
75
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
75
|
+
function __awaiter$1(thisArg, _arguments, P, generator) {
|
|
76
76
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
77
77
|
function fulfilled(value) { try {
|
|
78
78
|
step(generator.next(value));
|
|
@@ -281,6 +281,9 @@
|
|
|
281
281
|
NfcError.unknownError = function (errString) {
|
|
282
282
|
throw new NfcError(NfcError.ErrorCode.Unknown, errString);
|
|
283
283
|
};
|
|
284
|
+
NfcError.tagConnectionFailed = function () {
|
|
285
|
+
throw new NfcError(NfcError.ErrorCode.NotConnectedError, "Tag connection failed");
|
|
286
|
+
};
|
|
284
287
|
NfcError.internalError = function (message) {
|
|
285
288
|
throw new NfcError(NfcError.ErrorCode.InternalError, message);
|
|
286
289
|
};
|
|
@@ -298,78 +301,165 @@
|
|
|
298
301
|
|
|
299
302
|
var debug = debug$1.createDebugger("@iotize/device-com-nfc.cordova");
|
|
300
303
|
|
|
304
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
305
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
306
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
307
|
+
function fulfilled(value) { try {
|
|
308
|
+
step(generator.next(value));
|
|
309
|
+
}
|
|
310
|
+
catch (e) {
|
|
311
|
+
reject(e);
|
|
312
|
+
} }
|
|
313
|
+
function rejected(value) { try {
|
|
314
|
+
step(generator["throw"](value));
|
|
315
|
+
}
|
|
316
|
+
catch (e) {
|
|
317
|
+
reject(e);
|
|
318
|
+
} }
|
|
319
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
320
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
321
|
+
});
|
|
322
|
+
};
|
|
301
323
|
var NFCComProtocol = /** @class */ (function (_super) {
|
|
302
324
|
__extends(NFCComProtocol, _super);
|
|
303
325
|
function NFCComProtocol(options) {
|
|
304
326
|
if (options === void 0) { options = {
|
|
305
327
|
connect: {
|
|
306
|
-
timeout: 2000
|
|
328
|
+
timeout: 2000,
|
|
307
329
|
},
|
|
308
330
|
disconnect: {
|
|
309
|
-
timeout: 1000
|
|
331
|
+
timeout: 1000,
|
|
310
332
|
},
|
|
311
333
|
send: {
|
|
312
|
-
timeout: 1000
|
|
313
|
-
}
|
|
334
|
+
timeout: 1000,
|
|
335
|
+
},
|
|
314
336
|
}; }
|
|
315
337
|
var _this = _super.call(this) || this;
|
|
316
338
|
_this.options = options;
|
|
317
339
|
if (typeof nfc == undefined) {
|
|
318
|
-
console.warn(
|
|
340
|
+
console.warn('NFC plugin has not been setup properly. Global variable NFC does not exist');
|
|
319
341
|
}
|
|
320
342
|
return _this;
|
|
321
343
|
}
|
|
322
344
|
NFCComProtocol.iOSProtocol = function () {
|
|
323
345
|
return new NFCComProtocol({
|
|
324
346
|
connect: {
|
|
325
|
-
timeout: 10000 // bigger timer on connect as connect launches a reading session
|
|
347
|
+
timeout: 10000, // bigger timer on connect as connect launches a reading session
|
|
326
348
|
},
|
|
327
349
|
disconnect: {
|
|
328
|
-
timeout: 1000
|
|
350
|
+
timeout: 1000,
|
|
329
351
|
},
|
|
330
352
|
send: {
|
|
331
|
-
timeout: 1000
|
|
332
|
-
}
|
|
353
|
+
timeout: 1000,
|
|
354
|
+
},
|
|
333
355
|
});
|
|
334
356
|
};
|
|
357
|
+
/**
|
|
358
|
+
* We force tag connection with nfc as we need to refresh tag
|
|
359
|
+
* @param options
|
|
360
|
+
* @returns
|
|
361
|
+
*/
|
|
362
|
+
NFCComProtocol.prototype.connect = function (options) {
|
|
363
|
+
this.connectionState = api.ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected
|
|
364
|
+
return _super.prototype.connect.call(this, options);
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* Not used as we have rewrote "connect()" function
|
|
368
|
+
* @param options
|
|
369
|
+
* @returns
|
|
370
|
+
*/
|
|
335
371
|
NFCComProtocol.prototype._connect = function (options) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
372
|
+
var _this = this;
|
|
373
|
+
return rxjs.defer(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
374
|
+
var err_1;
|
|
375
|
+
return __generator(this, function (_a) {
|
|
376
|
+
switch (_a.label) {
|
|
377
|
+
case 0:
|
|
378
|
+
debug('_connect', options);
|
|
379
|
+
_a.label = 1;
|
|
380
|
+
case 1:
|
|
381
|
+
_a.trys.push([1, 3, , 4]);
|
|
382
|
+
return [4 /*yield*/, nfc.connect('android.nfc.tech.NfcV', this.options.connect.timeout)];
|
|
383
|
+
case 2:
|
|
384
|
+
_a.sent();
|
|
385
|
+
return [3 /*break*/, 4];
|
|
386
|
+
case 3:
|
|
387
|
+
err_1 = _a.sent();
|
|
388
|
+
if (typeof err_1 === 'string') {
|
|
389
|
+
if (err_1 === 'Tag connection failed') {
|
|
390
|
+
throw exports.NfcError.tagConnectionFailed();
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
throw exports.NfcError.unknownError(err_1);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
throw err_1;
|
|
397
|
+
case 4: return [2 /*return*/];
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
}); });
|
|
339
401
|
};
|
|
340
402
|
NFCComProtocol.prototype._disconnect = function (options) {
|
|
341
|
-
return rxjs.
|
|
403
|
+
return rxjs.defer(function () { return nfc.close(); });
|
|
342
404
|
};
|
|
405
|
+
/**
|
|
406
|
+
* Not used
|
|
407
|
+
* @param options
|
|
408
|
+
* @returns
|
|
409
|
+
*/
|
|
343
410
|
NFCComProtocol.prototype.write = function (data) {
|
|
344
|
-
|
|
411
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
412
|
+
return __generator(this, function (_a) {
|
|
413
|
+
throw new Error('Method not implemented.');
|
|
414
|
+
});
|
|
415
|
+
});
|
|
345
416
|
};
|
|
417
|
+
/**
|
|
418
|
+
* Not used
|
|
419
|
+
* @param options
|
|
420
|
+
* @returns
|
|
421
|
+
*/
|
|
346
422
|
NFCComProtocol.prototype.read = function () {
|
|
347
|
-
|
|
423
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
424
|
+
return __generator(this, function (_a) {
|
|
425
|
+
throw new Error('Method not implemented.');
|
|
426
|
+
});
|
|
427
|
+
});
|
|
348
428
|
};
|
|
349
429
|
NFCComProtocol.prototype.send = function (data, options) {
|
|
350
430
|
var _this = this;
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
431
|
+
return rxjs.defer(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
432
|
+
var response, errString_1, error;
|
|
433
|
+
return __generator(this, function (_a) {
|
|
434
|
+
switch (_a.label) {
|
|
435
|
+
case 0:
|
|
436
|
+
_a.trys.push([0, 2, , 3]);
|
|
437
|
+
return [4 /*yield*/, nfc.transceive(byteConverter.bufferToHexString(data))];
|
|
438
|
+
case 1:
|
|
439
|
+
response = _a.sent();
|
|
440
|
+
if (typeof response != 'string') {
|
|
441
|
+
throw exports.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");
|
|
442
|
+
}
|
|
443
|
+
debug('NFC plugin response: ', response);
|
|
444
|
+
return [2 /*return*/, byteConverter.hexStringToBuffer(response)];
|
|
445
|
+
case 2:
|
|
446
|
+
errString_1 = _a.sent();
|
|
447
|
+
if (typeof errString_1 === 'string') {
|
|
448
|
+
error = stringToError(errString_1);
|
|
449
|
+
if (error.code === exports.NfcError.ErrorCode.NotConnectedError ||
|
|
450
|
+
error.code === exports.NfcError.ErrorCode.TagLostError) {
|
|
451
|
+
this._onConnectionLost(error);
|
|
452
|
+
}
|
|
453
|
+
throw error;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
throw errString_1;
|
|
457
|
+
}
|
|
458
|
+
return [3 /*break*/, 3];
|
|
459
|
+
case 3: return [2 /*return*/];
|
|
365
460
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
else {
|
|
369
|
-
throw errString;
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
return rxjs.from(promise);
|
|
461
|
+
});
|
|
462
|
+
}); });
|
|
373
463
|
};
|
|
374
464
|
NFCComProtocol.prototype._onConnectionLost = function (error) {
|
|
375
465
|
if (this.connectionState !== api.ConnectionState.DISCONNECTED) {
|
|
@@ -378,7 +468,6 @@
|
|
|
378
468
|
};
|
|
379
469
|
return NFCComProtocol;
|
|
380
470
|
}(core.QueueComProtocol));
|
|
381
|
-
;
|
|
382
471
|
/**
|
|
383
472
|
* Convert error string returned by the plugin into an error object
|
|
384
473
|
* It only checks a few Android error string for now
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iotize-device-com-nfc.cordova.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/nfc-com-protocol.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/iotize-device-com-nfc.cordova.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NfcError","createDebugger","from","bufferToHexString","hexStringToBuffer","ConnectionState","QueueComProtocol","bufferToAsciiString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iotize-device-com-nfc.cordova.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/nfc-com-protocol.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/iotize-device-com-nfc.cordova.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n constructor(public code: NfcError.ErrorCode, message: string) {\r\n super(message);\r\n }\r\n\r\n public static tagLostError() {\r\n return new NfcError(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\r\n }\r\n\r\n public static notConnectedError() {\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n }\r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = 'NfcUnknownError',\r\n InternalError = 'NfcInternalError',\r\n TagLostError = 'NfcTagLostError',\r\n NotConnectedError = 'NfcNotConnectedError',\r\n }\r\n}\r\n","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000,\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n }\r\n ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000, // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n *\r\n * TODO complete implementation with other error types\r\n *\r\n * @param errString\r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n } else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["__awaiter","NfcError","createDebugger","ConnectionState","defer","bufferToHexString","hexStringToBuffer","QueueComProtocol","bufferToAsciiString"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(o,
|
|
1
|
+
!function(o,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@iotize/common/byte-converter"),require("@iotize/tap/protocol/api"),require("@iotize/tap/protocol/core"),require("rxjs"),require("@iotize/common/debug")):"function"==typeof define&&define.amd?define("@iotize/device-com-nfc.cordova",["exports","@iotize/common/byte-converter","@iotize/tap/protocol/api","@iotize/tap/protocol/core","rxjs","@iotize/common/debug"],e):e(((o="undefined"!=typeof globalThis?globalThis:o||self).iotize=o.iotize||{},o.iotize["device-com-nfc"]=o.iotize["device-com-nfc"]||{},o.iotize["device-com-nfc"].cordova={}),o.byteConverter,o.api,o.core,o.rxjs,o.debug$1)}(this,(function(o,e,r,t,n,i){"use strict";
|
|
2
2
|
/*! *****************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
4
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
|
|
13
13
|
See the Apache Version 2.0 License for specific language governing permissions
|
|
14
14
|
and limitations under the License.
|
|
15
|
-
***************************************************************************** */var c=function(o,
|
|
15
|
+
***************************************************************************** */var c=function(o,e){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,e){o.__proto__=e}||function(o,e){for(var r in e)e.hasOwnProperty(r)&&(o[r]=e[r])})(o,e)};function a(o,e){function r(){this.constructor=o}c(o,e),o.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var u,s;function f(o,e){var r,t,n,i,c={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,t&&(n=2&i[0]?t.return:i[0]?t.throw||((n=t.return)&&n.call(t),0):t.next)&&!(n=n.call(t,i[1])).done)return n;switch(t=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,t=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(n=c.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){c=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){c.label=i[1];break}if(6===i[0]&&c.label<n[1]){c.label=n[1],n=i;break}if(n&&c.label<n[2]){c.label=n[2],c.ops.push(i);break}n[2]&&c.ops.pop(),c.trys.pop();continue}i=e.call(o,c)}catch(o){i=[6,o],t=0}finally{r=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}o.NfcError=function(o){function e(e,r){var t=o.call(this,r)||this;return t.code=e,t}return a(e,o),e.tagLostError=function(){return new e(e.ErrorCode.TagLostError,"NFC tag lost")},e.notConnectedError=function(){return new e(e.ErrorCode.NotConnectedError,"NFC tag is not connected")},e.unknownError=function(o){throw new e(e.ErrorCode.Unknown,o)},e.tagConnectionFailed=function(){throw new e(e.ErrorCode.NotConnectedError,"Tag connection failed")},e.internalError=function(o){throw new e(e.ErrorCode.InternalError,o)},e}(Error),s=o.NfcError||(o.NfcError={}),(u=s.ErrorCode||(s.ErrorCode={})).Unknown="NfcUnknownError",u.InternalError="NfcInternalError",u.TagLostError="NfcTagLostError",u.NotConnectedError="NfcNotConnectedError";var l,d=i.createDebugger("@iotize/device-com-nfc.cordova"),p=this&&this.__awaiter||function(o,e,r,t){return new(r||(r=Promise))((function(n,i){function c(o){try{u(t.next(o))}catch(o){i(o)}}function a(o){try{u(t.throw(o))}catch(o){i(o)}}function u(o){var e;o.done?n(o.value):(e=o.value,e instanceof r?e:new r((function(o){o(e)}))).then(c,a)}u((t=t.apply(o,e||[])).next())}))},h=function(t){function i(o){void 0===o&&(o={connect:{timeout:2e3},disconnect:{timeout:1e3},send:{timeout:1e3}});var e=t.call(this)||this;return e.options=o,null==typeof nfc&&console.warn("NFC plugin has not been setup properly. Global variable NFC does not exist"),e}return a(i,t),i.iOSProtocol=function(){return new i({connect:{timeout:1e4},disconnect:{timeout:1e3},send:{timeout:1e3}})},i.prototype.connect=function(o){return this.connectionState=r.ConnectionState.CONNECTING,t.prototype.connect.call(this,o)},i.prototype._connect=function(e){var r=this;return n.defer((function(){return p(r,void 0,void 0,(function(){var r;return f(this,(function(t){switch(t.label){case 0:d("_connect",e),t.label=1;case 1:return t.trys.push([1,3,,4]),[4,nfc.connect("android.nfc.tech.NfcV",this.options.connect.timeout)];case 2:return t.sent(),[3,4];case 3:if("string"==typeof(r=t.sent()))throw"Tag connection failed"===r?o.NfcError.tagConnectionFailed():o.NfcError.unknownError(r);throw r;case 4:return[2]}}))}))}))},i.prototype._disconnect=function(o){return n.defer((function(){return nfc.close()}))},i.prototype.write=function(o){return p(this,void 0,void 0,(function(){return f(this,(function(o){throw new Error("Method not implemented.")}))}))},i.prototype.read=function(){return p(this,void 0,void 0,(function(){return f(this,(function(o){throw new Error("Method not implemented.")}))}))},i.prototype.send=function(r,t){var i=this;return n.defer((function(){return p(i,void 0,void 0,(function(){var t,n,i;return f(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,nfc.transceive(e.bufferToHexString(r))];case 1:if("string"!=typeof(t=c.sent()))throw o.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");return d("NFC plugin response: ",t),[2,e.hexStringToBuffer(t)];case 2:throw"string"==typeof(n=c.sent())?(u=(a=n).toLowerCase(),(i=u.indexOf("tag was lost")>=0?o.NfcError.tagLostError():u.indexOf("not connected")>=0?o.NfcError.notConnectedError():o.NfcError.unknownError(a)).code!==o.NfcError.ErrorCode.NotConnectedError&&i.code!==o.NfcError.ErrorCode.TagLostError||this._onConnectionLost(i),i):n;case 3:return[2]}var a,u}))}))}))},i.prototype._onConnectionLost=function(o){this.connectionState!==r.ConnectionState.DISCONNECTED&&this.setConnectionState(r.ConnectionState.DISCONNECTED)},i}(t.QueueComProtocol);function E(o){return o.length>0&&0===o[0]&&(o=o.slice(1)),e.bufferToAsciiString(o)}!function(o){o[o.WiFi=32]="WiFi",o[o.BLE=64]="BLE"}(l||(l={})),o.NFCComProtocol=h,o.parseTapNdefMessage=function(o){var e={};if(o.length>=1){var r=o[0].payload;e.uri=E(r)}if(o.length>=2&&(e.aar=E(o[1].payload)),o.length>=3){var t=o[2].payload,n=t[0],i=t.slice(1);switch(e.type=n,n){case l.BLE:e.macAddress=i.map((function(o){o<0&&(o+=256);var e="0"+o.toString(16).toUpperCase();return e=e.slice(-2)})).reverse().join(":");break;case l.WiFi:e.ssid=E(i)}}return o.length>=4&&(e.name=E(o[3].payload)),e},Object.defineProperty(o,"__esModule",{value:!0})}));
|
|
16
16
|
//# sourceMappingURL=iotize-device-com-nfc.cordova.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/www/nfc-com-protocol.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","ErrorCode","NfcError","_super","code","message","_this","call","tagLostError","TagLostError","notConnectedError","NotConnectedError","unknownError","errString","Unknown","internalError","InternalError","Error","TapNdefProtocolType","debug","createDebugger","NFCComProtocol","options","connect","timeout","disconnect","send","undefined","nfc","console","warn","iOSProtocol","_connect","connectPromise","from","_disconnect","close","write","data","read","promise","transceive","bufferToHexString","then","response","hexStringToBuffer","catch","error","errStringLc","toLowerCase","indexOf","stringToError","_onConnectionLost","connectionState","ConnectionState","DISCONNECTED","setConnectionState","QueueComProtocol","toAsciiString","payload","length","slice","bufferToAsciiString","messages","result","asciiUri","uri","aar","payload3","type","content","BLE","macAddress","map","byte","byteString","toString","toUpperCase","reverse","join","WiFi","ssid","name"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/www/nfc-com-protocol.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","ErrorCode","NfcError","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","done","value","pop","length","push","e","step","_super","code","message","_this","tagLostError","TagLostError","notConnectedError","NotConnectedError","unknownError","errString","Unknown","tagConnectionFailed","internalError","InternalError","Error","TapNdefProtocolType","debug","createDebugger","NFCComProtocol","options","connect","timeout","disconnect","send","undefined","nfc","console","warn","iOSProtocol","connectionState","ConnectionState","CONNECTING","_connect","defer","__awaiter","_a","err_1","_disconnect","close","write","data","read","transceive","bufferToHexString","response","hexStringToBuffer","errStringLc","errString_1","toLowerCase","error","indexOf","_onConnectionLost","DISCONNECTED","setConnectionState","QueueComProtocol","toAsciiString","payload","slice","bufferToAsciiString","messages","result","asciiUri","uri","aar","payload3","type","content","BLE","macAddress","map","byte","byteString","toString","toUpperCase","reverse","join","WiFi","ssid","name"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n constructor(public code: NfcError.ErrorCode, message: string) {\r\n super(message);\r\n }\r\n\r\n public static tagLostError() {\r\n return new NfcError(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\r\n }\r\n\r\n public static notConnectedError() {\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n }\r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = 'NfcUnknownError',\r\n InternalError = 'NfcInternalError',\r\n TagLostError = 'NfcTagLostError',\r\n NotConnectedError = 'NfcNotConnectedError',\r\n }\r\n}\r\n","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000,\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n }\r\n ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000, // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n *\r\n * TODO complete implementation with other error types\r\n *\r\n * @param errString\r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n } else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
|
package/esm2015/www/errors.js
CHANGED
|
@@ -12,6 +12,9 @@ export class NfcError extends Error {
|
|
|
12
12
|
static unknownError(errString) {
|
|
13
13
|
throw new NfcError(NfcError.ErrorCode.Unknown, errString);
|
|
14
14
|
}
|
|
15
|
+
static tagConnectionFailed() {
|
|
16
|
+
throw new NfcError(NfcError.ErrorCode.NotConnectedError, `Tag connection failed`);
|
|
17
|
+
}
|
|
15
18
|
static internalError(message) {
|
|
16
19
|
throw new NfcError(NfcError.ErrorCode.InternalError, message);
|
|
17
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/www/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/www/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAmB,IAAwB,EAAE,OAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,SAAI,GAAJ,IAAI,CAAoB;IAE3C,CAAC;IAEM,MAAM,CAAC,YAAY;QACxB,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,OAAO,IAAI,QAAQ,CACjB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EACpC,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,SAAiB;QAC1C,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,mBAAmB;QAC/B,MAAM,IAAI,QAAQ,CAChB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EACpC,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAED,WAAiB,QAAQ;IACvB,IAAY,SAKX;IALD,WAAY,SAAS;QACnB,wCAA2B,CAAA;QAC3B,+CAAkC,CAAA;QAClC,6CAAgC,CAAA;QAChC,uDAA0C,CAAA;IAC5C,CAAC,EALW,SAAS,GAAT,kBAAS,KAAT,kBAAS,QAKpB;AACH,CAAC,EAPgB,QAAQ,KAAR,QAAQ,QAOxB","sourcesContent":["export class NfcError extends Error {\r\n constructor(public code: NfcError.ErrorCode, message: string) {\r\n super(message);\r\n }\r\n\r\n public static tagLostError() {\r\n return new NfcError(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\r\n }\r\n\r\n public static notConnectedError() {\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n }\r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = 'NfcUnknownError',\r\n InternalError = 'NfcInternalError',\r\n TagLostError = 'NfcTagLostError',\r\n NotConnectedError = 'NfcNotConnectedError',\r\n }\r\n}\r\n"]}
|
|
@@ -1,83 +1,129 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { bufferToHexString, hexStringToBuffer, } from '@iotize/common/byte-converter';
|
|
8
11
|
import { ConnectionState, } from '@iotize/tap/protocol/api';
|
|
9
12
|
import { QueueComProtocol } from '@iotize/tap/protocol/core';
|
|
10
|
-
import {
|
|
13
|
+
import { defer } from 'rxjs';
|
|
11
14
|
import { NfcError } from './errors';
|
|
12
15
|
import { debug } from './logger';
|
|
13
16
|
export class NFCComProtocol extends QueueComProtocol {
|
|
14
17
|
constructor(options = {
|
|
15
18
|
connect: {
|
|
16
|
-
timeout: 2000
|
|
19
|
+
timeout: 2000,
|
|
17
20
|
},
|
|
18
21
|
disconnect: {
|
|
19
|
-
timeout: 1000
|
|
22
|
+
timeout: 1000,
|
|
20
23
|
},
|
|
21
24
|
send: {
|
|
22
|
-
timeout: 1000
|
|
23
|
-
}
|
|
25
|
+
timeout: 1000,
|
|
26
|
+
},
|
|
24
27
|
}) {
|
|
25
28
|
super();
|
|
26
29
|
this.options = options;
|
|
27
30
|
if (typeof nfc == undefined) {
|
|
28
|
-
console.warn(
|
|
31
|
+
console.warn('NFC plugin has not been setup properly. Global variable NFC does not exist');
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
static iOSProtocol() {
|
|
32
35
|
return new NFCComProtocol({
|
|
33
36
|
connect: {
|
|
34
|
-
timeout: 10000 // bigger timer on connect as connect launches a reading session
|
|
37
|
+
timeout: 10000, // bigger timer on connect as connect launches a reading session
|
|
35
38
|
},
|
|
36
39
|
disconnect: {
|
|
37
|
-
timeout: 1000
|
|
40
|
+
timeout: 1000,
|
|
38
41
|
},
|
|
39
42
|
send: {
|
|
40
|
-
timeout: 1000
|
|
41
|
-
}
|
|
43
|
+
timeout: 1000,
|
|
44
|
+
},
|
|
42
45
|
});
|
|
43
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* We force tag connection with nfc as we need to refresh tag
|
|
49
|
+
* @param options
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
connect(options) {
|
|
53
|
+
this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected
|
|
54
|
+
return super.connect(options);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Not used as we have rewrote "connect()" function
|
|
58
|
+
* @param options
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
44
61
|
_connect(options) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
62
|
+
return defer(() => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
debug('_connect', options);
|
|
64
|
+
try {
|
|
65
|
+
yield nfc.connect('android.nfc.tech.NfcV', this.options.connect.timeout);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (typeof err === 'string') {
|
|
69
|
+
if (err === 'Tag connection failed') {
|
|
70
|
+
throw NfcError.tagConnectionFailed();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw NfcError.unknownError(err);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
48
79
|
}
|
|
49
80
|
_disconnect(options) {
|
|
50
|
-
return
|
|
81
|
+
return defer(() => nfc.close());
|
|
51
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Not used
|
|
85
|
+
* @param options
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
52
88
|
write(data) {
|
|
53
|
-
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
throw new Error('Method not implemented.');
|
|
91
|
+
});
|
|
54
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Not used
|
|
95
|
+
* @param options
|
|
96
|
+
* @returns
|
|
97
|
+
*/
|
|
55
98
|
read() {
|
|
56
|
-
|
|
99
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
throw new Error('Method not implemented.');
|
|
101
|
+
});
|
|
57
102
|
}
|
|
58
103
|
send(data, options) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
debug('NFC plugin response: ', response);
|
|
66
|
-
return hexStringToBuffer(response);
|
|
67
|
-
})
|
|
68
|
-
.catch((errString) => {
|
|
69
|
-
if (typeof errString === "string") {
|
|
70
|
-
const error = stringToError(errString);
|
|
71
|
-
if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {
|
|
72
|
-
this._onConnectionLost(error);
|
|
104
|
+
return defer(() => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
try {
|
|
106
|
+
const response = yield nfc.transceive(bufferToHexString(data));
|
|
107
|
+
if (typeof response != 'string') {
|
|
108
|
+
throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);
|
|
73
109
|
}
|
|
74
|
-
|
|
110
|
+
debug('NFC plugin response: ', response);
|
|
111
|
+
return hexStringToBuffer(response);
|
|
75
112
|
}
|
|
76
|
-
|
|
77
|
-
|
|
113
|
+
catch (errString) {
|
|
114
|
+
if (typeof errString === 'string') {
|
|
115
|
+
const error = stringToError(errString);
|
|
116
|
+
if (error.code === NfcError.ErrorCode.NotConnectedError ||
|
|
117
|
+
error.code === NfcError.ErrorCode.TagLostError) {
|
|
118
|
+
this._onConnectionLost(error);
|
|
119
|
+
}
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
throw errString;
|
|
124
|
+
}
|
|
78
125
|
}
|
|
79
|
-
});
|
|
80
|
-
return from(promise);
|
|
126
|
+
}));
|
|
81
127
|
}
|
|
82
128
|
_onConnectionLost(error) {
|
|
83
129
|
if (this.connectionState !== ConnectionState.DISCONNECTED) {
|
|
@@ -85,7 +131,6 @@ export class NFCComProtocol extends QueueComProtocol {
|
|
|
85
131
|
}
|
|
86
132
|
}
|
|
87
133
|
}
|
|
88
|
-
;
|
|
89
134
|
/**
|
|
90
135
|
* Convert error string returned by the plugin into an error object
|
|
91
136
|
* It only checks a few Android error string for now
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nfc-com-protocol.js","sourceRoot":"","sources":["../../../../../src/www/nfc-com-protocol.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"nfc-com-protocol.js","sourceRoot":"","sources":["../../../../../src/www/nfc-com-protocol.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000,\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n }\r\n ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000, // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n *\r\n * TODO complete implementation with other error types\r\n *\r\n * @param errString\r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n } else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"NFCComProtocol":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@iotize/tap/protocol/core","name":"QueueComProtocol","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"NFCComProtocol":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@iotize/tap/protocol/core","name":"QueueComProtocol","line":20,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@iotize/tap/protocol/api","name":"ComProtocolOptions","line":22,"character":13}]}],"connect":[{"__symbolic":"method"}],"_connect":[{"__symbolic":"method"}],"_disconnect":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"read":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"_onConnectionLost":[{"__symbolic":"method"}]},"statics":{"iOSProtocol":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NFCComProtocol"},"arguments":[{"connect":{"timeout":10000},"disconnect":{"timeout":1000},"send":{"timeout":1000}}]}}}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","extends":{"__symbol":1,"members":[]},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":2,"members":[]}]}],"_connect":[{"__symbolic":"method"}],"_disconnect":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"read":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"_onConnectionLost":[{"__symbolic":"method"}]},"statics":{"iOSProtocol":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbol":0,"members":[]},"arguments":[{"connect":{"timeout":10000},"disconnect":{"timeout":1000},"send":{"timeout":1000}}]}}}}}],"symbols":[{"__symbol":0,"name":"NFCComProtocol","filePath":"./nfc-com-protocol"},{"__symbol":1,"name":"QueueComProtocol","filePath":"@iotize/tap/protocol/core/iotize-tap-protocol-core"},{"__symbol":2,"name":"ComProtocolOptions","filePath":"@iotize/tap/protocol/api/iotize-tap-protocol-api"}]}
|
|
1
|
+
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","extends":{"__symbol":1,"members":[]},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":2,"members":[]}]}],"connect":[{"__symbolic":"method"}],"_connect":[{"__symbolic":"method"}],"_disconnect":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"read":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"_onConnectionLost":[{"__symbolic":"method"}]},"statics":{"iOSProtocol":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbol":0,"members":[]},"arguments":[{"connect":{"timeout":10000},"disconnect":{"timeout":1000},"send":{"timeout":1000}}]}}}}}],"symbols":[{"__symbol":0,"name":"NFCComProtocol","filePath":"./nfc-com-protocol"},{"__symbol":1,"name":"QueueComProtocol","filePath":"@iotize/tap/protocol/core/iotize-tap-protocol-core"},{"__symbol":2,"name":"ComProtocolOptions","filePath":"@iotize/tap/protocol/api/iotize-tap-protocol-api"}]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { bufferToHexString, hexStringToBuffer, bufferToAsciiString } from '@iotize/common/byte-converter';
|
|
2
2
|
import { ConnectionState } from '@iotize/tap/protocol/api';
|
|
3
3
|
import { QueueComProtocol } from '@iotize/tap/protocol/core';
|
|
4
|
-
import {
|
|
4
|
+
import { defer } from 'rxjs';
|
|
5
5
|
import { createDebugger } from '@iotize/common/debug';
|
|
6
6
|
|
|
7
7
|
class NfcError extends Error {
|
|
@@ -18,6 +18,9 @@ class NfcError extends Error {
|
|
|
18
18
|
static unknownError(errString) {
|
|
19
19
|
throw new NfcError(NfcError.ErrorCode.Unknown, errString);
|
|
20
20
|
}
|
|
21
|
+
static tagConnectionFailed() {
|
|
22
|
+
throw new NfcError(NfcError.ErrorCode.NotConnectedError, `Tag connection failed`);
|
|
23
|
+
}
|
|
21
24
|
static internalError(message) {
|
|
22
25
|
throw new NfcError(NfcError.ErrorCode.InternalError, message);
|
|
23
26
|
}
|
|
@@ -34,75 +37,126 @@ class NfcError extends Error {
|
|
|
34
37
|
|
|
35
38
|
const debug = createDebugger(`@iotize/device-com-nfc.cordova`);
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
41
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
42
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
43
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
44
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
45
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
46
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
|
+
});
|
|
48
|
+
};
|
|
38
49
|
class NFCComProtocol extends QueueComProtocol {
|
|
39
50
|
constructor(options = {
|
|
40
51
|
connect: {
|
|
41
|
-
timeout: 2000
|
|
52
|
+
timeout: 2000,
|
|
42
53
|
},
|
|
43
54
|
disconnect: {
|
|
44
|
-
timeout: 1000
|
|
55
|
+
timeout: 1000,
|
|
45
56
|
},
|
|
46
57
|
send: {
|
|
47
|
-
timeout: 1000
|
|
48
|
-
}
|
|
58
|
+
timeout: 1000,
|
|
59
|
+
},
|
|
49
60
|
}) {
|
|
50
61
|
super();
|
|
51
62
|
this.options = options;
|
|
52
63
|
if (typeof nfc == undefined) {
|
|
53
|
-
console.warn(
|
|
64
|
+
console.warn('NFC plugin has not been setup properly. Global variable NFC does not exist');
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
static iOSProtocol() {
|
|
57
68
|
return new NFCComProtocol({
|
|
58
69
|
connect: {
|
|
59
|
-
timeout: 10000 // bigger timer on connect as connect launches a reading session
|
|
70
|
+
timeout: 10000, // bigger timer on connect as connect launches a reading session
|
|
60
71
|
},
|
|
61
72
|
disconnect: {
|
|
62
|
-
timeout: 1000
|
|
73
|
+
timeout: 1000,
|
|
63
74
|
},
|
|
64
75
|
send: {
|
|
65
|
-
timeout: 1000
|
|
66
|
-
}
|
|
76
|
+
timeout: 1000,
|
|
77
|
+
},
|
|
67
78
|
});
|
|
68
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* We force tag connection with nfc as we need to refresh tag
|
|
82
|
+
* @param options
|
|
83
|
+
* @returns
|
|
84
|
+
*/
|
|
85
|
+
connect(options) {
|
|
86
|
+
this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected
|
|
87
|
+
return super.connect(options);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Not used as we have rewrote "connect()" function
|
|
91
|
+
* @param options
|
|
92
|
+
* @returns
|
|
93
|
+
*/
|
|
69
94
|
_connect(options) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
95
|
+
return defer(() => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
debug('_connect', options);
|
|
97
|
+
try {
|
|
98
|
+
yield nfc.connect('android.nfc.tech.NfcV', this.options.connect.timeout);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
if (typeof err === 'string') {
|
|
102
|
+
if (err === 'Tag connection failed') {
|
|
103
|
+
throw NfcError.tagConnectionFailed();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw NfcError.unknownError(err);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
73
112
|
}
|
|
74
113
|
_disconnect(options) {
|
|
75
|
-
return
|
|
114
|
+
return defer(() => nfc.close());
|
|
76
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Not used
|
|
118
|
+
* @param options
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
77
121
|
write(data) {
|
|
78
|
-
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
throw new Error('Method not implemented.');
|
|
124
|
+
});
|
|
79
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Not used
|
|
128
|
+
* @param options
|
|
129
|
+
* @returns
|
|
130
|
+
*/
|
|
80
131
|
read() {
|
|
81
|
-
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
throw new Error('Method not implemented.');
|
|
134
|
+
});
|
|
82
135
|
}
|
|
83
136
|
send(data, options) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
debug('NFC plugin response: ', response);
|
|
91
|
-
return hexStringToBuffer(response);
|
|
92
|
-
})
|
|
93
|
-
.catch((errString) => {
|
|
94
|
-
if (typeof errString === "string") {
|
|
95
|
-
const error = stringToError(errString);
|
|
96
|
-
if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {
|
|
97
|
-
this._onConnectionLost(error);
|
|
137
|
+
return defer(() => __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
try {
|
|
139
|
+
const response = yield nfc.transceive(bufferToHexString(data));
|
|
140
|
+
if (typeof response != 'string') {
|
|
141
|
+
throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);
|
|
98
142
|
}
|
|
99
|
-
|
|
143
|
+
debug('NFC plugin response: ', response);
|
|
144
|
+
return hexStringToBuffer(response);
|
|
100
145
|
}
|
|
101
|
-
|
|
102
|
-
|
|
146
|
+
catch (errString) {
|
|
147
|
+
if (typeof errString === 'string') {
|
|
148
|
+
const error = stringToError(errString);
|
|
149
|
+
if (error.code === NfcError.ErrorCode.NotConnectedError ||
|
|
150
|
+
error.code === NfcError.ErrorCode.TagLostError) {
|
|
151
|
+
this._onConnectionLost(error);
|
|
152
|
+
}
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
throw errString;
|
|
157
|
+
}
|
|
103
158
|
}
|
|
104
|
-
});
|
|
105
|
-
return from(promise);
|
|
159
|
+
}));
|
|
106
160
|
}
|
|
107
161
|
_onConnectionLost(error) {
|
|
108
162
|
if (this.connectionState !== ConnectionState.DISCONNECTED) {
|
|
@@ -110,7 +164,6 @@ class NFCComProtocol extends QueueComProtocol {
|
|
|
110
164
|
}
|
|
111
165
|
}
|
|
112
166
|
}
|
|
113
|
-
;
|
|
114
167
|
/**
|
|
115
168
|
* Convert error string returned by the plugin into an error object
|
|
116
169
|
* It only checks a few Android error string for now
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iotize-device-com-nfc.cordova.js","sources":["../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/nfc-com-protocol.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/iotize-device-com-nfc.cordova.ts"],"sourcesContent":["export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iotize-device-com-nfc.cordova.js","sources":["../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/nfc-com-protocol.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/iotize-device-com-nfc.cordova.ts"],"sourcesContent":["export class NfcError extends Error {\r\n constructor(public code: NfcError.ErrorCode, message: string) {\r\n super(message);\r\n }\r\n\r\n public static tagLostError() {\r\n return new NfcError(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\r\n }\r\n\r\n public static notConnectedError() {\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n }\r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = 'NfcUnknownError',\r\n InternalError = 'NfcInternalError',\r\n TagLostError = 'NfcTagLostError',\r\n NotConnectedError = 'NfcNotConnectedError',\r\n }\r\n}\r\n","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000,\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n }\r\n ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000, // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000,\r\n },\r\n send: {\r\n timeout: 1000,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n *\r\n * TODO complete implementation with other error types\r\n *\r\n * @param errString\r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n } else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"exports":[{"from":"./www/definitions"},{"from":"./www/parse-ndef-message"}],"metadata":{"NFCComProtocol":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@iotize/tap/protocol/core","name":"QueueComProtocol","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"exports":[{"from":"./www/definitions"},{"from":"./www/parse-ndef-message"}],"metadata":{"NFCComProtocol":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@iotize/tap/protocol/core","name":"QueueComProtocol","line":20,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@iotize/tap/protocol/api","name":"ComProtocolOptions","line":22,"character":13}]}],"connect":[{"__symbolic":"method"}],"_connect":[{"__symbolic":"method"}],"_disconnect":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"read":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"_onConnectionLost":[{"__symbolic":"method"}]},"statics":{"iOSProtocol":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NFCComProtocol"},"arguments":[{"connect":{"timeout":10000},"disconnect":{"timeout":1000},"send":{"timeout":1000}}]}}}},"CordovaInterface":{"__symbolic":"interface"},"NfcError":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Error"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"NfcError"},"member":"ErrorCode"},{"__symbolic":"reference","name":"string"}]}]},"statics":{"tagLostError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NfcError"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"NfcError"},"member":"ErrorCode"},"member":"TagLostError"},"NFC tag lost"]}},"notConnectedError":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NfcError"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"NfcError"},"member":"ErrorCode"},"member":"NotConnectedError"},"NFC tag is not connected"]}}}}},"origins":{"NFCComProtocol":"./www/nfc-com-protocol","CordovaInterface":"./www/cordova-interface","NfcError":"./www/errors"},"importAs":"@iotize/device-com-nfc.cordova"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iotize/device-com-nfc.cordova",
|
|
3
3
|
"main": "bundles/iotize-device-com-nfc.cordova.umd.js",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.6",
|
|
5
5
|
"description": "Near Field Communication (NFC) Plugin. Read and write NDEF messages to NFC tags and share NDEF messages with peers.",
|
|
6
6
|
"cordova": {
|
|
7
7
|
"id": "@iotize/device-com-nfc.cordova",
|
|
Binary file
|
|
Binary file
|
|
@@ -1093,27 +1093,12 @@ public class NfcPlugin extends CordovaPlugin implements NfcAdapter.OnNdefPushCom
|
|
|
1093
1093
|
|
|
1094
1094
|
nfcProtocol.connect();
|
|
1095
1095
|
setTimeout(timeout);
|
|
1096
|
-
Log.d(TAG, "NFC Connection
|
|
1096
|
+
Log.d(TAG, "NFC Connection successful");
|
|
1097
1097
|
callbackContext.success();
|
|
1098
|
-
|
|
1099
1098
|
} catch (IOException ex) {
|
|
1100
1099
|
Log.e(TAG, "Tag connection failed", ex);
|
|
1101
1100
|
callbackContext.error("Tag connection failed");
|
|
1102
|
-
|
|
1103
|
-
// Users should never get these reflection errors
|
|
1104
|
-
} catch (ClassNotFoundException e) {
|
|
1105
|
-
Log.e(TAG, e.getMessage(), e);
|
|
1106
|
-
callbackContext.error(e.getMessage());
|
|
1107
|
-
} catch (NoSuchMethodException e) {
|
|
1108
|
-
Log.e(TAG, e.getMessage(), e);
|
|
1109
|
-
callbackContext.error(e.getMessage());
|
|
1110
|
-
} catch (IllegalAccessException e) {
|
|
1111
|
-
Log.e(TAG, e.getMessage(), e);
|
|
1112
|
-
callbackContext.error(e.getMessage());
|
|
1113
|
-
} catch (InvocationTargetException e) {
|
|
1114
|
-
Log.e(TAG, e.getMessage(), e);
|
|
1115
|
-
callbackContext.error(e.getMessage());
|
|
1116
|
-
} catch (Exception e) {
|
|
1101
|
+
} catch (Throwable e) {
|
|
1117
1102
|
Log.e(TAG, e.getMessage(), e);
|
|
1118
1103
|
callbackContext.error(e.getMessage());
|
|
1119
1104
|
}
|
package/www/errors.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare class NfcError extends Error {
|
|
|
4
4
|
static tagLostError(): NfcError;
|
|
5
5
|
static notConnectedError(): NfcError;
|
|
6
6
|
static unknownError(errString: string): NfcError;
|
|
7
|
+
static tagConnectionFailed(): void;
|
|
7
8
|
static internalError(message: string): void;
|
|
8
9
|
}
|
|
9
10
|
export declare namespace NfcError {
|
|
@@ -5,9 +5,30 @@ import { NfcError } from './errors';
|
|
|
5
5
|
export declare class NFCComProtocol extends QueueComProtocol {
|
|
6
6
|
constructor(options?: ComProtocolOptions);
|
|
7
7
|
static iOSProtocol(): NFCComProtocol;
|
|
8
|
+
/**
|
|
9
|
+
* We force tag connection with nfc as we need to refresh tag
|
|
10
|
+
* @param options
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
connect(options?: ComProtocolConnectOptions): Observable<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Not used as we have rewrote "connect()" function
|
|
16
|
+
* @param options
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
8
19
|
_connect(options?: ComProtocolConnectOptions): Observable<any>;
|
|
9
20
|
_disconnect(options?: ComProtocolDisconnectOptions): Observable<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Not used
|
|
23
|
+
* @param options
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
10
26
|
write(data: Uint8Array): Promise<any>;
|
|
27
|
+
/**
|
|
28
|
+
* Not used
|
|
29
|
+
* @param options
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
11
32
|
read(): Promise<Uint8Array>;
|
|
12
33
|
send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array>;
|
|
13
34
|
_onConnectionLost(error: NfcError): void;
|