ojousima.ruuvi_endpoints.ts
Version:
Experiments with RuuviTags and TS
67 lines (66 loc) • 2.56 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.dfacparser = void 0;
var accelerationbroadcast_1 = require("./accelerationbroadcast");
var versionStart = 1;
var versionEnd = versionStart + 1;
var p2pXStart = versionEnd;
var p2pXEnd = p2pXStart + 2;
var p2pYStart = p2pXEnd;
var p2pYEnd = p2pYStart + 2;
var p2pZStart = p2pYEnd;
var p2pZEnd = p2pZStart + 2;
var rmsXStart = p2pZEnd;
var rmsXEnd = rmsXStart + 2;
var rmsYStart = rmsXEnd;
var rmsYEnd = rmsYStart + 2;
var rmsZStart = rmsYEnd;
var rmsZEnd = rmsZStart + 2;
var devXStart = rmsZEnd;
var devXEnd = devXStart + 2;
var devYStart = devXEnd;
var devYEnd = devYStart + 2;
var devZStart = devYEnd;
var devZEnd = devZStart + 2;
var batteryVStart = devZEnd;
var batteryVEnd = batteryVStart + 1;
var temperatureCStart = batteryVEnd;
var temperatureCEnd = temperatureCStart + 1;
var measurementStart = temperatureCEnd;
var measurementEnd = measurementStart + 2;
var bytestou16 = function (data) {
var n = data[0] * 256 + data[1];
// Number is in units of 0.001 G -> divide by 1000
return n / 1000;
};
var dfacparser = function (data) {
if (0xac !== data[0]) {
throw new Error('Not DF AC data');
}
var robject = new accelerationbroadcast_1.AccelerationBroadcast();
robject.dataFormat = 0xac;
var version = data[versionStart];
robject.version = version;
robject.p2pXG = bytestou16(data.slice(p2pXStart, p2pXEnd));
robject.p2pYG = bytestou16(data.slice(p2pYStart, p2pYEnd));
robject.p2pZG = bytestou16(data.slice(p2pZStart, p2pZEnd));
robject.rmsXG = bytestou16(data.slice(rmsXStart, rmsXEnd));
robject.rmsYG = bytestou16(data.slice(rmsYStart, rmsYEnd));
robject.rmsZG = bytestou16(data.slice(rmsZStart, rmsZEnd));
robject.devXG = bytestou16(data.slice(devXStart, devXEnd));
robject.devYG = bytestou16(data.slice(devYStart, devYEnd));
robject.devZG = bytestou16(data.slice(devZStart, devZEnd));
var batteryBytes = data.slice(batteryVStart, batteryVEnd);
robject.batteryVoltageV = (batteryBytes[0] * 8 + 1600) / 1000;
var temperatureBytes = data.slice(temperatureCStart, temperatureCEnd + 1);
var temperatureC = temperatureBytes[0];
if (temperatureC > 127) {
temperatureC -= 256;
}
robject.temperatureC = temperatureC;
var measurementBytes = data.slice(measurementStart, measurementEnd);
var measurement = measurementBytes[0] * 256 + measurementBytes[1];
robject.measurementSequence = measurement;
return robject;
};
exports.dfacparser = dfacparser;