dlms-protocol
Version:
DLMS Protocol parser for JavaScript
71 lines (70 loc) • 2.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("core-js/modules/es.regexp.to-string.js");
require("core-js/modules/esnext.iterator.map.js");
require("core-js/modules/web.dom-collections.iterator.js");
var _MessageType = _interopRequireDefault(require("../enum/MessageType"));
var _DlmsDatas = _interopRequireDefault(require("../typesDLMS/DlmsDatas"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ActionResponse {
constructor() {
let bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
this.SetType = null;
this.InvokeIdAndPriority = null;
this.DataAcessResult = null;
this.ReturnParameters = null;
this.ParameterType = null;
this.DlmsData = null;
this.GetDataAcessResult = null;
this.Value = null;
if (bytes) {
this.insertData(bytes);
}
}
insertData(bytes) {
this.Value = [...bytes];
this.SetType = bytes[1];
this.InvokeIdAndPriority = bytes[2];
this.DataAcessResult = bytes[3];
this.ReturnParameters = bytes[4];
if (this.ReturnParameters === 0) return;
this.ParameterType = bytes[5];
switch (this.ParameterType) {
case 0:
this.DlmsData = _DlmsDatas.default.factory(bytes[6]);
const temp = bytes.slice(6);
this.DlmsData.insertData(temp);
break;
default:
this.GetDataAcessResult = bytes[6];
break;
}
}
getBytes() {
const result = [];
result.push(_MessageType.default.ACTION_RESPONSE);
result.push(this.SetType);
result.push(this.InvokeIdAndPriority);
result.push(this.DataAcessResult);
result.push(this.ReturnParameters);
if (this.ReturnParameters !== 0) {
result.push(this.ParameterType);
switch (this.ParameterType) {
case 0:
result.push(...this.DlmsData.rawValue);
break;
default:
result.push(this.GetDataAcessResult);
break;
}
}
return Buffer.from(result);
}
getHexString() {
return this.Value.map(byte => byte.toString(16).toUpperCase().padStart(2, '0')).join(' ');
}
}
var _default = exports.default = ActionResponse;