UNPKG

@iotize/ionic

Version:

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

102 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 { get data() { return this._data$.asObservable(); } constructor(service) { this.service = service; /** * Whole data stream */ this._data = []; this._data$ = new Subject(); this._packetPerBundles = {}; this.options = { period: 1000, }; 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 */ IonicDataLogger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, deps: [{ token: i1.CurrentDeviceService }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ IonicDataLogger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.CurrentDeviceService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi9leHRlbnNpb25zL2RhdGFsb2dnZXIvZGF0YS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBa0JwRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFZMUIsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFRRCxZQUFvQixPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQWZqRDs7V0FFRztRQUNLLFVBQUssR0FBaUMsRUFBRSxDQUFDO1FBQ3pDLFdBQU0sR0FBMEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUt0RSxzQkFBaUIsR0FBb0QsRUFBRSxDQUFDO1FBRWpFLFlBQU8sR0FBb0M7WUFDaEQsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBR0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLG9CQUFvQixDQUFDO1lBQ3pDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzNCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ2xELElBQUksQ0FDSCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLElBQUk7Z0JBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNqRDtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUNKLENBQUMsS0FBSyxFQUFpQyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQztRQUM3QixDQUFDLENBQ0YsRUFDRCxHQUFHLENBQW1ELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUQsK0NBQStDO1lBQy9DLGdEQUFnRDtZQUNoRCw0REFBNEQ7WUFDNUQsTUFBTTtZQUNOLE1BQU0sTUFBTSxHQUFHLEtBQW1DLENBQUM7WUFDbkQsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLENBQVM7UUFDbEIsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUF1RDtRQUNqRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRztnQkFDN0MsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hFLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ3hCLE9BQU8sRUFBRSxFQUFFO2FBQ1osQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O2dJQXRHVSxlQUFlO29JQUFmLGVBQWUsY0FGZCxNQUFNOzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTW9uaXRvcmluZ1RpY2tlcixcbiAgTW9uaXRvckVuZ2luZSxcbiAgTW9uaXRvcmluZ0NvbnRyb2xsZXIsXG59IGZyb20gJ0Bpb3RpemUvdGFwL2RhdGEnO1xuaW1wb3J0IHsgRGF0YUxvZ2dlciB9IGZyb20gJ0Bpb3RpemUvdGFwL2RhdGEtbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzaGFyZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3VycmVudERldmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXJyZW50LWRldmljZS5zZXJ2aWNlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBJb25pY0RhdGFMb2dnZXIge1xuICBleHBvcnQgaW50ZXJmYWNlIFBhY2tldEluZm88RGF0YVR5cGUgPSBhbnk+IGV4dGVuZHMgRGF0YUxvZ2dlci5SYXdQYWNrZXQge1xuICAgIG1ldGE6IERhdGFMb2dnZXIuUmF3UGFja2V0Lk1ldGEgJiB7IGJ1bmRsZU5hbWU/OiBzdHJpbmcgfTtcbiAgICBkZWNvZGVkRGF0YTogRGF0YVR5cGU7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENhY2hlUGFja2V0VHlwZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFja2V0czogSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm88YW55PltdO1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VPcHRpb25zIHtcbiAgICBwZXJpb2Q6IG51bWJlcjtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGVyaW1lbnRhbCBkYXRhIGxvZ2dlciBjbGFzc1xuICpcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElvbmljRGF0YUxvZ2dlciB7XG4gIGNvbnRyb2xsZXI6IE1vbml0b3JpbmdDb250cm9sbGVyO1xuXG4gIC8qKlxuICAgKiBQYWNrZXQgcGVyIHBhY2tldCBzdHJlYW1cbiAgICovXG4gIHN0cmVhbTogT2JzZXJ2YWJsZTxJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mbz47XG4gIC8qKlxuICAgKiBXaG9sZSBkYXRhIHN0cmVhbVxuICAgKi9cbiAgcHJpdmF0ZSBfZGF0YTogSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm9bXSA9IFtdO1xuICBwcml2YXRlIF9kYXRhJDogU3ViamVjdDxJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mb1tdPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBPYnNlcnZhYmxlPElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBfcGFja2V0UGVyQnVuZGxlczogUmVjb3JkPG51bWJlciwgSW9uaWNEYXRhTG9nZ2VyLkNhY2hlUGFja2V0VHlwZT4gPSB7fTtcblxuICBwdWJsaWMgb3B0aW9uczogSW9uaWNEYXRhTG9nZ2VyLkluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICBwZXJpb2Q6IDEwMDAsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBDdXJyZW50RGV2aWNlU2VydmljZSkge1xuICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBNb25pdG9yaW5nQ29udHJvbGxlcih7XG4gICAgICBzdGF0ZTogTW9uaXRvckVuZ2luZS5TdGF0ZS5QQVVTRSxcbiAgICAgIGR1ZVRpbWU6IDAsXG4gICAgICBwZXJpb2Q6IHRoaXMub3B0aW9ucy5wZXJpb2QsXG4gICAgICByZWZyZXNoOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RyZWFtID0gY3JlYXRlTW9uaXRvcmluZ1RpY2tlcih0aGlzLmNvbnRyb2xsZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jIChfKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlcnZpY2UudGFwLmRhdGFMb2cuZGVxdWV1ZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gcmVhZCBwYWNrZXQnLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXI8RGF0YUxvZ2dlci5SYXdQYWNrZXQgfCB1bmRlZmluZWQsIERhdGFMb2dnZXIuUmF3UGFja2V0PihcbiAgICAgICAgICAodmFsdWUpOiB2YWx1ZSBpcyBEYXRhTG9nZ2VyLlJhd1BhY2tldCA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncGFzcyBmaWx0ZXInLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIG1hcDxEYXRhTG9nZ2VyLlJhd1BhY2tldCwgSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm8+KChlbnRyeSkgPT4ge1xuICAgICAgICAgIC8vIEZpeCBhcyB2YXJpYWJsZXMgaXMgbm90IHBvcHVsYXRlZCBieSBkZWZhdWx0XG4gICAgICAgICAgLy8gICBpZiAoT2JqZWN0LmtleXMoZW50cnkuZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gICAgICAgZW50cnkucGFja2V0LnZhcmlhYmxlcyA9IGVudHJ5LnBhY2tldC5yYXdWYXJpYWJsZXM7XG4gICAgICAgICAgLy8gICB9XG4gICAgICAgICAgY29uc3Qgb3V0cHV0ID0gZW50cnkgYXMgSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm87XG4gICAgICAgICAgb3V0cHV0LmRlY29kZWREYXRhID0gZW50cnkuZGF0YTtcbiAgICAgICAgICB0aGlzLnN0b3JlUGFja2V0KG91dHB1dCk7XG4gICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgZ2V0Q2FjaGVGb3JCdW5kbGUoYnVuZGxlSWQ6IG51bWJlcik6IElvbmljRGF0YUxvZ2dlci5DYWNoZVBhY2tldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzW2J1bmRsZUlkXTtcbiAgfVxuXG4gIHNldCBwZXJpb2QodjogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5pbmZvKGBVcGRhdGUgcGVyaW9kIHRvICR7dn0gbXNgKTtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0UGVyaW9kKHYpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJlYW07XG4gIH1cblxuICBnZXQgcnVubmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnN0YXRlID09PSBNb25pdG9yRW5naW5lLlN0YXRlLlNUQVJUO1xuICB9XG5cbiAgc3RvcmVQYWNrZXQocGFja2V0OiBJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mbzxSZWNvcmQ8c3RyaW5nLCBhbnk+Pikge1xuICAgIGlmICghKHBhY2tldC5tZXRhLmJ1bmRsZUlkIGluIHRoaXMuX3BhY2tldFBlckJ1bmRsZXMpKSB7XG4gICAgICB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzW3BhY2tldC5tZXRhLmJ1bmRsZUlkXSA9IHtcbiAgICAgICAgbmFtZTogcGFja2V0Lm1ldGEuYnVuZGxlTmFtZSB8fCBgQnVuZGxlICR7cGFja2V0Lm1ldGEuYnVuZGxlSWR9YCxcbiAgICAgICAgaWQ6IHBhY2tldC5tZXRhLmJ1bmRsZUlkLFxuICAgICAgICBwYWNrZXRzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuX3BhY2tldFBlckJ1bmRsZXNbcGFja2V0Lm1ldGEuYnVuZGxlSWRdLnBhY2tldHMucHVzaChwYWNrZXQpO1xuXG4gICAgdGhpcy5fZGF0YS5wdXNoKHBhY2tldCk7XG4gICAgdGhpcy5fZGF0YSQubmV4dCh0aGlzLl9kYXRhKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIHRoaXMuY29udHJvbGxlci5wYXVzZSgpO1xuICB9XG5cbiAgc3RvcCgpIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc3RvcCgpO1xuICB9XG5cbiAgc3RhcnQoKSB7XG4gICAgdGhpcy5jb250cm9sbGVyLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzO1xuICB9XG59XG4iXX0=