ojousima.ruuvi_endpoints.ts
Version:
Experiments with RuuviTags and TS
54 lines (53 loc) • 1.56 kB
JavaScript
;
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;