@ovok/native 1.16.1-dev.2187 → 1.16.1-dev.2191
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-management/components/bt-provider-child-wrapper.js +13 -0
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/commonjs/modules/bt-management/index.js +12 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +7 -0
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +20 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +2 -1
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +4 -0
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +25 -7
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +19 -14
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js +75 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recorder.js +52 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recorder.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +17 -15
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.waveform.js +27 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.waveform.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +3 -5
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +13 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -1
- package/lib/commonjs/modules/bt-management/types/device-waveform.js +6 -0
- package/lib/commonjs/modules/bt-management/types/device-waveform.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/i-16-from-hex.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js +14 -0
- package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/connections.js +7 -1
- package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/runtime.js +8 -1
- package/lib/commonjs/modules/next/bluetooth/runtime.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +13 -0
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/module/modules/bt-management/index.js +1 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +7 -0
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +20 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +2 -1
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +4 -0
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +25 -7
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +19 -14
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js +72 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recorder.js +48 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recorder.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +17 -15
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.waveform.js +22 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.waveform.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +3 -6
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +14 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -1
- package/lib/module/modules/bt-management/types/device-waveform.js +4 -0
- package/lib/module/modules/bt-management/types/device-waveform.js.map +1 -0
- package/lib/module/modules/bt-management/utils/i-16-from-hex.js.map +1 -1
- package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js +14 -0
- package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
- package/lib/module/modules/next/bluetooth/connections.js +7 -1
- package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
- package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
- package/lib/module/modules/next/bluetooth/runtime.js +8 -1
- package/lib/module/modules/next/bluetooth/runtime.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -1
- 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/lepu/lepu.file-transfer.d.ts +4 -3
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts +42 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts +30 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-waveform.d.ts +15 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-waveform.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/i-16-from-hex.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/utils/i-16-from-hex.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +14 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -1
- 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/lepu/lepu.file-transfer.d.ts +4 -3
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts +42 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts +30 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +11 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/device-waveform.d.ts +15 -0
- package/lib/typescript/module/src/modules/bt-management/types/device-waveform.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/i-16-from-hex.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/utils/i-16-from-hex.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts +3 -1
- package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +6 -1
- package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts +4 -1
- package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +14 -1
- package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lepu.file-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.file-transfer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"lepu.file-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.file-transfer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAK9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAqB5D,sCAAsC;AACtC,UAAU,QAAQ;IAEhB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,sCAAsC;AACtC,UAAU,sBAAsB;IAE9B,kDAAkD;IAClD,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,yFAAyF;IACzF,OAAO,EAAE,kBAAkB,CAAC;IAE5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEjC,yFAAyF;IACzF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEhC,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAEvC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAE/C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,cAAM,gBAAiB,YAAW,gBAAgB;IAU7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT1C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEa,MAAM,EAAE,sBAAsB;IAE3D,iBAAiB,QAAO,OAAO,CAAS;IAExC,eAAe,GACpB,qBAAqB,MAAM,KAC1B,SAAS,aAAa,EAAE,CAEzB;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CA+BrC;IAEF,OAAO,CAAC,YAAY,CA6BlB;IAEF,0FAA0F;IAC1F,OAAO,CAAC,UAAU,CAuBhB;IAEF;;;;OAIG;IACH,OAAO,CAAC,WAAW,CA2BjB;IAEF,OAAO,CAAC,UAAU,CAgBhB;IAEF,OAAO,CAAC,SAAS,CAEf;IAEF;;;;;OAKG;IACH,OAAO,CAAC,IAAI,CAWV;IAEF,OAAO,CAAC,UAAU,CAQf;CACJ;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { MeasurementTypeKey } from "@ovok/core/next";
|
|
2
|
+
import { CaseType } from "../../../types/case-type";
|
|
3
|
+
import { Waveform } from "./lepu.waveform";
|
|
4
|
+
/** A stretch of a recording sent live, before the device's own file supersedes it. */
|
|
5
|
+
interface LiveEcgChunk {
|
|
6
|
+
measurementTypeKey: MeasurementTypeKey.ecg;
|
|
7
|
+
caseType: CaseType.RESULT;
|
|
8
|
+
/** The samples, in millivolts. */
|
|
9
|
+
diagramPoints: number[];
|
|
10
|
+
/** Seconds of samples it holds. */
|
|
11
|
+
duration: number;
|
|
12
|
+
/** When its first sample was taken. */
|
|
13
|
+
recordedAt: Date;
|
|
14
|
+
/** `<recording key>-live-<n>`, the key being the device's file name for the recording. */
|
|
15
|
+
recordingId: string;
|
|
16
|
+
/** Taken live, so the device's file for the same span supersedes it. */
|
|
17
|
+
live: true;
|
|
18
|
+
/** Samples received out of those expected for its span, 0 to 1; below 1 means gaps. */
|
|
19
|
+
coverage: number;
|
|
20
|
+
}
|
|
21
|
+
/** Collects one recording's live samples and hands them over in chunks of five minutes or less. */
|
|
22
|
+
declare class LiveEcgChunks {
|
|
23
|
+
private readonly waveform;
|
|
24
|
+
private readonly onChunk;
|
|
25
|
+
private counts;
|
|
26
|
+
private startedAt;
|
|
27
|
+
private lastAt;
|
|
28
|
+
private recordingKey;
|
|
29
|
+
private index;
|
|
30
|
+
constructor(waveform: Waveform, onChunk: (chunk: LiveEcgChunk) => void);
|
|
31
|
+
/** Adds the samples an answer at `at` carried, `recordedSeconds` into the recording. */
|
|
32
|
+
append: (samples: readonly number[], at: Date, recordedSeconds: number) => void;
|
|
33
|
+
/** Hands over what has been collected; the recording may continue into a further chunk. */
|
|
34
|
+
flush: () => void;
|
|
35
|
+
/** Hands over the rest and forgets the recording, so the next one starts its own chunks. */
|
|
36
|
+
endRecording: () => void;
|
|
37
|
+
private secondsOf;
|
|
38
|
+
private coverage;
|
|
39
|
+
}
|
|
40
|
+
export { LiveEcgChunks };
|
|
41
|
+
export type { LiveEcgChunk };
|
|
42
|
+
//# sourceMappingURL=lepu.live-ecg-chunks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lepu.live-ecg-chunks.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAgB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQzD,sFAAsF;AACtF,UAAU,YAAY;IACpB,kBAAkB,EAAE,kBAAkB,CAAC,GAAG,CAAC;IAC3C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;IAE1B,kCAAkC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,UAAU,EAAE,IAAI,CAAC;IAEjB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IAEpB,wEAAwE;IACxE,IAAI,EAAE,IAAI,CAAC;IAEX,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mGAAmG;AACnG,cAAM,aAAa;IAQf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,KAAK,CAAK;gBAGC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;IAGzD,wFAAwF;IACjF,MAAM,GAAI,SAAS,SAAS,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,iBAAiB,MAAM,KAAG,IAAI,CASnF;IAEF,2FAA2F;IACpF,KAAK,QAAO,IAAI,CAmBrB;IAEF,4FAA4F;IACrF,YAAY,QAAO,IAAI,CAI5B;IAEF,OAAO,CAAC,SAAS,CAAqE;IAEtF,OAAO,CAAC,QAAQ,CAKd;CACH;AASD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
|
|
2
|
+
import { DeviceConnectionEvent } from "../../../types/device-connection-event";
|
|
3
|
+
import { LiveEcgChunk } from "./lepu.live-ecg-chunks";
|
|
4
|
+
type RecordingStatus = NonNullable<CustomLepuSpec["recordingStatus"]>;
|
|
5
|
+
interface LepuRecorderCallbacks {
|
|
6
|
+
onRecordingChanged: (recording: DeviceConnectionEvent["recording"]) => void;
|
|
7
|
+
/** The samples of one answer while recording, for display. */
|
|
8
|
+
onSamples: (samples: readonly number[], at: Date) => void;
|
|
9
|
+
/** A chunk of the recording, to be saved. */
|
|
10
|
+
onChunk: (chunk: LiveEcgChunk) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Follows a recorder's open recording through its poll answers: reports its state, feeds the live
|
|
14
|
+
* trace while it records, and hands its samples over in chunks.
|
|
15
|
+
*/
|
|
16
|
+
declare class LepuRecorder {
|
|
17
|
+
private readonly status;
|
|
18
|
+
private readonly callbacks;
|
|
19
|
+
private readonly watch;
|
|
20
|
+
private readonly chunks;
|
|
21
|
+
constructor(status: RecordingStatus, callbacks: LepuRecorderCallbacks);
|
|
22
|
+
/** Reads one poll answer; true when it is the first in the saved state, so the files are read. */
|
|
23
|
+
observe: (pollAnswer: readonly string[]) => boolean;
|
|
24
|
+
isOpen: () => boolean;
|
|
25
|
+
/** Hands over what is collected, for a connection that is ending. */
|
|
26
|
+
flush: () => void;
|
|
27
|
+
private record;
|
|
28
|
+
}
|
|
29
|
+
export { LepuRecorder };
|
|
30
|
+
//# sourceMappingURL=lepu.recorder.d.ts.map
|
package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lepu.recorder.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAiB,MAAM,wBAAwB,CAAC;AAIrE,KAAK,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtE,UAAU,qBAAqB;IAC7B,kBAAkB,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAE5E,8DAA8D;IAC9D,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;IAE1D,6CAA6C;IAC7C,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,cAAM,YAAY;IAKd,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAGhC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,qBAAqB;IAMnD,kGAAkG;IAC3F,OAAO,GAAI,YAAY,SAAS,MAAM,EAAE,KAAG,OAAO,CAYvD;IAEK,MAAM,QAAO,OAAO,CAAwB;IAEnD,qEAAqE;IAC9D,KAAK,QAAO,IAAI,CAAyB;IAEhD,OAAO,CAAC,MAAM,CAcZ;CACH;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -7,6 +7,7 @@ declare class LepuRecordingWatch {
|
|
|
7
7
|
private readonly status;
|
|
8
8
|
private readonly onRecordingChanged;
|
|
9
9
|
private state;
|
|
10
|
+
private seconds;
|
|
10
11
|
private leadOffSince;
|
|
11
12
|
private reported;
|
|
12
13
|
constructor(status: RecordingStatus, onRecordingChanged: (recording: Recording | undefined) => void);
|
|
@@ -14,6 +15,10 @@ declare class LepuRecordingWatch {
|
|
|
14
15
|
observe: (pollAnswer: readonly string[]) => boolean;
|
|
15
16
|
/** Whether a recording is open, so that stopping it means something. */
|
|
16
17
|
isOpen: () => boolean;
|
|
18
|
+
/** Whether the electrodes have contact and samples are being recorded. */
|
|
19
|
+
isRecording: () => boolean;
|
|
20
|
+
/** Seconds recorded, as of the last answer. */
|
|
21
|
+
recordedSeconds: () => number;
|
|
17
22
|
private recordingIn;
|
|
18
23
|
private isLeadOff;
|
|
19
24
|
/** Reports a change in what the app would act on, not every tick of the seconds. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lepu.recording-watch.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.recording-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAO/E,KAAK,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtE,KAAK,SAAS,GAAG,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjE,oEAAoE;AACpE,cAAM,kBAAkB;
|
|
1
|
+
{"version":3,"file":"lepu.recording-watch.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.recording-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAO/E,KAAK,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtE,KAAK,SAAS,GAAG,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjE,oEAAoE;AACpE,cAAM,kBAAkB;IAOpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAPrC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAqB;gBAGlB,MAAM,EAAE,eAAe,EACvB,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI;IAGjF,kGAAkG;IAC3F,OAAO,GAAI,YAAY,SAAS,MAAM,EAAE,KAAG,OAAO,CASvD;IAEF,wEAAwE;IACjE,MAAM,QAAO,OAAO,CAA2C;IAEtE,0EAA0E;IACnE,WAAW,QAAO,OAAO,CAA8C;IAE9E,+CAA+C;IACxC,eAAe,QAAO,MAAM,CAAiB;IAEpD,OAAO,CAAC,WAAW,CAOH;IAEhB,OAAO,CAAC,SAAS,CAA0D;IAE3E,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAYZ;CACH;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
|
|
2
|
+
type Waveform = NonNullable<NonNullable<CustomLepuSpec["recordingStatus"]>["waveform"]>;
|
|
3
|
+
/** The raw sample counts a poll answer carries, never more than the frame holds. */
|
|
4
|
+
declare const waveformSamples: (pollAnswer: readonly string[], waveform: Waveform) => number[];
|
|
5
|
+
/** One count in millivolts; the no-signal marker reads as 0. */
|
|
6
|
+
declare const millivoltsOf: (count: number, waveform: Waveform) => number;
|
|
7
|
+
export { millivoltsOf, waveformSamples };
|
|
8
|
+
export type { Waveform };
|
|
9
|
+
//# sourceMappingURL=lepu.waveform.d.ts.map
|
package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lepu.waveform.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.waveform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAIjE,KAAK,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAMxF,oFAAoF;AACpF,QAAA,MAAM,eAAe,GAAI,YAAY,SAAS,MAAM,EAAE,EAAE,UAAU,QAAQ,KAAG,MAAM,EAOlF,CAAC;AAEF,gEAAgE;AAChE,QAAA,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,UAAU,QAAQ,KAAG,MACkB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AACzC,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -15,7 +15,7 @@ interface ViatomEcgRecording {
|
|
|
15
15
|
* Decodes an ER1/ER2 recording. A file whose waveform does not last as long as its tail
|
|
16
16
|
* records is returned empty, because that file is in a format this decoder does not read.
|
|
17
17
|
*/
|
|
18
|
-
declare const decodeViatomEcgRecording: (
|
|
18
|
+
declare const decodeViatomEcgRecording: (bytes: Uint8Array) => ViatomEcgRecording;
|
|
19
19
|
export type { ViatomEcgRecording };
|
|
20
20
|
export { decodeViatomEcgRecording, recordedAtFromViatomFileName, VIATOM_ECG_MILLIVOLTS_PER_COUNT, VIATOM_ECG_SAMPLE_RATE_HZ, };
|
|
21
21
|
//# sourceMappingURL=viatom.ecg-files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viatom.ecg-files.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viatom.ecg-files.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,QAAA,MAAM,yBAAyB,MAAM,CAAC;AAEtC,kDAAkD;AAClD,QAAA,MAAM,+BAA+B,WAAW,CAAC;AAsBjD,0EAA0E;AAC1E,QAAA,MAAM,4BAA4B,GAAI,MAAM,MAAM,KAAG,IAAI,GAAG,SA0B3D,CAAC;AAiBF,mCAAmC;AACnC,UAAU,kBAAkB;IAE1B,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsFD;;;GAGG;AACH,QAAA,MAAM,wBAAwB,GAAI,OAAO,UAAU,KAAG,kBAcrD,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viatom.ecg-recording-status.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"viatom.ecg-recording-status.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAIjE,gEAAgE;AAChE,QAAA,MAAM,eAAe,KAAK,CAAC;AAC3B,QAAA,MAAM,eAAe,IAAI,CAAC;AAoB1B,4EAA4E;AAC5E,QAAA,MAAM,qBAAqB,GACzB,gBAAgB,MAAM,KACrB,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAgB9C,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { DeviceConnectionEvent } from "./device-connection-event";
|
|
|
6
6
|
import { DeviceData } from "./device-data";
|
|
7
7
|
import { DeviceKey } from "./device-key";
|
|
8
8
|
import { DeviceStatusChangeCallback } from "./device-status-change-callback";
|
|
9
|
+
import { DeviceWaveform } from "./device-waveform";
|
|
9
10
|
import { ErrorCallback } from "./error-callback";
|
|
10
11
|
import { ResultCallback } from "./result-callback";
|
|
11
12
|
import { DeviceResultPolicy } from "./result-policy";
|
|
@@ -22,6 +23,8 @@ export interface CreateDeviceParams<T extends DeviceKey> {
|
|
|
22
23
|
onSeriesValue?: (deviceData: DeviceData, reading: Measurement) => boolean;
|
|
23
24
|
hasResultReceiver?: () => boolean;
|
|
24
25
|
onConnectionEvent?: (data: DeviceConnectionEvent) => void;
|
|
26
|
+
/** Called with the ECG samples of each realtime answer while a recorder records; for display only. */
|
|
27
|
+
onWaveform?: (waveform: DeviceWaveform) => void;
|
|
25
28
|
onDeviceDisconnected?: () => void;
|
|
26
29
|
oneReadingPerConnection?: boolean;
|
|
27
30
|
deliveredEcgFileNames?: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-device-params.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/create-device-params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE7C;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAC1E,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-device-params.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/create-device-params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE7C;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAC1E,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAE1D,sGAAsG;IACtG,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC,sHAAsH;IACtH,mBAAmB,CAAC,EAAE,qBAAqB,CAAC;IAE5C,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
|
|
@@ -83,6 +83,17 @@ export interface CustomLepuSpec {
|
|
|
83
83
|
minimumStoredSeconds: number;
|
|
84
84
|
/** The opcode that stops the recording, storing it when it is long enough. */
|
|
85
85
|
stopCommand: number;
|
|
86
|
+
/** Where a poll answer carries the ECG samples taken since the last one, for live display and chunks. */
|
|
87
|
+
waveform?: {
|
|
88
|
+
/** Index of the u16 little-endian sample count, header included; int16 samples follow it. */
|
|
89
|
+
countByteIndex: number;
|
|
90
|
+
/** Samples per second. */
|
|
91
|
+
sampleRateHz: number;
|
|
92
|
+
/** Millivolts per sample count. */
|
|
93
|
+
millivoltsPerCount: number;
|
|
94
|
+
/** The count that means no signal, stored as 0 mV. */
|
|
95
|
+
noSignalCount?: number;
|
|
96
|
+
};
|
|
86
97
|
};
|
|
87
98
|
/** Sends the command through the write-without-response characteristic. */
|
|
88
99
|
writeWithoutResponse?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-lepu-spec.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/custom-lepu-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAc;IAE7B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAElC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAErC;;;OAGG;IACH,cAAc,CAAC,EAAE,mBAAmB,GAAG,WAAW,CAAC;IAEnD;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,eAAe,CAAC;IAE3C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnC,0FAA0F;IAC1F,KAAK,EAAE;QAEL,4DAA4D;QAC5D,WAAW,EAAE,MAAM,CAAC;QAEpB,0DAA0D;QAC1D,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF;;;;;;;OAOG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE;QAEhB,oGAAoG;QACpG,SAAS,EAAE,MAAM,CAAC;QAElB,mFAAmF;QACnF,gBAAgB,EAAE,MAAM,CAAC;QAEzB,wCAAwC;QACxC,cAAc,EAAE,MAAM,CAAC;QAEvB,0FAA0F;QAC1F,YAAY,EAAE,MAAM,CAAC;QAErB,2DAA2D;QAC3D,UAAU,EAAE,MAAM,CAAC;QAEnB,mEAAmE;QACnE,oBAAoB,EAAE,MAAM,CAAC;QAE7B,8EAA8E;QAC9E,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"custom-lepu-spec.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/custom-lepu-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAc;IAE7B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAElC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAErC;;;OAGG;IACH,cAAc,CAAC,EAAE,mBAAmB,GAAG,WAAW,CAAC;IAEnD;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,eAAe,CAAC;IAE3C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnC,0FAA0F;IAC1F,KAAK,EAAE;QAEL,4DAA4D;QAC5D,WAAW,EAAE,MAAM,CAAC;QAEpB,0DAA0D;QAC1D,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF;;;;;;;OAOG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE;QAEhB,oGAAoG;QACpG,SAAS,EAAE,MAAM,CAAC;QAElB,mFAAmF;QACnF,gBAAgB,EAAE,MAAM,CAAC;QAEzB,wCAAwC;QACxC,cAAc,EAAE,MAAM,CAAC;QAEvB,0FAA0F;QAC1F,YAAY,EAAE,MAAM,CAAC;QAErB,2DAA2D;QAC3D,UAAU,EAAE,MAAM,CAAC;QAEnB,mEAAmE;QACnE,oBAAoB,EAAE,MAAM,CAAC;QAE7B,8EAA8E;QAC9E,WAAW,EAAE,MAAM,CAAC;QAEpB,yGAAyG;QACzG,QAAQ,CAAC,EAAE;YAET,6FAA6F;YAC7F,cAAc,EAAE,MAAM,CAAC;YAEvB,0BAA0B;YAC1B,YAAY,EAAE,MAAM,CAAC;YAErB,mCAAmC;YACnC,kBAAkB,EAAE,MAAM,CAAC;YAE3B,sDAAsD;YACtD,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;IAEF,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DeviceData } from "./device-data";
|
|
2
|
+
/** The ECG samples a recorder sent in one realtime answer, for drawing a live trace; never saved. */
|
|
3
|
+
export interface DeviceWaveform {
|
|
4
|
+
/** Device the samples came from. */
|
|
5
|
+
deviceData: DeviceData;
|
|
6
|
+
/** Raw sample counts, oldest first. */
|
|
7
|
+
samples: readonly number[];
|
|
8
|
+
/** Samples per second. */
|
|
9
|
+
sampleRateHz: number;
|
|
10
|
+
/** Millivolts per sample count. */
|
|
11
|
+
millivoltsPerCount: number;
|
|
12
|
+
/** When the answer carrying them arrived. */
|
|
13
|
+
at: Date;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=device-waveform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-waveform.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/device-waveform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAE7B,oCAAoC;IACpC,UAAU,EAAE,UAAU,CAAC;IAEvB,uCAAuC;IACvC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3B,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,6CAA6C;IAC7C,EAAE,EAAE,IAAI,CAAC;CACV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const i16FromHex: (hex: string[], i: number) => number;
|
|
1
|
+
export declare const i16FromHex: (hex: readonly string[], i: number) => number;
|
|
2
2
|
//# sourceMappingURL=i-16-from-hex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-16-from-hex.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/utils/i-16-from-hex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,EAAE,GAAG,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"i-16-from-hex.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/utils/i-16-from-hex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,EAAE,EAAE,GAAG,MAAM,KAAG,MAI9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-driver.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/next/bluetooth/ble-plx/legacy-driver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAe,MAAM,EAAiB,MAAM,WAAW,CAAC;AAW/D,4GAA4G;AAC5G,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,YAAY,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"legacy-driver.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/next/bluetooth/ble-plx/legacy-driver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAe,MAAM,EAAiB,MAAM,WAAW,CAAC;AAW/D,4GAA4G;AAC5G,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,YAAY,SAAS,KAAG,MAyC9F,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Driver } from "./driver";
|
|
2
2
|
import { ReadingLog } from "./readings";
|
|
3
3
|
import { ResultPolicy } from "./result-policy";
|
|
4
|
+
import { DeviceWaveform } from "./snapshot";
|
|
4
5
|
import { SnapshotStore } from "./store";
|
|
5
6
|
import { Peripheral } from "./transport";
|
|
6
7
|
/** One driver run per connected device, its events folded into the snapshot. */
|
|
@@ -9,9 +10,10 @@ declare class Connections {
|
|
|
9
10
|
private readonly readings;
|
|
10
11
|
private readonly policy;
|
|
11
12
|
private readonly onEnded;
|
|
13
|
+
private readonly onWaveform;
|
|
12
14
|
private readonly sessions;
|
|
13
15
|
private readonly recordingStops;
|
|
14
|
-
constructor(store: SnapshotStore, readings: ReadingLog, policy: ResultPolicy, onEnded: (id: string) => void);
|
|
16
|
+
constructor(store: SnapshotStore, readings: ReadingLog, policy: ResultPolicy, onEnded: (id: string) => void, onWaveform: (waveform: DeviceWaveform) => void);
|
|
15
17
|
isActive(id: string): boolean;
|
|
16
18
|
/** Resolves once connected; joins a connection still opening or open, and waits out one being closed. */
|
|
17
19
|
connect(peripheral: Peripheral, driver: Driver): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,gFAAgF;AAChF,cAAM,WAAW;IAKb,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,gFAAgF;AAChF,cAAM,WAAW;IAKb,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAR7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;gBAGtD,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAC7B,UAAU,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI;IAG1D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIpC,yGAAyG;IAC5F,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD;;;;OAIG;IACU,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,0EAA0E;IAC7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,KAAK;YAwCC,GAAG;IAMjB,OAAO,CAAC,KAAK;CAuBd;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Measurement } from "@ovok/core/next";
|
|
2
2
|
import { BluetoothError } from "./errors";
|
|
3
3
|
import { DeviceInformation, Link } from "./link";
|
|
4
|
-
import { DeviceRecording } from "./snapshot";
|
|
4
|
+
import { DeviceRecording, DeviceWaveform } from "./snapshot";
|
|
5
5
|
import { Peripheral } from "./transport";
|
|
6
6
|
/** What a driver reports while it runs. */
|
|
7
7
|
type DeviceEvent = {
|
|
@@ -28,6 +28,11 @@ type DeviceEvent = {
|
|
|
28
28
|
recording: DeviceRecording | null;
|
|
29
29
|
/** Stops the open recording. */
|
|
30
30
|
stop: () => Promise<void>;
|
|
31
|
+
} | {
|
|
32
|
+
/** The device sent live ECG samples while recording; for display only. */
|
|
33
|
+
kind: "waveform";
|
|
34
|
+
/** The samples, without the device, which the runtime adds. */
|
|
35
|
+
waveform: Omit<DeviceWaveform, "deviceId">;
|
|
31
36
|
} | {
|
|
32
37
|
/** The device or its protocol reported an error; the connection may continue. */
|
|
33
38
|
kind: "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,2CAA2C;AAC3C,KAAK,WAAW,GACZ;IAEA,+BAA+B;IAC/B,IAAI,EAAE,QAAQ,CAAC;IAEf,2BAA2B;IAC3B,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;CACpD,GACC;IAEA,gFAAgF;IAChF,IAAI,EAAE,aAAa,CAAC;IAEpB,wBAAwB;IACxB,WAAW,EAAE,iBAAiB,CAAC;CAChC,GACC;IAEA,iCAAiC;IACjC,IAAI,EAAE,SAAS,CAAC;IAEhB,+GAA+G;IAC/G,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAElB,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC;CACtB,GACC;IAEA,mDAAmD;IACnD,IAAI,EAAE,WAAW,CAAC;IAElB,wDAAwD;IACxD,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAElC,gCAAgC;IAChC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,GACC;IAEA,0EAA0E;IAC1E,IAAI,EAAE,UAAU,CAAC;IAEjB,+DAA+D;IAC/D,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;CAC5C,GACC;IAEA,iFAAiF;IACjF,IAAI,EAAE,OAAO,CAAC;IAEd,iBAAiB;IACjB,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC;AAEJ,iGAAiG;AACjG,KAAK,MAAM,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;AAE1F,0EAA0E;AAC1E,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;AAEjE,8GAA8G;AAC9G,QAAA,MAAM,aAAa,GAAI,SAAS,WAAW,KAAG,OAI7C,CAAC;AAMF,yCAAyC;AACzC,QAAA,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,cAAc,KAAG,MAgBzD,CAAC;AAEJ,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -11,7 +11,7 @@ export { BluetoothRuntime } from "./runtime";
|
|
|
11
11
|
export type { BluetoothRuntimeOptions } from "./runtime";
|
|
12
12
|
export { BluetoothError } from "./errors";
|
|
13
13
|
export type { BluetoothErrorCode } from "./errors";
|
|
14
|
-
export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, NearbyDevice, SaveState } from "./snapshot";
|
|
14
|
+
export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, DeviceWaveform, NearbyDevice, SaveState } from "./snapshot";
|
|
15
15
|
export type { AdapterState, Advertisement, BluetoothScanner, Peripheral } from "./transport";
|
|
16
16
|
export type { BluetoothPermission, BluetoothPermissions } from "./permissions";
|
|
17
17
|
export type { ReadingSink, SaveResult } from "./sink";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9I,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,YAAY,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { DeviceSupport } from "./devices";
|
|
|
3
3
|
import { BluetoothPermission, BluetoothPermissions } from "./permissions";
|
|
4
4
|
import { ResultPolicy } from "./result-policy";
|
|
5
5
|
import { ReadingSink } from "./sink";
|
|
6
|
-
import { BluetoothSnapshot } from "./snapshot";
|
|
6
|
+
import { BluetoothSnapshot, DeviceWaveform } from "./snapshot";
|
|
7
7
|
import { BluetoothScanner } from "./transport";
|
|
8
8
|
/** What a `BluetoothRuntime` is built from. */
|
|
9
9
|
type BluetoothRuntimeOptions = {
|
|
@@ -31,6 +31,7 @@ declare class BluetoothRuntime {
|
|
|
31
31
|
private readonly held;
|
|
32
32
|
private readonly backoff;
|
|
33
33
|
private readonly retryTimers;
|
|
34
|
+
private readonly waveformListeners;
|
|
34
35
|
private readonly readings;
|
|
35
36
|
private readonly connections;
|
|
36
37
|
private readonly paired;
|
|
@@ -43,6 +44,8 @@ declare class BluetoothRuntime {
|
|
|
43
44
|
getSnapshot: () => BluetoothSnapshot;
|
|
44
45
|
/** Calls `listener` after every state change; returns the unsubscribe. */
|
|
45
46
|
subscribe: (listener: () => void) => (() => void);
|
|
47
|
+
/** Calls `listener` with the live ECG samples of recording devices, for display; returns the unsubscribe. */
|
|
48
|
+
subscribeWaveform: (listener: (waveform: DeviceWaveform) => void) => (() => void);
|
|
46
49
|
/** Reads the permission without prompting. */
|
|
47
50
|
checkPermission(): Promise<BluetoothPermission>;
|
|
48
51
|
/** Prompts for the permission when the OS still can. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,OAAO,EAAe,aAAa,EAAe,MAAM,WAAW,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,19 @@ type NearbyDevice = {
|
|
|
22
22
|
/** The recording the device holds open, for recorders that report one; absent when none is open. */
|
|
23
23
|
recording?: DeviceRecording;
|
|
24
24
|
};
|
|
25
|
+
/** The ECG samples a recording device sent in one realtime answer, for drawing a live trace; never saved. */
|
|
26
|
+
type DeviceWaveform = {
|
|
27
|
+
/** Platform identifier of the device. */
|
|
28
|
+
deviceId: string;
|
|
29
|
+
/** Raw sample counts, oldest first. */
|
|
30
|
+
samples: readonly number[];
|
|
31
|
+
/** Samples per second. */
|
|
32
|
+
sampleRateHz: number;
|
|
33
|
+
/** Millivolts per sample count. */
|
|
34
|
+
millivoltsPerCount: number;
|
|
35
|
+
/** When the answer carrying them arrived. */
|
|
36
|
+
at: Date;
|
|
37
|
+
};
|
|
25
38
|
/** A recording a recorder holds open, as its last realtime answer reported it. */
|
|
26
39
|
type DeviceRecording = {
|
|
27
40
|
/** Seconds recorded so far, as of the last change. */
|
|
@@ -82,5 +95,5 @@ type BluetoothSnapshot = {
|
|
|
82
95
|
/** Recent readings, oldest first. */
|
|
83
96
|
readings: readonly DeviceReading[];
|
|
84
97
|
};
|
|
85
|
-
export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, NearbyDevice, SaveState };
|
|
98
|
+
export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, DeviceWaveform, NearbyDevice, SaveState };
|
|
86
99
|
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0CAA0C;AAC1C,KAAK,eAAe,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAErG,6CAA6C;AAC7C,KAAK,YAAY,GAAG;IAElB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,UAAU,EAAE,eAAe,CAAC;IAE5B,yDAAyD;IACzD,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAE7B,mGAAmG;IACnG,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,oGAAoG;IACpG,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,kFAAkF;AAClF,KAAK,eAAe,GAAG;IAErB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC;IAEpB,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,qCAAqC;AACrC,KAAK,SAAS,GACV;IAEA,qCAAqC;IACrC,MAAM,EAAE,QAAQ,CAAC;CAClB,GACC;IAEA,aAAa;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,GACC;IAEA,uDAAuD;IACvD,MAAM,EAAE,QAAQ,CAAC;IAEjB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB,GACC;IAEA,qEAAqE;IACrE,MAAM,EAAE,QAAQ,CAAC;IAEjB,oCAAoC;IACpC,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC;AAEJ,8DAA8D;AAC9D,KAAK,aAAa,GAAG;IAEnB,mFAAmF;IACnF,EAAE,EAAE,MAAM,CAAC;IAEX,+BAA+B;IAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC;IAElE,+BAA+B;IAC/B,WAAW,EAAE,WAAW,CAAC;IAEzB,gCAAgC;IAChC,UAAU,EAAE,IAAI,CAAC;IAEjB,8BAA8B;IAC9B,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF,6EAA6E;AAC7E,KAAK,iBAAiB,GAAG;IAEvB,+BAA+B;IAC/B,OAAO,EAAE,YAAY,CAAC;IAEtB,2DAA2D;IAC3D,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAE5C,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAC;IAElB,kEAAkE;IAClE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAEjC,uDAAuD;IACvD,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAEjC,6EAA6E;IAC7E,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1B,qCAAqC;IACrC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/snapshot.ts"],"names":[],"mappings":"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"}
|