UNPKG

ojousima.ruuvi_endpoints.ts

Version:
67 lines (66 loc) 2.56 kB
"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;