UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

124 lines 8 kB
import { VariableType } from '@iotize/tap/service/impl/variable'; import { ByteOrder16Bits, ByteOrder32Bits } from '../definitions'; import { toEnumFromValue } from '../util'; export class IotizeVariableModel { constructor(data, iotizeModule, bundle) { this.data = data; this.iotizeModule = iotizeModule; if (bundle) { this._bundle = bundle; } } toJson() { return this.data; } module() { return this.iotizeModule; } /** * Size (int bits) of one element */ valueSize() { return IotizeVariableModel.unitSizeToBitSize(parseInt(this.data.$.Unit)); } valueQuantity() { return Number(this.data.$.Quantity); } name() { return this.data.$.GUI_Name; } id() { return this.data.$.Id; } alias() { return this.data.$.GUI_Alias; } description() { return this.data.$.GUI_Description; } unit() { return this.data.$.GUI_DispUnit; } bundle() { return this._bundle; } // public type(): VariableType.Data { // if (this.data.$.GUI_float && this.data.$.GUI_float == 1) { // return VariableType.Data.FLOAT32; // } else if (this.data.$.GUI_unsigned && this.data.$.GUI_unsigned == 1) { // return VariableType.Data.UINT32; // } else { // return VariableType.Data.INT32; // } // } dataType() { const unit = parseInt(this.data.$.Unit, 10); if (this.data.$.GUI_float && this.data.$.GUI_float == 1) { return VariableType.Data.FLOAT32; } else if (this.data.$.GUI_unsigned && this.data.$.GUI_unsigned == 1) { switch (unit) { case 0: return VariableType.Data.BOOLEAN; case 1: return VariableType.Data.UINT8; case 2: return VariableType.Data.UINT16; case 3: return VariableType.Data.UINT32; default: throw new Error(`Invalid data size "${unit}" for variable ${this.name()}`); } } else { switch (unit) { case 0: return VariableType.Data.BOOLEAN; case 1: return VariableType.Data.INT8; case 2: return VariableType.Data.INT16; case 3: return VariableType.Data.INT32; default: throw new Error(`Invalid data size "${unit}" for variable ${this.name()}`); } } } /** * Return attribute by name */ attribute(name) { return this.data.$[name]; } byteOrder() { let guiCoding = this.attribute('GUI_coding'); if (guiCoding) { if (this.valueSize() === 16) { return toEnumFromValue(ByteOrder16Bits, guiCoding); } else if (this.valueSize() === 32) { return toEnumFromValue(ByteOrder32Bits, guiCoding); } } return undefined; } /** * Convert unit size found in configuration file into a number of bits */ static unitSizeToBitSize(unitSize) { switch (unitSize) { case 0: return 1; case 1: return 8; case 2: return 16; case 3: return 32; default: throw new Error(`Invalid unit size: ${unitSize}`); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90aXplLXZhcmlhYmxlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnL2lvdGl6ZS1zdHVkaW8vc3JjL2xpYi9tb2RlbC9pb3RpemUtdmFyaWFibGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUkxQyxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ0UsSUFBUyxFQUNULFlBQStCLEVBQy9CLE1BQTBCO1FBRTFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsT0FBTyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFD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