@ovok/native 1.6.45 → 1.6.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js +7 -1
- package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js +30 -0
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js +1 -1
- package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js +2 -0
- package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js +11 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-ecg.device.js +75 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-ecg.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.js +130 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme.protocol.js +42 -1
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme.protocol.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.device.js +47 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.protocol.js +116 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.protocol.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.sequencer.js +87 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/pc80b.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.device.js +48 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js +104 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js +57 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js +50 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +108 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js +64 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/integrated-devices.js +6 -0
- package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
- package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +7 -1
- package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
- package/lib/module/modules/bt-device/constants/supported-devices.js +30 -0
- package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
- package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js +2 -0
- package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
- package/lib/module/modules/bt-management/services/device-creator.js +11 -1
- package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-ecg.device.js +69 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-ecg.device.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.js +125 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme.protocol.js +39 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme.protocol.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.device.js +43 -0
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.device.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.protocol.js +106 -0
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.protocol.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.sequencer.js +82 -0
- package/lib/module/modules/bt-management/services/devices/viatom/pc80b.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.device.js +43 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.device.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js +92 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js +52 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js +45 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +94 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js +59 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
- package/lib/module/modules/bt-management/types/integrated-devices.js +6 -0
- package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-ecg.device.d.ts +25 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-ecg.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.d.ts +43 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme.protocol.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme.protocol.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.device.d.ts +17 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.protocol.d.ts +35 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.protocol.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.sequencer.d.ts +31 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc80b.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts +15 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts +25 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts +21 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts +14 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts +31 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts +20 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +7 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-ecg.device.d.ts +25 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-ecg.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.d.ts +43 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme.protocol.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme.protocol.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.device.d.ts +17 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.protocol.d.ts +35 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.protocol.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.sequencer.d.ts +31 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc80b.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts +15 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts +25 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts +21 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts +14 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts +31 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts +20 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +7 -1
- package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.parseCheckmeTemperatureRecords = exports.parseCheckmeOxygenRecords = exports.parseCheckmeEcgRecords = exports.parseCheckmeDailyRecords = exports.parseCheckmeBloodPressureRecords = exports.decodeCheckmeResponse = exports.decodeCheckmeEcgFile = exports.checkmeReadFileStart = exports.checkmeReadEnd = exports.checkmeReadContent = exports.checkmeCommand = exports.CheckmeListType = exports.CheckmeFrameReader = exports.CheckmeCommand = exports.CHECKME_WRITE = exports.CHECKME_SERVICE = exports.CHECKME_NOTIFY = void 0;
|
|
6
|
+
exports.parsePulsebitEcgRecords = exports.parseCheckmeTemperatureRecords = exports.parseCheckmeOxygenRecords = exports.parseCheckmeEcgRecords = exports.parseCheckmeDailyRecords = exports.parseCheckmeBloodPressureRecords = exports.decodePulsebitEcgFile = exports.decodeCheckmeResponse = exports.decodeCheckmeEcgFile = exports.checkmeReadFileStart = exports.checkmeReadEnd = exports.checkmeReadContent = exports.checkmeCommand = exports.CheckmeListType = exports.CheckmeFrameReader = exports.CheckmeCommand = exports.CHECKME_WRITE = exports.CHECKME_SERVICE = exports.CHECKME_NOTIFY = void 0;
|
|
7
7
|
var _frameReadStatus = require("../../../types/frame-read-status.js");
|
|
8
8
|
var _calculateCrc = require("../../../utils/calculate-crc-8.js");
|
|
9
9
|
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
@@ -260,4 +260,45 @@ const decodeCheckmeEcgFile = bytes => {
|
|
|
260
260
|
};
|
|
261
261
|
};
|
|
262
262
|
exports.decodeCheckmeEcgFile = decodeCheckmeEcgFile;
|
|
263
|
+
/** Decodes the 17-byte ECG index used by Pulsebit and Checkme EX. */
|
|
264
|
+
const parsePulsebitEcgRecords = bytes => {
|
|
265
|
+
const records = [];
|
|
266
|
+
for (let offset = 0; offset + 17 <= bytes.length; offset += 17) {
|
|
267
|
+
const recordedAt = dateFrom(bytes.slice(offset, offset + 7));
|
|
268
|
+
if (!recordedAt) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
records.push({
|
|
272
|
+
recordedAt,
|
|
273
|
+
recordName: recordNameFor(recordedAt),
|
|
274
|
+
heartRate: littleEndian16(bytes, offset + 7)
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return records;
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/** Decodes the 44-byte Pulsebit ECG header and its signed waveform. */
|
|
281
|
+
exports.parsePulsebitEcgRecords = parsePulsebitEcgRecords;
|
|
282
|
+
const decodePulsebitEcgFile = bytes => {
|
|
283
|
+
if (bytes.length < 44) {
|
|
284
|
+
return undefined;
|
|
285
|
+
}
|
|
286
|
+
const recordingBytes = littleEndian16(bytes, 0);
|
|
287
|
+
const waveBytes = ((0, _hexToByte.hexToByte)(bytes[2] ?? "00") | (0, _hexToByte.hexToByte)(bytes[3] ?? "00") << 8 | (0, _hexToByte.hexToByte)(bytes[4] ?? "00") << 16 | (0, _hexToByte.hexToByte)(bytes[5] ?? "00") << 24) >>> 0;
|
|
288
|
+
const waveStart = 44 + recordingBytes;
|
|
289
|
+
const waveEnd = Math.min(bytes.length, waveStart + waveBytes);
|
|
290
|
+
const diagramPoints = [];
|
|
291
|
+
for (let offset = waveStart; offset + 1 < waveEnd; offset += 2) {
|
|
292
|
+
const raw = littleEndian16(bytes, offset);
|
|
293
|
+
const signed = raw & 0x8000 ? raw - 0x10000 : raw;
|
|
294
|
+
diagramPoints.push(signed * 4033 / 3145632);
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
heartRate: littleEndian16(bytes, 6),
|
|
298
|
+
duration: recordingBytes / 2,
|
|
299
|
+
diagnosticResult: ((0, _hexToByte.hexToByte)(bytes[16] ?? "00") | (0, _hexToByte.hexToByte)(bytes[17] ?? "00") << 8 | (0, _hexToByte.hexToByte)(bytes[18] ?? "00") << 16 | (0, _hexToByte.hexToByte)(bytes[19] ?? "00") << 24) >>> 0,
|
|
300
|
+
diagramPoints
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
exports.decodePulsebitEcgFile = decodePulsebitEcgFile;
|
|
263
304
|
//# sourceMappingURL=checkme.protocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_frameReadStatus","require","_calculateCrc","_hexToByte","CHECKME_SERVICE","exports","CHECKME_WRITE","CHECKME_NOTIFY","CheckmeCommand","info","ping","syncParameters","readStart","readContent","readEnd","CheckmeListType","daily","ecg","oxygen","bloodPressure","temperature","user","byte","value","toString","padStart","littleEndian16","bytes","offset","hexToByte","frame","command","payload","length","result","calculateCrc8","checkmeCommand","checkmeReadFileStart","name","map","character","charCodeAt","checkmeReadContent","sequence","checkmeReadEnd","decodeCheckmeResponse","head","undefined","state","content","slice","CheckmeFrameReader","readFrame","buffer","start","findStart","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","frameLength","CORRUPT","hasValidChecksum","COMPLETE","index","checksum","at","dateFrom","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","recordNameFor","parseCheckmeBloodPressureRecords","records","recordedAt","push","recordName","systolic","diastolic","heartRate","parseCheckmeDailyRecords","bloodOxygen","parseCheckmeOxygenRecords","perfusionIndex","parseCheckmeTemperatureRecords","parseCheckmeEcgRecords","decodeCheckmeEcgFile","recordingBytes","waveBytes","waveStart","waveEnd","min","diagramPoints","raw","signed","duration","diagnosticResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_frameReadStatus","require","_calculateCrc","_hexToByte","CHECKME_SERVICE","exports","CHECKME_WRITE","CHECKME_NOTIFY","CheckmeCommand","info","ping","syncParameters","readStart","readContent","readEnd","CheckmeListType","daily","ecg","oxygen","bloodPressure","temperature","user","byte","value","toString","padStart","littleEndian16","bytes","offset","hexToByte","frame","command","payload","length","result","calculateCrc8","checkmeCommand","checkmeReadFileStart","name","map","character","charCodeAt","checkmeReadContent","sequence","checkmeReadEnd","decodeCheckmeResponse","head","undefined","state","content","slice","CheckmeFrameReader","readFrame","buffer","start","findStart","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","frameLength","CORRUPT","hasValidChecksum","COMPLETE","index","checksum","at","dateFrom","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","recordNameFor","parseCheckmeBloodPressureRecords","records","recordedAt","push","recordName","systolic","diastolic","heartRate","parseCheckmeDailyRecords","bloodOxygen","parseCheckmeOxygenRecords","perfusionIndex","parseCheckmeTemperatureRecords","parseCheckmeEcgRecords","decodeCheckmeEcgFile","recordingBytes","waveBytes","waveStart","waveEnd","min","diagramPoints","raw","signed","duration","diagnosticResult","parsePulsebitEcgRecords","decodePulsebitEcgFile"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pc80bMainServices = exports.Pc80bDevice = void 0;
|
|
7
|
+
var _btManagedDevice = require("../bt-managed-device.js");
|
|
8
|
+
var _pc80bProtocol = require("./pc80b.protocol.js");
|
|
9
|
+
var _pc80bSequencer = require("./pc80b.sequencer.js");
|
|
10
|
+
const acceptNothing = {
|
|
11
|
+
caseValuePosition: [],
|
|
12
|
+
cases: []
|
|
13
|
+
};
|
|
14
|
+
const pc80bMainServices = exports.pc80bMainServices = [{
|
|
15
|
+
uuid: _pc80bProtocol.PC80B_SERVICE,
|
|
16
|
+
monitorUuids: [{
|
|
17
|
+
uuid: _pc80bProtocol.PC80B_NOTIFY,
|
|
18
|
+
parsingModel: acceptNothing
|
|
19
|
+
}],
|
|
20
|
+
writeUuid: {
|
|
21
|
+
uuid: _pc80bProtocol.PC80B_WRITE,
|
|
22
|
+
mainCommandUuid: "a5"
|
|
23
|
+
}
|
|
24
|
+
}];
|
|
25
|
+
class Pc80bDevice extends _btManagedDevice.BTManagedDevice {
|
|
26
|
+
mainServices = pc80bMainServices;
|
|
27
|
+
stuckDataTimeout = 180_000;
|
|
28
|
+
onStreamStart = undefined;
|
|
29
|
+
preferredMtu = 247;
|
|
30
|
+
validatePackage = () => true;
|
|
31
|
+
constructor(device, params) {
|
|
32
|
+
super(device, params);
|
|
33
|
+
this.frameReader = new _pc80bProtocol.Pc80FrameReader();
|
|
34
|
+
this.createCommandSequencer = () => new _pc80bSequencer.Pc80bSequencer({
|
|
35
|
+
write: {
|
|
36
|
+
serviceUuid: _pc80bProtocol.PC80B_SERVICE,
|
|
37
|
+
characteristicUuid: _pc80bProtocol.PC80B_WRITE
|
|
38
|
+
},
|
|
39
|
+
onResult: result => this.onResult?.(result)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
handleSuccessResult() {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.Pc80bDevice = Pc80bDevice;
|
|
47
|
+
//# sourceMappingURL=pc80b.device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_btManagedDevice","require","_pc80bProtocol","_pc80bSequencer","acceptNothing","caseValuePosition","cases","pc80bMainServices","exports","uuid","PC80B_SERVICE","monitorUuids","PC80B_NOTIFY","parsingModel","writeUuid","PC80B_WRITE","mainCommandUuid","Pc80bDevice","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","validatePackage","constructor","device","params","frameReader","Pc80FrameReader","createCommandSequencer","Pc80bSequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/pc80b.device.ts"],"mappings":";;;;;;AAOA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAMA,IAAAE,eAAA,GAAAF,OAAA;AAEA,MAAMG,aAAa,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAE1D,MAAMC,iBAA6B,GAAAC,OAAA,CAAAD,iBAAA,GAAG,CACpC;EACEE,IAAI,EAAEC,4BAAa;EACnBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,2BAAY;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACnEU,SAAS,EAAE;IACTL,IAAI,EAAEM,0BAAW;IACjBC,eAAe,EAAE;EACnB;AACF,CAAC,CACF;AAED,MAAMC,WAAW,SAASC,gCAAe,CAA0B;EACvDC,YAAY,GAAGZ,iBAAiB;EAChCa,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAClBC,eAAe,GAAGA,CAAA,KAAe,IAAI;EAEjDC,WAAWA,CAChBC,MAAc,EACdC,MAAmD,EACnD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,8BAAe,CAAC,CAAC;IACxC,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,8BAAc,CAAC;MACjBC,KAAK,EAAE;QACLC,WAAW,EAAEvB,4BAAa;QAC1BwB,kBAAkB,EAAEnB;MACtB,CAAC;MACDoB,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC7B,OAAA,CAAAS,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pc80TransferAck = exports.pc80Info = exports.pc80DataAck = exports.pc80Command = exports.decodePc80Response = exports.decodePc80EcgFile = exports.Pc80FrameReader = exports.Pc80Command = exports.PC80B_WRITE = exports.PC80B_SERVICE = exports.PC80B_NOTIFY = exports.PC80B_ECG_LENGTH = void 0;
|
|
7
|
+
var _frameReadStatus = require("../../../types/frame-read-status.js");
|
|
8
|
+
var _calculateCrc8Pc = require("../../../utils/calculate-crc-8-pc.js");
|
|
9
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
10
|
+
const PC80B_SERVICE = exports.PC80B_SERVICE = "0000fff0-0000-1000-8000-00805f9b34fb";
|
|
11
|
+
const PC80B_WRITE = exports.PC80B_WRITE = "0000fff2-0000-1000-8000-00805f9b34fb";
|
|
12
|
+
const PC80B_NOTIFY = exports.PC80B_NOTIFY = "0000fff1-0000-1000-8000-00805f9b34fb";
|
|
13
|
+
const PC80B_ECG_LENGTH = exports.PC80B_ECG_LENGTH = 9_796;
|
|
14
|
+
const Pc80Command = exports.Pc80Command = {
|
|
15
|
+
info: 0x11,
|
|
16
|
+
transfer: 0x55,
|
|
17
|
+
data: 0xaa
|
|
18
|
+
};
|
|
19
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
20
|
+
const pc80Command = (command, payload = []) => {
|
|
21
|
+
const frame = ["a5", byte(command), byte(payload.length), ...payload, "00"];
|
|
22
|
+
frame[frame.length - 1] = byte((0, _calculateCrc8Pc.calculateCrc8Pc)(frame));
|
|
23
|
+
return frame;
|
|
24
|
+
};
|
|
25
|
+
exports.pc80Command = pc80Command;
|
|
26
|
+
const pc80Info = () => pc80Command(Pc80Command.info, ["00", "00", "00", "00", "00", "00"]);
|
|
27
|
+
exports.pc80Info = pc80Info;
|
|
28
|
+
const pc80TransferAck = status => pc80Command(Pc80Command.transfer, [byte(status)]);
|
|
29
|
+
exports.pc80TransferAck = pc80TransferAck;
|
|
30
|
+
const pc80DataAck = (sequence, status) => pc80Command(Pc80Command.data, [byte(sequence), byte(status)]);
|
|
31
|
+
exports.pc80DataAck = pc80DataAck;
|
|
32
|
+
const decodePc80Response = frame => {
|
|
33
|
+
if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0xa5) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const length = (0, _hexToByte.hexToByte)(frame[2] ?? "00");
|
|
37
|
+
if (frame.length !== length + 4 || (0, _calculateCrc8Pc.calculateCrc8Pc)(frame) !== (0, _hexToByte.hexToByte)(frame.at(-1) ?? "00")) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
command: (0, _hexToByte.hexToByte)(frame[1] ?? "00"),
|
|
42
|
+
content: frame.slice(3, 3 + length)
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
exports.decodePc80Response = decodePc80Response;
|
|
46
|
+
const littleEndian16 = (bytes, offset) => (0, _hexToByte.hexToByte)(bytes[offset] ?? "00") | ((0, _hexToByte.hexToByte)(bytes[offset + 1] ?? "00") & 0xff) << 8;
|
|
47
|
+
const validDate = bytes => {
|
|
48
|
+
const year = littleEndian16(bytes, 0);
|
|
49
|
+
const month = (0, _hexToByte.hexToByte)(bytes[2] ?? "00");
|
|
50
|
+
const day = (0, _hexToByte.hexToByte)(bytes[3] ?? "00");
|
|
51
|
+
const hour = (0, _hexToByte.hexToByte)(bytes[7] ?? "00");
|
|
52
|
+
const minute = (0, _hexToByte.hexToByte)(bytes[8] ?? "00");
|
|
53
|
+
const second = (0, _hexToByte.hexToByte)(bytes[9] ?? "00");
|
|
54
|
+
const date = new Date(year, month - 1, day, hour, minute, second);
|
|
55
|
+
return month >= 1 && month <= 12 && date.getFullYear() === year ? date : undefined;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** Decodes the fixed 9,796-byte SCP container used by PC80B. */
|
|
59
|
+
const decodePc80EcgFile = bytes => {
|
|
60
|
+
if (bytes.length < PC80B_ECG_LENGTH) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
const waveStart = 196;
|
|
64
|
+
const waveEnd = 9_196;
|
|
65
|
+
const diagramPoints = [];
|
|
66
|
+
for (let offset = waveStart; offset + 1 < waveEnd; offset += 2) {
|
|
67
|
+
const sample = ((0, _hexToByte.hexToByte)(bytes[offset] ?? "00") | ((0, _hexToByte.hexToByte)(bytes[offset + 1] ?? "00") & 0x0f) << 8) - 2048;
|
|
68
|
+
diagramPoints.push(sample / 330);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
heartRate: littleEndian16(bytes, 9_215),
|
|
72
|
+
diagnosticResult: (0, _hexToByte.hexToByte)(bytes[9_224] ?? "00"),
|
|
73
|
+
recordedAt: validDate(bytes.slice(101, 111)),
|
|
74
|
+
duration: diagramPoints.length / 150,
|
|
75
|
+
diagramPoints
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
exports.decodePc80EcgFile = decodePc80EcgFile;
|
|
79
|
+
class Pc80FrameReader {
|
|
80
|
+
readFrame(buffer) {
|
|
81
|
+
const start = buffer.findIndex(value => (0, _hexToByte.hexToByte)(value) === 0xa5);
|
|
82
|
+
if (start < 0) {
|
|
83
|
+
return {
|
|
84
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
85
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (start + 3 > buffer.length) {
|
|
89
|
+
return {
|
|
90
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
91
|
+
consumedBytes: start
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const length = (0, _hexToByte.hexToByte)(buffer[start + 2] ?? "00") + 4;
|
|
95
|
+
if (start + length > buffer.length) {
|
|
96
|
+
return {
|
|
97
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
98
|
+
consumedBytes: start
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const frame = buffer.slice(start, start + length);
|
|
102
|
+
if (decodePc80Response(frame) === undefined) {
|
|
103
|
+
return {
|
|
104
|
+
status: _frameReadStatus.FrameReadStatus.CORRUPT,
|
|
105
|
+
consumedBytes: start + 1
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
status: _frameReadStatus.FrameReadStatus.COMPLETE,
|
|
110
|
+
consumedBytes: start + length,
|
|
111
|
+
frame
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.Pc80FrameReader = Pc80FrameReader;
|
|
116
|
+
//# sourceMappingURL=pc80b.protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_frameReadStatus","require","_calculateCrc8Pc","_hexToByte","PC80B_SERVICE","exports","PC80B_WRITE","PC80B_NOTIFY","PC80B_ECG_LENGTH","Pc80Command","info","transfer","data","byte","value","toString","padStart","pc80Command","command","payload","frame","length","calculateCrc8Pc","pc80Info","pc80TransferAck","status","pc80DataAck","sequence","decodePc80Response","hexToByte","undefined","at","content","slice","littleEndian16","bytes","offset","validDate","year","month","day","hour","minute","second","date","Date","getFullYear","decodePc80EcgFile","waveStart","waveEnd","diagramPoints","sample","push","heartRate","diagnosticResult","recordedAt","duration","Pc80FrameReader","readFrame","buffer","start","findIndex","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/pc80b.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Pc80bSequencer = void 0;
|
|
7
|
+
var _core = require("@ovok/core");
|
|
8
|
+
var _caseType = require("../../../types/case-type.js");
|
|
9
|
+
var _convertEcgDiagnosticFlag = require("../../../utils/convert-ecg-diagnostic-flag.js");
|
|
10
|
+
var _pc80bProtocol = require("./pc80b.protocol.js");
|
|
11
|
+
const READ_TIMEOUT_MS = 5_000;
|
|
12
|
+
const MAX_RETRIES = 2;
|
|
13
|
+
const command = (write, frame) => ({
|
|
14
|
+
...write,
|
|
15
|
+
frame,
|
|
16
|
+
withoutResponse: true
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
/** Handles PC80B's info, transfer acknowledgement and fixed-size SCP ECG download. */
|
|
20
|
+
class Pc80bSequencer {
|
|
21
|
+
recording = false;
|
|
22
|
+
done = false;
|
|
23
|
+
content = [];
|
|
24
|
+
retries = 0;
|
|
25
|
+
constructor(params) {
|
|
26
|
+
this.params = params;
|
|
27
|
+
}
|
|
28
|
+
initialCommands = () => this.remember(this.write((0, _pc80bProtocol.pc80Info)()));
|
|
29
|
+
isHistoryTransfer = () => true;
|
|
30
|
+
commandTimeoutMs = () => this.done ? undefined : READ_TIMEOUT_MS;
|
|
31
|
+
onCommandTimeout = () => {
|
|
32
|
+
if (!this.lastCommand || this.retries >= MAX_RETRIES) {
|
|
33
|
+
this.done = true;
|
|
34
|
+
return {
|
|
35
|
+
terminal: true
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
this.retries += 1;
|
|
39
|
+
return {
|
|
40
|
+
commands: [this.lastCommand]
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
isNormalDisconnect = () => this.done;
|
|
44
|
+
nextCommand = frame => {
|
|
45
|
+
const response = (0, _pc80bProtocol.decodePc80Response)(frame);
|
|
46
|
+
if (!response || this.done) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
this.retries = 0;
|
|
50
|
+
if (response.command === _pc80bProtocol.Pc80Command.transfer) {
|
|
51
|
+
if ((response.content[1] ? Number.parseInt(response.content[1], 16) : 0) === 1) {
|
|
52
|
+
this.recording = true;
|
|
53
|
+
this.content = [];
|
|
54
|
+
}
|
|
55
|
+
return this.remember(this.write((0, _pc80bProtocol.pc80TransferAck)(0)));
|
|
56
|
+
}
|
|
57
|
+
if (response.command !== _pc80bProtocol.Pc80Command.data || !this.recording) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const sequence = Number.parseInt(response.content[0] ?? "00", 16);
|
|
61
|
+
if (response.content.length === 1) {
|
|
62
|
+
const recording = (0, _pc80bProtocol.decodePc80EcgFile)(this.content);
|
|
63
|
+
if (recording) {
|
|
64
|
+
this.params.onResult({
|
|
65
|
+
caseType: _caseType.CaseType.RESULT,
|
|
66
|
+
measurementTypeKey: _core.MeasurementTypeKey.ecg,
|
|
67
|
+
heartRate: recording.heartRate,
|
|
68
|
+
diagnosticResult: (0, _convertEcgDiagnosticFlag.convertEcgDiagnosticFlag)(`${recording.diagnosticResult.toString(16).padStart(2, "0")}000000`),
|
|
69
|
+
recordedAt: recording.recordedAt,
|
|
70
|
+
duration: recording.duration,
|
|
71
|
+
diagramPoints: recording.diagramPoints
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
this.done = true;
|
|
75
|
+
return this.remember(this.write((0, _pc80bProtocol.pc80DataAck)(sequence, 0)));
|
|
76
|
+
}
|
|
77
|
+
this.content.push(...response.content.slice(1));
|
|
78
|
+
return this.remember(this.write((0, _pc80bProtocol.pc80DataAck)(sequence, this.content.length > _pc80bProtocol.PC80B_ECG_LENGTH ? 1 : 0)));
|
|
79
|
+
};
|
|
80
|
+
write = frame => command(this.params.write, frame);
|
|
81
|
+
remember = next => {
|
|
82
|
+
this.lastCommand = next;
|
|
83
|
+
return [next];
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
exports.Pc80bSequencer = Pc80bSequencer;
|
|
87
|
+
//# sourceMappingURL=pc80b.sequencer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","_caseType","_convertEcgDiagnosticFlag","_pc80bProtocol","READ_TIMEOUT_MS","MAX_RETRIES","command","write","frame","withoutResponse","Pc80bSequencer","recording","done","content","retries","constructor","params","initialCommands","remember","pc80Info","isHistoryTransfer","commandTimeoutMs","undefined","onCommandTimeout","lastCommand","terminal","commands","isNormalDisconnect","nextCommand","response","decodePc80Response","Pc80Command","transfer","Number","parseInt","pc80TransferAck","data","sequence","length","decodePc80EcgFile","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","ecg","heartRate","diagnosticResult","convertEcgDiagnosticFlag","toString","padStart","recordedAt","duration","diagramPoints","pc80DataAck","push","slice","PC80B_ECG_LENGTH","next","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/pc80b.sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pm10MainServices = exports.Pm10Device = void 0;
|
|
7
|
+
var _btManagedDevice = require("../bt-managed-device.js");
|
|
8
|
+
var _viatomPm10Protocol = require("./viatom.pm10.protocol.js");
|
|
9
|
+
var _viatomPm10Sequencer = require("./viatom.pm10.sequencer.js");
|
|
10
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements */
|
|
11
|
+
|
|
12
|
+
const acceptEverything = {
|
|
13
|
+
caseValuePosition: [],
|
|
14
|
+
cases: []
|
|
15
|
+
};
|
|
16
|
+
const pm10MainServices = exports.pm10MainServices = [{
|
|
17
|
+
uuid: _viatomPm10Protocol.PM10_SERVICE,
|
|
18
|
+
monitorUuids: [{
|
|
19
|
+
uuid: _viatomPm10Protocol.PM10_NOTIFY,
|
|
20
|
+
parsingModel: acceptEverything
|
|
21
|
+
}],
|
|
22
|
+
writeUuid: {
|
|
23
|
+
uuid: _viatomPm10Protocol.PM10_WRITE,
|
|
24
|
+
mainCommandUuid: "90"
|
|
25
|
+
}
|
|
26
|
+
}];
|
|
27
|
+
class Pm10Device extends _btManagedDevice.BTManagedDevice {
|
|
28
|
+
mainServices = pm10MainServices;
|
|
29
|
+
stuckDataTimeout = 120_000;
|
|
30
|
+
onStreamStart = undefined;
|
|
31
|
+
preferredMtu = 247;
|
|
32
|
+
constructor(device, params) {
|
|
33
|
+
super(device, params);
|
|
34
|
+
this.frameReader = new _viatomPm10Protocol.Pm10FrameReader();
|
|
35
|
+
this.createCommandSequencer = () => new _viatomPm10Sequencer.Pm10Sequencer({
|
|
36
|
+
write: {
|
|
37
|
+
serviceUuid: _viatomPm10Protocol.PM10_SERVICE,
|
|
38
|
+
characteristicUuid: _viatomPm10Protocol.PM10_WRITE
|
|
39
|
+
},
|
|
40
|
+
onResult: result => this.onResult?.(result)
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
handleSuccessResult() {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Pm10Device = Pm10Device;
|
|
48
|
+
//# sourceMappingURL=viatom.pm10.device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_btManagedDevice","require","_viatomPm10Protocol","_viatomPm10Sequencer","acceptEverything","caseValuePosition","cases","pm10MainServices","exports","uuid","PM10_SERVICE","monitorUuids","PM10_NOTIFY","parsingModel","writeUuid","PM10_WRITE","mainCommandUuid","Pm10Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","Pm10FrameReader","createCommandSequencer","Pm10Sequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.device.ts"],"mappings":";;;;;;AAQA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAVA;;AAYA,MAAMG,gBAAgB,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AACtD,MAAMC,gBAA4B,GAAAC,OAAA,CAAAD,gBAAA,GAAG,CAAC;EAAEE,IAAI,EAAEC,gCAAY;EAAEC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,+BAAW;IAAEC,YAAY,EAAET;EAAiB,CAAC,CAAC;EAAEU,SAAS,EAAE;IAAEL,IAAI,EAAEM,8BAAU;IAAEC,eAAe,EAAE;EAAK;AAAE,CAAC,CAAC;AAC5L,MAAMC,UAAU,SAASC,gCAAe,CAAyB;EAC5DC,YAAY,GAAGZ,gBAAgB;EAC/Ba,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAC9BC,WAAWA,CAACC,MAAc,EAAEC,MAAkD,EAAE;IACrF,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,mCAAe,CAAC,CAAC;IACxC,IAAI,CAACC,sBAAsB,GAAG,MAAM,IAAIC,kCAAa,CAAC;MAAEC,KAAK,EAAE;QAAEC,WAAW,EAAEtB,gCAAY;QAAEuB,kBAAkB,EAAElB;MAAW,CAAC;MAAEmB,QAAQ,EAAGC,MAAM,IAAK,IAAI,CAACD,QAAQ,GAAGC,MAAuF;IAAE,CAAC,CAAC;EACjQ;EACUC,mBAAmBA,CAAA,EAAS;IAAE;EAAQ;AAClD;AAAC5B,OAAA,CAAAS,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pm10GetTotal = exports.pm10GetCaseInfo = exports.pm10GetCaseData = exports.pm10Command = exports.decodePm10WavePage = exports.decodePm10Frame = exports.decodePm10CaseInfo = exports.Pm10FrameReader = exports.PM10_WRITE = exports.PM10_SERVICE = exports.PM10_NOTIFY = void 0;
|
|
7
|
+
var _frameReadStatus = require("../../../types/frame-read-status.js");
|
|
8
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
9
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements, curly, max-lines */
|
|
10
|
+
|
|
11
|
+
const PM10_SERVICE = exports.PM10_SERVICE = "0000ff12-0000-1000-8000-00805f9b34fb";
|
|
12
|
+
const PM10_WRITE = exports.PM10_WRITE = "0000ff01-0000-1000-8000-00805f9b34fb";
|
|
13
|
+
const PM10_NOTIFY = exports.PM10_NOTIFY = "0000ff02-0000-1000-8000-00805f9b34fb";
|
|
14
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
15
|
+
const checksum = frame => byte(frame.reduce((sum, value) => sum + (0, _hexToByte.hexToByte)(value), 0) & 0x7f);
|
|
16
|
+
const pm10Command = (head, payload = []) => {
|
|
17
|
+
const body = [byte(head), ...payload.map(byte)];
|
|
18
|
+
return [...body, checksum(body)];
|
|
19
|
+
};
|
|
20
|
+
exports.pm10Command = pm10Command;
|
|
21
|
+
const pm10GetTotal = () => pm10Command(0x90, [0x03]);
|
|
22
|
+
exports.pm10GetTotal = pm10GetTotal;
|
|
23
|
+
const pm10GetCaseInfo = type => pm10Command(0x95, [type]);
|
|
24
|
+
exports.pm10GetCaseInfo = pm10GetCaseInfo;
|
|
25
|
+
const pm10GetCaseData = type => pm10Command(0x96, [type]);
|
|
26
|
+
exports.pm10GetCaseData = pm10GetCaseData;
|
|
27
|
+
const decodePm10CaseInfo = content => {
|
|
28
|
+
if (content.length < 16) return undefined;
|
|
29
|
+
const value = index => (0, _hexToByte.hexToByte)(content[index] ?? "00");
|
|
30
|
+
const recordedAt = new Date(2000 + value(0), value(1) - 1, value(2), value(3), value(4), value(5));
|
|
31
|
+
const heartRate = (value(7) & 0x7f) << 7 | value(6) & 0x7f;
|
|
32
|
+
const waveformLength = (value(15) & 0x7f) << 7 | value(14) & 0x7f;
|
|
33
|
+
return {
|
|
34
|
+
recordedAt,
|
|
35
|
+
heartRate,
|
|
36
|
+
waveformLength,
|
|
37
|
+
results: content.slice(8, 14).map((_entry, index) => value(index + 8))
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.decodePm10CaseInfo = decodePm10CaseInfo;
|
|
41
|
+
const mergeSevenBit = (mask, values) => values.slice(0, 7).map((value, index) => {
|
|
42
|
+
const raw = (0, _hexToByte.hexToByte)(value) & 0x7f;
|
|
43
|
+
return (mask & 1 << index) !== 0 ? raw | 0x80 : raw;
|
|
44
|
+
});
|
|
45
|
+
const decodePm10WavePage = content => {
|
|
46
|
+
if (content.length < 15) return [];
|
|
47
|
+
const first = mergeSevenBit((0, _hexToByte.hexToByte)(content[0] ?? "00"), content.slice(3, 10));
|
|
48
|
+
const second = mergeSevenBit((0, _hexToByte.hexToByte)(content[1] ?? "00"), content.slice(10, 17));
|
|
49
|
+
return [...first, ...second].map((high, index) => {
|
|
50
|
+
const low = index < 7 ? (0, _hexToByte.hexToByte)(content[index + 3] ?? "00") : (0, _hexToByte.hexToByte)(content[index + 3] ?? "00");
|
|
51
|
+
return (high << 8 | low) - 16384;
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
exports.decodePm10WavePage = decodePm10WavePage;
|
|
55
|
+
const responseLength = {
|
|
56
|
+
0xe0: 7,
|
|
57
|
+
0xe5: 18,
|
|
58
|
+
0xe6: 17,
|
|
59
|
+
0xf2: 8,
|
|
60
|
+
0xf3: 3,
|
|
61
|
+
0xf4: 18,
|
|
62
|
+
0xf5: 3,
|
|
63
|
+
0xf8: 10
|
|
64
|
+
};
|
|
65
|
+
const decodePm10Frame = frame => {
|
|
66
|
+
const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
|
|
67
|
+
const length = responseLength[head];
|
|
68
|
+
if (!length || frame.length < length || checksum(frame.slice(0, -1)) !== frame[length - 1]) return undefined;
|
|
69
|
+
return {
|
|
70
|
+
head,
|
|
71
|
+
content: frame.slice(1, length - 1)
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
exports.decodePm10Frame = decodePm10Frame;
|
|
75
|
+
class Pm10FrameReader {
|
|
76
|
+
readFrame(buffer) {
|
|
77
|
+
const start = buffer.findIndex(value => responseLength[(0, _hexToByte.hexToByte)(value)] !== undefined);
|
|
78
|
+
if (start < 0) return {
|
|
79
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
80
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
81
|
+
};
|
|
82
|
+
const length = responseLength[(0, _hexToByte.hexToByte)(buffer[start] ?? "00")];
|
|
83
|
+
if (length === undefined) return {
|
|
84
|
+
status: _frameReadStatus.FrameReadStatus.CORRUPT,
|
|
85
|
+
consumedBytes: start + 1
|
|
86
|
+
};
|
|
87
|
+
if (start + length > buffer.length) return {
|
|
88
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
89
|
+
consumedBytes: start
|
|
90
|
+
};
|
|
91
|
+
const frame = buffer.slice(start, start + length);
|
|
92
|
+
if (!decodePm10Frame(frame)) return {
|
|
93
|
+
status: _frameReadStatus.FrameReadStatus.CORRUPT,
|
|
94
|
+
consumedBytes: start + 1
|
|
95
|
+
};
|
|
96
|
+
return {
|
|
97
|
+
status: _frameReadStatus.FrameReadStatus.COMPLETE,
|
|
98
|
+
consumedBytes: start + length,
|
|
99
|
+
frame
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.Pm10FrameReader = Pm10FrameReader;
|
|
104
|
+
//# sourceMappingURL=viatom.pm10.protocol.js.map
|
package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_frameReadStatus","require","_hexToByte","PM10_SERVICE","exports","PM10_WRITE","PM10_NOTIFY","byte","value","toString","padStart","checksum","frame","reduce","sum","hexToByte","pm10Command","head","payload","body","map","pm10GetTotal","pm10GetCaseInfo","type","pm10GetCaseData","decodePm10CaseInfo","content","length","undefined","index","recordedAt","Date","heartRate","waveformLength","results","slice","_entry","mergeSevenBit","mask","values","raw","decodePm10WavePage","first","second","high","low","responseLength","decodePm10Frame","Pm10FrameReader","readFrame","buffer","start","findIndex","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Pm10Sequencer = void 0;
|
|
7
|
+
var _core = require("@ovok/core");
|
|
8
|
+
var _caseType = require("../../../types/case-type.js");
|
|
9
|
+
var _viatomPm10Protocol = require("./viatom.pm10.protocol.js");
|
|
10
|
+
/* eslint-disable import/order, padding-line-between-statements, curly */
|
|
11
|
+
|
|
12
|
+
const command = (params, frame) => ({
|
|
13
|
+
...params.write,
|
|
14
|
+
frame,
|
|
15
|
+
withoutResponse: true
|
|
16
|
+
});
|
|
17
|
+
class Pm10Sequencer {
|
|
18
|
+
phase = "total";
|
|
19
|
+
pages = [];
|
|
20
|
+
constructor(params) {
|
|
21
|
+
this.params = params;
|
|
22
|
+
}
|
|
23
|
+
initialCommands = () => [command(this.params, (0, _viatomPm10Protocol.pm10GetTotal)())];
|
|
24
|
+
isHistoryTransfer = () => true;
|
|
25
|
+
isNormalDisconnect = () => this.phase === "done";
|
|
26
|
+
nextCommand = frame => {
|
|
27
|
+
const response = (0, _viatomPm10Protocol.decodePm10Frame)(frame);
|
|
28
|
+
if (!response) return undefined;
|
|
29
|
+
if (response.head === 0xe0 && this.phase === "total") {
|
|
30
|
+
this.phase = "info";
|
|
31
|
+
return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseInfo)(3))];
|
|
32
|
+
}
|
|
33
|
+
if (response.head === 0xe5 && this.phase === "info") {
|
|
34
|
+
this.info = (0, _viatomPm10Protocol.decodePm10CaseInfo)(response.content);
|
|
35
|
+
this.pages = [];
|
|
36
|
+
this.phase = "data";
|
|
37
|
+
return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseData)(0))];
|
|
38
|
+
}
|
|
39
|
+
if (response.head === 0xe6 && this.phase === "data") {
|
|
40
|
+
this.pages.push(...(0, _viatomPm10Protocol.decodePm10WavePage)(response.content));
|
|
41
|
+
const last = (Number.parseInt(response.content[0] ?? "00", 16) & 0x40) !== 0;
|
|
42
|
+
if (!last) return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseData)(1))];
|
|
43
|
+
if (this.info) this.params.onResult({
|
|
44
|
+
caseType: _caseType.CaseType.RESULT,
|
|
45
|
+
measurementTypeKey: _core.MeasurementTypeKey.ecg,
|
|
46
|
+
heartRate: this.info.heartRate,
|
|
47
|
+
diagramPoints: this.pages,
|
|
48
|
+
duration: this.pages.length / 125,
|
|
49
|
+
recordedAt: this.info.recordedAt
|
|
50
|
+
});
|
|
51
|
+
this.phase = "done";
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
exports.Pm10Sequencer = Pm10Sequencer;
|
|
57
|
+
//# sourceMappingURL=viatom.pm10.sequencer.js.map
|