Comparing version 2.4.0 to 2.5.0
@@ -8,3 +8,3 @@ { | ||
"description": "A SocketCAN abstraction layer for NodeJS.", | ||
"version": "2.4.0", | ||
"version": "2.5.0", | ||
"license": "MIT", | ||
@@ -17,6 +17,8 @@ "repository": { | ||
"configure": "node-gyp configure", | ||
"build": "node-gyp build" | ||
"build": "node-gyp build", | ||
"test": "NODE_PATH=. nodeunit tests" | ||
}, | ||
"devDependencies": { | ||
"node-gyp": ">=1.0.0" | ||
"node-gyp": ">=1.0.0", | ||
"nodeunit": "^0.11.3" | ||
}, | ||
@@ -23,0 +25,0 @@ "dependencies": { |
@@ -132,3 +132,3 @@ /* Copyright Sebastian Haas <sebastian$sebastianhaas.info>. All rights reserved. | ||
name: signal.name, | ||
mux : parseInt(muxmsg['count'],16), | ||
mux : parseInt(muxmsg['count']), | ||
bitLength: signal.length ? parseInt(signal.length) : 1, | ||
@@ -135,0 +135,0 @@ endianess: signal.endianess ? signal.endianess : 'little', |
@@ -0,1 +1,3 @@ | ||
[](https://travis-ci.com/sebi2k1/node-can) | ||
node-can | ||
@@ -34,3 +36,4 @@ ======== | ||
var channel = can.createRawChannel("vcan0"); | ||
var db = new can.DatabaseService(channel, network.buses["Motor"]); | ||
var db_motor = new can.DatabaseService(channel, network.buses["Motor"]); | ||
var db_instr = new can.DatabaseService(channel, network.buses["Instrumentation"]); | ||
@@ -40,3 +43,3 @@ channel.start(); | ||
// Register a listener to get any value changes | ||
db.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) { | ||
db_motor.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) { | ||
console.log("SpeedKm " + s.value); | ||
@@ -46,3 +49,3 @@ }); | ||
// Register a listener to get any value updates | ||
db.messages["Emission"].signals["Enginespeed"].onUpdate(function(s) { | ||
db_motor.messages["Emission"].signals["Enginespeed"].onUpdate(function(s) { | ||
console.log("Enginespeed " + s.value); | ||
@@ -52,6 +55,8 @@ }); | ||
// Update tank temperature | ||
db.messages["TankController"].signals["TankTemperature"].update(80); | ||
db_instr.messages["TankController"].signals["TankTemperature"].update(80); | ||
// Trigger sending this message | ||
db.send("TankController"); | ||
db_instr.send("TankController"); | ||
channel.stop() | ||
``` | ||
@@ -58,0 +63,0 @@ |
@@ -293,9 +293,11 @@ /* Copyright Sebastian Haas <sebastian@sebastianhaas.info>. All rights reserved. | ||
// if this is a mux signal and the muxor isnt in my list... | ||
if (m.muxed && s.muxGroup && s.muxGroup.indexOf(b1mux) == -1) { | ||
if (m.muxed && s.muxGroup && s.muxGroup.indexOf(b1mux[0]) == -1) { | ||
continue; | ||
} | ||
var val = _signals.decode_signal(msg.data, s.bitOffset, s.bitLength, | ||
var ret = _signals.decode_signal(msg.data, s.bitOffset, s.bitLength, | ||
s.endianess == 'little', s.type == 'signed'); | ||
var val = ret[0] + (ret[1] << 32) | ||
if (s.slope) | ||
@@ -368,4 +370,10 @@ val *= s.slope; | ||
var word1 = val & 0xFFFFFFFF | ||
var word2 = 0 | ||
// shift doesn't work above 32 bit, only do this if required to save cycles | ||
if (val > 0xFFFFFFFF) | ||
word2 = (val / Math.pow(2, 32)) | ||
_signals.encode_signal(canmsg.data, s.bitOffset, s.bitLength, | ||
s.endianess == 'little', s.type == 'signed', val); | ||
s.endianess == 'little', s.type == 'signed', word1, word2 ); | ||
} | ||
@@ -372,0 +380,0 @@ |
@@ -24,2 +24,5 @@ var signals = require('../build/Release/can_signals'); | ||
test.deepEqual(data, Buffer.from([0xAB, 0x0E, 0x00, 0, 0, 0, 0, 0]), "Overwriting signal value failed"); | ||
signals.encode_signal(data, 0, 64, true, false, 0xEFBEADDE, 0xBEBAFECA); | ||
test.deepEqual(data, Buffer.from([0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE, 0xBA, 0xBE])); | ||
test.done(); | ||
@@ -31,16 +34,17 @@ } | ||
test.equals(signals.decode_signal(data, 0, 8, true, false), 0xDE); | ||
test.equals(signals.decode_signal(data, 0, 12, true, false), 0xDDE); | ||
test.equals(signals.decode_signal(data, 0, 16, true, false), 0xADDE); | ||
test.equals(signals.decode_signal(data, 0, 24, true, false), 0xBEADDE); | ||
test.equals(signals.decode_signal(data, 0, 32, true, false), 0xEFBEADDE); | ||
test.deepEqual(signals.decode_signal(data, 0, 8, true, false), [0xDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 12, true, false), [0xDDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 16, true, false), [0xADDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 24, true, false), [0xBEADDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 32, true, false), [0xEFBEADDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 64, true, false), [0xEFBEADDE, 0xBEBAFECA]); | ||
test.equals(signals.decode_signal(data, 12, 8, true, false), 0xEA); | ||
test.equals(signals.decode_signal(data, 12, 12, true, false), 0xBEA); | ||
test.equals(signals.decode_signal(data, 12, 20, true, false), 0xEFBEA); | ||
test.deepEqual(signals.decode_signal(data, 12, 8, true, false), [0xEA, 0]); | ||
test.deepEqual(signals.decode_signal(data, 12, 12, true, false), [0xBEA, 0]); | ||
test.deepEqual(signals.decode_signal(data, 12, 20, true, false), [0xEFBEA, 0]); | ||
test.equals(signals.decode_signal(data, 0, 1, true, false), 0); | ||
test.equals(signals.decode_signal(data, 1, 1, true, false), 1); | ||
test.equals(signals.decode_signal(data, 2, 1, true, false), 1); | ||
test.equals(signals.decode_signal(data, 3, 1, true, false), 1); | ||
test.deepEqual(signals.decode_signal(data, 0, 1, true, false), [0, 0]); | ||
test.deepEqual(signals.decode_signal(data, 1, 1, true, false), [1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 2, 1, true, false), [1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 3, 1, true, false), [1, 0]); | ||
@@ -53,8 +57,8 @@ test.done(); | ||
test.equals(signals.decode_signal(data, 8, 8, true, true), -1); | ||
test.equals(signals.decode_signal(data, 0, 16, true, true), -2); | ||
test.equals(signals.decode_signal(data, 16, 8, true, true), -128); | ||
test.deepEqual(signals.decode_signal(data, 8, 8, true, true), [-1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 16, true, true), [-2, 0]); | ||
test.deepEqual(signals.decode_signal(data, 16, 8, true, true), [-128, 0]); | ||
data = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); | ||
test.equals(signals.decode_signal(data, 0, 32, true, true), -1); | ||
test.deepEqual(signals.decode_signal(data, 0, 32, true, true), [-1, 0]); | ||
@@ -97,2 +101,5 @@ test.done(); | ||
signals.encode_signal(data, 0, 64, false, false, 0xCAFEBABE, 0xDEADBEEF); | ||
test.deepEqual(data, Buffer.from([0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE, 0xBA, 0xBE])); | ||
test.done(); | ||
@@ -104,12 +111,12 @@ } | ||
test.equals(signals.decode_signal(data, 0, 8, false, false), 0xDE); | ||
test.equals(signals.decode_signal(data, 0, 16, false, false), 0xDEAD); | ||
test.deepEqual(signals.decode_signal(data, 0, 8, false, false), [0xDE, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 16, false, false), [0xDEAD, 0]); | ||
test.equals(signals.decode_signal(data, 7, 8, false, false), 0x56); | ||
test.equals(signals.decode_signal(data, 15, 16, false, false), 0xDF77); | ||
test.deepEqual(signals.decode_signal(data, 7, 8, false, false), [0x56, 0]); | ||
test.deepEqual(signals.decode_signal(data, 15, 16, false, false), [0xDF77, 0]); | ||
test.equals(signals.decode_signal(data, 0, 1, false, false), 1); | ||
test.equals(signals.decode_signal(data, 1, 1, false, false), 1); | ||
test.equals(signals.decode_signal(data, 2, 1, false, false), 0); | ||
test.equals(signals.decode_signal(data, 3, 1, false, false), 1); | ||
test.deepEqual(signals.decode_signal(data, 0, 1, false, false), [1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 1, 1, false, false), [1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 2, 1, false, false), [0, 0]); | ||
test.deepEqual(signals.decode_signal(data, 3, 1, false, false), [1, 0]); | ||
@@ -131,2 +138,8 @@ test.done(); | ||
signals.encode_signal(data, 16, 16, false, true, -32767); | ||
test.deepEqual(data, Buffer.from([0xFF, 0xFE, 0x80, 0x01, 0, 0, 0, 0])); | ||
// signals.encode_signal(data, 0, 64, false, true, -9223372036); | ||
// test.deepEqual(data, Buffer.from([0xFF, 0xFF, 0xFF, 0xFD, 0xDA, 0x3E, 0x82, 0xFB])); | ||
test.done(); | ||
@@ -136,10 +149,14 @@ } | ||
exports['big_endian_signed_decode'] = function(test) { | ||
data = Buffer.from([0xFF, 0xFE, 0x80 ]); | ||
data = Buffer.from([0xFF, 0xFE, 0x80, 0x01]); | ||
test.equals(signals.decode_signal(data, 0, 8, false, true), -1); | ||
test.equals(signals.decode_signal(data, 0, 16, false, true), -2); | ||
test.equals(signals.decode_signal(data, 16, 8, false, true), -128); | ||
test.deepEqual(signals.decode_signal(data, 0, 8, false, true), [-1, 0]); | ||
test.deepEqual(signals.decode_signal(data, 0, 16, false, true), [-2, 0]); | ||
test.deepEqual(signals.decode_signal(data, 16, 8, false, true), [-128, 0]); | ||
test.deepEqual(signals.decode_signal(data, 16, 16, false, true), [-32767, 0]); | ||
// data = Buffer.from([0xFF, 0xFF, 0xFF, 0xFD, 0xDA, 0x3E, 0x82, 0xFB]); | ||
// test.deepEqual(signals.decode_signal(data, 0, 64, false, true), [-9223372037, 0]); | ||
test.done(); | ||
} | ||
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
251085
52
2453
79
2