UNPKG

modbus-connect

Version:

Modbus RTU over Web Serial and Node.js SerialPort

93 lines (85 loc) 2.18 kB
// errors.js const EXCEPTION_CODES = require('./constants/constants.js'); /** * Base class for all Modbus errors * * @class ModbusError * @extends Error */ class ModbusError extends Error { constructor(message) { super(message); this.name = 'ModbusError'; } } /** * Error class for Modbus timeout * * @class ModbusTimeoutError * @extends ModbusError */ class ModbusTimeoutError extends ModbusError { constructor(message = 'Modbus request timed out') { super(message); this.name = 'ModbusTimeoutError'; } } /** * Error class for Modbus CRC check failure * * @class ModbusCRCError * @extends ModbusError */ class ModbusCRCError extends ModbusError { constructor(message = 'Modbus CRC check failed') { super(message); this.name = 'ModbusCRCError'; } } /** * Error class for Modbus response errors * * @class ModbusResponseError * @extends ModbusError */ class ModbusResponseError extends ModbusError { constructor(message = 'Invalid Modbus response') { super(message); this.name = 'ModbusResponseError'; } } /** * Error class for Modbus too many empty reads * * @class ModbusTooManyEmptyReadsError * @extends ModbusError */ class ModbusTooManyEmptyReadsError extends ModbusError { constructor(message = 'Too many empty reads from transport') { super(message); this.name = 'ModbusTooManyEmptyReadsError'; } } /** * Error class for Modbus exception * * @class ModbusExceptionError * @extends ModbusError */ class ModbusExceptionError extends ModbusError { constructor(functionCode, exceptionCode) { const exceptionMessage = EXCEPTION_CODES[exceptionCode] || 'Unknown Exception'; super(`Modbus exception: function 0x${functionCode.toString(16)}, code 0x${exceptionCode.toString(16)} (${exceptionMessage})`); this.name = 'ModbusExceptionError'; this.functionCode = functionCode; this.exceptionCode = exceptionCode; } } module.exports = { ModbusError, ModbusTimeoutError, ModbusCRCError, ModbusResponseError, ModbusTooManyEmptyReadsError, ModbusExceptionError };