-
Notifications
You must be signed in to change notification settings - Fork 19
/
decode_obdii.js
39 lines (37 loc) · 1.07 KB
/
decode_obdii.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var can = require('./init.js');
var obdiiPIDs = require('./obdii-pids.json');
if (can.argv.h || can.argv.help) {
console.log("This tool decodes OBDII traffic and prints any to stdout");
can.printOptions();
process.exit();
}
//OBDII makes requests on id 0x7DF
//engine replies on ids between 0X7E0 and 0X7E8
console.log("Type,Mode,PID,Data,Description");
can.onMessage(function(msg) {
var buf = msg.data;
if (buf.length < 3) {
return;
}
var mode = buf.readUInt8(1);
var PID = buf.readUInt8(2);
var data = buf.slice(3);
var desc = "Unkown/Other";
if (msg.id === 0x7DF) {
if (obdiiPIDs[mode]) {
if (obdiiPIDs[mode][PID]) {
desc = obdiiPIDs[mode][PID].Desc;
}
}
console.log("Req," + mode + "," + can.decToHex(PID, 2) + "," + data.toString('hex') + "," + desc);
}
if (msg.id >= 0x7E0 && msg.id <= 0x7E8) {
var repmode = mode - 0x40;
if (repmode > 0 && obdiiPIDs[repmode]) {
if (obdiiPIDs[repmode][PID]) {
desc = obdiiPIDs[repmode][PID].Desc;
}
}
console.log("Rep," + mode + "," + can.decToHex(PID, 2) + "," + data.toString('hex') + "," + desc);
}
});