@iotize/tap
Version:
IoTize Device client for Javascript
124 lines • 8 kB
JavaScript
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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