@iotize/tap
Version:
IoTize Device client for Javascript
131 lines • 8.77 kB
JavaScript
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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