Skip to content

Commit

Permalink
added ServiceType to ESD
Browse files Browse the repository at this point in the history
  • Loading branch information
david284 committed Nov 13, 2024
1 parent f66cd2f commit dfddf44
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 32 deletions.
34 changes: 17 additions & 17 deletions cbusLibrary.js
Original file line number Diff line number Diff line change
Expand Up @@ -1384,14 +1384,14 @@ class cbusLibrary {
if(!message.hasOwnProperty('build')) {throw Error("encode: property 'build' missing")};
message.encoded = this.encodeSTAT(message.nodeNumber, message.CS, message.flags, message.major, message.minor, message.build);
break;
case 'ESD': // E7
case 'ESD': // E7
if(!message.hasOwnProperty('nodeNumber')) {throw Error("encode: property 'nodeNumber' missing")};
if(!message.hasOwnProperty('ServiceIndex')) {throw Error("encode: property 'ServiceIndex' missing")};
if(!message.hasOwnProperty('ServiceType')) {throw Error("encode: property 'ServiceType' missing")};
if(!message.hasOwnProperty('Data1')) {throw Error("encode: property 'Data1' missing")};
if(!message.hasOwnProperty('Data2')) {throw Error("encode: property 'Data2' missing")};
if(!message.hasOwnProperty('Data3')) {throw Error("encode: property 'Data3' missing")};
if(!message.hasOwnProperty('Data4')) {throw Error("encode: property 'Data4' missing")};
message.encoded = this.encodeESD(message.nodeNumber, message.ServiceIndex, message.Data1, message.Data2, message.Data3, message.Data4);
message.encoded = this.encodeESD(message.nodeNumber, message.ServiceIndex, message.ServiceType, message.Data1, message.Data2, message.Data3);
break;
case 'PARAMS': // EF
if(!message.hasOwnProperty('param1')) {throw Error("encode: property 'param1' missing")};
Expand Down Expand Up @@ -5127,8 +5127,8 @@ class cbusLibrary {


// E7 ESD
// ESD Format: [<MjPri><MinPri=2><CANID>]<E7><NN hi><NN lo><ServiceIndex><Data1>
// <Data2><Data3><Data4>
// ESD Format: [<MjPri><MinPri=2><CANID>]<E7><NN hi><NN lo><ServiceIndex><ServiceIndex>
// <Data1><Data2><Data3>
//
decodeESD(message) {
return {'encoded': message,
Expand All @@ -5137,36 +5137,36 @@ class cbusLibrary {
'opCode': message.substr(7, 2),
'nodeNumber': parseInt(message.substr(9, 4), 16),
'ServiceIndex': parseInt(message.substr(13, 2), 16),
'Data1': parseInt(message.substr(15, 2), 16),
'Data2': parseInt(message.substr(17,2), 16),
'Data3': parseInt(message.substr(19, 2), 16),
'Data4': parseInt(message.substr(21, 2), 16),
'ServiceType': parseInt(message.substr(15, 2), 16),
'Data1': parseInt(message.substr(17,2), 16),
'Data2': parseInt(message.substr(19, 2), 16),
'Data3': parseInt(message.substr(21, 2), 16),
'text': "ESD (E7) nodeNumber " + parseInt(message.substr(9, 4), 16) +
" ServiceIndex " + parseInt(message.substr(13, 2), 16) +
" Data1 " + parseInt(message.substr(15, 2), 16) +
" Data2 " + parseInt(message.substr(17, 2), 16) +
" Data3 " + parseInt(message.substr(19, 2), 16) +
" Data4 " + parseInt(message.substr(21, 2), 16)
" ServiceType " + parseInt(message.substr(15, 2), 16) +
" Data1 " + parseInt(message.substr(17, 2), 16) +
" Data2 " + parseInt(message.substr(19, 2), 16) +
" Data3 " + parseInt(message.substr(21, 2), 16)
}
}
/**
* @desc opCode E7<br>
* @param {int} nodeNumber 0 to 65535
* @param {int} ServiceIndex 0 to 255
* @param {int} ServiceType 0 to 255
* @param {int} Data1 0 to 255
* @param {int} Data2 0 to 255
* @param {int} Data3 0 to 255
* @param {int} Data4 0 to 255
* @return {String} CBUS message encoded as a 'Grid Connect' ASCII string<br>
* Format: [&ltMjPri&gt&ltMinPri=2&gt&ltCANID&gt]&ltE7&gt&ltnodeNumber hi&gt&ltnodeNumber lo&gt&ltServiceIndex&gt&ltData1&gt&ltData2&gt&ltData3&gt&ltData4&gt
*/
encodeESD(nodeNumber, ServiceIndex, Data1, Data2, Data3, Data4) {
encodeESD(nodeNumber, ServiceIndex, ServiceType, Data1, Data2, Data3) {
return this.header({MinPri: 2}) + 'E7' + decToHex(nodeNumber, 4) +
decToHex(ServiceIndex, 2) +
decToHex(ServiceType, 2) +
decToHex(Data1, 2) +
decToHex(Data2, 2) +
decToHex(Data3, 2) +
decToHex(Data4, 2) + ';'
decToHex(Data3, 2) + ';'
}


Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cbuslibrary",
"version": "2.7.5",
"version": "2.7.6",
"description": "Library to decode & encode CBUS messages",
"main": "cbusLibrary.js",
"directories": {
Expand Down
28 changes: 14 additions & 14 deletions unit_tests/cbusLibrary.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ describe('cbusMessage tests', function(){
testCases.push({'test':{'mnemonic': 'PLOC', 'session': '1', 'address':'2', 'speed':'3', 'direction':'Forward', 'Fn1':'5', 'Fn2':'6', 'Fn3':'7'}, 'expected': ':SA780NE101000283050607;'});
testCases.push({'test':{'mnemonic': 'NAME', 'name': '1234567'}, 'expected': ':SB780NE231323334353637;'});
testCases.push({'test':{'mnemonic': 'STAT', 'nodeNumber':'1', 'CS':'2', 'flags':'3', 'major':'4', 'minor':'5', 'build':'6'}, 'expected': ':SA780NE300010203040506;'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data1':'3', 'Data2':'4', 'Data3':'5', 'Data4':'6'}, 'expected': ':SA780NE700010203040506;'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'ServiceType':'3', 'Data1':'4', 'Data2':'5', 'Data3':'6'}, 'expected': ':SA780NE700010203040506;'});
testCases.push({'test':{'mnemonic': 'PARAMS', 'param1': '1', 'param2':'2', 'param3':'3', 'param4':'4', 'param5':'5', 'param6':'6', 'param7':'7'}, 'expected': ':SB780NEF01020304050607;'});
testCases.push({'test':{'mnemonic': 'ACON3', 'nodeNumber': '1', 'eventNumber':'2', 'data1':'3', 'data2':'4', 'data3':'5'}, 'expected': ':SB780NF000010002030405;'});
testCases.push({'test':{'mnemonic': 'ACOF3', 'nodeNumber': '1', 'eventNumber':'2', 'data1':'3', 'data2':'4', 'data3':'5'}, 'expected': ':SB780NF100010002030405;'});
Expand Down Expand Up @@ -593,12 +593,12 @@ describe('cbusMessage tests', function(){
testCases.push({'test':{'mnemonic': 'STAT', 'nodeNumber':'1', 'CS':'2', 'flags':'3', 'minor':'5', 'build':'6'}, 'expected': 'encode: property \'major\' missing'});
testCases.push({'test':{'mnemonic': 'STAT', 'nodeNumber':'1', 'CS':'2', 'flags':'3', 'major':'4', 'build':'6'}, 'expected': 'encode: property \'minor\' missing'});
testCases.push({'test':{'mnemonic': 'STAT', 'nodeNumber':'1', 'CS':'2', 'flags':'3', 'major':'4', 'minor':'5'}, 'expected': 'encode: property \'build\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'ServiceIndex':'2', 'Data1':'3', 'Data2':'5', 'Data3':'4', 'Data4':'6'}, 'expected': 'encode: property \'nodeNumber\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'Data1':'3', 'Data2':'4', 'Data3':'5', 'Data4':'6'}, 'expected': 'encode: property \'ServiceIndex\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data2':'4', 'Data3':'5', 'Data4':'6'}, 'expected': 'encode: property \'Data1\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data1':'3', 'Data3':'5', 'Data4':'6'}, 'expected': 'encode: property \'Data2\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data1':'3', 'Data2':'4', 'Data4':'6'}, 'expected': 'encode: property \'Data3\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data1':'3', 'Data2':'4', 'Data3':'5'}, 'expected': 'encode: property \'Data4\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'ServiceIndex':'2', 'Data1':'3', 'Data1':'5', 'Data2':'4', 'Data3':'6'}, 'expected': 'encode: property \'nodeNumber\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceType':'3', 'Data1':'4', 'Data2':'5', 'Data3':'6'}, 'expected': 'encode: property \'ServiceIndex\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'Data1':'4', 'Data2':'5', 'Data3':'6'}, 'expected': 'encode: property \'ServiceType\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'ServiceType':'3', 'Data2':'5', 'Data3':'6'}, 'expected': 'encode: property \'Data1\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'ServiceType':'3', 'Data1':'4', 'Data3':'6'}, 'expected': 'encode: property \'Data2\' missing'});
testCases.push({'test':{'mnemonic': 'ESD', 'nodeNumber':'1', 'ServiceIndex':'2', 'ServiceType':'3', 'Data1':'4', 'Data2':'5'}, 'expected': 'encode: property \'Data3\' missing'});
testCases.push({'test':{'mnemonic': 'PARAMS', 'param2':'2', 'param3':'3', 'param4':'4', 'param5':'5', 'param6':'6', 'param7':'7'}, 'expected': 'encode: property \'param1\' missing'});
testCases.push({'test':{'mnemonic': 'PARAMS', 'param1':'1', 'param3':'3', 'param4':'4', 'param5':'5', 'param6':'6', 'param7':'7'}, 'expected': 'encode: property \'param2\' missing'});
testCases.push({'test':{'mnemonic': 'PARAMS', 'param1':'1', 'param2':'3', 'param4':'4', 'param5':'5', 'param6':'6', 'param7':'7'}, 'expected': 'encode: property \'param3\' missing'});
Expand Down Expand Up @@ -5839,10 +5839,10 @@ describe('cbusMessage tests', function(){
'opCode':'E7',
'nodeNumber':arg1,
'ServiceIndex':arg2,
'Data1':arg3,
'Data2':arg4,
'Data3':arg5,
'Data4':arg6});
'ServiceType':arg3,
'Data1':arg4,
'Data2':arg5,
'Data3':arg6});
}
}
}
Expand All @@ -5857,8 +5857,8 @@ describe('cbusMessage tests', function(){
itParam("ESD test nodeNumber ${value.nodeNumber} ServiceIndex ${value.ServiceIndex} Data1 ${value.Data1} Data2 ${value.Data2} Data3 ${value.Data3} Data4 ${value.Data4}",
GetTestCase_ESD(), function (value) {
winston.info({message: 'cbusMessage test: BEGIN ' + value.mnemonic +' test ' + JSON.stringify(value)});
expected = ":SA780N" + value.opCode + decToHex(value.nodeNumber, 4) + decToHex(value.ServiceIndex, 2) + decToHex(value.Data1, 2) + decToHex(value.Data2, 2) + decToHex(value.Data3, 2) + decToHex(value.Data4, 2) + ";";
var encode = cbusLib.encodeESD(value.nodeNumber, value.ServiceIndex, value.Data1, value.Data2, value.Data3, value.Data4);
expected = ":SA780N" + value.opCode + decToHex(value.nodeNumber, 4) + decToHex(value.ServiceIndex, 2) + decToHex(value.ServiceType, 2) + decToHex(value.Data1, 2) + decToHex(value.Data2, 2) + decToHex(value.Data3, 2) + ";";
var encode = cbusLib.encodeESD(value.nodeNumber, value.ServiceIndex, value.ServiceType, value.Data1, value.Data2, value.Data3);
var decode = cbusLib.decode(encode);
winston.info({message: 'cbusMessage test: ' + value.mnemonic +' encode ' + encode});
expect(encode).to.equal(expected, 'encode');
Expand All @@ -5871,10 +5871,10 @@ describe('cbusMessage tests', function(){
expect(decode.text).to.include('(' + value.opCode + ')', 'text opCode');
expect(decode.nodeNumber).to.equal(value.nodeNumber, 'nodeNumber');
expect(decode.ServiceIndex).to.equal(value.ServiceIndex, 'ServiceIndex');
expect(decode.ServiceType).to.equal(value.ServiceType, 'ServiceType');
expect(decode.Data1).to.equal(value.Data1, 'Data1');
expect(decode.Data2).to.equal(value.Data2, 'Data2');
expect(decode.Data3).to.equal(value.Data3, 'Data3');
expect(decode.Data4).to.equal(value.Data4, 'Data4');
})


Expand Down

0 comments on commit dfddf44

Please sign in to comment.