UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

200 lines 13.2 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/service/impl/data-log'; import { isCodeError } from '@iotize/common/error'; import { TapError } from '@iotize/tap'; import { ResultCode } from '@iotize/tap/client/api'; import { TlvBundleConverter, TLVConverter } from '@iotize/tap/client/impl'; import { interval } from 'rxjs'; import { map, share, switchMap } from 'rxjs/operators'; import { DataLoggerError } from './errors'; const TAG = 'DataLogger'; /** * Experimental data logger class * * @experimental */ export class DataLogger { constructor(tap, converter = new DataLogSinglePacketToDataLogPacketConverter()) { this.tap = tap; this.converter = converter; } // public static fromTap(tap: Tap, options: DataLogger.Options) { // const converter = DataLogPacketConverter.createFromManager( // tap.bundles, // tap.variables // ); // return new DataLogger(tap, converter, options); // } isAcquisitionRunning() { return __awaiter(this, void 0, void 0, function* () { return (yield this.tap.service.dataLog.isRunning()).body(); }); } startAcquisition() { return __awaiter(this, void 0, void 0, function* () { try { (yield this.tap.service.dataLog.run()).successful(); } catch (err) { if (isCodeError(TapError.Code.ResponseStatusError, err)) { const statusCode = err.response.status; if (statusCode === ResultCode.UNAUTHORIZED) { throw DataLoggerError.notAuthorizedToPerformAction(`You are not authorized to start data log acquisition. Login to perform this action`, err); } } throw err; } }); } stopAcquisition() { return __awaiter(this, void 0, void 0, function* () { try { (yield this.tap.service.dataLog.stop()).successful(); } catch (err) { if (isCodeError(TapError.Code.ResponseStatusError, err)) { const statusCode = err.response.status; if (statusCode === ResultCode.UNAUTHORIZED) { throw DataLoggerError.notAuthorizedToPerformAction(`You are not authorized to stop data log acquisition. Login to perform this action`, err); } } throw err; } }); } /** * Dequeue one data log packet */ dequeue() { return __awaiter(this, void 0, void 0, function* () { const singlePacketResponse = yield this.tap.service.dataLog.dequeueOnePacket(); const singlePacket = singlePacketResponse.body(); // singlePacketResponse.successful(); // const singlePacketFrame = singlePacketResponse.rawBody(); try { return this.converter.decode(singlePacket); } catch (err) { throw DataLoggerError.decodePacketError(singlePacket, err); } }); } /** * Get stored packet count in Tap */ getPacketCount() { return __awaiter(this, void 0, void 0, function* () { return (yield this.tap.service.dataLog.getPacketCount()).body(); }); } /** * Download all packets from store */ download(options) { return interval((options === null || options === void 0 ? void 0 : options.period) || 400).pipe(switchMap((time) => this.dequeue()), map((datalogPacket, index) => { try { return { type: 'new-packet', progress: { total: undefined, loaded: index + 1, }, packet: datalogPacket, }; } catch (err) { return { type: 'error', error: err, }; } }), share()); } } /** * * @experimental */ export class DataLogSinglePacketToDataLogPacketConverter { constructor(tlvConverter = new TLVConverter(), bundleConverter = new TlvBundleConverter()) { this.tlvConverter = tlvConverter; this.bundleConverter = bundleConverter; } // encode(data: SinglePacket): DataLogger.RawPacket { // throw new Error('Method not implemented.'); // } decode(singlePacket) { const data = singlePacket.payload.data; const tlvTree = this.tlvConverter.decode(data); const bundleId = tlvTree.header.id; // console.log(tlvTree); const variables = tlvTree.children ? this.bundleConverter.decode(tlvTree) : {}; const timeOffset = Date.now() - singlePacket.sendTime * 1000; const logTime = new Date(singlePacket.payload.logTime * 1000 + timeOffset); return { meta: { packetId: singlePacket.header.packetId, senderId: singlePacket.header.senderId, bundleId, logTime, }, data: variables, }; } } /** * * @experimental */ // export class DataLogPacketConverter<T = Record<string, any>> // implements // EncoderDecoder< // DataLogger.PacketInfo<T>, // { raw: Uint8Array; singlePacket: SinglePacket } // > { // constructor( // public meta?: BundleConfig[], // public rawPacketConverter: RawPacketConverter = new RawPacketConverter() // ) { } // public static createFromMeta<T>( // meta: BundleConfig[], // rawPacketConverter: RawPacketConverter = new RawPacketConverter() // ): DataLogPacketConverter<T> { // return new DataLogPacketConverter(meta, rawPacketConverter); // } // encode( // type: DataLogger.PacketInfo<T> // ): { raw: Uint8Array; singlePacket: SinglePacket } { // throw new Error('Method not implemented.'); // } // decode(data: { // raw: Uint8Array; // singlePacket: SinglePacket; // }): DataLogger.PacketInfo<T> { // const singlePacket = data.singlePacket; // const dataLogPacket = this.rawPacketConverter.decode( // singlePacket.payload.data // ); // const timeOffset = Date.now() - singlePacket.sendTime * 1000; // dataLogPacket.bundle.logTime = new Date( // singlePacket.payload.logTime * 1000 + timeOffset // ); // const packet = populateDataLogPacket<T>(dataLogPacket, this.meta || []); // return { // packet, // rawSinglePacket: data.raw, // singlePacket // }; // } // } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhLWxvZy9zcmMvbGliL2RhdGEtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sbUNBQW1DLENBQUM7QUFHM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBTyxRQUFRLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQztBQUN6Qjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFDVSxHQUFRLEVBQ1QsWUFBWSxJQUFJLDJDQUEyQyxFQUFFO1FBRDVELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDVCxjQUFTLEdBQVQsU0FBUyxDQUFvRDtJQUNuRSxDQUFDO0lBRUosaUVBQWlFO0lBQ2pFLGtFQUFrRTtJQUNsRSx1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLFNBQVM7SUFDVCxzREFBc0Q7SUFDdEQsSUFBSTtJQUVFLG9CQUFvQjs7WUFDeEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsQ0FBQztLQUFBO0lBRUssZ0JBQWdCOztZQUNwQixJQUFJO2dCQUNGLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyRDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLElBQ0UsV0FBVyxDQUNULFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQ2pDLEdBQUcsQ0FDSixFQUNEO29CQUNBLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUN2QyxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUMsWUFBWSxFQUFFO3dCQUMxQyxNQUFNLGVBQWUsQ0FBQyw0QkFBNEIsQ0FDaEQsb0ZBQW9GLEVBQ3BGLEdBQUcsQ0FDSixDQUFDO3FCQUNIO2lCQUNGO2dCQUNELE1BQU0sR0FBRyxDQUFDO2FBQ1g7UUFDSCxDQUFDO0tBQUE7SUFFSyxlQUFlOztZQUNuQixJQUFJO2dCQUNGLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN0RDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLElBQ0UsV0FBVyxDQUNULFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQ2pDLEdBQUcsQ0FDSixFQUNEO29CQUNBLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUN2QyxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUMsWUFBWSxFQUFFO3dCQUMxQyxNQUFNLGVBQWUsQ0FBQyw0QkFBNEIsQ0FDaEQsbUZBQW1GLEVBQ25GLEdBQUcsQ0FDSixDQUFDO3FCQUNIO2lCQUNGO2dCQUNELE1BQU0sR0FBRyxDQUFDO2FBQ1g7UUFDSCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNHLE9BQU87O1lBQ1gsTUFBTSxvQkFBb0IsR0FDeEIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxxQ0FBcUM7WUFDckMsNERBQTREO1lBQzVELElBQUk7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM1QztZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE1BQU0sZUFBZSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxHQUFZLENBQUMsQ0FBQzthQUNyRTtRQUNILENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0csY0FBYzs7WUFDbEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEUsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsT0FFUjtRQUNDLE9BQU8sUUFBUSxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sS0FBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ25DLEdBQUcsQ0FDRCxDQUNFLGFBQW1DLEVBQ25DLEtBQWEsRUFDYSxFQUFFO1lBQzVCLElBQUk7Z0JBQ0YsT0FBTztvQkFDTCxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsUUFBUSxFQUFFO3dCQUNSLEtBQUssRUFBRSxTQUFTO3dCQUNoQixNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUM7cUJBQ2xCO29CQUNELE1BQU0sRUFBRSxhQUFhO2lCQUN0QixDQUFDO2FBQ0g7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixPQUFPO29CQUNMLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxHQUFZO2lCQUNwQixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQ0YsRUFDRCxLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBb0VEOzs7R0FHRztBQUNILE1BQU0sT0FBTywyQ0FBMkM7SUFHdEQsWUFDUyxlQUFlLElBQUksWUFBWSxFQUFFLEVBQ2pDLGtCQUFrQixJQUFJLGtCQUFrQixFQUFFO1FBRDFDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7SUFDaEQsQ0FBQztJQUVKLHFEQUFxRDtJQUNyRCxrREFBa0Q7SUFDbEQsSUFBSTtJQUVKLE1BQU0sQ0FBQyxZQUEwQjtRQUMvQixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsd0JBQXdCO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDdEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFFM0UsT0FBTztZQUNMLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUN0QyxRQUFRLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUN0QyxRQUFRO2dCQUNSLE9BQU87YUFDUjtZQUNELElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCwrREFBK0Q7QUFDL0QsaUJBQWlCO0FBQ2pCLHNCQUFzQjtBQUN0QixnQ0FBZ0M7QUFDaEMsc0RBQXNEO0FBQ3RELFVBQVU7QUFDVixtQkFBbUI7QUFDbkIsd0NBQXdDO0FBQ3hDLG1GQUFtRjtBQUNuRixZQUFZO0FBRVosdUNBQXVDO0FBQ3ZDLGdDQUFnQztBQUNoQyw0RUFBNEU7QUFDNUUscUNBQXFDO0FBQ3JDLHVFQUF1RTtBQUN2RSxRQUFRO0FBRVIsY0FBYztBQUNkLHlDQUF5QztBQUN6QywyREFBMkQ7QUFDM0Qsc0RBQXNEO0FBQ3RELFFBQVE7QUFFUixxQkFBcUI7QUFDckIsMkJBQTJCO0FBQzNCLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMsa0RBQWtEO0FBQ2xELGdFQUFnRTtBQUNoRSx3Q0FBd0M7QUFDeEMsYUFBYTtBQUNiLHdFQUF3RTtBQUN4RSxtREFBbUQ7QUFDbkQsK0RBQStEO0FBQy9ELGFBQWE7QUFDYixtRkFBbUY7QUFDbkYsbUJBQW1CO0FBQ25CLHNCQUFzQjtBQUN0Qix5Q0FBeUM7QUFDekMsMkJBQTJCO0FBQzNCLGFBQWE7QUFDYixRQUFRO0FBQ1IsSUFBSSJ9