UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

131 lines 8.77 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { ApduResponse } from '@iotize/tap/client/api'; import { NumberConverter, TapClient } from '@iotize/tap/client/impl'; import { Subject } from 'rxjs'; import { debug } from '../logger'; import { ServiceCallRunner } from './service-call-runner'; import { ServiceContainer } from './service-container'; import { NFC_PAIRING_COMMAND } from './tap-config'; import { TapError } from './tap-errors'; const TAG = 'Device'; /** * */ export class Tap { constructor(client) { this._events = new Subject(); this._client = client; this._lwm2m = new ServiceCallRunner(this.client); this.service = new ServiceContainer(this._lwm2m); // 'service', (context) => new ServiceContainer(context.tap.lwm2m) // this._scramInterceptor = new ScramInterceptor( // this._services.scram, // this.apiConfig // ); // this._client.addInterceptor(this._scramInterceptor); // this._initCache(); // this._converterProvider = new ConverterProvider(PathToTypeMap, DefaultConverterMap); } get events() { return this._events.asObservable(); } get client() { return this._client; } get lwm2m() { return this._lwm2m; } set client(client) { this._client = client; this._lwm2m.client = client; // this._services.client = client; } notifyEvent(event) { this._events.next(event); } static create() { return new Tap(TapClient.create()); } static fromProtocol(protocol) { const client = TapClient.create(); client.addComProtocol(protocol); return new Tap(client); } get protocol() { return this.client.getCurrentProtocol(); } /** * Connect with the given communication protocol * TODO what if there is already a connected communication protocol * @param protocol */ connect(protocol) { debug(TAG, 'connecting...'); // this._clearCache(); if (protocol) { this.client.addComProtocol(protocol, 'default'); } return this._client.connect().toPromise(); } /** * Disconnect device */ disconnect() { debug(TAG, 'disconnecting...'); // if (options.clearCache) { // this.clearCache(); // } // if (options.clearSession) { // this.clearSession(); // } return this._client.disconnect().toPromise(); } isConnected() { if (!this._client) { return false; } return this._client.isConnected(); } /** * Configure current tap instance thanks to a TapConfigurator * @param configurator */ configure(configurator) { return configurator.configure(this).toPromise(); } /** * * @param protocol */ useComProtocol(protocol) { this.client.useComProtocol(protocol); return this; } /** * Send an NFC pairing request */ nfcPairing() { return __awaiter(this, void 0, void 0, function* () { const comProtocol = yield this.client.getCurrentProtocol(); const response = yield comProtocol.send(NFC_PAIRING_COMMAND).toPromise(); if (!response || response.length !== 2) { throw TapError.nfcPairingError(`Tap responded with a frame size of ${(response === null || response === void 0 ? void 0 : response.length) || 0} byte(s) but expecting 2 bytes.`); } const statusCode = NumberConverter.uint16().decode(response); if (statusCode !== ApduResponse.Status.OK) { throw TapError.nfcPairingError(`Tap responded with an invalid APDU response status 0x${statusCode.toString(16)}.`); } return response; }); } } Tap.TAG = 'Tap'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90YXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUM7QUFNckI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sR0FBRztJQTRCZCxZQUFZLE1BQTBCO1FBdEI5QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUF1QmhELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxrRUFBa0U7UUFDbEUsaURBQWlEO1FBQ2pELDRCQUE0QjtRQUM1QixxQkFBcUI7UUFDckIsS0FBSztRQUNMLHVEQUF1RDtRQUN2RCxxQkFBcUI7UUFDckIsdUZBQXVGO0lBQ3pGLENBQUM7SUE5QkQsSUFBVyxNQUFNO1FBQ2YsT0FB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