@ovok/native 1.6.40 → 1.6.42
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 +3 -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 +13 -1
- 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/index.js +33 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-tmb.js +34 -0
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-tmb.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +5 -0
- package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js +4 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.device.js +50 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.device.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js +113 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js +74 -0
- package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +16 -0
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.bp-handler.js +70 -0
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.bp-handler.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.command-sequencer.js +100 -0
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.command-sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.frame-reader.js +54 -0
- package/lib/commonjs/modules/bt-management/services/devices/tmb/tmb.frame-reader.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +51 -2
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
- package/lib/commonjs/modules/bt-management/types/custom-tmb-spec.js +2 -0
- package/lib/commonjs/modules/bt-management/types/custom-tmb-spec.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/integrated-devices.js +2 -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 +3 -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 +14 -2
- 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/index.js +3 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-tmb.js +30 -0
- package/lib/module/modules/bt-management/services/custom/compile-custom-tmb.js.map +1 -0
- package/lib/module/modules/bt-management/services/custom/define-custom-device.js +5 -0
- package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/device-creator.js +4 -1
- package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.device.js +45 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.device.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js +104 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js +69 -0
- package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +16 -0
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.bp-handler.js +65 -0
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.bp-handler.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.command-sequencer.js +96 -0
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.command-sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.frame-reader.js +49 -0
- package/lib/module/modules/bt-management/services/devices/tmb/tmb.frame-reader.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +49 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
- package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -1
- package/lib/module/modules/bt-management/types/custom-tmb-spec.js +2 -0
- package/lib/module/modules/bt-management/types/custom-tmb-spec.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 +2 -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/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-tmb.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-tmb.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.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-pod.device.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts +37 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts +26 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.bp-handler.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.bp-handler.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.command-sequencer.d.ts +28 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.command-sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.frame-reader.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/tmb/tmb.frame-reader.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-tmb-spec.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-tmb-spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +2 -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 +3 -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/index.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-tmb.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-tmb.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.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-pod.device.d.ts +22 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts +37 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts +26 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.bp-handler.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.bp-handler.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.command-sequencer.d.ts +28 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.command-sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.frame-reader.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/tmb/tmb.frame-reader.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-tmb-spec.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-tmb-spec.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +2 -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 +3 -1
- package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_btManagedDevice","require","_checkmePodProtocol","_checkmePodSequencer","acceptNothing","caseValuePosition","cases","checkmePodMainServices","exports","uuid","CHECKME_POD_SERVICE","monitorUuids","CHECKME_POD_NOTIFY","parsingModel","writeUuid","CHECKME_POD_WRITE","mainCommandUuid","CheckmePodDevice","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","CheckmePodFrameReader","createCommandSequencer","CheckmePodSequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme-pod.device.ts"],"mappings":";;;;;;AAUA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AAMA,IAAAE,oBAAA,GAAAF,OAAA;AAlBA;;AAoBA,MAAMG,aAAa,GAAG;EACpBC,iBAAiB,EAAE,EAAE;EACrBC,KAAK,EAAE;AACT,CAAC;AAEM,MAAMC,sBAAkC,GAAAC,OAAA,CAAAD,sBAAA,GAAG,CAChD;EACEE,IAAI,EAAEC,uCAAmB;EACzBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,sCAAkB;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACzEU,SAAS,EAAE;IACTL,IAAI,EAAEM,qCAAiB;IACvBC,eAAe,EAAE;EACnB;AACF,CAAC,CACF;;AAED;AACO,MAAMC,gBAAgB,SAASC,gCAAe,CAAgC;EACzEC,YAAY,GAAGZ,sBAAsB;EACrCa,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAE9BC,WAAWA,CAChBC,MAAc,EACdC,MAAyD,EACzD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,yCAAqB,CAAC,CAAC;IAC9C,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,wCAAmB,CAAC;MACtBC,KAAK,EAAE;QACLC,WAAW,EAAEtB,uCAAmB;QAChCuB,kBAAkB,EAAElB;MACtB,CAAC;MACDmB,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC5B,OAAA,CAAAS,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseCheckmePodRealtimeReading = exports.decodeCheckmePodResponse = exports.checkmePodSyncTime = exports.checkmePodCommand = exports.CheckmePodFrameReader = exports.CheckmePodCommand = exports.CHECKME_POD_WRITE = exports.CHECKME_POD_SERVICE = exports.CHECKME_POD_NOTIFY = void 0;
|
|
7
|
+
var _frameReadStatus = require("../../../types/frame-read-status.js");
|
|
8
|
+
var _calculateCrc = require("../../../utils/calculate-crc-8.js");
|
|
9
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
10
|
+
/* eslint-disable import/group-exports */
|
|
11
|
+
|
|
12
|
+
const CHECKME_POD_SERVICE = exports.CHECKME_POD_SERVICE = "14839ac4-7d7e-415c-9a42-167340cf2339";
|
|
13
|
+
const CHECKME_POD_WRITE = exports.CHECKME_POD_WRITE = "8b00ace7-eb0b-49b0-bbe9-9aee0a26e1a3";
|
|
14
|
+
const CHECKME_POD_NOTIFY = exports.CHECKME_POD_NOTIFY = "0734594a-a8e7-4b1a-a6b1-cd5243059a57";
|
|
15
|
+
const CheckmePodCommand = exports.CheckmePodCommand = {
|
|
16
|
+
info: 0x14,
|
|
17
|
+
syncParameters: 0x16,
|
|
18
|
+
realtimeData: 0x20
|
|
19
|
+
};
|
|
20
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
21
|
+
const littleEndian16 = (bytes, offset) => (0, _hexToByte.hexToByte)(bytes[offset] ?? "00") | (0, _hexToByte.hexToByte)(bytes[offset + 1] ?? "00") << 8;
|
|
22
|
+
const ascii = value => [...value].map(character => byte(character.charCodeAt(0)));
|
|
23
|
+
|
|
24
|
+
/** Builds the AA command envelope used by Checkme Pod and Checkme Pod-WPS. */
|
|
25
|
+
const checkmePodCommand = (command, payload = [], sequence = 0) => {
|
|
26
|
+
const frame = ["aa", byte(command), byte(~command), byte(sequence), byte(sequence >> 8), byte(payload.length), byte(payload.length >> 8), ...payload, "00"];
|
|
27
|
+
frame[frame.length - 1] = byte((0, _calculateCrc.calculateCrc8)(frame, frame.length - 1));
|
|
28
|
+
return frame;
|
|
29
|
+
};
|
|
30
|
+
exports.checkmePodCommand = checkmePodCommand;
|
|
31
|
+
const checkmePodSyncTime = (now = new Date()) => {
|
|
32
|
+
const pad = value => value.toString().padStart(2, "0");
|
|
33
|
+
const time = `${now.getFullYear().toString().padStart(4, "0")}-${pad(now.getMonth() + 1)}-${pad(now.getDate())},${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
|
|
34
|
+
return checkmePodCommand(CheckmePodCommand.syncParameters, ascii(JSON.stringify({
|
|
35
|
+
SetTIME: time
|
|
36
|
+
})));
|
|
37
|
+
};
|
|
38
|
+
exports.checkmePodSyncTime = checkmePodSyncTime;
|
|
39
|
+
const decodeCheckmePodResponse = frame => {
|
|
40
|
+
if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0x55) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const length = littleEndian16(frame, 5);
|
|
44
|
+
if (frame.length !== length + 8) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
state: (0, _hexToByte.hexToByte)(frame[1] ?? "01") === 0,
|
|
49
|
+
sequence: littleEndian16(frame, 3),
|
|
50
|
+
content: frame.slice(7, 7 + length)
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
exports.decodeCheckmePodResponse = decodeCheckmePodResponse;
|
|
54
|
+
/** Decodes the 20-byte RtParam prefix used by the vendor's realtime response. */
|
|
55
|
+
const parseCheckmePodRealtimeReading = content => {
|
|
56
|
+
if (content.length < 20) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const state = (0, _hexToByte.hexToByte)(content[7] ?? "00");
|
|
60
|
+
return {
|
|
61
|
+
pulseRate: littleEndian16(content, 0),
|
|
62
|
+
bloodOxygen: littleEndian16(content, 2),
|
|
63
|
+
perfusionIndex: (0, _hexToByte.hexToByte)(content[4] ?? "00") / 10,
|
|
64
|
+
temperature: littleEndian16(content, 5) / 10,
|
|
65
|
+
oxygenState: state & 0x03,
|
|
66
|
+
temperatureState: (state & 0x0c) >> 2,
|
|
67
|
+
batteryState: (0, _hexToByte.hexToByte)(content[8] ?? "00"),
|
|
68
|
+
battery: (0, _hexToByte.hexToByte)(content[9] ?? "00"),
|
|
69
|
+
runStatus: (0, _hexToByte.hexToByte)(content[10] ?? "00")
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/** Reads split and concatenated Checkme Pod notifications with CRC validation. */
|
|
74
|
+
exports.parseCheckmePodRealtimeReading = parseCheckmePodRealtimeReading;
|
|
75
|
+
class CheckmePodFrameReader {
|
|
76
|
+
readFrame(buffer) {
|
|
77
|
+
const start = buffer.findIndex((value, index) => (0, _hexToByte.hexToByte)(value) === 0x55 && index + 2 < buffer.length && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === (~(0, _hexToByte.hexToByte)(buffer[index + 2] ?? "00") & 0xff));
|
|
78
|
+
if (start < 0) {
|
|
79
|
+
return {
|
|
80
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
81
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const payloadLength = littleEndian16(buffer, start + 5);
|
|
85
|
+
const frameLength = payloadLength + 8;
|
|
86
|
+
if (frameLength < 8) {
|
|
87
|
+
return {
|
|
88
|
+
status: _frameReadStatus.FrameReadStatus.CORRUPT,
|
|
89
|
+
consumedBytes: start + 1
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (start + frameLength > buffer.length) {
|
|
93
|
+
return {
|
|
94
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
95
|
+
consumedBytes: start
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const frame = buffer.slice(start, start + frameLength);
|
|
99
|
+
if ((0, _calculateCrc.calculateCrc8)([...frame], frame.length - 1) !== (0, _hexToByte.hexToByte)(frame.at(-1) ?? "00")) {
|
|
100
|
+
return {
|
|
101
|
+
status: _frameReadStatus.FrameReadStatus.CORRUPT,
|
|
102
|
+
consumedBytes: start + 1
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
status: _frameReadStatus.FrameReadStatus.COMPLETE,
|
|
107
|
+
consumedBytes: start + frameLength,
|
|
108
|
+
frame
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.CheckmePodFrameReader = CheckmePodFrameReader;
|
|
113
|
+
//# sourceMappingURL=checkme-pod.protocol.js.map
|
package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_frameReadStatus","require","_calculateCrc","_hexToByte","CHECKME_POD_SERVICE","exports","CHECKME_POD_WRITE","CHECKME_POD_NOTIFY","CheckmePodCommand","info","syncParameters","realtimeData","byte","value","toString","padStart","littleEndian16","bytes","offset","hexToByte","ascii","map","character","charCodeAt","checkmePodCommand","command","payload","sequence","frame","length","calculateCrc8","checkmePodSyncTime","now","Date","pad","time","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","JSON","stringify","SetTIME","decodeCheckmePodResponse","undefined","state","content","slice","parseCheckmePodRealtimeReading","pulseRate","bloodOxygen","perfusionIndex","temperature","oxygenState","temperatureState","batteryState","battery","runStatus","CheckmePodFrameReader","readFrame","buffer","start","findIndex","index","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","payloadLength","frameLength","CORRUPT","at","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme-pod.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CheckmePodSequencer = void 0;
|
|
7
|
+
var _core = require("@ovok/core");
|
|
8
|
+
var _caseType = require("../../../types/case-type.js");
|
|
9
|
+
var _checkmePodProtocol = require("./checkme-pod.protocol.js");
|
|
10
|
+
const command = (write, frame) => ({
|
|
11
|
+
...write,
|
|
12
|
+
frame,
|
|
13
|
+
withoutResponse: true
|
|
14
|
+
});
|
|
15
|
+
const valid = value => Number.isFinite(value) && value > 0;
|
|
16
|
+
|
|
17
|
+
/** Drives the info -> clock sync -> realtime exchange used by Checkme Pod. */
|
|
18
|
+
class CheckmePodSequencer {
|
|
19
|
+
phase = "info";
|
|
20
|
+
constructor(params) {
|
|
21
|
+
this.params = params;
|
|
22
|
+
}
|
|
23
|
+
initialCommands = () => [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.info))];
|
|
24
|
+
nextCommand = frame => {
|
|
25
|
+
const response = (0, _checkmePodProtocol.decodeCheckmePodResponse)(frame);
|
|
26
|
+
if (!response?.state) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
if (this.phase === "info") {
|
|
30
|
+
this.phase = "sync";
|
|
31
|
+
return [this.write((0, _checkmePodProtocol.checkmePodSyncTime)(this.params.now?.() ?? new Date()))];
|
|
32
|
+
}
|
|
33
|
+
if (this.phase === "sync") {
|
|
34
|
+
this.phase = "realtime";
|
|
35
|
+
return [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.realtimeData))];
|
|
36
|
+
}
|
|
37
|
+
this.report(response);
|
|
38
|
+
return [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.realtimeData))];
|
|
39
|
+
};
|
|
40
|
+
write = frame => command(this.params.write, frame);
|
|
41
|
+
report = response => {
|
|
42
|
+
const reading = (0, _checkmePodProtocol.parseCheckmePodRealtimeReading)(response.content);
|
|
43
|
+
if (!reading) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const recordedAt = this.params.now?.() ?? new Date();
|
|
47
|
+
if (valid(reading.bloodOxygen) || valid(reading.pulseRate)) {
|
|
48
|
+
this.params.onResult({
|
|
49
|
+
caseType: _caseType.CaseType.RESULT,
|
|
50
|
+
measurementTypeKey: _core.MeasurementTypeKey.bloodOxygenPulseRate,
|
|
51
|
+
...(valid(reading.bloodOxygen) ? {
|
|
52
|
+
bloodOxygen: reading.bloodOxygen
|
|
53
|
+
} : {}),
|
|
54
|
+
...(valid(reading.pulseRate) ? {
|
|
55
|
+
pulseRate: reading.pulseRate
|
|
56
|
+
} : {}),
|
|
57
|
+
...(valid(reading.perfusionIndex) ? {
|
|
58
|
+
perfusionIndex: reading.perfusionIndex
|
|
59
|
+
} : {}),
|
|
60
|
+
recordedAt
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (valid(reading.temperature)) {
|
|
64
|
+
this.params.onResult({
|
|
65
|
+
caseType: _caseType.CaseType.RESULT,
|
|
66
|
+
measurementTypeKey: _core.MeasurementTypeKey.temperature,
|
|
67
|
+
bodyTemp: reading.temperature,
|
|
68
|
+
recordedAt
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
exports.CheckmePodSequencer = CheckmePodSequencer;
|
|
74
|
+
//# sourceMappingURL=checkme-pod.sequencer.js.map
|
package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","_caseType","_checkmePodProtocol","command","write","frame","withoutResponse","valid","value","Number","isFinite","CheckmePodSequencer","phase","constructor","params","initialCommands","checkmePodCommand","CheckmePodCommand","info","nextCommand","response","decodeCheckmePodResponse","state","undefined","checkmePodSyncTime","now","Date","realtimeData","report","reading","parseCheckmePodRealtimeReading","content","recordedAt","bloodOxygen","pulseRate","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","bloodOxygenPulseRate","perfusionIndex","temperature","bodyTemp","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme-pod.sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,8 @@ var _btManagedDevice = require("../bt-managed-device.js");
|
|
|
14
14
|
var _lepuCommandBuilder = require("../lepu/lepu.command-builder.js");
|
|
15
15
|
var _lepuEcgTransfer = require("../lepu/lepu.ecg-transfer.js");
|
|
16
16
|
var _lepuFrameReader = require("../lepu/lepu.frame-reader.js");
|
|
17
|
+
var _tmbCommandSequencer = require("../tmb/tmb.command-sequencer.js");
|
|
18
|
+
var _tmbFrameReader = require("../tmb/tmb.frame-reader.js");
|
|
17
19
|
var _viatomBp3Files = require("../viatom/viatom.bp3-files.js");
|
|
18
20
|
var _viatomEcgFiles = require("../viatom/viatom.ecg-files.js");
|
|
19
21
|
var _customLepuSequencer = require("./custom-lepu-sequencer.js");
|
|
@@ -51,11 +53,25 @@ class CustomDevice extends _btManagedDevice.BTManagedDevice {
|
|
|
51
53
|
this.preferredMtu = definition.preferredMtu;
|
|
52
54
|
}
|
|
53
55
|
this.declareLepuProtocol(definition, params.clockSync);
|
|
56
|
+
this.declareTmbProtocol(definition, params.clockSync);
|
|
54
57
|
definition.frames.forEach((frame, uuid) => {
|
|
55
58
|
this.validators.set(uuid, (0, _createFrameValidator.createFrameValidator)(frame));
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
61
|
|
|
62
|
+
/** Gives a TMB declaration its length-prefixed reader and history command sequence. */
|
|
63
|
+
declareTmbProtocol(definition, clockSync) {
|
|
64
|
+
const tmb = definition.tmb;
|
|
65
|
+
if (!tmb) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.frameReader = new _tmbFrameReader.TmbFrameReader();
|
|
69
|
+
this.createCommandSequencer = () => new _tmbCommandSequencer.TmbCommandSequencer({
|
|
70
|
+
protocol: tmb,
|
|
71
|
+
clockSync
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
59
75
|
/**
|
|
60
76
|
* Gives a Lepu declaration its frame reader and its command sequence.
|
|
61
77
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_caseType","_createFrameValidator","_parseMeasurement","_rejectCustomReading","_bp2Files","_btManagedDevice","_lepuCommandBuilder","_lepuEcgTransfer","_lepuFrameReader","_viatomBp3Files","_viatomEcgFiles","_customLepuSequencer","CustomDevice","BTManagedDevice","reportedHistoryIds","Set","validators","Map","sessionAggregates","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","selectLepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","preferredMtu","declareLepuProtocol","frames","forEach","frame","set","createFrameValidator","LepuFrameReader","startBytes","createCommandSequencer","fileTransfer","clear","LepuEcgTransferSequencer","characteristicUuid","builder","LepuCommandBuilder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","afterTransfer","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","createLepuSequencer","file","decoded","decodeViatomEcgRecording","content","samples","length","onResult","measurementTypeKey","MeasurementTypeKey","ecg","caseType","CaseType","RESULT","diagramPoints","duration","recordedAt","recordedAtFromViatomFileName","recordingId","decodeBP2File","has","add","decodeViatomBp3File","info","recordLepuIdentity","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","key","existing","fieldNames","recordOffset","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","parseMeasurement","discard","reportMeasurement","discardedReadingError","rejectCustomReading","find","message","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_core","require","_caseType","_createFrameValidator","_parseMeasurement","_rejectCustomReading","_bp2Files","_btManagedDevice","_lepuCommandBuilder","_lepuEcgTransfer","_lepuFrameReader","_tmbCommandSequencer","_tmbFrameReader","_viatomBp3Files","_viatomEcgFiles","_customLepuSequencer","CustomDevice","BTManagedDevice","reportedHistoryIds","Set","validators","Map","sessionAggregates","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","selectLepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","preferredMtu","declareLepuProtocol","declareTmbProtocol","frames","forEach","frame","set","createFrameValidator","tmb","TmbFrameReader","createCommandSequencer","TmbCommandSequencer","protocol","LepuFrameReader","startBytes","fileTransfer","clear","LepuEcgTransferSequencer","characteristicUuid","builder","LepuCommandBuilder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","afterTransfer","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","createLepuSequencer","file","decoded","decodeViatomEcgRecording","content","samples","length","onResult","measurementTypeKey","MeasurementTypeKey","ecg","caseType","CaseType","RESULT","diagramPoints","duration","recordedAt","recordedAtFromViatomFileName","recordingId","decodeBP2File","has","add","decodeViatomBp3File","info","recordLepuIdentity","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","key","existing","fieldNames","recordOffset","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","parseMeasurement","discard","reportMeasurement","discardedReadingError","rejectCustomReading","find","message","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createTmbBloodPressureFrameHandler = void 0;
|
|
7
|
+
var _core = require("@ovok/core");
|
|
8
|
+
var _caseType = require("../../../types/case-type.js");
|
|
9
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
10
|
+
var _bp2Files = require("../bp2/bp2.files.js");
|
|
11
|
+
var _tmbCommandSequencer = require("./tmb.command-sequencer.js");
|
|
12
|
+
const RECORD_BYTES = 21;
|
|
13
|
+
const RECORD_RESPONSE = 0x4902;
|
|
14
|
+
const uint16 = (values, offset) => (0, _hexToByte.hexToByte)(values[offset] ?? "00") << 8 | (0, _hexToByte.hexToByte)(values[offset + 1] ?? "00");
|
|
15
|
+
const uint32 = (values, offset) => (0, _hexToByte.hexToByte)(values[offset] ?? "00") << 24 | (0, _hexToByte.hexToByte)(values[offset + 1] ?? "00") << 16 | (0, _hexToByte.hexToByte)(values[offset + 2] ?? "00") << 8 | (0, _hexToByte.hexToByte)(values[offset + 3] ?? "00");
|
|
16
|
+
const commandOf = frame => {
|
|
17
|
+
const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
|
|
18
|
+
if (head === 0x21 || head === 0) {
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
return (0, _hexToByte.hexToByte)(frame[2] ?? "00") << 8 | (0, _hexToByte.hexToByte)(frame[3] ?? "00");
|
|
22
|
+
};
|
|
23
|
+
const payload = frame => frame.slice((0, _hexToByte.hexToByte)(frame[0] ?? "00") === 0x21 ? 2 : 4);
|
|
24
|
+
|
|
25
|
+
/** Decodes the fixed 21-byte TMB blood-pressure history records. */
|
|
26
|
+
const createTmbBloodPressureFrameHandler = () => {
|
|
27
|
+
const pending = [];
|
|
28
|
+
const reported = new Set();
|
|
29
|
+
return ({
|
|
30
|
+
frame,
|
|
31
|
+
emit
|
|
32
|
+
}) => {
|
|
33
|
+
const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
|
|
34
|
+
const opcode = commandOf(frame);
|
|
35
|
+
if (head !== 0x21 && opcode !== RECORD_RESPONSE) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
pending.push(...payload(frame));
|
|
39
|
+
while (pending.length >= RECORD_BYTES) {
|
|
40
|
+
const record = pending.splice(0, RECORD_BYTES);
|
|
41
|
+
const timestamp = uint32(record, 17) + _tmbCommandSequencer.TMB_EPOCH_SECONDS;
|
|
42
|
+
const systolic = uint16(record, 6);
|
|
43
|
+
const diastolic = uint16(record, 8);
|
|
44
|
+
const meanArterialPressure = uint16(record, 10);
|
|
45
|
+
const heartRate = uint16(record, 14);
|
|
46
|
+
const userId = (0, _hexToByte.hexToByte)(record[16] ?? "00");
|
|
47
|
+
const recordingId = `tmb:${userId}:${timestamp}:${systolic}:${diastolic}`;
|
|
48
|
+
if (reported.has(recordingId) || systolic < 50 || systolic > 300 || diastolic < 30 || diastolic > 200 || meanArterialPressure < 30 || meanArterialPressure > 250 || heartRate < 20 || heartRate > 240) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
reported.add(recordingId);
|
|
52
|
+
const recordedAt = (0, _bp2Files.recordedAtFromLocalSeconds)(timestamp);
|
|
53
|
+
emit({
|
|
54
|
+
measurementTypeKey: _core.MeasurementTypeKey.bloodPressure,
|
|
55
|
+
caseType: _caseType.CaseType.RESULT,
|
|
56
|
+
systolic,
|
|
57
|
+
diastolic,
|
|
58
|
+
meanArterialPressure,
|
|
59
|
+
heartRate,
|
|
60
|
+
memorySlot: userId,
|
|
61
|
+
...(recordedAt ? {
|
|
62
|
+
recordedAt
|
|
63
|
+
} : {}),
|
|
64
|
+
recordingId
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.createTmbBloodPressureFrameHandler = createTmbBloodPressureFrameHandler;
|
|
70
|
+
//# sourceMappingURL=tmb.bp-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","_caseType","_hexToByte","_bp2Files","_tmbCommandSequencer","RECORD_BYTES","RECORD_RESPONSE","uint16","values","offset","hexToByte","uint32","commandOf","frame","head","payload","slice","createTmbBloodPressureFrameHandler","pending","reported","Set","emit","opcode","push","length","record","splice","timestamp","TMB_EPOCH_SECONDS","systolic","diastolic","meanArterialPressure","heartRate","userId","recordingId","has","add","recordedAt","recordedAtFromLocalSeconds","measurementTypeKey","MeasurementTypeKey","bloodPressure","caseType","CaseType","RESULT","memorySlot","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/tmb/tmb.bp-handler.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TmbCommandSequencer = exports.TMB_EPOCH_SECONDS = void 0;
|
|
7
|
+
var _clockSync = require("../../../types/clock-sync.js");
|
|
8
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
9
|
+
const TMB_EPOCH_SECONDS = exports.TMB_EPOCH_SECONDS = 1_262_304_000;
|
|
10
|
+
const LOGIN_RESPONSE = 7;
|
|
11
|
+
const SETTING_RESPONSE = 0x1100;
|
|
12
|
+
const SET_TIME = 0x1102;
|
|
13
|
+
const GET_RECORD = 0x4901;
|
|
14
|
+
const GET_RECORD_RESPONSE = 0x4902;
|
|
15
|
+
const ACK_SUCCESS = ["00", "01", "01"];
|
|
16
|
+
const bytes = frame => frame.map(_hexToByte.hexToByte);
|
|
17
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
18
|
+
const command = (opcode, content) => {
|
|
19
|
+
const payload = [opcode >> 8 & 0xff, opcode & 0xff, ...content];
|
|
20
|
+
return [0x10, payload.length, ...payload].map(byte);
|
|
21
|
+
};
|
|
22
|
+
const responseCommand = frame => {
|
|
23
|
+
const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
|
|
24
|
+
if (head === 0x21 || head === 0) {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
return (0, _hexToByte.hexToByte)(frame[2] ?? "00") << 8 | (0, _hexToByte.hexToByte)(frame[3] ?? "00");
|
|
28
|
+
};
|
|
29
|
+
const content = frame => {
|
|
30
|
+
const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
|
|
31
|
+
return bytes(frame.slice(head === 0x21 || head === 0 ? 2 : 4));
|
|
32
|
+
};
|
|
33
|
+
const nowSeconds = clockSync => {
|
|
34
|
+
const now = clockSync?.now?.() ?? new Date();
|
|
35
|
+
const offsetSeconds = clockSync?.timezone === "utc" ? 0 : -now.getTimezoneOffset() * 60;
|
|
36
|
+
return Math.floor(now.getTime() / 1000) - TMB_EPOCH_SECONDS + offsetSeconds;
|
|
37
|
+
};
|
|
38
|
+
const syncTime = clockSync => {
|
|
39
|
+
const seconds = nowSeconds(clockSync);
|
|
40
|
+
return command(SET_TIME, [0x01, seconds >>> 24 & 0xff, seconds >>> 16 & 0xff, seconds >>> 8 & 0xff, seconds & 0xff]);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/** Drives login, clock synchronisation, acknowledgements and history download for TMB. */
|
|
44
|
+
class TmbCommandSequencer {
|
|
45
|
+
phase = "login";
|
|
46
|
+
userId = 0;
|
|
47
|
+
constructor(params) {
|
|
48
|
+
this.params = params;
|
|
49
|
+
}
|
|
50
|
+
initialCommands = () => [];
|
|
51
|
+
nextCommand = frame => {
|
|
52
|
+
const opcode = responseCommand(frame);
|
|
53
|
+
const frameContent = content(frame);
|
|
54
|
+
if (opcode === LOGIN_RESPONSE && frameContent.length >= 8) {
|
|
55
|
+
this.userId = frameContent[6] ?? 0;
|
|
56
|
+
this.phase = "login";
|
|
57
|
+
return [this.ack(true), this.write(command(8, [1, ...frameContent.slice(0, 6), 0, 2]))];
|
|
58
|
+
}
|
|
59
|
+
if (this.phase === "login" && opcode === 0 && frameContent[0] === 1) {
|
|
60
|
+
this.phase = "clock";
|
|
61
|
+
return (0, _clockSync.isClockSyncEnabled)(this.params.clockSync) ? [this.write(syncTime(this.params.clockSync))] : [this.history()];
|
|
62
|
+
}
|
|
63
|
+
if (opcode === SETTING_RESPONSE && frameContent.length >= 3) {
|
|
64
|
+
const setting = frameContent[0] << 8 | frameContent[1];
|
|
65
|
+
const success = frameContent[2] === 1;
|
|
66
|
+
if (setting === SET_TIME && success) {
|
|
67
|
+
this.phase = "history";
|
|
68
|
+
return [this.ack(true), this.history()];
|
|
69
|
+
}
|
|
70
|
+
return [this.ack(success)];
|
|
71
|
+
}
|
|
72
|
+
if (opcode === GET_RECORD_RESPONSE) {
|
|
73
|
+
this.phase = "history";
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") === 0x21) {
|
|
77
|
+
return [this.ack(true)];
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
};
|
|
81
|
+
commandTimeoutMs = () => 15_000;
|
|
82
|
+
onCommandTimeout = () => ({
|
|
83
|
+
terminal: true
|
|
84
|
+
});
|
|
85
|
+
commandProgress = frame => (0, _hexToByte.hexToByte)(frame[0] ?? "00") === 0x21 ? "partial" : "complete";
|
|
86
|
+
isHistoryTransfer = () => true;
|
|
87
|
+
write = frame => ({
|
|
88
|
+
serviceUuid: this.params.protocol.serviceUuid,
|
|
89
|
+
characteristicUuid: this.params.protocol.writeUuid,
|
|
90
|
+
frame
|
|
91
|
+
});
|
|
92
|
+
ack = success => ({
|
|
93
|
+
serviceUuid: this.params.protocol.serviceUuid,
|
|
94
|
+
characteristicUuid: this.params.protocol.ackUuid,
|
|
95
|
+
frame: success ? ACK_SUCCESS : ["00", "01", "02"]
|
|
96
|
+
});
|
|
97
|
+
history = () => this.write(command(GET_RECORD, [this.userId, 1]));
|
|
98
|
+
}
|
|
99
|
+
exports.TmbCommandSequencer = TmbCommandSequencer;
|
|
100
|
+
//# sourceMappingURL=tmb.command-sequencer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_clockSync","require","_hexToByte","TMB_EPOCH_SECONDS","exports","LOGIN_RESPONSE","SETTING_RESPONSE","SET_TIME","GET_RECORD","GET_RECORD_RESPONSE","ACK_SUCCESS","bytes","frame","map","hexToByte","byte","value","toString","padStart","command","opcode","content","payload","length","responseCommand","head","slice","nowSeconds","clockSync","now","Date","offsetSeconds","timezone","getTimezoneOffset","Math","floor","getTime","syncTime","seconds","TmbCommandSequencer","phase","userId","constructor","params","initialCommands","nextCommand","frameContent","ack","write","isClockSyncEnabled","history","setting","success","undefined","commandTimeoutMs","onCommandTimeout","terminal","commandProgress","isHistoryTransfer","serviceUuid","protocol","characteristicUuid","writeUuid","ackUuid"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/tmb/tmb.command-sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TmbFrameReader = void 0;
|
|
7
|
+
var _frameReadStatus = require("../../../types/frame-read-status.js");
|
|
8
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
9
|
+
const HEADS = new Set([0x10, 0x20, 0x21]);
|
|
10
|
+
const isHead = (buffer, index) => {
|
|
11
|
+
const head = (0, _hexToByte.hexToByte)(buffer[index] ?? "00");
|
|
12
|
+
return HEADS.has(head) || head === 0 && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === 1;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/** Reads the length-prefixed frames emitted by Viatom's TMB blood-pressure family. */
|
|
16
|
+
class TmbFrameReader {
|
|
17
|
+
readFrame(buffer) {
|
|
18
|
+
const start = this.findStart(buffer);
|
|
19
|
+
if (start < 0) {
|
|
20
|
+
return {
|
|
21
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
22
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (start + 2 > buffer.length) {
|
|
26
|
+
return {
|
|
27
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
28
|
+
consumedBytes: start
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const frameLength = 2 + (0, _hexToByte.hexToByte)(buffer[start + 1] ?? "00");
|
|
32
|
+
if (start + frameLength > buffer.length) {
|
|
33
|
+
return {
|
|
34
|
+
status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
|
|
35
|
+
consumedBytes: start
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
status: _frameReadStatus.FrameReadStatus.COMPLETE,
|
|
40
|
+
consumedBytes: start + frameLength,
|
|
41
|
+
frame: buffer.slice(start, start + frameLength)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
findStart(buffer) {
|
|
45
|
+
for (let index = 0; index < buffer.length; index++) {
|
|
46
|
+
if (isHead(buffer, index)) {
|
|
47
|
+
return index;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return -1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.TmbFrameReader = TmbFrameReader;
|
|
54
|
+
//# sourceMappingURL=tmb.frame-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_frameReadStatus","require","_hexToByte","HEADS","Set","isHead","buffer","index","head","hexToByte","has","TmbFrameReader","readFrame","start","findStart","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","length","frameLength","COMPLETE","frame","slice","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/tmb/tmb.frame-reader.ts"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,MAAME,KAAK,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzC,MAAMC,MAAM,GAAGA,CAACC,MAAyB,EAAEC,KAAa,KAAc;EACpE,MAAMC,IAAI,GAAG,IAAAC,oBAAS,EAACH,MAAM,CAACC,KAAK,CAAC,IAAI,IAAI,CAAC;EAE7C,OAAOJ,KAAK,CAACO,GAAG,CAACF,IAAI,CAAC,IAAKA,IAAI,KAAK,CAAC,IAAI,IAAAC,oBAAS,EAACH,MAAM,CAACC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAE;AACtF,CAAC;;AAED;AACO,MAAMI,cAAc,CAAwB;EAC1CC,SAASA,CAACN,MAAyB,EAAmB;IAC3D,MAAMO,KAAK,GAAG,IAAI,CAACC,SAAS,CAACR,MAAM,CAAC;IAEpC,IAAIO,KAAK,GAAG,CAAC,EAAE;MACb,OAAO;QACLE,MAAM,EAAEC,gCAAe,CAACC,UAAU;QAClCC,aAAa,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEd,MAAM,CAACe,MAAM,GAAG,CAAC;MAC9C,CAAC;IACH;IAEA,IAAIR,KAAK,GAAG,CAAC,GAAGP,MAAM,CAACe,MAAM,EAAE;MAC7B,OAAO;QAAEN,MAAM,EAAEC,gCAAe,CAACC,UAAU;QAAEC,aAAa,EAAEL;MAAM,CAAC;IACrE;IAEA,MAAMS,WAAW,GAAG,CAAC,GAAG,IAAAb,oBAAS,EAACH,MAAM,CAACO,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IAE5D,IAAIA,KAAK,GAAGS,WAAW,GAAGhB,MAAM,CAACe,MAAM,EAAE;MACvC,OAAO;QAAEN,MAAM,EAAEC,gCAAe,CAACC,UAAU;QAAEC,aAAa,EAAEL;MAAM,CAAC;IACrE;IAEA,OAAO;MACLE,MAAM,EAAEC,gCAAe,CAACO,QAAQ;MAChCL,aAAa,EAAEL,KAAK,GAAGS,WAAW;MAClCE,KAAK,EAAElB,MAAM,CAACmB,KAAK,CAACZ,KAAK,EAAEA,KAAK,GAAGS,WAAW;IAChD,CAAC;EACH;EAEQR,SAASA,CAACR,MAAyB,EAAU;IACnD,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,MAAM,CAACe,MAAM,EAAEd,KAAK,EAAE,EAAE;MAClD,IAAIF,MAAM,CAACC,MAAM,EAAEC,KAAK,CAAC,EAAE;QACzB,OAAOA,KAAK;MACd;IACF;IAEA,OAAO,CAAC,CAAC;EACX;AACF;AAACmB,OAAA,CAAAf,cAAA,GAAAA,cAAA","ignoreList":[]}
|