UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

124 lines 10.3 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 '@iotize/tap/auth'; import '@iotize/tap/service/impl/single-packet'; import { retryWithDelay } from '@iotize/common/rxjs'; import { StepOperations } from '@iotize/common/task-manager'; import { ComProtocol } from '@iotize/tap/protocol/api'; import { SinglePacketStoreInfo, SinglePacketStoreLoader, } from '@iotize/tap/service/impl/single-packet'; import { defer } from 'rxjs'; import { map } from 'rxjs/operators'; export class TapNLinkUpdater extends StepOperations { constructor(steps, options = {}) { super(StepOperations.createSequentialContainers(steps)); this.options = options; } static create(tap, firmwareUpdateData, options = TapNLinkUpdater.DEFAULT_OPTIONS) { if (!options.loader) { options.loader = TapNLinkUpdater.DEFAULT_OPTIONS.loader; } const loadFirmwareUpdateOperations = SinglePacketStoreLoader.createOperationsFromBytes(firmwareUpdateData, tap.service.singlePacket, options.loader); const expectedCRC = SinglePacketStoreLoader.computeCRC(firmwareUpdateData); const operations = [ (observer, context) => __awaiter(this, void 0, void 0, function* () { observer.next({ step: 'setup', }); if (!tap.encryption.isStarted) { yield tap.encryption.start(); } }), ...loadFirmwareUpdateOperations, // singlePacketStoreLoader // .asObservable() // .pipe( // map<SinglePacketStoreLoader.Event, TapNLinkUpdater.Progress>( // (progress: SinglePacketStoreLoader.Event, index: number) => { // return { // step: 'load', // payload: progress // }; // } // ) // ), (observer, context) => __awaiter(this, void 0, void 0, function* () { var _a; try { observer.next({ step: 'apply', }); (yield tap.service.singlePacket.executeSinglePacketInStore(expectedCRC)).successful(); observer.next({ step: 'finish', executeRequestTimeout: false, }); } catch (err) { // Fix for old firmware that do not respond to execute command if (((_a = err === null || err === void 0 ? void 0 : err.cause) === null || _a === void 0 ? void 0 : _a.code) === ComProtocol.ErrorCode.TimeoutError) { observer.next({ step: 'finish', executeRequestTimeout: true, }); return; } throw err; } }), ]; if (options.reconnectAfterUpdate) { operations.push(TapNLinkUpdater.waitingForReconnection(tap, options)); } return new TapNLinkUpdater(operations, options); } // public start( // firmwareUpdateData: Uint8Array // ): Observable<TapNLinkUpdater.Progress> { // // const singlePacketStoreLoader = tap.service.singlePacket // // .createStoreLoaderFromBytes(firmwareUpdateData); // } isFirmwareUpdateAvailable(tap) { return __awaiter(this, void 0, void 0, function* () { const info = (yield tap.service.singlePacket.getInfo()).body(); return info.state === SinglePacketStoreInfo.State.EMPTY; }); } static waitingForReconnection(tap, options) { const maxRetry = (options === null || options === void 0 ? void 0 : options.reconnectRetryCount) === undefined ? TapNLinkUpdater.DEFAULT_OPTIONS.reconnectRetryCount : options.reconnectRetryCount; return retryWithDelay(defer(() => tap.connect()), { delay: (options === null || options === void 0 ? void 0 : options.reconnectRetryDelay) === undefined ? TapNLinkUpdater.DEFAULT_OPTIONS.reconnectRetryDelay : options.reconnectRetryDelay, retryCount: maxRetry, }).pipe(map((v, index) => { return { step: 'restart', attempt: index + 1, maxRetry, message: `Tap reconnection attempt n°${index + 1}/${maxRetry + 1}`, }; })); } } (function (TapNLinkUpdater) { TapNLinkUpdater.DEFAULT_OPTIONS = { reconnectAfterUpdate: true, reconnectRetryCount: 5, reconnectRetryDelay: 5000, loader: { execute: false, maxRetry: 10, retryDelay: 1000, }, }; })(TapNLinkUpdater || (TapNLinkUpdater = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlybXdhcmUtdXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZmlybXdhcmUtdXBkYXRlL3NyYy9saWIvZmlybXdhcmUtdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyx3Q0FBd0MsQ0FBQztBQUVoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxLQUFLLEVBQWlDLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxHQUFHLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUkxQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUdwQztJQTJFQyxZQUNFLEtBQTRELEVBQzVDLFVBQW1DLEVBQUU7UUFFckQsS0FBSyxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRnhDLFlBQU8sR0FBUCxPQUFPLENBQThCO0lBR3ZELENBQUM7SUEvRUQsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFRLEVBQ1Isa0JBQThCLEVBQzlCLFVBQW1DLGVBQWUsQ0FBQyxlQUFlO1FBRWxFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDekQ7UUFDRCxNQUFNLDRCQUE0QixHQUNoQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FDL0Msa0JBQWtCLEVBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxF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