@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
108 lines • 12.8 kB
JavaScript
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