@iotize/tap
Version:
IoTize Device client for Javascript
200 lines • 13.2 kB
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhLWxvZy9zcmMvbGliL2RhdGEtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sbUNBQW1DLENBQUM7QUFHM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBTyxRQUFRLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQztBQUN6Qjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFDVSxHQUFRLEVBQ1QsWUFBWSxJQUFJLDJDQUEyQyxFQUFFO1FBRDVELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDVCxjQUFTLEdBQVQsU0FBUyxDQUFvRDtJQUNuRSxDQUFDO0lBRUosaUVBQWlFO0lBQ2pFLGtFQUFrRTtJQUNsRSx1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLFNBQVM7SUFDVCxzREFBc0Q7SUFDdEQsSUFBSTtJQUVFLG9CQUFvQjs7WUFDeEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsQ0FBQztLQUFBO0lBRUssZ0JBQWdCOztZQUNwQixJ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