-
Notifications
You must be signed in to change notification settings - Fork 0
/
decode.js
41 lines (32 loc) · 953 Bytes
/
decode.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
40
41
function decodeCscMeasurement(hexData) {
let data = hexToBytes(hexData);
let flags = data[0];
let crankRevolutionPresent = flags & 0b10;
let lastCrankEventTimePresent = flags & 0b10;
let crankRevolution = null;
let lastCrankEventTime = null;
if (crankRevolutionPresent) {
crankRevolution = data[1] + (data[2] << 8);
}
if (lastCrankEventTimePresent) {
lastCrankEventTime = data[3] + (data[4] << 8);
}
let crankArray = {
crankRevolutions: crankRevolution,
lastCrankEventTime: lastCrankEventTime
};
return crankArray;
}
function hexToBytes(hex) {
let bytes = [];
for (let i = 0; i < hex.length; i += 2) {
bytes.push(parseInt(hex.substr(i, 2), 16));
}
return bytes;
}
let decoded = decodeCscMeasurement("022001732E");
for (let key in decoded) {
if (decoded.hasOwnProperty(key)) {
console.log(key + ': ' + decoded[key]);
}
}