@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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements */
|
|
4
|
+
|
|
5
|
+
import { BTManagedDevice } from "../bt-managed-device.js";
|
|
6
|
+
import { PM10_NOTIFY, PM10_SERVICE, PM10_WRITE, Pm10FrameReader } from "./viatom.pm10.protocol.js";
|
|
7
|
+
import { Pm10Sequencer } from "./viatom.pm10.sequencer.js";
|
|
8
|
+
const acceptEverything = {
|
|
9
|
+
caseValuePosition: [],
|
|
10
|
+
cases: []
|
|
11
|
+
};
|
|
12
|
+
export const pm10MainServices = [{
|
|
13
|
+
uuid: PM10_SERVICE,
|
|
14
|
+
monitorUuids: [{
|
|
15
|
+
uuid: PM10_NOTIFY,
|
|
16
|
+
parsingModel: acceptEverything
|
|
17
|
+
}],
|
|
18
|
+
writeUuid: {
|
|
19
|
+
uuid: PM10_WRITE,
|
|
20
|
+
mainCommandUuid: "90"
|
|
21
|
+
}
|
|
22
|
+
}];
|
|
23
|
+
export class Pm10Device extends BTManagedDevice {
|
|
24
|
+
mainServices = pm10MainServices;
|
|
25
|
+
stuckDataTimeout = 120_000;
|
|
26
|
+
onStreamStart = undefined;
|
|
27
|
+
preferredMtu = 247;
|
|
28
|
+
constructor(device, params) {
|
|
29
|
+
super(device, params);
|
|
30
|
+
this.frameReader = new Pm10FrameReader();
|
|
31
|
+
this.createCommandSequencer = () => new Pm10Sequencer({
|
|
32
|
+
write: {
|
|
33
|
+
serviceUuid: PM10_SERVICE,
|
|
34
|
+
characteristicUuid: PM10_WRITE
|
|
35
|
+
},
|
|
36
|
+
onResult: result => this.onResult?.(result)
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
handleSuccessResult() {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=viatom.pm10.device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BTManagedDevice","PM10_NOTIFY","PM10_SERVICE","PM10_WRITE","Pm10FrameReader","Pm10Sequencer","acceptEverything","caseValuePosition","cases","pm10MainServices","uuid","monitorUuids","parsingModel","writeUuid","mainCommandUuid","Pm10Device","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","createCommandSequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.device.ts"],"mappings":";;AAAA;;AAQA,SAASA,eAAe,QAAQ,yBAAsB;AACtD,SAASC,WAAW,EAAEC,YAAY,EAAEC,UAAU,EAAEC,eAAe,QAAQ,2BAAwB;AAC/F,SAASC,aAAa,QAAQ,4BAAyB;AAEvD,MAAMC,gBAAgB,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAC7D,OAAO,MAAMC,gBAA4B,GAAG,CAAC;EAAEC,IAAI,EAAER,YAAY;EAAES,YAAY,EAAE,CAAC;IAAED,IAAI,EAAET,WAAW;IAAEW,YAAY,EAAEN;EAAiB,CAAC,CAAC;EAAEO,SAAS,EAAE;IAAEH,IAAI,EAAEP,UAAU;IAAEW,eAAe,EAAE;EAAK;AAAE,CAAC,CAAC;AACnM,OAAO,MAAMC,UAAU,SAASf,eAAe,CAAyB;EAC5DgB,YAAY,GAAGP,gBAAgB;EAC/BQ,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,IAAIpB,eAAe,CAAC,CAAC;IACxC,IAAI,CAACqB,sBAAsB,GAAG,MAAM,IAAIpB,aAAa,CAAC;MAAEqB,KAAK,EAAE;QAAEC,WAAW,EAAEzB,YAAY;QAAE0B,kBAAkB,EAAEzB;MAAW,CAAC;MAAE0B,QAAQ,EAAGC,MAAM,IAAK,IAAI,CAACD,QAAQ,GAAGC,MAAuF;IAAE,CAAC,CAAC;EACjQ;EACUC,mBAAmBA,CAAA,EAAS;IAAE;EAAQ;AAClD","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements, curly, max-lines */
|
|
4
|
+
|
|
5
|
+
import { FrameReadStatus } from "../../../types/frame-read-status.js";
|
|
6
|
+
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
7
|
+
export const PM10_SERVICE = "0000ff12-0000-1000-8000-00805f9b34fb";
|
|
8
|
+
export const PM10_WRITE = "0000ff01-0000-1000-8000-00805f9b34fb";
|
|
9
|
+
export const PM10_NOTIFY = "0000ff02-0000-1000-8000-00805f9b34fb";
|
|
10
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
11
|
+
const checksum = frame => byte(frame.reduce((sum, value) => sum + hexToByte(value), 0) & 0x7f);
|
|
12
|
+
export const pm10Command = (head, payload = []) => {
|
|
13
|
+
const body = [byte(head), ...payload.map(byte)];
|
|
14
|
+
return [...body, checksum(body)];
|
|
15
|
+
};
|
|
16
|
+
export const pm10GetTotal = () => pm10Command(0x90, [0x03]);
|
|
17
|
+
export const pm10GetCaseInfo = type => pm10Command(0x95, [type]);
|
|
18
|
+
export const pm10GetCaseData = type => pm10Command(0x96, [type]);
|
|
19
|
+
export const decodePm10CaseInfo = content => {
|
|
20
|
+
if (content.length < 16) return undefined;
|
|
21
|
+
const value = index => hexToByte(content[index] ?? "00");
|
|
22
|
+
const recordedAt = new Date(2000 + value(0), value(1) - 1, value(2), value(3), value(4), value(5));
|
|
23
|
+
const heartRate = (value(7) & 0x7f) << 7 | value(6) & 0x7f;
|
|
24
|
+
const waveformLength = (value(15) & 0x7f) << 7 | value(14) & 0x7f;
|
|
25
|
+
return {
|
|
26
|
+
recordedAt,
|
|
27
|
+
heartRate,
|
|
28
|
+
waveformLength,
|
|
29
|
+
results: content.slice(8, 14).map((_entry, index) => value(index + 8))
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const mergeSevenBit = (mask, values) => values.slice(0, 7).map((value, index) => {
|
|
33
|
+
const raw = hexToByte(value) & 0x7f;
|
|
34
|
+
return (mask & 1 << index) !== 0 ? raw | 0x80 : raw;
|
|
35
|
+
});
|
|
36
|
+
export const decodePm10WavePage = content => {
|
|
37
|
+
if (content.length < 15) return [];
|
|
38
|
+
const first = mergeSevenBit(hexToByte(content[0] ?? "00"), content.slice(3, 10));
|
|
39
|
+
const second = mergeSevenBit(hexToByte(content[1] ?? "00"), content.slice(10, 17));
|
|
40
|
+
return [...first, ...second].map((high, index) => {
|
|
41
|
+
const low = index < 7 ? hexToByte(content[index + 3] ?? "00") : hexToByte(content[index + 3] ?? "00");
|
|
42
|
+
return (high << 8 | low) - 16384;
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const responseLength = {
|
|
46
|
+
0xe0: 7,
|
|
47
|
+
0xe5: 18,
|
|
48
|
+
0xe6: 17,
|
|
49
|
+
0xf2: 8,
|
|
50
|
+
0xf3: 3,
|
|
51
|
+
0xf4: 18,
|
|
52
|
+
0xf5: 3,
|
|
53
|
+
0xf8: 10
|
|
54
|
+
};
|
|
55
|
+
export const decodePm10Frame = frame => {
|
|
56
|
+
const head = hexToByte(frame[0] ?? "00");
|
|
57
|
+
const length = responseLength[head];
|
|
58
|
+
if (!length || frame.length < length || checksum(frame.slice(0, -1)) !== frame[length - 1]) return undefined;
|
|
59
|
+
return {
|
|
60
|
+
head,
|
|
61
|
+
content: frame.slice(1, length - 1)
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export class Pm10FrameReader {
|
|
65
|
+
readFrame(buffer) {
|
|
66
|
+
const start = buffer.findIndex(value => responseLength[hexToByte(value)] !== undefined);
|
|
67
|
+
if (start < 0) return {
|
|
68
|
+
status: FrameReadStatus.INCOMPLETE,
|
|
69
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
70
|
+
};
|
|
71
|
+
const length = responseLength[hexToByte(buffer[start] ?? "00")];
|
|
72
|
+
if (length === undefined) return {
|
|
73
|
+
status: FrameReadStatus.CORRUPT,
|
|
74
|
+
consumedBytes: start + 1
|
|
75
|
+
};
|
|
76
|
+
if (start + length > buffer.length) return {
|
|
77
|
+
status: FrameReadStatus.INCOMPLETE,
|
|
78
|
+
consumedBytes: start
|
|
79
|
+
};
|
|
80
|
+
const frame = buffer.slice(start, start + length);
|
|
81
|
+
if (!decodePm10Frame(frame)) return {
|
|
82
|
+
status: FrameReadStatus.CORRUPT,
|
|
83
|
+
consumedBytes: start + 1
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
status: FrameReadStatus.COMPLETE,
|
|
87
|
+
consumedBytes: start + length,
|
|
88
|
+
frame
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=viatom.pm10.protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FrameReadStatus","hexToByte","PM10_SERVICE","PM10_WRITE","PM10_NOTIFY","byte","value","toString","padStart","checksum","frame","reduce","sum","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","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,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/order, padding-line-between-statements, curly */
|
|
4
|
+
|
|
5
|
+
import { MeasurementTypeKey } from "@ovok/core";
|
|
6
|
+
import { CaseType } from "../../../types/case-type.js";
|
|
7
|
+
import { decodePm10CaseInfo, decodePm10Frame, decodePm10WavePage, pm10GetCaseData, pm10GetCaseInfo, pm10GetTotal } from "./viatom.pm10.protocol.js";
|
|
8
|
+
const command = (params, frame) => ({
|
|
9
|
+
...params.write,
|
|
10
|
+
frame,
|
|
11
|
+
withoutResponse: true
|
|
12
|
+
});
|
|
13
|
+
export class Pm10Sequencer {
|
|
14
|
+
phase = "total";
|
|
15
|
+
pages = [];
|
|
16
|
+
constructor(params) {
|
|
17
|
+
this.params = params;
|
|
18
|
+
}
|
|
19
|
+
initialCommands = () => [command(this.params, pm10GetTotal())];
|
|
20
|
+
isHistoryTransfer = () => true;
|
|
21
|
+
isNormalDisconnect = () => this.phase === "done";
|
|
22
|
+
nextCommand = frame => {
|
|
23
|
+
const response = decodePm10Frame(frame);
|
|
24
|
+
if (!response) return undefined;
|
|
25
|
+
if (response.head === 0xe0 && this.phase === "total") {
|
|
26
|
+
this.phase = "info";
|
|
27
|
+
return [command(this.params, pm10GetCaseInfo(3))];
|
|
28
|
+
}
|
|
29
|
+
if (response.head === 0xe5 && this.phase === "info") {
|
|
30
|
+
this.info = decodePm10CaseInfo(response.content);
|
|
31
|
+
this.pages = [];
|
|
32
|
+
this.phase = "data";
|
|
33
|
+
return [command(this.params, pm10GetCaseData(0))];
|
|
34
|
+
}
|
|
35
|
+
if (response.head === 0xe6 && this.phase === "data") {
|
|
36
|
+
this.pages.push(...decodePm10WavePage(response.content));
|
|
37
|
+
const last = (Number.parseInt(response.content[0] ?? "00", 16) & 0x40) !== 0;
|
|
38
|
+
if (!last) return [command(this.params, pm10GetCaseData(1))];
|
|
39
|
+
if (this.info) this.params.onResult({
|
|
40
|
+
caseType: CaseType.RESULT,
|
|
41
|
+
measurementTypeKey: MeasurementTypeKey.ecg,
|
|
42
|
+
heartRate: this.info.heartRate,
|
|
43
|
+
diagramPoints: this.pages,
|
|
44
|
+
duration: this.pages.length / 125,
|
|
45
|
+
recordedAt: this.info.recordedAt
|
|
46
|
+
});
|
|
47
|
+
this.phase = "done";
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=viatom.pm10.sequencer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","CaseType","decodePm10CaseInfo","decodePm10Frame","decodePm10WavePage","pm10GetCaseData","pm10GetCaseInfo","pm10GetTotal","command","params","frame","write","withoutResponse","Pm10Sequencer","phase","pages","constructor","initialCommands","isHistoryTransfer","isNormalDisconnect","nextCommand","response","undefined","head","info","content","push","last","Number","parseInt","onResult","caseType","RESULT","measurementTypeKey","ecg","heartRate","diagramPoints","duration","length","recordedAt"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.ts"],"mappings":";;AAAA;;AAEA,SAAyBA,kBAAkB,QAAQ,YAAY;AAC/D,SAASC,QAAQ,QAAQ,6BAA0B;AAInD,SAASC,kBAAkB,EAAEC,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,YAAY,QAAQ,2BAAwB;AAGhJ,MAAMC,OAAO,GAAGA,CAACC,MAAc,EAAEC,KAAwB,MAAqB;EAAE,GAAGD,MAAM,CAACE,KAAK;EAAED,KAAK;EAAEE,eAAe,EAAE;AAAK,CAAC,CAAC;AAChI,OAAO,MAAMC,aAAa,CAA6B;EAC7CC,KAAK,GAAuC,OAAO;EAEnDC,KAAK,GAAa,EAAE;EACrBC,WAAWA,CAAkBP,MAAc,EAAE;IAAA,KAAhBA,MAAc,GAAdA,MAAc;EAAG;EAC9CQ,eAAe,GAAGA,CAAA,KAAgC,CAACT,OAAO,CAAC,IAAI,CAACC,MAAM,EAAEF,YAAY,CAAC,CAAC,CAAC,CAAC;EACxFW,iBAAiB,GAAGA,CAAA,KAAe,IAAI;EACvCC,kBAAkB,GAAGA,CAAA,KAAe,IAAI,CAACL,KAAK,KAAK,MAAM;EACzDM,WAAW,GAAIV,KAAwB,IAA2C;IACvF,MAAMW,QAAQ,GAAGlB,eAAe,CAACO,KAAK,CAAC;IACvC,IAAI,CAACW,QAAQ,EAAE,OAAOC,SAAS;IAC/B,IAAID,QAAQ,CAACE,IAAI,KAAK,IAAI,IAAI,IAAI,CAACT,KAAK,KAAK,OAAO,EAAE;MAAE,IAAI,CAACA,KAAK,GAAG,MAAM;MAAE,OAAO,CAACN,OAAO,CAAC,IAAI,CAACC,MAAM,EAAEH,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAAE;IAChI,IAAIe,QAAQ,CAACE,IAAI,KAAK,IAAI,IAAI,IAAI,CAACT,KAAK,KAAK,MAAM,EAAE;MAAE,IAAI,CAACU,IAAI,GAAGtB,kBAAkB,CAACmB,QAAQ,CAACI,OAAO,CAAC;MAAE,IAAI,CAACV,KAAK,GAAG,EAAE;MAAE,IAAI,CAACD,KAAK,GAAG,MAAM;MAAE,OAAO,CAACN,OAAO,CAAC,IAAI,CAACC,MAAM,EAAEJ,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAAE;IAClM,IAAIgB,QAAQ,CAACE,IAAI,KAAK,IAAI,IAAI,IAAI,CAACT,KAAK,KAAK,MAAM,EAAE;MACnD,IAAI,CAACC,KAAK,CAACW,IAAI,CAAC,GAAGtB,kBAAkB,CAACiB,QAAQ,CAACI,OAAO,CAAC,CAAC;MACxD,MAAME,IAAI,GAAG,CAACC,MAAM,CAACC,QAAQ,CAACR,QAAQ,CAACI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC;MAC5E,IAAI,CAACE,IAAI,EAAE,OAAO,CAACnB,OAAO,CAAC,IAAI,CAACC,MAAM,EAAEJ,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,IAAI,CAACmB,IAAI,EAAE,IAAI,CAACf,MAAM,CAACqB,QAAQ,CAAC;QAAEC,QAAQ,EAAE9B,QAAQ,CAAC+B,MAAM;QAAEC,kBAAkB,EAAEjC,kBAAkB,CAACkC,GAAG;QAAEC,SAAS,EAAE,IAAI,CAACX,IAAI,CAACW,SAAS;QAAEC,aAAa,EAAE,IAAI,CAACrB,KAAK;QAAEsB,QAAQ,EAAE,IAAI,CAACtB,KAAK,CAACuB,MAAM,GAAG,GAAG;QAAEC,UAAU,EAAE,IAAI,CAACf,IAAI,CAACe;MAAW,CAAC,CAAC;MAC9O,IAAI,CAACzB,KAAK,GAAG,MAAM;IACrB;IACA,OAAOQ,SAAS;EAClB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements */
|
|
4
|
+
|
|
5
|
+
import { BTManagedDevice } from "../bt-managed-device.js";
|
|
6
|
+
import { WBP02_CONTROL_SERVICE, WBP02_DATA_SERVICE, WBP02_NOTIFY, WBP02_WRITE, Wbp02FrameReader } from "./viatom.wbp02.protocol.js";
|
|
7
|
+
import { Wbp02Sequencer } from "./viatom.wbp02.sequencer.js";
|
|
8
|
+
const acceptEverything = {
|
|
9
|
+
caseValuePosition: [],
|
|
10
|
+
cases: []
|
|
11
|
+
};
|
|
12
|
+
export const wbp02MainServices = [{
|
|
13
|
+
uuid: WBP02_DATA_SERVICE,
|
|
14
|
+
monitorUuids: [{
|
|
15
|
+
uuid: WBP02_NOTIFY,
|
|
16
|
+
parsingModel: acceptEverything
|
|
17
|
+
}]
|
|
18
|
+
}, {
|
|
19
|
+
uuid: WBP02_CONTROL_SERVICE,
|
|
20
|
+
monitorUuids: [],
|
|
21
|
+
writeUuid: {
|
|
22
|
+
uuid: WBP02_WRITE,
|
|
23
|
+
mainCommandUuid: "5a"
|
|
24
|
+
}
|
|
25
|
+
}];
|
|
26
|
+
export class Wbp02Device extends BTManagedDevice {
|
|
27
|
+
mainServices = wbp02MainServices;
|
|
28
|
+
stuckDataTimeout = 120_000;
|
|
29
|
+
onStreamStart = undefined;
|
|
30
|
+
constructor(device, params) {
|
|
31
|
+
super(device, params);
|
|
32
|
+
this.frameReader = new Wbp02FrameReader();
|
|
33
|
+
this.createCommandSequencer = () => new Wbp02Sequencer({
|
|
34
|
+
write: {
|
|
35
|
+
serviceUuid: WBP02_CONTROL_SERVICE,
|
|
36
|
+
characteristicUuid: WBP02_WRITE
|
|
37
|
+
},
|
|
38
|
+
onResult: result => this.onResult?.(result)
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
handleSuccessResult() {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=viatom.wbp02.device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BTManagedDevice","WBP02_CONTROL_SERVICE","WBP02_DATA_SERVICE","WBP02_NOTIFY","WBP02_WRITE","Wbp02FrameReader","Wbp02Sequencer","acceptEverything","caseValuePosition","cases","wbp02MainServices","uuid","monitorUuids","parsingModel","writeUuid","mainCommandUuid","Wbp02Device","mainServices","stuckDataTimeout","onStreamStart","undefined","constructor","device","params","frameReader","createCommandSequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.wbp02.device.ts"],"mappings":";;AAAA;;AAQA,SAASA,eAAe,QAAQ,yBAAsB;AACtD,SAASC,qBAAqB,EAAEC,kBAAkB,EAAEC,YAAY,EAAEC,WAAW,EAAEC,gBAAgB,QAAQ,4BAAyB;AAChI,SAASC,cAAc,QAAQ,6BAA0B;AAEzD,MAAMC,gBAAgB,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAC7D,OAAO,MAAMC,iBAA6B,GAAG,CAC3C;EAAEC,IAAI,EAAET,kBAAkB;EAAEU,YAAY,EAAE,CAAC;IAAED,IAAI,EAAER,YAAY;IAAEU,YAAY,EAAEN;EAAiB,CAAC;AAAE,CAAC,EACpG;EAAEI,IAAI,EAAEV,qBAAqB;EAAEW,YAAY,EAAE,EAAE;EAAEE,SAAS,EAAE;IAAEH,IAAI,EAAEP,WAAW;IAAEW,eAAe,EAAE;EAAK;AAAE,CAAC,CAC3G;AAED,OAAO,MAAMC,WAAW,SAAShB,eAAe,CAA2B;EAC/DiB,YAAY,GAAGP,iBAAiB;EAChCQ,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAC5BC,WAAWA,CAACC,MAAc,EAAEC,MAAoD,EAAE;IACvF,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAInB,gBAAgB,CAAC,CAAC;IACzC,IAAI,CAACoB,sBAAsB,GAAG,MAAM,IAAInB,cAAc,CAAC;MAAEoB,KAAK,EAAE;QAAEC,WAAW,EAAE1B,qBAAqB;QAAE2B,kBAAkB,EAAExB;MAAY,CAAC;MAAEyB,QAAQ,EAAGC,MAAM,IAAK,IAAI,CAACD,QAAQ,GAAGC,MAAyF;IAAE,CAAC,CAAC;EAC9Q;EACUC,mBAAmBA,CAAA,EAAS;IAAE;EAAQ;AAClD","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports, import/order, padding-line-between-statements, curly, max-lines */
|
|
4
|
+
|
|
5
|
+
import { FrameReadStatus } from "../../../types/frame-read-status.js";
|
|
6
|
+
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
7
|
+
export const WBP02_CONTROL_SERVICE = "0000ffe5-0000-1000-8000-00805f9b34fb";
|
|
8
|
+
export const WBP02_WRITE = "0000ffe9-0000-1000-8000-00805f9b34fb";
|
|
9
|
+
export const WBP02_DATA_SERVICE = "0000ffe0-0000-1000-8000-00805f9b34fb";
|
|
10
|
+
export const WBP02_NOTIFY = "0000ffe4-0000-1000-8000-00805f9b34fb";
|
|
11
|
+
const byte = value => (value & 0xff).toString(16).padStart(2, "0");
|
|
12
|
+
|
|
13
|
+
/** CRC-16 used by the WBP-02 service, returned low byte first. */
|
|
14
|
+
export const wbp02Crc = bytes => {
|
|
15
|
+
let crc = 0xffff;
|
|
16
|
+
for (const value of bytes) {
|
|
17
|
+
crc ^= hexToByte(value);
|
|
18
|
+
for (let bit = 0; bit < 8; bit += 1) {
|
|
19
|
+
crc = (crc & 1) !== 0 ? crc >>> 1 ^ 0xa001 : crc >>> 1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [byte(crc), byte(crc >> 8)];
|
|
23
|
+
};
|
|
24
|
+
export const wbp02Command = (command, payload = []) => {
|
|
25
|
+
const body = ["5a", byte(payload.length + 5), byte(command), ...payload.map(byte)];
|
|
26
|
+
return [...body, ...wbp02Crc(body)];
|
|
27
|
+
};
|
|
28
|
+
export const wbp02Connect = () => wbp02Command(0x10);
|
|
29
|
+
export const wbp02SyncTime = (date = new Date()) => wbp02Command(0x12, [date.getFullYear() % 100, date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes()]);
|
|
30
|
+
export const wbp02Login = () => wbp02Command(0x13, [0, 0, 0x45, 0x67]);
|
|
31
|
+
export const wbp02RecordCount = () => wbp02Command(0x53);
|
|
32
|
+
export const wbp02Record = index => wbp02Command(0x54, [index >> 8 & 0xff, index & 0xff]);
|
|
33
|
+
export const decodeWbp02Response = frame => {
|
|
34
|
+
const length = hexToByte(frame[1] ?? "00");
|
|
35
|
+
if (hexToByte(frame[0] ?? "00") !== 0x5a || length < 7 || frame.length < length) return undefined;
|
|
36
|
+
const complete = frame.slice(0, length);
|
|
37
|
+
const crc = wbp02Crc(complete.slice(0, -2));
|
|
38
|
+
if (complete.at(-2) !== crc[0] || complete.at(-1) !== crc[1]) return undefined;
|
|
39
|
+
return {
|
|
40
|
+
command: hexToByte(complete[2] ?? "00"),
|
|
41
|
+
content: complete.slice(3, -2)
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export const parseWbp02Record = content => {
|
|
45
|
+
if (content.length < 13) return undefined;
|
|
46
|
+
const value = offset => hexToByte(content[offset] ?? "00") << 8 | hexToByte(content[offset + 1] ?? "00");
|
|
47
|
+
const year = 2000 + hexToByte(content[6] ?? "00");
|
|
48
|
+
const month = hexToByte(content[7] ?? "00");
|
|
49
|
+
const day = hexToByte(content[8] ?? "00");
|
|
50
|
+
const hour = hexToByte(content[9] ?? "00");
|
|
51
|
+
const minute = hexToByte(content[10] ?? "00");
|
|
52
|
+
if (month < 1 || month > 12 || day < 1 || day > 31 || value(0) < 20 || value(0) > 300 || value(2) < 10 || value(2) > 200) return undefined;
|
|
53
|
+
const recordedAt = new Date(year, month - 1, day, hour, minute);
|
|
54
|
+
return {
|
|
55
|
+
systolic: value(0),
|
|
56
|
+
diastolic: value(2),
|
|
57
|
+
heartRate: value(4),
|
|
58
|
+
recordedAt,
|
|
59
|
+
recordingId: `wbp02:${recordedAt.toISOString()}`
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export class Wbp02FrameReader {
|
|
63
|
+
readFrame(buffer) {
|
|
64
|
+
const start = buffer.findIndex(value => hexToByte(value) === 0x5a);
|
|
65
|
+
if (start < 0) return {
|
|
66
|
+
status: FrameReadStatus.INCOMPLETE,
|
|
67
|
+
consumedBytes: Math.max(0, buffer.length - 1)
|
|
68
|
+
};
|
|
69
|
+
if (start + 2 > buffer.length) return {
|
|
70
|
+
status: FrameReadStatus.INCOMPLETE,
|
|
71
|
+
consumedBytes: start
|
|
72
|
+
};
|
|
73
|
+
const length = hexToByte(buffer[start + 1] ?? "00");
|
|
74
|
+
if (length < 7) return {
|
|
75
|
+
status: FrameReadStatus.CORRUPT,
|
|
76
|
+
consumedBytes: start + 1
|
|
77
|
+
};
|
|
78
|
+
if (start + length > buffer.length) return {
|
|
79
|
+
status: FrameReadStatus.INCOMPLETE,
|
|
80
|
+
consumedBytes: start
|
|
81
|
+
};
|
|
82
|
+
const frame = buffer.slice(start, start + length);
|
|
83
|
+
if (!decodeWbp02Response(frame)) return {
|
|
84
|
+
status: FrameReadStatus.CORRUPT,
|
|
85
|
+
consumedBytes: start + 1
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
status: FrameReadStatus.COMPLETE,
|
|
89
|
+
consumedBytes: start + length,
|
|
90
|
+
frame
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=viatom.wbp02.protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FrameReadStatus","hexToByte","WBP02_CONTROL_SERVICE","WBP02_WRITE","WBP02_DATA_SERVICE","WBP02_NOTIFY","byte","value","toString","padStart","wbp02Crc","bytes","crc","bit","wbp02Command","command","payload","body","length","map","wbp02Connect","wbp02SyncTime","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","wbp02Login","wbp02RecordCount","wbp02Record","index","decodeWbp02Response","frame","undefined","complete","slice","at","content","parseWbp02Record","offset","year","month","day","hour","minute","recordedAt","systolic","diastolic","heartRate","recordingId","toISOString","Wbp02FrameReader","readFrame","buffer","start","findIndex","status","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/order, padding-line-between-statements, curly */
|
|
4
|
+
|
|
5
|
+
import { MeasurementTypeKey } from "@ovok/core";
|
|
6
|
+
import { CaseType } from "../../../types/case-type.js";
|
|
7
|
+
import { decodeWbp02Response, parseWbp02Record, wbp02Connect, wbp02Login, wbp02Record, wbp02RecordCount, wbp02SyncTime } from "./viatom.wbp02.protocol.js";
|
|
8
|
+
const phaseCommand = (params, frame) => ({
|
|
9
|
+
...params.write,
|
|
10
|
+
frame,
|
|
11
|
+
withoutResponse: true
|
|
12
|
+
});
|
|
13
|
+
export class Wbp02Sequencer {
|
|
14
|
+
phase = "connect";
|
|
15
|
+
index = 0;
|
|
16
|
+
constructor(params) {
|
|
17
|
+
this.params = params;
|
|
18
|
+
}
|
|
19
|
+
initialCommands = () => [phaseCommand(this.params, wbp02Connect())];
|
|
20
|
+
isHistoryTransfer = () => true;
|
|
21
|
+
isNormalDisconnect = () => this.phase === "done";
|
|
22
|
+
nextCommand = frame => {
|
|
23
|
+
const response = decodeWbp02Response(frame);
|
|
24
|
+
if (!response) return undefined;
|
|
25
|
+
if (response.command === 0x10) {
|
|
26
|
+
this.phase = "time";
|
|
27
|
+
return [phaseCommand(this.params, wbp02SyncTime())];
|
|
28
|
+
}
|
|
29
|
+
if (response.command === 0x12) {
|
|
30
|
+
this.phase = "login";
|
|
31
|
+
return [phaseCommand(this.params, wbp02Login())];
|
|
32
|
+
}
|
|
33
|
+
if (response.command === 0x13) {
|
|
34
|
+
this.phase = "count";
|
|
35
|
+
return [phaseCommand(this.params, wbp02RecordCount())];
|
|
36
|
+
}
|
|
37
|
+
if (response.command === 0x53) {
|
|
38
|
+
const count = Number.parseInt(response.content[0] ?? "00", 16) << 8 | Number.parseInt(response.content[1] ?? "00", 16);
|
|
39
|
+
if (count === 0) {
|
|
40
|
+
this.phase = "done";
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
this.phase = "record";
|
|
44
|
+
return [phaseCommand(this.params, wbp02Record(this.index))];
|
|
45
|
+
}
|
|
46
|
+
if (response.command === 0x54) {
|
|
47
|
+
const record = parseWbp02Record(response.content);
|
|
48
|
+
if (record) this.params.onResult({
|
|
49
|
+
caseType: CaseType.RESULT,
|
|
50
|
+
measurementTypeKey: MeasurementTypeKey.bloodPressure,
|
|
51
|
+
...record
|
|
52
|
+
});
|
|
53
|
+
this.index += 1;
|
|
54
|
+
return [phaseCommand(this.params, wbp02Record(this.index))];
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=viatom.wbp02.sequencer.js.map
|
package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","CaseType","decodeWbp02Response","parseWbp02Record","wbp02Connect","wbp02Login","wbp02Record","wbp02RecordCount","wbp02SyncTime","phaseCommand","params","frame","write","withoutResponse","Wbp02Sequencer","phase","index","constructor","initialCommands","isHistoryTransfer","isNormalDisconnect","nextCommand","response","undefined","command","count","Number","parseInt","content","record","onResult","caseType","RESULT","measurementTypeKey","bloodPressure"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["IntegratedDevices"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/device-measurement-map.ts"],"mappings":";;AAaA,SAASA,iBAAiB,QAAQ,yBAAsB;;
|
|
1
|
+
{"version":3,"names":["IntegratedDevices"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/device-measurement-map.ts"],"mappings":";;AAaA,SAASA,iBAAiB,QAAQ,yBAAsB;;AA8FxD;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -40,6 +40,12 @@ export let IntegratedDevices = /*#__PURE__*/function (IntegratedDevices) {
|
|
|
40
40
|
IntegratedDevices["PC300"] = "PC300";
|
|
41
41
|
IntegratedDevices["POCTOR_M3102"] = "PoctorM3102";
|
|
42
42
|
IntegratedDevices["BIOLAND_BGM"] = "Bioland-BGM";
|
|
43
|
+
IntegratedDevices["PULSEBIT_EX"] = "Pulsebit EX";
|
|
44
|
+
IntegratedDevices["CHECKME_EX"] = "Checkme EX";
|
|
45
|
+
IntegratedDevices["CHECKME_LE"] = "CheckmeLE";
|
|
46
|
+
IntegratedDevices["PC80B"] = "PC80B";
|
|
47
|
+
IntegratedDevices["WBP_02"] = "WBP-02";
|
|
48
|
+
IntegratedDevices["PM10"] = "PM10";
|
|
43
49
|
return IntegratedDevices;
|
|
44
50
|
}({});
|
|
45
51
|
//# sourceMappingURL=integrated-devices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["IntegratedDevices"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/integrated-devices.ts"],"mappings":";;AAAA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["IntegratedDevices"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/integrated-devices.ts"],"mappings":";;AAAA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
|
package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-instruction-pdfs.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-instruction-pdfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAOjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"device-instruction-pdfs.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/device-instruction-pdfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAOjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CA8CrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supported-devices.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-devices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAyFhF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,CAAC;AAEF,KAAK,yBAAyB,GAAG,eAAe,GAAG;IAEjD,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF;;;;;;;GAOG;AACH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qPA+MkC,CAAC;
|
|
1
|
+
{"version":3,"file":"supported-devices.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-devices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAyFhF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,CAAC;AAEF,KAAK,yBAAyB,GAAG,eAAe,GAAG;IAEjD,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF;;;;;;;GAOG;AACH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qPA+MkC,CAAC;AAofhD,+FAA+F;AAC/F,QAAA,MAAM,gBAAgB,EAAE,SAAS,yBAAyB,EAUH,CAAC;AAExD,QAAA,MAAM,iBAAiB,sCAAmB,CAAC;AAK3C,iFAAiF;AACjF,QAAA,MAAM,0BAA0B,EAAE,SAAS,cAAc,EAMxD,CAAC;AAEF,OAAO,EACL,OAAO,EACP,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,CAAC"}
|
package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrated-devices-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/integrated-devices-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"integrated-devices-map.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/constants/integrated-devices-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,gCAmD/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-service-uuids.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-service-uuids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"background-service-uuids.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/background-sync/background-service-uuids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AA2C7D,eAAO,MAAM,yBAAyB,GACpC,iBAAiB,SAAS,cAAc,EAAE,EAC1C,yBAAwB,SAAS,MAAM,EAAO,KAC7C,MAAM,EAaR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-creator.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/device-creator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAUrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"device-creator.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/services/device-creator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAUrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAkH9D,qBAAa,aAAa,CAAC,CAAC,SAAS,SAAS,cAAc,EAAE;IAKhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJhD,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAEvC,mBAAmB,EAAE,CAAC;IAI5C,aAAa,GAClB,WAAW,MAAM,EACjB,eAAc,SAAS,MAAM,EAAO,KACnC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAwB3B;IAEK,YAAY,CAAC,CAAC,SAAS,SAAS,EACrC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC5B,eAAe,CAAC,CAAC,CAAC;IA4Cd,OAAO,aAEZ;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CAMP;IAEhB,OAAO,CAAC,eAAe;CAexB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Device } from "react-native-ble-plx";
|
|
2
|
+
import { CreateDeviceParams } from "../../../types/create-device-params";
|
|
3
|
+
import { IntegratedDevices } from "../../../types/integrated-devices";
|
|
4
|
+
import { IService } from "../../../types/service.type";
|
|
5
|
+
import { BTManagedDevice } from "../bt-managed-device";
|
|
6
|
+
export declare const checkmeEcgMainServices: IService[];
|
|
7
|
+
export declare class PulsebitDevice extends BTManagedDevice<IntegratedDevices.PULSEBIT_EX> {
|
|
8
|
+
protected mainServices: IService[];
|
|
9
|
+
protected stuckDataTimeout: number;
|
|
10
|
+
protected onStreamStart: undefined;
|
|
11
|
+
protected preferredMtu: number;
|
|
12
|
+
protected validatePackage: () => boolean;
|
|
13
|
+
constructor(device: Device, params: CreateDeviceParams<IntegratedDevices.PULSEBIT_EX>);
|
|
14
|
+
protected handleSuccessResult(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class CheckmeLeDevice extends BTManagedDevice<IntegratedDevices.CHECKME_LE> {
|
|
17
|
+
protected mainServices: IService[];
|
|
18
|
+
protected stuckDataTimeout: number;
|
|
19
|
+
protected onStreamStart: undefined;
|
|
20
|
+
protected preferredMtu: number;
|
|
21
|
+
protected validatePackage: () => boolean;
|
|
22
|
+
constructor(device: Device, params: CreateDeviceParams<IntegratedDevices.CHECKME_LE>);
|
|
23
|
+
protected handleSuccessResult(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=checkme-ecg.device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkme-ecg.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/checkme/checkme-ecg.device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAYvD,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EAS5C,CAAC;AAEF,qBAAa,cAAe,SAAQ,eAAe,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAChF,SAAS,CAAC,YAAY,aAA0B;IAChD,SAAS,CAAC,gBAAgB,SAAW;IACrC,SAAS,CAAC,aAAa,YAAa;IACpC,UAAmB,YAAY,SAAO;IACtC,UAAmB,eAAe,QAAO,OAAO,CAAS;gBAGvD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAqB3D,SAAS,CAAC,mBAAmB,IAAI,IAAI;CAGtC;AAED,qBAAa,eAAgB,SAAQ,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAChF,SAAS,CAAC,YAAY,aAA0B;IAChD,SAAS,CAAC,gBAAgB,SAAW;IACrC,SAAS,CAAC,aAAa,YAAa;IACpC,UAAmB,YAAY,SAAO;IACtC,UAAmB,eAAe,QAAO,OAAO,CAAS;gBAGvD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAqB1D,SAAS,CAAC,mBAAmB,IAAI,IAAI;CAGtC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EcgMeasurement } from "@ovok/core";
|
|
2
|
+
import { CaseType } from "../../../types/case-type";
|
|
3
|
+
import { CommandSequencer, CommandTimeoutResult } from "../../../types/command-sequencer";
|
|
4
|
+
import { DeviceCommand } from "../../../types/device-command";
|
|
5
|
+
type EcgMeasurementResult = EcgMeasurement & {
|
|
6
|
+
caseType: CaseType;
|
|
7
|
+
};
|
|
8
|
+
type EcgIndex = "checkme" | "pulsebit";
|
|
9
|
+
interface CheckmeEcgTransferParams {
|
|
10
|
+
write: Omit<DeviceCommand, "frame">;
|
|
11
|
+
indexFile: string;
|
|
12
|
+
indexFormat: EcgIndex;
|
|
13
|
+
onResult: (result: EcgMeasurementResult) => void;
|
|
14
|
+
}
|
|
15
|
+
/** Downloads the shared Pulsebit/Checkme EX or CheckmeLE ECG history. */
|
|
16
|
+
export declare class CheckmeEcgSequencer implements CommandSequencer {
|
|
17
|
+
private readonly params;
|
|
18
|
+
private phase;
|
|
19
|
+
private queue;
|
|
20
|
+
private current;
|
|
21
|
+
private content;
|
|
22
|
+
private expectedBytes;
|
|
23
|
+
private sequence;
|
|
24
|
+
private retries;
|
|
25
|
+
private lastCommand;
|
|
26
|
+
private reported;
|
|
27
|
+
constructor(params: CheckmeEcgTransferParams);
|
|
28
|
+
initialCommands: () => readonly DeviceCommand[];
|
|
29
|
+
isHistoryTransfer: () => boolean;
|
|
30
|
+
commandTimeoutMs: () => number | undefined;
|
|
31
|
+
onCommandTimeout: () => CommandTimeoutResult;
|
|
32
|
+
isNormalDisconnect: () => boolean;
|
|
33
|
+
nextCommand: (frame: readonly string[]) => readonly DeviceCommand[] | undefined;
|
|
34
|
+
private write;
|
|
35
|
+
private remember;
|
|
36
|
+
private startNextFile;
|
|
37
|
+
private finishFile;
|
|
38
|
+
private finishCurrentFile;
|
|
39
|
+
private parseIndex;
|
|
40
|
+
private report;
|
|
41
|
+
}
|
|
42
|
+
export type { CheckmeEcgTransferParams, EcgIndex };
|
|
43
|
+
//# sourceMappingURL=checkme-ecg.sequencer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkme-ecg.sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/checkme/checkme-ecg.sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAe9D,KAAK,oBAAoB,GAAG,cAAc,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEpE,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvC,UAAU,wBAAwB;IAChC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAClD;AAmCD,yEAAyE;AACzE,qBAAa,mBAAoB,YAAW,gBAAgB;IAWvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAV1C,OAAO,CAAC,KAAK,CAAyD;IACtE,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAqB;gBAED,MAAM,EAAE,wBAAwB;IAE7D,eAAe,QAAO,SAAS,aAAa,EAAE,CACY;IAE1D,iBAAiB,QAAO,OAAO,CAAS;IAExC,gBAAgB,QAAO,MAAM,GAAG,SAAS,CACM;IAE/C,gBAAgB,QAAO,oBAAoB,CAUhD;IAEK,kBAAkB,QAAO,OAAO,CAA0B;IAE1D,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAuCrC;IAEF,OAAO,CAAC,KAAK,CACuB;IAEpC,OAAO,CAAC,QAAQ,CAId;IAEF,OAAO,CAAC,aAAa,CAanB;IAEF,OAAO,CAAC,UAAU,CAIhB;IAEF,OAAO,CAAC,iBAAiB,CAQvB;IAEF,OAAO,CAAC,UAAU,CAOhB;IAEF,OAAO,CAAC,MAAM,CAmBZ;CACH;AAED,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -76,4 +76,11 @@ export interface CheckmeEcgFile {
|
|
|
76
76
|
}
|
|
77
77
|
/** Decodes Checkme's 21-byte ECG header and little-endian signed waveform. */
|
|
78
78
|
export declare const decodeCheckmeEcgFile: (bytes: readonly string[]) => CheckmeEcgFile | undefined;
|
|
79
|
+
export interface PulsebitEcgRecord extends CheckmeTimestampedRecord {
|
|
80
|
+
heartRate: number;
|
|
81
|
+
}
|
|
82
|
+
/** Decodes the 17-byte ECG index used by Pulsebit and Checkme EX. */
|
|
83
|
+
export declare const parsePulsebitEcgRecords: (bytes: readonly string[]) => PulsebitEcgRecord[];
|
|
84
|
+
/** Decodes the 44-byte Pulsebit ECG header and its signed waveform. */
|
|
85
|
+
export declare const decodePulsebitEcgFile: (bytes: readonly string[]) => CheckmeEcgFile | undefined;
|
|
79
86
|
//# sourceMappingURL=checkme.protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkme.protocol.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/checkme/checkme.protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkme.protocol.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/checkme/checkme.protocol.ts"],"names":[],"mappings":"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"}
|