@iotize/tap
Version:
IoTize Device client for Javascript
284 lines • 27.4 kB
JavaScript
/**
* Generated file. Do not edit
*/
import { AdpControlIn } from './models';
import { AdpControlOut } from './models';
import { SerialSettings } from '@iotize/tap/service/impl/target';
import { TapStreamReader } from '@iotize/tap/client/impl';
import { TapStreamWriter } from '@iotize/tap/client/impl';
import { enumKeyOrValueToNumber } from '@iotize/tap/client/impl';
TapStreamReader.prototype.readTapnpassProtocolConfiguration =
function () {
const model = {};
model.modbus = this.readTapnpassProtocolConfigurationModbus();
model.serial = this.readTapnpassProtocolConfigurationSerial();
model.usb = this.readTapnpassProtocolConfigurationUsb();
return model;
};
TapStreamReader.prototype.readTapnpassProtocolConfigurationModbus =
function () {
const model = {};
model.slave = this.readUnsigned(1);
this.forwardBits(3);
model.offsetFirstRegister = this.readBoolean(1);
return model;
};
TapStreamReader.prototype.readTapnpassProtocolConfigurationSerial =
function () {
const model = {};
model.baudRate = this.readBits(20);
model.identification = this.readBoolean(1);
this.forwardBits(1);
model.ledStatus = this.readBoolean(1);
this.forwardBits(1);
model.physicalPort = this.readBits(4);
model.stopBits = this.readBits(2);
model.bitParity = this.readBits(4);
model.dataBits = this.readBits(2);
model.handshakeDelimiter = this.readBits(4);
model.hardwareFlowControl = this.readBits(4);
model.timeout = this.readUnsigned(1);
return model;
};
TapStreamReader.prototype.readTapnpassProtocolConfigurationUsb =
function () {
const model = {};
model.aliases = [];
while (!this.isEof()) {
model.aliases.push(this.readTapnpassProtocolConfigurationUsbAlias());
}
return model;
};
TapStreamReader.prototype.readTapnpassProtocolConfigurationUsbAlias =
function () {
const model = {};
model.pid = this.readUnsigned(2);
model.vid = this.readUnsigned(2);
model.equ = this.readUnsigned(1);
return model;
};
TapStreamReader.prototype.readAdpStats = function () {
const model = {};
model.header = this.readAdpStatsHeader();
model.state = this.readAdpStatsState();
model.uart = this.readAdpStatsUart();
model.usb = this.readAdpStatsUsb();
model.current = this.readBytes(4);
model.com = this.readAdpStatsCom();
model.battery = this.readBytes(4);
model.intern = this.readAdpStatsIntern();
return model;
};
TapStreamReader.prototype.readAdpStatsHeader = function () {
const model = {};
this.forwardBits(16);
model.version = this.readAdpStatsVersion();
model.errorCode = this.readUnsigned(1);
this.forwardBits(16);
return model;
};
TapStreamReader.prototype.readAdpStatsVersion = function () {
const model = {};
model.major = this.readUnsigned(1);
model.minor = this.readUnsigned(1);
model.patch = this.readUnsigned(1);
return model;
};
TapStreamReader.prototype.readAdpStatsIntern = function () {
const model = {};
model.time = this.readBytes(4);
model.nbBoots = this.readBytes(4);
model.nbShutdown = this.readBytes(2);
model.nbAdpFault = this.readBytes(2);
model.nbAdpMemFault = this.readBytes(2);
model.nbAdpBusFault = this.readBytes(2);
model.nbAdpUsageFault = this.readBytes(2);
this.forwardBits(16);
model.temperature = this.readBytes(4);
return model;
};
TapStreamReader.prototype.readAdpStatsState = function () {
const model = {};
this.forwardBits(7);
model.usbDisconnected = this.readBoolean(1);
this.forwardBits(24);
return model;
};
TapStreamReader.prototype.readAdpStatsUart = function () {
const model = {};
model.nbPartityError = this.readUnsigned(1);
model.nbNoiseError = this.readUnsigned(1);
model.nbFrameError = this.readUnsigned(1);
model.nbDmaError = this.readUnsigned(1);
model.nbTxError = this.readUnsigned(1);
model.nbRxError = this.readUnsigned(1);
model.nbOverRun = this.readUnsigned(1);
this.forwardBits(8);
return model;
};
TapStreamReader.prototype.readAdpStatsUsb = function () {
const model = {};
model.nbFail = this.readUnsigned(1);
model.nbTimeout = this.readUnsigned(1);
model.nbError = this.readUnsigned(1);
model.nbUnknownClass = this.readUnsigned(1);
model.nbDisconnect = this.readUnsigned(1);
model.nbOff = this.readUnsigned(1);
this.forwardBits(16);
return model;
};
TapStreamReader.prototype.readAdpStatsCom = function () {
const model = {};
model.txBufferOverRun = this.readUnsigned(1);
model.rxBufferOverRun = this.readUnsigned(1);
model.nbErrorSettings = this.readUnsigned(1);
this.forwardBits(8);
model.nbComAdp = this.readBytes(4);
return model;
};
TapStreamReader.prototype.readAdpControlIn = function () {
const model = {};
model.command = this.readUnsigned(2);
model.param = this.readUnsigned(2);
return model;
};
TapStreamReader.prototype.readAdpControlOut = function () {
const model = {};
model.resultCode = this.readUnsigned(2);
model.param = this.readUnsigned(2);
return model;
};
// TapStreamWriter.prototype.write(model: TapnpassProtocolConfiguration) : TapStreamWriter{
// return this.writeTapnpassProtocolConfiguration(model)
// }
TapStreamWriter.prototype.writeTapnpassProtocolConfiguration = function (model) {
this.writeTapnpassProtocolConfigurationModbus(model.modbus);
this.writeTapnpassProtocolConfigurationSerial(model.serial);
this.writeTapnpassProtocolConfigurationUsb(model.usb);
return this;
};
TapStreamWriter.prototype.writeTapnpassProtocolConfigurationModbus = function (model) {
this.writeUnsigned(model.slave, 1);
this.forwardBits(3);
this.writeBoolean(model.offsetFirstRegister, 1);
return this;
};
TapStreamWriter.prototype.writeTapnpassProtocolConfigurationSerial = function (model) {
this.writeBits(model.baudRate, 20);
this.writeBoolean(model.identification, 1);
this.forwardBits(1);
this.writeBoolean(model.ledStatus, 1);
this.forwardBits(1);
this.writeBitsInt(enumKeyOrValueToNumber(model.physicalPort, SerialSettings.PhysicalPort), 4);
this.writeBitsInt(enumKeyOrValueToNumber(model.stopBits, SerialSettings.StopBits), 2);
this.writeBitsInt(enumKeyOrValueToNumber(model.bitParity, SerialSettings.BitParity), 4);
this.writeBitsInt(enumKeyOrValueToNumber(model.dataBits, SerialSettings.DataBits), 2);
this.writeBitsInt(enumKeyOrValueToNumber(model.handshakeDelimiter, SerialSettings.HandshakeDelimiter), 4);
this.writeBitsInt(enumKeyOrValueToNumber(model.hardwareFlowControl, SerialSettings.HardwareFlowControl), 4);
this.writeUnsigned(model.timeout, 1);
return this;
};
TapStreamWriter.prototype.writeTapnpassProtocolConfigurationUsb = function (model) {
for (let item of model.aliases) {
this.writeTapnpassProtocolConfigurationUsbAlias(item);
}
return this;
};
TapStreamWriter.prototype.writeTapnpassProtocolConfigurationUsbAlias =
function (model) {
this.writeUnsigned(model.pid, 2);
this.writeUnsigned(model.vid, 2);
this.writeUnsigned(model.equ, 1);
return this;
};
// TapStreamWriter.prototype.write(model: AdpStats) : TapStreamWriter{
// return this.writeAdpStats(model)
// }
TapStreamWriter.prototype.writeAdpStats = function (model) {
this.writeAdpStatsHeader(model.header);
this.writeAdpStatsState(model.state);
this.writeAdpStatsUart(model.uart);
this.writeAdpStatsUsb(model.usb);
this.writeBytes(model.current, 4);
this.writeAdpStatsCom(model.com);
this.writeBytes(model.battery, 4);
this.writeAdpStatsIntern(model.intern);
return this;
};
TapStreamWriter.prototype.writeAdpStatsHeader = function (model) {
this.forwardBits(16);
this.writeAdpStatsVersion(model.version);
this.writeUnsigned(model.errorCode, 1);
this.forwardBits(16);
return this;
};
TapStreamWriter.prototype.writeAdpStatsVersion = function (model) {
this.writeUnsigned(model.major, 1);
this.writeUnsigned(model.minor, 1);
this.writeUnsigned(model.patch, 1);
return this;
};
TapStreamWriter.prototype.writeAdpStatsIntern = function (model) {
this.writeBytes(model.time, 4);
this.writeBytes(model.nbBoots, 4);
this.writeBytes(model.nbShutdown, 2);
this.writeBytes(model.nbAdpFault, 2);
this.writeBytes(model.nbAdpMemFault, 2);
this.writeBytes(model.nbAdpBusFault, 2);
this.writeBytes(model.nbAdpUsageFault, 2);
this.forwardBits(16);
this.writeBytes(model.temperature, 4);
return this;
};
TapStreamWriter.prototype.writeAdpStatsState = function (model) {
this.forwardBits(7);
this.writeBoolean(model.usbDisconnected, 1);
this.forwardBits(24);
return this;
};
TapStreamWriter.prototype.writeAdpStatsUart = function (model) {
this.writeUnsigned(model.nbPartityError, 1);
this.writeUnsigned(model.nbNoiseError, 1);
this.writeUnsigned(model.nbFrameError, 1);
this.writeUnsigned(model.nbDmaError, 1);
this.writeUnsigned(model.nbTxError, 1);
this.writeUnsigned(model.nbRxError, 1);
this.writeUnsigned(model.nbOverRun, 1);
this.forwardBits(8);
return this;
};
TapStreamWriter.prototype.writeAdpStatsUsb = function (model) {
this.writeUnsigned(model.nbFail, 1);
this.writeUnsigned(model.nbTimeout, 1);
this.writeUnsigned(model.nbError, 1);
this.writeUnsigned(model.nbUnknownClass, 1);
this.writeUnsigned(model.nbDisconnect, 1);
this.writeUnsigned(model.nbOff, 1);
this.forwardBits(16);
return this;
};
TapStreamWriter.prototype.writeAdpStatsCom = function (model) {
this.writeUnsigned(model.txBufferOverRun, 1);
this.writeUnsigned(model.rxBufferOverRun, 1);
this.writeUnsigned(model.nbErrorSettings, 1);
this.forwardBits(8);
this.writeBytes(model.nbComAdp, 4);
return this;
};
// TapStreamWriter.prototype.write(model: AdpControlIn) : TapStreamWriter{
// return this.writeAdpControlIn(model)
// }
TapStreamWriter.prototype.writeAdpControlIn = function (model) {
this.writeBitsInt(enumKeyOrValueToNumber(model.command, AdpControlIn.Command), 16);
this.writeUnsigned(model.param, 2);
return this;
};
// TapStreamWriter.prototype.write(model: AdpControlOut) : TapStreamWriter{
// return this.writeAdpControlOut(model)
// }
TapStreamWriter.prototype.writeAdpControlOut = function (model) {
this.writeBitsInt(enumKeyOrValueToNumber(model.resultCode, AdpControlOut.ResultCode), 16);
this.writeUnsigned(model.param, 2);
return this;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLXN0cmVhbS1leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL2ltcGwvdGFwbnBhc3Mvc3JjL2xpYi9nZW5lcmF0ZWQvY29udmVydGVyLXN0cmVhbS1leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFJSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUE2RWpFLGVBQWUsQ0FBQyxTQUFTLENBQUMsaUNBQWlDO0lBQ3pEO1FBQ0UsTUFBTSxLQUFLLEdBQTJDLEVBQUUsQ0FBQztRQUV6RCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDO1FBRTlELEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7UUFFOUQsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztRQUV4RCxPQUFPLEtBQXNDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0FBRUosZUFBZSxDQUFDLFNBQVMsQ0FBQyx1Q0FBdUM7SUFDL0Q7UUFDRSxNQUFNLEtBQUssR0FBa0QsRUFBRSxDQUFDO1FBRWhFLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FB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