@zandor300/jsmodbus
Version:
Implementation for the Serial/TCP Modbus protocol.
54 lines (53 loc) • 1.62 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isExceptionResponseBody = isExceptionResponseBody;
const codes_1 = require("../codes");
const response_body_js_1 = __importDefault(require("./response-body.js"));
class ExceptionResponseBody extends response_body_js_1.default {
get code() {
return this._code;
}
get message() {
return (0, codes_1.errorCodeToMessage)(this._code);
}
get byteCount() {
return 2;
}
get isException() {
return true;
}
static fromBuffer(buffer) {
const fc = buffer.readUInt8(0) - 0x80;
const code = buffer.readUInt8(1);
if (!(0, codes_1.isFunctionCode)(fc)) {
throw Error('InvalidFunctionCode');
}
return new ExceptionResponseBody(fc, code);
}
static fromRequest(requestBody) {
return new ExceptionResponseBody(requestBody.fc, requestBody.code);
}
constructor(fc, code) {
const ignoreInvalidFunctionCode = true;
super(fc, ignoreInvalidFunctionCode);
this._code = code;
}
createPayload() {
const payload = Buffer.alloc(2);
payload.writeUInt8(this._fc + 0x80, 0);
payload.writeUInt8(this._code, 1);
return payload;
}
}
exports.default = ExceptionResponseBody;
function isExceptionResponseBody(x) {
if (x instanceof ExceptionResponseBody) {
return true;
}
else {
return false;
}
}