UNPKG

ojousima.ruuvi_endpoints.ts

Version:
54 lines (53 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dfafparser = void 0; var fftbroadcast_1 = require("./fftbroadcast"); var versionStart = 1; var versionEnd = versionStart + 1; var typeStart = versionEnd; var typeEnd = typeStart + 1; var scaleStart = typeEnd; var scaleEnd = scaleStart + 2; var frequencyStart = scaleEnd; var frequencyEnd = frequencyStart + 2; var bucketStart = frequencyEnd; var bucketEnd = bucketStart + 16; var bytestou16 = function (data) { var n = data[0] * 256 + data[1]; return n; }; var fixed88ToFload = function (data) { var value = bytestou16(data); return value / 256; }; var dfafparser = function (data) { if (0xaf !== data[0]) { throw new Error('Not DF AC data'); } var dataFormat = 0xac; var version = data[versionStart]; var type = 'unknown'; switch (data[typeStart]) { case 0: type = 'X'; break; case 1: type = 'Y'; break; case 2: type = 'Z'; break; default: break; } var frequency = bytestou16(data.slice(frequencyStart, frequencyEnd)); var scale = fixed88ToFload(data.slice(scaleStart, scaleEnd)); var buckets = []; for (var ii = 0; ii < 16; ii++) { buckets[ii] = data[bucketStart + ii] / scale; } var id = 0; var robject = new fftbroadcast_1.FFTBroadcast(id, null, version, type, scale, frequency, buckets, null, null, dataFormat); return robject; }; exports.dfafparser = dfafparser;