UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

108 lines 12.8 kB
import { Injectable } from '@angular/core'; import { createMonitoringTicker, MonitorEngine, MonitoringController, } from '@iotize/tap/data'; import { Subject } from 'rxjs'; import { filter, map, share, switchMap } from 'rxjs/operators'; import { CurrentDeviceService } from '../../current-device.service'; import * as i0 from "@angular/core"; import * as i1 from "../../current-device.service"; /** * Experimental data logger class * * @experimental */ export class IonicDataLogger { service; controller; /** * Packet per packet stream */ stream; /** * Whole data stream */ _data = []; _data$ = new Subject(); get data() { return this._data$.asObservable(); } _packetPerBundles = {}; options = { period: 1000, }; constructor(service) { this.service = service; this.controller = new MonitoringController({ state: MonitorEngine.State.PAUSE, dueTime: 0, period: this.options.period, refresh: false, }); this.stream = createMonitoringTicker(this.controller) .pipe(switchMap(async (_) => { try { return await this.service.tap.dataLog.dequeue(); } catch (err) { console.warn('Failed to read packet', err); return undefined; } }), filter((value) => { console.log('pass filter', value); return value !== undefined; }), map((entry) => { // Fix as variables is not populated by default // if (Object.keys(entry.data).length === 0) { // entry.packet.variables = entry.packet.rawVariables; // } const output = entry; output.decodedData = entry.data; this.storePacket(output); return output; })) .pipe(share()); } getCacheForBundle(bundleId) { return this._packetPerBundles[bundleId]; } set period(v) { // console.info(`Update period to ${v} ms`); this.controller.setPeriod(v); } get events() { return this.stream; } get running() { return this.controller.state === MonitorEngine.State.START; } storePacket(packet) { if (!(packet.meta.bundleId in this._packetPerBundles)) { this._packetPerBundles[packet.meta.bundleId] = { name: packet.meta.bundleName || `Bundle ${packet.meta.bundleId}`, id: packet.meta.bundleId, packets: [], }; } this._packetPerBundles[packet.meta.bundleId].packets.push(packet); this._data.push(packet); this._data$.next(this._data); } pause() { this.controller.pause(); } stop() { this.controller.stop(); } start() { this.controller.start(); return this.events; } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IonicDataLogger, deps: [{ token: i1.CurrentDeviceService }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IonicDataLogger, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IonicDataLogger, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.CurrentDeviceService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi9leHRlbnNpb25zL2RhdGFsb2dnZXIvZGF0YS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBa0JwRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFzQk47SUFyQnBCLFVBQVUsQ0FBdUI7SUFFakM7O09BRUc7SUFDSCxNQUFNLENBQXlDO0lBQy9DOztPQUVHO0lBQ0ssS0FBSyxHQUFpQyxFQUFFLENBQUM7SUFDekMsTUFBTSxHQUEwQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3RFLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCLEdBQW9ELEVBQUUsQ0FBQztJQUVqRSxPQUFPLEdBQW9DO1FBQ2hELE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQztJQUVGLFlBQW9CLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQztZQUN6QyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2hDLE9BQU8sRUFB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QUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzJIQXRHVSxlQUFlOytIQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGNyZWF0ZU1vbml0b3JpbmdUaWNrZXIsXG4gIE1vbml0b3JFbmdpbmUsXG4gIE1vbml0b3JpbmdDb250cm9sbGVyLFxufSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IERhdGFMb2dnZXIgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhLWxvZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEN1cnJlbnREZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3VycmVudC1kZXZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgSW9uaWNEYXRhTG9nZ2VyIHtcbiAgZXhwb3J0IGludGVyZmFjZSBQYWNrZXRJbmZvPERhdGFUeXBlID0gYW55PiBleHRlbmRzIERhdGFMb2dnZXIuUmF3UGFja2V0IHtcbiAgICBtZXRhOiBEYXRhTG9nZ2VyLlJhd1BhY2tldC5NZXRhICYgeyBidW5kbGVOYW1lPzogc3RyaW5nIH07XG4gICAgZGVjb2RlZERhdGE6IERhdGFUeXBlO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDYWNoZVBhY2tldFR5cGUge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHBhY2tldHM6IElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvPGFueT5bXTtcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlT3B0aW9ucyB7XG4gICAgcGVyaW9kOiBudW1iZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBlcmltZW50YWwgZGF0YSBsb2dnZXIgY2xhc3NcbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJb25pY0RhdGFMb2dnZXIge1xuICBjb250cm9sbGVyOiBNb25pdG9yaW5nQ29udHJvbGxlcjtcblxuICAvKipcbiAgICogUGFja2V0IHBlciBwYWNrZXQgc3RyZWFtXG4gICAqL1xuICBzdHJlYW06IE9ic2VydmFibGU8SW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm8+O1xuICAvKipcbiAgICogV2hvbGUgZGF0YSBzdHJlYW1cbiAgICovXG4gIHByaXZhdGUgX2RhdGE6IElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvW10gPSBbXTtcbiAgcHJpdmF0ZSBfZGF0YSQ6IFN1YmplY3Q8SW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm9bXT4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgZ2V0IGRhdGEoKTogT2JzZXJ2YWJsZTxJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgX3BhY2tldFBlckJ1bmRsZXM6IFJlY29yZDxudW1iZXIsIElvbmljRGF0YUxvZ2dlci5DYWNoZVBhY2tldFR5cGU+ID0ge307XG5cbiAgcHVibGljIG9wdGlvbnM6IElvbmljRGF0YUxvZ2dlci5JbnN0YW5jZU9wdGlvbnMgPSB7XG4gICAgcGVyaW9kOiAxMDAwLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogQ3VycmVudERldmljZVNlcnZpY2UpIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIgPSBuZXcgTW9uaXRvcmluZ0NvbnRyb2xsZXIoe1xuICAgICAgc3RhdGU6IE1vbml0b3JFbmdpbmUuU3RhdGUuUEFVU0UsXG4gICAgICBkdWVUaW1lOiAwLFxuICAgICAgcGVyaW9kOiB0aGlzLm9wdGlvbnMucGVyaW9kLFxuICAgICAgcmVmcmVzaDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0cmVhbSA9IGNyZWF0ZU1vbml0b3JpbmdUaWNrZXIodGhpcy5jb250cm9sbGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyAoXykgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2aWNlLnRhcC5kYXRhTG9nLmRlcXVldWUoKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHJlYWQgcGFja2V0JywgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyPERhdGFMb2dnZXIuUmF3UGFja2V0IHwgdW5kZWZpbmVkLCBEYXRhTG9nZ2VyLlJhd1BhY2tldD4oXG4gICAgICAgICAgKHZhbHVlKTogdmFsdWUgaXMgRGF0YUxvZ2dlci5SYXdQYWNrZXQgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Bhc3MgZmlsdGVyJywgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBtYXA8RGF0YUxvZ2dlci5SYXdQYWNrZXQsIElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvPigoZW50cnkpID0+IHtcbiAgICAgICAgICAvLyBGaXggYXMgdmFyaWFibGVzIGlzIG5vdCBwb3B1bGF0ZWQgYnkgZGVmYXVsdFxuICAgICAgICAgIC8vICAgaWYgKE9iamVjdC5rZXlzKGVudHJ5LmRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIC8vICAgICAgIGVudHJ5LnBhY2tldC52YXJpYWJsZXMgPSBlbnRyeS5wYWNrZXQucmF3VmFyaWFibGVzO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGVudHJ5IGFzIElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvO1xuICAgICAgICAgIG91dHB1dC5kZWNvZGVkRGF0YSA9IGVudHJ5LmRhdGE7XG4gICAgICAgICAgdGhpcy5zdG9yZVBhY2tldChvdXRwdXQpO1xuICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIGdldENhY2hlRm9yQnVuZGxlKGJ1bmRsZUlkOiBudW1iZXIpOiBJb25pY0RhdGFMb2dnZXIuQ2FjaGVQYWNrZXRUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fcGFja2V0UGVyQnVuZGxlc1tidW5kbGVJZF07XG4gIH1cblxuICBzZXQgcGVyaW9kKHY6IG51bWJlcikge1xuICAgIC8vIGNvbnNvbGUuaW5mbyhgVXBkYXRlIHBlcmlvZCB0byAke3Z9IG1zYCk7XG4gICAgdGhpcy5jb250cm9sbGVyLnNldFBlcmlvZCh2KTtcbiAgfVxuXG4gIGdldCBldmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtO1xuICB9XG5cbiAgZ2V0IHJ1bm5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zdGF0ZSA9PT0gTW9uaXRvckVuZ2luZS5TdGF0ZS5TVEFSVDtcbiAgfVxuXG4gIHN0b3JlUGFja2V0KHBhY2tldDogSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm88UmVjb3JkPHN0cmluZywgYW55Pj4pIHtcbiAgICBpZiAoIShwYWNrZXQubWV0YS5idW5kbGVJZCBpbiB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzKSkge1xuICAgICAgdGhpcy5fcGFja2V0UGVyQnVuZGxlc1twYWNrZXQubWV0YS5idW5kbGVJZF0gPSB7XG4gICAgICAgIG5hbWU6IHBhY2tldC5tZXRhLmJ1bmRsZU5hbWUgfHwgYEJ1bmRsZSAke3BhY2tldC5tZXRhLmJ1bmRsZUlkfWAsXG4gICAgICAgIGlkOiBwYWNrZXQubWV0YS5idW5kbGVJZCxcbiAgICAgICAgcGFja2V0czogW10sXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzW3BhY2tldC5tZXRhLmJ1bmRsZUlkXS5wYWNrZXRzLnB1c2gocGFja2V0KTtcblxuICAgIHRoaXMuX2RhdGEucHVzaChwYWNrZXQpO1xuICAgIHRoaXMuX2RhdGEkLm5leHQodGhpcy5fZGF0YSk7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIucGF1c2UoKTtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5jb250cm9sbGVyLnN0b3AoKTtcbiAgfVxuXG4gIHN0YXJ0KCkge1xuICAgIHRoaXMuY29udHJvbGxlci5zdGFydCgpO1xuICAgIHJldHVybiB0aGlzLmV2ZW50cztcbiAgfVxufVxuIl19