@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.
Files changed (169) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +13 -0
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  4. package/lib/commonjs/modules/bt-management/index.js +12 -0
  5. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/services/bt-manager.js +7 -0
  7. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +20 -1
  9. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +2 -1
  11. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +4 -0
  13. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  14. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +25 -7
  15. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  16. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +19 -14
  17. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js +75 -0
  19. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js.map +1 -0
  20. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recorder.js +52 -0
  21. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recorder.js.map +1 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +17 -15
  23. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -1
  24. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.waveform.js +27 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.waveform.js.map +1 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +3 -5
  27. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
  28. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +13 -1
  29. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -1
  30. package/lib/commonjs/modules/bt-management/types/device-waveform.js +6 -0
  31. package/lib/commonjs/modules/bt-management/types/device-waveform.js.map +1 -0
  32. package/lib/commonjs/modules/bt-management/utils/i-16-from-hex.js.map +1 -1
  33. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js +14 -0
  34. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
  35. package/lib/commonjs/modules/next/bluetooth/connections.js +7 -1
  36. package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
  37. package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
  38. package/lib/commonjs/modules/next/bluetooth/runtime.js +8 -1
  39. package/lib/commonjs/modules/next/bluetooth/runtime.js.map +1 -1
  40. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +13 -0
  41. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  42. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  43. package/lib/module/modules/bt-management/index.js +1 -0
  44. package/lib/module/modules/bt-management/index.js.map +1 -1
  45. package/lib/module/modules/bt-management/services/bt-manager.js +7 -0
  46. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  47. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +20 -1
  48. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  49. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +2 -1
  50. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  51. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +4 -0
  52. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  53. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +25 -7
  54. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  55. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +19 -14
  56. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
  57. package/lib/module/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js +72 -0
  58. package/lib/module/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.js.map +1 -0
  59. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recorder.js +48 -0
  60. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recorder.js.map +1 -0
  61. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +17 -15
  62. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -1
  63. package/lib/module/modules/bt-management/services/devices/lepu/lepu.waveform.js +22 -0
  64. package/lib/module/modules/bt-management/services/devices/lepu/lepu.waveform.js.map +1 -0
  65. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +3 -6
  66. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
  67. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +14 -1
  68. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -1
  69. package/lib/module/modules/bt-management/types/device-waveform.js +4 -0
  70. package/lib/module/modules/bt-management/types/device-waveform.js.map +1 -0
  71. package/lib/module/modules/bt-management/utils/i-16-from-hex.js.map +1 -1
  72. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js +14 -0
  73. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
  74. package/lib/module/modules/next/bluetooth/connections.js +7 -1
  75. package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
  76. package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
  77. package/lib/module/modules/next/bluetooth/runtime.js +8 -1
  78. package/lib/module/modules/next/bluetooth/runtime.js.map +1 -1
  79. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +3 -0
  81. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
  83. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +4 -0
  85. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
  89. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -1
  91. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +4 -3
  93. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts +42 -0
  95. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts.map +1 -0
  96. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts +30 -0
  97. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts.map +1 -0
  98. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +5 -0
  99. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts +9 -0
  101. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts +1 -1
  103. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  106. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +11 -0
  108. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/modules/bt-management/types/device-waveform.d.ts +15 -0
  110. package/lib/typescript/commonjs/src/modules/bt-management/types/device-waveform.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/src/modules/bt-management/utils/i-16-from-hex.d.ts +1 -1
  112. package/lib/typescript/commonjs/src/modules/bt-management/utils/i-16-from-hex.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts +3 -1
  115. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +6 -1
  117. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
  119. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts +4 -1
  121. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +14 -1
  123. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  124. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  125. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +3 -0
  126. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  127. package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
  128. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  129. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +4 -0
  130. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  131. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
  132. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  133. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
  134. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  135. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -1
  136. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  137. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +4 -3
  138. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
  139. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts +42 -0
  140. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.d.ts.map +1 -0
  141. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts +30 -0
  142. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recorder.d.ts.map +1 -0
  143. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +5 -0
  144. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -1
  145. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts +9 -0
  146. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.waveform.d.ts.map +1 -0
  147. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts +1 -1
  148. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
  149. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -1
  150. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  151. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  152. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +11 -0
  153. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  154. package/lib/typescript/module/src/modules/bt-management/types/device-waveform.d.ts +15 -0
  155. package/lib/typescript/module/src/modules/bt-management/types/device-waveform.d.ts.map +1 -0
  156. package/lib/typescript/module/src/modules/bt-management/utils/i-16-from-hex.d.ts +1 -1
  157. package/lib/typescript/module/src/modules/bt-management/utils/i-16-from-hex.d.ts.map +1 -1
  158. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
  159. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts +3 -1
  160. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  161. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +6 -1
  162. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  163. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
  164. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  165. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts +4 -1
  166. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
  167. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +14 -1
  168. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  169. package/package.json +1 -1
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LiveEcgChunks = void 0;
7
+ var _next = require("@ovok/core/next");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _lepuWaveform = require("./lepu.waveform.js");
10
+ /** How long a live chunk grows before it is handed over. */
11
+ const CHUNK_SECONDS = 300;
12
+ const MS_PER_SECOND = 1_000;
13
+ const COVERAGE_DECIMALS = 2;
14
+
15
+ /** A stretch of a recording sent live, before the device's own file supersedes it. */
16
+
17
+ /** Collects one recording's live samples and hands them over in chunks of five minutes or less. */
18
+ class LiveEcgChunks {
19
+ counts = [];
20
+ index = 0;
21
+ constructor(waveform, onChunk) {
22
+ this.waveform = waveform;
23
+ this.onChunk = onChunk;
24
+ }
25
+
26
+ /** Adds the samples an answer at `at` carried, `recordedSeconds` into the recording. */
27
+ append = (samples, at, recordedSeconds) => {
28
+ this.recordingKey ??= recordingKeyOf(new Date(at.getTime() - recordedSeconds * MS_PER_SECOND));
29
+ this.startedAt ??= new Date(at.getTime() - this.secondsOf(samples.length) * MS_PER_SECOND);
30
+ this.counts.push(...samples);
31
+ this.lastAt = at;
32
+ if (this.secondsOf(this.counts.length) >= CHUNK_SECONDS) {
33
+ this.flush();
34
+ }
35
+ };
36
+
37
+ /** Hands over what has been collected; the recording may continue into a further chunk. */
38
+ flush = () => {
39
+ if (this.counts.length === 0 || !this.startedAt || !this.lastAt || !this.recordingKey) {
40
+ return;
41
+ }
42
+ this.onChunk({
43
+ measurementTypeKey: _next.MeasurementTypeKey.ecg,
44
+ caseType: _caseType.CaseType.RESULT,
45
+ diagramPoints: this.counts.map(count => (0, _lepuWaveform.millivoltsOf)(count, this.waveform)),
46
+ duration: this.secondsOf(this.counts.length),
47
+ recordedAt: this.startedAt,
48
+ recordingId: `${this.recordingKey}-live-${this.index}`,
49
+ live: true,
50
+ coverage: this.coverage()
51
+ });
52
+ this.index += 1;
53
+ this.counts = [];
54
+ this.startedAt = undefined;
55
+ };
56
+
57
+ /** Hands over the rest and forgets the recording, so the next one starts its own chunks. */
58
+ endRecording = () => {
59
+ this.flush();
60
+ this.recordingKey = undefined;
61
+ this.index = 0;
62
+ };
63
+ secondsOf = samples => samples / this.waveform.sampleRateHz;
64
+ coverage = () => {
65
+ const spanSeconds = ((this.lastAt?.getTime() ?? 0) - (this.startedAt?.getTime() ?? 0)) / MS_PER_SECOND;
66
+ const expected = Math.max(this.counts.length, spanSeconds * this.waveform.sampleRateHz);
67
+ return Number((this.counts.length / expected).toFixed(COVERAGE_DECIMALS));
68
+ };
69
+ }
70
+ exports.LiveEcgChunks = LiveEcgChunks;
71
+ const pad = value => String(value).padStart(2, "0");
72
+
73
+ /** The name the device gives the recording's file: `R` and its local start, to the second. */
74
+ const recordingKeyOf = start => `R${start.getFullYear()}${pad(start.getMonth() + 1)}${pad(start.getDate())}` + `${pad(start.getHours())}${pad(start.getMinutes())}${pad(start.getSeconds())}`;
75
+ //# sourceMappingURL=lepu.live-ecg-chunks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_next","require","_caseType","_lepuWaveform","CHUNK_SECONDS","MS_PER_SECOND","COVERAGE_DECIMALS","LiveEcgChunks","counts","index","constructor","waveform","onChunk","append","samples","at","recordedSeconds","recordingKey","recordingKeyOf","Date","getTime","startedAt","secondsOf","length","push","lastAt","flush","measurementTypeKey","MeasurementTypeKey","ecg","caseType","CaseType","RESULT","diagramPoints","map","count","millivoltsOf","duration","recordedAt","recordingId","live","coverage","undefined","endRecording","sampleRateHz","spanSeconds","expected","Math","max","Number","toFixed","exports","pad","value","String","padStart","start","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.live-ecg-chunks.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LepuRecorder = void 0;
7
+ var _lepuLiveEcgChunks = require("./lepu.live-ecg-chunks.js");
8
+ var _lepuRecordingWatch = require("./lepu.recording-watch.js");
9
+ var _lepuWaveform = require("./lepu.waveform.js");
10
+ /**
11
+ * Follows a recorder's open recording through its poll answers: reports its state, feeds the live
12
+ * trace while it records, and hands its samples over in chunks.
13
+ */
14
+ class LepuRecorder {
15
+ constructor(status, callbacks) {
16
+ this.status = status;
17
+ this.callbacks = callbacks;
18
+ this.watch = new _lepuRecordingWatch.LepuRecordingWatch(status, callbacks.onRecordingChanged);
19
+ this.chunks = status.waveform ? new _lepuLiveEcgChunks.LiveEcgChunks(status.waveform, callbacks.onChunk) : undefined;
20
+ }
21
+
22
+ /** Reads one poll answer; true when it is the first in the saved state, so the files are read. */
23
+ observe = pollAnswer => {
24
+ const saved = this.watch.observe(pollAnswer);
25
+ if (this.watch.isRecording()) {
26
+ this.record(pollAnswer);
27
+ } else if (this.watch.isOpen()) {
28
+ this.chunks?.flush();
29
+ } else {
30
+ this.chunks?.endRecording();
31
+ }
32
+ return saved;
33
+ };
34
+ isOpen = () => this.watch.isOpen();
35
+
36
+ /** Hands over what is collected, for a connection that is ending. */
37
+ flush = () => this.chunks?.flush();
38
+ record = pollAnswer => {
39
+ if (!this.status.waveform) {
40
+ return;
41
+ }
42
+ const samples = (0, _lepuWaveform.waveformSamples)(pollAnswer, this.status.waveform);
43
+ const at = new Date();
44
+ if (samples.length === 0) {
45
+ return;
46
+ }
47
+ this.callbacks.onSamples(samples, at);
48
+ this.chunks?.append(samples, at, this.watch.recordedSeconds());
49
+ };
50
+ }
51
+ exports.LepuRecorder = LepuRecorder;
52
+ //# sourceMappingURL=lepu.recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_lepuLiveEcgChunks","require","_lepuRecordingWatch","_lepuWaveform","LepuRecorder","constructor","status","callbacks","watch","LepuRecordingWatch","onRecordingChanged","chunks","waveform","LiveEcgChunks","onChunk","undefined","observe","pollAnswer","saved","isRecording","record","isOpen","flush","endRecording","samples","waveformSamples","at","Date","length","onSamples","append","recordedSeconds","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.recorder.ts"],"mappings":";;;;;;AAGA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAcA;AACA;AACA;AACA;AACA,MAAMG,YAAY,CAAC;EAIVC,WAAWA,CACCC,MAAuB,EACvBC,SAAgC,EACjD;IAAA,KAFiBD,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,SAAgC,GAAhCA,SAAgC;IAEjD,IAAI,CAACC,KAAK,GAAG,IAAIC,sCAAkB,CAACH,MAAM,EAAEC,SAAS,CAACG,kBAAkB,CAAC;IACzE,IAAI,CAACC,MAAM,GAAGL,MAAM,CAACM,QAAQ,GAAG,IAAIC,gCAAa,CAACP,MAAM,CAACM,QAAQ,EAAEL,SAAS,CAACO,OAAO,CAAC,GAAGC,SAAS;EACnG;;EAEA;EACOC,OAAO,GAAIC,UAA6B,IAAc;IAC3D,MAAMC,KAAK,GAAG,IAAI,CAACV,KAAK,CAACQ,OAAO,CAACC,UAAU,CAAC;IAE5C,IAAI,IAAI,CAACT,KAAK,CAACW,WAAW,CAAC,CAAC,EAAE;MAC5B,IAAI,CAACC,MAAM,CAACH,UAAU,CAAC;IACzB,CAAC,MAAM,IAAI,IAAI,CAACT,KAAK,CAACa,MAAM,CAAC,CAAC,EAAE;MAC9B,IAAI,CAACV,MAAM,EAAEW,KAAK,CAAC,CAAC;IACtB,CAAC,MAAM;MACL,IAAI,CAACX,MAAM,EAAEY,YAAY,CAAC,CAAC;IAC7B;IAEA,OAAOL,KAAK;EACd,CAAC;EAEMG,MAAM,GAAGA,CAAA,KAAe,IAAI,CAACb,KAAK,CAACa,MAAM,CAAC,CAAC;;EAElD;EACOC,KAAK,GAAGA,CAAA,KAAY,IAAI,CAACX,MAAM,EAAEW,KAAK,CAAC,CAAC;EAEvCF,MAAM,GAAIH,UAA6B,IAAW;IACxD,IAAI,CAAC,IAAI,CAACX,MAAM,CAACM,QAAQ,EAAE;MACzB;IACF;IAEA,MAAMY,OAAO,GAAG,IAAAC,6BAAe,EAACR,UAAU,EAAE,IAAI,CAACX,MAAM,CAACM,QAAQ,CAAC;IACjE,MAAMc,EAAE,GAAG,IAAIC,IAAI,CAAC,CAAC;IAErB,IAAIH,OAAO,CAACI,MAAM,KAAK,CAAC,EAAE;MACxB;IACF;IAEA,IAAI,CAACrB,SAAS,CAACsB,SAAS,CAACL,OAAO,EAAEE,EAAE,CAAC;IACrC,IAAI,CAACf,MAAM,EAAEmB,MAAM,CAACN,OAAO,EAAEE,EAAE,EAAE,IAAI,CAAClB,KAAK,CAACuB,eAAe,CAAC,CAAC,CAAC;EAChE,CAAC;AACH;AAACC,OAAA,CAAA5B,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -10,6 +10,7 @@ const LOW_NIBBLE = 0x0f;
10
10
  const CLOSED = "closed";
11
11
  /** Follows a recorder's open recording through its poll answers. */
12
12
  class LepuRecordingWatch {
13
+ seconds = 0;
13
14
  constructor(status, onRecordingChanged) {
14
15
  this.status = status;
15
16
  this.onRecordingChanged = onRecordingChanged;
@@ -19,26 +20,27 @@ class LepuRecordingWatch {
19
20
  observe = pollAnswer => {
20
21
  const previous = this.state;
21
22
  this.state = (0, _hexToByte.hexToByte)(pollAnswer[this.status.byteIndex] ?? "00") & LOW_NIBBLE;
23
+ this.seconds = (0, _le32FromHex.le32FromHex)(pollAnswer, this.status.secondsByteIndex);
22
24
  this.leadOffSince = this.isLeadOff() ? this.leadOffSince ?? new Date() : undefined;
23
- this.report(this.recordingIn(pollAnswer));
25
+ this.report(this.recordingIn());
24
26
  return this.state === this.status.savedState && previous !== this.status.savedState;
25
27
  };
26
28
 
27
29
  /** Whether a recording is open, so that stopping it means something. */
28
- isOpen = () => this.state === this.status.recordingState || this.isLeadOff();
29
- recordingIn = pollAnswer => {
30
- if (!this.isOpen()) {
31
- return undefined;
32
- }
33
- const seconds = (0, _le32FromHex.le32FromHex)(pollAnswer, this.status.secondsByteIndex);
34
- return {
35
- seconds,
36
- ...(this.leadOffSince ? {
37
- leadOffSince: this.leadOffSince
38
- } : {}),
39
- storesOnStop: seconds >= this.status.minimumStoredSeconds
40
- };
41
- };
30
+ isOpen = () => this.isRecording() || this.isLeadOff();
31
+
32
+ /** Whether the electrodes have contact and samples are being recorded. */
33
+ isRecording = () => this.state === this.status.recordingState;
34
+
35
+ /** Seconds recorded, as of the last answer. */
36
+ recordedSeconds = () => this.seconds;
37
+ recordingIn = () => this.isOpen() ? {
38
+ seconds: this.seconds,
39
+ ...(this.leadOffSince ? {
40
+ leadOffSince: this.leadOffSince
41
+ } : {}),
42
+ storesOnStop: this.seconds >= this.status.minimumStoredSeconds
43
+ } : undefined;
42
44
  isLeadOff = () => this.state === this.status.leadOffState;
43
45
 
44
46
  /** Reports a change in what the app would act on, not every tick of the seconds. */
@@ -1 +1 @@
1
- {"version":3,"names":["_hexToByte","require","_le32FromHex","LOW_NIBBLE","CLOSED","LepuRecordingWatch","constructor","status","onRecordingChanged","observe","pollAnswer","previous","state","hexToByte","byteIndex","leadOffSince","isLeadOff","Date","undefined","report","recordingIn","savedState","isOpen","recordingState","seconds","le32FromHex","secondsByteIndex","storesOnStop","minimumStoredSeconds","leadOffState","recording","key","changed","reported","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.recording-watch.ts"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG,IAAI;AACvB,MAAMC,MAAM,GAAG,QAAQ;AAMvB;AACA,MAAMC,kBAAkB,CAAC;EAKhBC,WAAWA,CACCC,MAAuB,EACvBC,kBAA8D,EAC/E;IAAA,KAFiBD,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,kBAA8D,GAA9DA,kBAA8D;EAC9E;;EAEH;EACOC,OAAO,GAAIC,UAA6B,IAAc;IAC3D,MAAMC,QAAQ,GAAG,IAAI,CAACC,KAAK;IAE3B,IAAI,CAACA,KAAK,GAAG,IAAAC,oBAAS,EAACH,UAAU,CAAC,IAAI,CAACH,MAAM,CAACO,SAAS,CAAC,IAAI,IAAI,CAAC,GAAGX,UAAU;IAC9E,IAAI,CAACY,YAAY,GAAG,IAAI,CAACC,SAAS,CAAC,CAAC,GAAI,IAAI,CAACD,YAAY,IAAI,IAAIE,IAAI,CAAC,CAAC,GAAIC,SAAS;IACpF,IAAI,CAACC,MAAM,CAAC,IAAI,CAACC,WAAW,CAACV,UAAU,CAAC,CAAC;IAEzC,OAAO,IAAI,CAACE,KAAK,KAAK,IAAI,CAACL,MAAM,CAACc,UAAU,IAAIV,QAAQ,KAAK,IAAI,CAACJ,MAAM,CAACc,UAAU;EACrF,CAAC;;EAED;EACOC,MAAM,GAAGA,CAAA,KACd,IAAI,CAACV,KAAK,KAAK,IAAI,CAACL,MAAM,CAACgB,cAAc,IAAI,IAAI,CAACP,SAAS,CAAC,CAAC;EAEvDI,WAAW,GAAIV,UAA6B,IAA4B;IAC9E,IAAI,CAAC,IAAI,CAACY,MAAM,CAAC,CAAC,EAAE;MAClB,OAAOJ,SAAS;IAClB;IAEA,MAAMM,OAAO,GAAG,IAAAC,wBAAW,EAACf,UAAU,EAAE,IAAI,CAACH,MAAM,CAACmB,gBAAgB,CAAC;IAErE,OAAO;MACLF,OAAO;MACP,IAAI,IAAI,CAACT,YAAY,GAAG;QAAEA,YAAY,EAAE,IAAI,CAACA;MAAa,CAAC,GAAG,CAAC,CAAC,CAAC;MACjEY,YAAY,EAAEH,OAAO,IAAI,IAAI,CAACjB,MAAM,CAACqB;IACvC,CAAC;EACH,CAAC;EAEOZ,SAAS,GAAGA,CAAA,KAAe,IAAI,CAACJ,KAAK,KAAK,IAAI,CAACL,MAAM,CAACsB,YAAY;;EAE1E;EACQV,MAAM,GAAIW,SAAgC,IAAW;IAC3D,MAAMC,GAAG,GAAGD,SAAS,GACjB,GAAGA,SAAS,CAACf,YAAY,KAAKG,SAAS,IAAIY,SAAS,CAACH,YAAY,EAAE,GACnEvB,MAAM;IAEV,MAAM4B,OAAO,GAAGD,GAAG,MAAM,IAAI,CAACE,QAAQ,IAAI7B,MAAM,CAAC;IAEjD,IAAI,CAAC6B,QAAQ,GAAGF,GAAG;IAEnB,IAAIC,OAAO,EAAE;MACX,IAAI,CAACxB,kBAAkB,CAACsB,SAAS,CAAC;IACpC;EACF,CAAC;AACH;AAACI,OAAA,CAAA7B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_hexToByte","require","_le32FromHex","LOW_NIBBLE","CLOSED","LepuRecordingWatch","seconds","constructor","status","onRecordingChanged","observe","pollAnswer","previous","state","hexToByte","byteIndex","le32FromHex","secondsByteIndex","leadOffSince","isLeadOff","Date","undefined","report","recordingIn","savedState","isOpen","isRecording","recordingState","recordedSeconds","storesOnStop","minimumStoredSeconds","leadOffState","recording","key","changed","reported","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.recording-watch.ts"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG,IAAI;AACvB,MAAMC,MAAM,GAAG,QAAQ;AAMvB;AACA,MAAMC,kBAAkB,CAAC;EAEfC,OAAO,GAAG,CAAC;EAIZC,WAAWA,CACCC,MAAuB,EACvBC,kBAA8D,EAC/E;IAAA,KAFiBD,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,kBAA8D,GAA9DA,kBAA8D;EAC9E;;EAEH;EACOC,OAAO,GAAIC,UAA6B,IAAc;IAC3D,MAAMC,QAAQ,GAAG,IAAI,CAACC,KAAK;IAE3B,IAAI,CAACA,KAAK,GAAG,IAAAC,oBAAS,EAACH,UAAU,CAAC,IAAI,CAACH,MAAM,CAACO,SAAS,CAAC,IAAI,IAAI,CAAC,GAAGZ,UAAU;IAC9E,IAAI,CAACG,OAAO,GAAG,IAAAU,wBAAW,EAACL,UAAU,EAAE,IAAI,CAACH,MAAM,CAACS,gBAAgB,CAAC;IACpE,IAAI,CAACC,YAAY,GAAG,IAAI,CAACC,SAAS,CAAC,CAAC,GAAI,IAAI,CAACD,YAAY,IAAI,IAAIE,IAAI,CAAC,CAAC,GAAIC,SAAS;IACpF,IAAI,CAACC,MAAM,CAAC,IAAI,CAACC,WAAW,CAAC,CAAC,CAAC;IAE/B,OAAO,IAAI,CAACV,KAAK,KAAK,IAAI,CAACL,MAAM,CAACgB,UAAU,IAAIZ,QAAQ,KAAK,IAAI,CAACJ,MAAM,CAACgB,UAAU;EACrF,CAAC;;EAED;EACOC,MAAM,GAAGA,CAAA,KAAe,IAAI,CAACC,WAAW,CAAC,CAAC,IAAI,IAAI,CAACP,SAAS,CAAC,CAAC;;EAErE;EACOO,WAAW,GAAGA,CAAA,KAAe,IAAI,CAACb,KAAK,KAAK,IAAI,CAACL,MAAM,CAACmB,cAAc;;EAE7E;EACOC,eAAe,GAAGA,CAAA,KAAc,IAAI,CAACtB,OAAO;EAE3CiB,WAAW,GAAGA,CAAA,KACpB,IAAI,CAACE,MAAM,CAAC,CAAC,GACT;IACEnB,OAAO,EAAE,IAAI,CAACA,OAAO;IACrB,IAAI,IAAI,CAACY,YAAY,GAAG;MAAEA,YAAY,EAAE,IAAI,CAACA;IAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACjEW,YAAY,EAAE,IAAI,CAACvB,OAAO,IAAI,IAAI,CAACE,MAAM,CAACsB;EAC5C,CAAC,GACDT,SAAS;EAEPF,SAAS,GAAGA,CAAA,KAAe,IAAI,CAACN,KAAK,KAAK,IAAI,CAACL,MAAM,CAACuB,YAAY;;EAE1E;EACQT,MAAM,GAAIU,SAAgC,IAAW;IAC3D,MAAMC,GAAG,GAAGD,SAAS,GACjB,GAAGA,SAAS,CAACd,YAAY,KAAKG,SAAS,IAAIW,SAAS,CAACH,YAAY,EAAE,GACnEzB,MAAM;IAEV,MAAM8B,OAAO,GAAGD,GAAG,MAAM,IAAI,CAACE,QAAQ,IAAI/B,MAAM,CAAC;IAEjD,IAAI,CAAC+B,QAAQ,GAAGF,GAAG;IAEnB,IAAIC,OAAO,EAAE;MACX,IAAI,CAACzB,kBAAkB,CAACuB,SAAS,CAAC;IACpC;EACF,CAAC;AACH;AAACI,OAAA,CAAA/B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.waveformSamples = exports.millivoltsOf = void 0;
7
+ var _i16FromHex = require("../../../utils/i-16-from-hex.js");
8
+ var _le16FromHex = require("../../../utils/le-16-from-hex.js");
9
+ const SAMPLE_BYTES = 2;
10
+ const COUNT_BYTES = 2;
11
+ const CHECKSUM_BYTES = 1;
12
+
13
+ /** The raw sample counts a poll answer carries, never more than the frame holds. */
14
+ const waveformSamples = (pollAnswer, waveform) => {
15
+ const first = waveform.countByteIndex + COUNT_BYTES;
16
+ const declared = (0, _le16FromHex.le16FromHex)(pollAnswer, waveform.countByteIndex);
17
+ const available = Math.floor((pollAnswer.length - CHECKSUM_BYTES - first) / SAMPLE_BYTES);
18
+ return Array.from({
19
+ length: Math.max(0, Math.min(declared, available))
20
+ }, (_, index) => (0, _i16FromHex.i16FromHex)(pollAnswer, first + index * SAMPLE_BYTES));
21
+ };
22
+
23
+ /** One count in millivolts; the no-signal marker reads as 0. */
24
+ exports.waveformSamples = waveformSamples;
25
+ const millivoltsOf = (count, waveform) => count === waveform.noSignalCount ? 0 : count * waveform.millivoltsPerCount;
26
+ exports.millivoltsOf = millivoltsOf;
27
+ //# sourceMappingURL=lepu.waveform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_i16FromHex","require","_le16FromHex","SAMPLE_BYTES","COUNT_BYTES","CHECKSUM_BYTES","waveformSamples","pollAnswer","waveform","first","countByteIndex","declared","le16FromHex","available","Math","floor","length","Array","from","max","min","_","index","i16FromHex","exports","millivoltsOf","count","noSignalCount","millivoltsPerCount"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.waveform.ts"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAIA,MAAME,YAAY,GAAG,CAAC;AACtB,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,cAAc,GAAG,CAAC;;AAExB;AACA,MAAMC,eAAe,GAAGA,CAACC,UAA6B,EAAEC,QAAkB,KAAe;EACvF,MAAMC,KAAK,GAAGD,QAAQ,CAACE,cAAc,GAAGN,WAAW;EACnD,MAAMO,QAAQ,GAAG,IAAAC,wBAAW,EAACL,UAAU,EAAEC,QAAQ,CAACE,cAAc,CAAC;EACjE,MAAMG,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACR,UAAU,CAACS,MAAM,GAAGX,cAAc,GAAGI,KAAK,IAAIN,YAAY,CAAC;EAEzF,OAAOc,KAAK,CAACC,IAAI,CAAC;IAAEF,MAAM,EAAEF,IAAI,CAACK,GAAG,CAAC,CAAC,EAAEL,IAAI,CAACM,GAAG,CAACT,QAAQ,EAAEE,SAAS,CAAC;EAAE,CAAC,EAAE,CAACQ,CAAC,EAAEC,KAAK,KACjF,IAAAC,sBAAU,EAAChB,UAAU,EAAEE,KAAK,GAAGa,KAAK,GAAGnB,YAAY,CAAC,CAAC;AACzD,CAAC;;AAED;AAAAqB,OAAA,CAAAlB,eAAA,GAAAA,eAAA;AACA,MAAMmB,YAAY,GAAGA,CAACC,KAAa,EAAElB,QAAkB,KACrDkB,KAAK,KAAKlB,QAAQ,CAACmB,aAAa,GAAG,CAAC,GAAGD,KAAK,GAAGlB,QAAQ,CAACoB,kBAAkB;AAACJ,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.recordedAtFromViatomFileName = exports.decodeViatomEcgRecording = exports.VIATOM_ECG_SAMPLE_RATE_HZ = exports.VIATOM_ECG_MILLIVOLTS_PER_COUNT = void 0;
7
- var _hexToByte = require("../../../utils/hex-to-byte.js");
8
7
  /** ECG sample rate in hertz. */
9
8
  const VIATOM_ECG_SAMPLE_RATE_HZ = exports.VIATOM_ECG_SAMPLE_RATE_HZ = 125;
10
9
 
@@ -92,14 +91,13 @@ const toMillivolts = count => count === NO_SIGNAL_COUNT ? 0 : count * VIATOM_ECG
92
91
  * Decodes an ER1/ER2 recording. A file whose waveform does not last as long as its tail
93
92
  * records is returned empty, because that file is in a format this decoder does not read.
94
93
  */
95
- const decodeViatomEcgRecording = content => {
96
- if (content.length <= FILE_HEAD_BYTES + FILE_TAIL_BYTES) {
94
+ const decodeViatomEcgRecording = bytes => {
95
+ if (bytes.length <= FILE_HEAD_BYTES + FILE_TAIL_BYTES) {
97
96
  return emptyRecording();
98
97
  }
99
- const bytes = content.map(_hexToByte.hexToByte);
100
98
  const tailStart = bytes.length - FILE_TAIL_BYTES;
101
99
  const duration = readUInt32LittleEndian(bytes, tailStart);
102
- const counts = decompressWaveform(bytes.slice(FILE_HEAD_BYTES, tailStart));
100
+ const counts = decompressWaveform(bytes.subarray(FILE_HEAD_BYTES, tailStart));
103
101
  if (!matchesRecordedTime(counts.length, duration)) {
104
102
  return emptyRecording();
105
103
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_hexToByte","require","VIATOM_ECG_SAMPLE_RATE_HZ","exports","VIATOM_ECG_MILLIVOLTS_PER_COUNT","validDate","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","undefined","recordedAtFromViatomFileName","name","digits","match","length","Number","slice","FILE_HEAD_BYTES","FILE_TAIL_BYTES","NO_SIGNAL_COUNT","LARGE_STEP_BASE","RECORDED_TIME_TOLERANCE_SECONDS","emptyRecording","samples","duration","toInt8","byte","toInt16","value","ONE_BYTE_STEP","width","next","current","bytes","at","ESCAPED_STEPS","Map","_current","decompressWaveform","counts","step","get","push","readUInt32LittleEndian","from","matchesRecordedTime","sampleCount","seconds","Math","abs","toMillivolts","count","decodeViatomEcgRecording","content","map","hexToByte","tailStart"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["VIATOM_ECG_SAMPLE_RATE_HZ","exports","VIATOM_ECG_MILLIVOLTS_PER_COUNT","validDate","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","undefined","recordedAtFromViatomFileName","name","digits","match","length","Number","slice","FILE_HEAD_BYTES","FILE_TAIL_BYTES","NO_SIGNAL_COUNT","LARGE_STEP_BASE","RECORDED_TIME_TOLERANCE_SECONDS","emptyRecording","samples","duration","toInt8","byte","toInt16","value","ONE_BYTE_STEP","width","next","current","bytes","at","ESCAPED_STEPS","Map","_current","decompressWaveform","counts","step","get","push","readUInt32LittleEndian","from","matchesRecordedTime","sampleCount","seconds","Math","abs","toMillivolts","count","decodeViatomEcgRecording","tailStart","subarray","map"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,GAAG;;AAErC;AACA,MAAME,+BAA+B,GAAAD,OAAA,CAAAC,+BAAA,GAAG,QAAQ;AAEhD,MAAMC,SAAS,GAAGA,CAChBC,IAAY,EACZC,KAAa,EACbC,GAAW,EACXC,IAAY,EACZC,MAAc,EACdC,MAAc,KACO;EACrB,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACP,IAAI,EAAEC,KAAK,GAAG,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAE,CAAC,CAAC;EAEpE,OAAOC,IAAI,CAACE,WAAW,CAAC,CAAC,KAAKR,IAAI,IAChCM,IAAI,CAACG,QAAQ,CAAC,CAAC,KAAKR,KAAK,GAAG,CAAC,IAC7BK,IAAI,CAACI,OAAO,CAAC,CAAC,KAAKR,GAAG,IACtBI,IAAI,CAACK,QAAQ,CAAC,CAAC,KAAKR,IAAI,IACxBG,IAAI,CAACM,UAAU,CAAC,CAAC,KAAKR,MAAM,IAC5BE,IAAI,CAACO,UAAU,CAAC,CAAC,KAAKR,MAAM,GAC1BC,IAAI,GACJQ,SAAS;AACf,CAAC;;AAED;AACA,MAAMC,4BAA4B,GAAIC,IAAY,IAAuB;EACvE,MAAMC,MAAM,GAAGD,IAAI,CAACE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EAE/C,IAAI,CAACD,MAAM,EAAE;IACX,OAAOH,SAAS;EAClB;EAEA,IAAIG,MAAM,CAACE,MAAM,KAAK,EAAE,EAAE;IACxB,OAAOpB,SAAS,CACdqB,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC3BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAC5BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAC7B,CAAC;EACH;EAEA,OAAOtB,SAAS,CACd,IAAI,GAAGqB,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjCD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC3BD,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAC7B,CAAC;AACH,CAAC;;AAED;AAAAxB,OAAA,CAAAkB,4BAAA,GAAAA,4BAAA;AACA,MAAMO,eAAe,GAAG,EAAE;;AAE1B;AACA,MAAMC,eAAe,GAAG,EAAE;;AAE1B;AACA,MAAMC,eAAe,GAAG,MAAM;;AAE9B;AACA,MAAMC,eAAe,GAAG,GAAG;;AAE3B;AACA,MAAMC,+BAA+B,GAAG,CAAC;;AAEzC;;AAUA,MAAMC,cAAc,GAAGA,CAAA,MAA2B;EAAEC,OAAO,EAAE,EAAE;EAAEC,QAAQ,EAAE;AAAE,CAAC,CAAC;AAW/E,MAAMC,MAAM,GAAIC,IAAY,IAAcA,IAAI,IAAI,EAAE,IAAK,EAAE;AAE3D,MAAMC,OAAO,GAAIC,KAAa,IAAcA,KAAK,IAAI,EAAE,IAAK,EAAE;AAE9D,MAAMC,aAA2B,GAAG;EAClCC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAEA,CAACC,OAAO,EAAEC,KAAK,EAAEC,EAAE,KAAKF,OAAO,GAAGP,MAAM,CAACQ,KAAK,CAACC,EAAE,CAAC,IAAI,CAAC;AAC/D,CAAC;;AAED;AACA,MAAMC,aAAgD,GAAG,IAAIC,GAAG,CAAC,CAC/D,CACE,IAAI,EACJ;EACEN,KAAK,EAAE,CAAC;EACRC,IAAI,EAAEA,CAACM,QAAQ,EAAEJ,KAAK,EAAEC,EAAE,KACxB,CAACD,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAK,CAACD,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;AACpD,CAAC,CACF,EACD,CACE,IAAI,EACJ;EACEJ,KAAK,EAAE,CAAC;EACRC,IAAI,EAAEA,CAACC,OAAO,EAAEC,KAAK,EAAEC,EAAE,KACvBF,OAAO,IAAIC,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGd;AACrC,CAAC,CACF,EACD,CACE,IAAI,EACJ;EACEU,KAAK,EAAE,CAAC;EACRC,IAAI,EAAEA,CAACC,OAAO,EAAEC,KAAK,EAAEC,EAAE,KACvBF,OAAO,IAAIC,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGd;AACrC,CAAC,CACF,CACF,CAAC;;AAEF;AACA,MAAMkB,kBAAkB,GAAIL,KAAwB,IAAe;EACjE,MAAMM,MAAgB,GAAG,EAAE;EAC3B,IAAIP,OAAO,GAAG,CAAC;EACf,IAAIE,EAAE,GAAG,CAAC;EAEV,OAAOA,EAAE,GAAGD,KAAK,CAACnB,MAAM,EAAE;IACxB,MAAM0B,IAAI,GAAGL,aAAa,CAACM,GAAG,CAACR,KAAK,CAACC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAIL,aAAa;IAE/D,IAAIK,EAAE,GAAGM,IAAI,CAACV,KAAK,GAAGG,KAAK,CAACnB,MAAM,EAAE;MAClC;IACF;IAEAkB,OAAO,GAAGL,OAAO,CAACa,IAAI,CAACT,IAAI,CAACC,OAAO,EAAEC,KAAK,EAAEC,EAAE,CAAC,CAAC;IAChDK,MAAM,CAACG,IAAI,CAACV,OAAO,CAAC;IACpBE,EAAE,IAAIM,IAAI,CAACV,KAAK;EAClB;EAEA,OAAOS,MAAM;AACf,CAAC;AAED,MAAMI,sBAAsB,GAAGA,CAACV,KAAwB,EAAEW,IAAY,KACpE,CAAC,CAACX,KAAK,CAACW,IAAI,CAAC,IAAI,CAAC,IACf,CAACX,KAAK,CAACW,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,GAC5B,CAACX,KAAK,CAACW,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAG,GAC7B,CAACX,KAAK,CAACW,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAG,MAChC,CAAC;AAEH,MAAMC,mBAAmB,GAAGA,CAACC,WAAmB,EAAEC,OAAe,KAC/DA,OAAO,GAAG,CAAC,IACXC,IAAI,CAACC,GAAG,CAACH,WAAW,GAAGC,OAAO,GAAGxD,yBAAyB,CAAC,IACzD8B,+BAA+B,GAAG9B,yBAAyB;AAE/D,MAAM2D,YAAY,GAAIC,KAAa,IACjCA,KAAK,KAAKhC,eAAe,GAAG,CAAC,GAAGgC,KAAK,GAAG1D,+BAA+B;;AAEzE;AACA;AACA;AACA;AACA,MAAM2D,wBAAwB,GAAInB,KAAiB,IAAyB;EAC1E,IAAIA,KAAK,CAACnB,MAAM,IAAIG,eAAe,GAAGC,eAAe,EAAE;IACrD,OAAOI,cAAc,CAAC,CAAC;EACzB;EAEA,MAAM+B,SAAS,GAAGpB,KAAK,CAACnB,MAAM,GAAGI,eAAe;EAChD,MAAMM,QAAQ,GAAGmB,sBAAsB,CAACV,KAAK,EAAEoB,SAAS,CAAC;EACzD,MAAMd,MAAM,GAAGD,kBAAkB,CAACL,KAAK,CAACqB,QAAQ,CAACrC,eAAe,EAAEoC,SAAS,CAAC,CAAC;EAE7E,IAAI,CAACR,mBAAmB,CAACN,MAAM,CAACzB,MAAM,EAAEU,QAAQ,CAAC,EAAE;IACjD,OAAOF,cAAc,CAAC,CAAC;EACzB;EAEA,OAAO;IAAEC,OAAO,EAAEgB,MAAM,CAACgB,GAAG,CAACL,YAAY,CAAC;IAAE1B;EAAS,CAAC;AACxD,CAAC;AAAChC,OAAA,CAAA4D,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.viatomRecordingStatus = exports.RUN_STATUS_BYTE = exports.RECORDING_STATE = void 0;
7
+ var _viatomEcgFiles = require("./viatom.ecg-files.js");
7
8
  /** The run status, with the current state in its low nibble. */
8
9
  const RUN_STATUS_BYTE = exports.RUN_STATUS_BYTE = 15;
9
10
  const RECORDING_STATE = exports.RECORDING_STATE = 2;
@@ -13,6 +14,11 @@ const SAVED_STATE = 4;
13
14
  /** The seconds recorded so far, u32 little-endian, right before the run status. */
14
15
  const RECORD_SECONDS_BYTE = 11;
15
16
 
17
+ /** After the 18-byte parameter block: the sample count, then int16 samples. */
18
+ const WAVEFORM_COUNT_BYTE = 25;
19
+ const SAMPLES_PER_SECOND = 125;
20
+ const NO_SIGNAL_COUNT = 0x7fff;
21
+
16
22
  /** Ends a recording and stores it when it is long enough. */
17
23
  const STOP_MEASUREMENT = 0x05;
18
24
 
@@ -29,7 +35,13 @@ const viatomRecordingStatus = advertisedName => ({
29
35
  leadOffState: LEAD_OFF_STATE,
30
36
  savedState: SAVED_STATE,
31
37
  minimumStoredSeconds: HOLTER_MODEL_NAMES.has(advertisedName) ? HOLTER_MINIMUM_STORED_SECONDS : MINIMUM_STORED_SECONDS,
32
- stopCommand: STOP_MEASUREMENT
38
+ stopCommand: STOP_MEASUREMENT,
39
+ waveform: {
40
+ countByteIndex: WAVEFORM_COUNT_BYTE,
41
+ sampleRateHz: SAMPLES_PER_SECOND,
42
+ millivoltsPerCount: _viatomEcgFiles.VIATOM_ECG_MILLIVOLTS_PER_COUNT,
43
+ noSignalCount: NO_SIGNAL_COUNT
44
+ }
33
45
  });
34
46
  exports.viatomRecordingStatus = viatomRecordingStatus;
35
47
  //# sourceMappingURL=viatom.ecg-recording-status.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RUN_STATUS_BYTE","exports","RECORDING_STATE","LEAD_OFF_STATE","SAVED_STATE","RECORD_SECONDS_BYTE","STOP_MEASUREMENT","HOLTER_MODEL_NAMES","Set","HOLTER_MINIMUM_STORED_SECONDS","MINIMUM_STORED_SECONDS","viatomRecordingStatus","advertisedName","byteIndex","secondsByteIndex","recordingState","leadOffState","savedState","minimumStoredSeconds","has","stopCommand"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.ts"],"mappings":";;;;;;AAEA;AACA,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,EAAE;AAC1B,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,CAAC;AACzB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,WAAW,GAAG,CAAC;;AAErB;AACA,MAAMC,mBAAmB,GAAG,EAAE;;AAE9B;AACA,MAAMC,gBAAgB,GAAG,IAAI;;AAE7B;AACA,MAAMC,kBAAkB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACnE,MAAMC,6BAA6B,GAAG,GAAG;AACzC,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA,MAAMC,qBAAqB,GACzBC,cAAsB,KAC8B;EACpDC,SAAS,EAAEb,eAAe;EAC1Bc,gBAAgB,EAAET,mBAAmB;EACrCU,cAAc,EAAEb,eAAe;EAC/Bc,YAAY,EAAEb,cAAc;EAC5Bc,UAAU,EAAEb,WAAW;EACvBc,oBAAoB,EAAEX,kBAAkB,CAACY,GAAG,CAACP,cAAc,CAAC,GACxDH,6BAA6B,GAC7BC,sBAAsB;EAC1BU,WAAW,EAAEd;AACf,CAAC,CAAC;AAACL,OAAA,CAAAU,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_viatomEcgFiles","require","RUN_STATUS_BYTE","exports","RECORDING_STATE","LEAD_OFF_STATE","SAVED_STATE","RECORD_SECONDS_BYTE","WAVEFORM_COUNT_BYTE","SAMPLES_PER_SECOND","NO_SIGNAL_COUNT","STOP_MEASUREMENT","HOLTER_MODEL_NAMES","Set","HOLTER_MINIMUM_STORED_SECONDS","MINIMUM_STORED_SECONDS","viatomRecordingStatus","advertisedName","byteIndex","secondsByteIndex","recordingState","leadOffState","savedState","minimumStoredSeconds","has","stopCommand","waveform","countByteIndex","sampleRateHz","millivoltsPerCount","VIATOM_ECG_MILLIVOLTS_PER_COUNT","noSignalCount"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.ts"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAEA;AACA,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,EAAE;AAC1B,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,CAAC;AACzB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,WAAW,GAAG,CAAC;;AAErB;AACA,MAAMC,mBAAmB,GAAG,EAAE;;AAE9B;AACA,MAAMC,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,kBAAkB,GAAG,GAAG;AAC9B,MAAMC,eAAe,GAAG,MAAM;;AAE9B;AACA,MAAMC,gBAAgB,GAAG,IAAI;;AAE7B;AACA,MAAMC,kBAAkB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACnE,MAAMC,6BAA6B,GAAG,GAAG;AACzC,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA,MAAMC,qBAAqB,GACzBC,cAAsB,KAC8B;EACpDC,SAAS,EAAEhB,eAAe;EAC1BiB,gBAAgB,EAAEZ,mBAAmB;EACrCa,cAAc,EAAEhB,eAAe;EAC/BiB,YAAY,EAAEhB,cAAc;EAC5BiB,UAAU,EAAEhB,WAAW;EACvBiB,oBAAoB,EAAEX,kBAAkB,CAACY,GAAG,CAACP,cAAc,CAAC,GACxDH,6BAA6B,GAC7BC,sBAAsB;EAC1BU,WAAW,EAAEd,gBAAgB;EAC7Be,QAAQ,EAAE;IACRC,cAAc,EAAEnB,mBAAmB;IACnCoB,YAAY,EAAEnB,kBAAkB;IAChCoB,kBAAkB,EAAEC,+CAA+B;IACnDC,aAAa,EAAErB;EACjB;AACF,CAAC,CAAC;AAACP,OAAA,CAAAa,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=device-waveform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/device-waveform.ts"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_le16FromHex","require","i16FromHex","hex","i","v","le16FromHex","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/i-16-from-hex.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACO,MAAMC,UAAU,GAAGA,CAACC,GAAa,EAAEC,CAAS,KAAa;EAC9D,MAAMC,CAAC,GAAG,IAAAC,wBAAW,EAACH,GAAG,EAAEC,CAAC,CAAC;EAE7B,OAAOC,CAAC,GAAG,MAAM,GAAGA,CAAC,GAAG,OAAO,GAAGA,CAAC;AACrC,CAAC;AAACE,OAAA,CAAAL,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_le16FromHex","require","i16FromHex","hex","i","v","le16FromHex","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/i-16-from-hex.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACO,MAAMC,UAAU,GAAGA,CAACC,GAAsB,EAAEC,CAAS,KAAa;EACvE,MAAMC,CAAC,GAAG,IAAAC,wBAAW,EAACH,GAAG,EAAEC,CAAC,CAAC;EAE7B,OAAOC,CAAC,GAAG,MAAM,GAAGA,CAAC,GAAG,OAAO,GAAGA,CAAC;AACrC,CAAC;AAACE,OAAA,CAAAL,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -56,6 +56,20 @@ const legacyDriver = (creator, deviceName) => (peripheral, signal) => {
56
56
  kind: "error",
57
57
  error: (0, _bleErrors.fromBleError)(error)
58
58
  }),
59
+ onWaveform: ({
60
+ samples,
61
+ sampleRateHz,
62
+ millivoltsPerCount,
63
+ at
64
+ }) => events.push({
65
+ kind: "waveform",
66
+ waveform: {
67
+ samples,
68
+ sampleRateHz,
69
+ millivoltsPerCount,
70
+ at
71
+ }
72
+ }),
59
73
  onConnectionEvent: ({
60
74
  kind,
61
75
  recording
@@ -1 +1 @@
1
- {"version":3,"names":["_deviceStatus","require","_channel","_driver","_bleErrors","_blePeripheral","STATUSES","DeviceStatus","CONNECTED","MEASURING","DISCONNECTED","legacyDriver","creator","deviceName","peripheral","signal","stop","events","end","Channel","removeEventListener","managed","disconnect","createDevice","device","bleDeviceOf","onResult","id","data","reading","push","kind","isTimestamped","onDeviceStatusChanged","status","mapped","onError","error","fromBleError","onConnectionEvent","recording","stopRecording","addEventListener","once","connect","catch","fail","exports"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/legacy-driver.ts"],"mappings":";;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAEA,MAAMK,QAAmF,GAAG;EAC1F,CAACC,0BAAY,CAACC,SAAS,GAAG,WAAW;EACrC,CAACD,0BAAY,CAACE,SAAS,GAAG,WAAW;EACrC,CAACF,0BAAY,CAACG,YAAY,GAAG;AAC/B,CAAC;;AAED;AACA,MAAMC,YAAY,GAAGA,CAACC,OAAiD,EAAEC,UAAqB,KAC5F,CAACC,UAAU,EAAEC,MAAM,KAAK;EACtB,MAAMC,IAAI,GAAGA,CAAA,KAAMC,MAAM,CAACC,GAAG,CAAC,CAAC;EAE/B,MAAMD,MAAM,GAAG,IAAIE,gBAAO,CAAc,MAAM;IAC5CJ,MAAM,CAACK,mBAAmB,CAAC,OAAO,EAAEJ,IAAI,CAAC;IACzC,KAAKK,OAAO,CAACC,UAAU,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMD,OAAO,GAAGT,OAAO,CAACW,YAAY,CAAC;IACnCC,MAAM,EAAE,IAAAC,0BAAW,EAACX,UAAU,CAAC;IAC/BD,UAAU;IACVa,QAAQ,EAAEA,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAK;MAC1B,MAAMC,OAAO,GAAGD,IAAmB;MAEnCX,MAAM,CAACa,IAAI,CAAC;QAAEC,IAAI,EAAE,SAAS;QAAEJ,EAAE,EAAE,IAAAK,qBAAa,EAACH,OAAO,CAAC,GAAGF,EAAE,GAAG,IAAI;QAAEE;MAAQ,CAAC,CAAC;IACnF,CAAC;IACDI,qBAAqB,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAAK;MACrC,MAAMC,MAAM,GAAG7B,QAAQ,CAAC4B,MAAM,CAAC;MAE/B,IAAIC,MAAM,EAAE;QACVlB,MAAM,CAACa,IAAI,CAAC;UAAEC,IAAI,EAAE,QAAQ;UAAEG,MAAM,EAAEC;QAAO,CAAC,CAAC;MACjD;MACA,IAAID,MAAM,KAAK3B,0BAAY,CAACG,YAAY,EAAE;QACxCO,MAAM,CAACC,GAAG,CAAC,CAAC;MACd;IACF,CAAC;IACDkB,OAAO,EAAEA,CAAC;MAAEC;IAAM,CAAC,KAAKpB,MAAM,CAACa,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEM,KAAK,EAAE,IAAAC,uBAAY,EAACD,KAAK;IAAE,CAAC,CAAC;IAClFE,iBAAiB,EAAEA,CAAC;MAAER,IAAI;MAAES;IAAU,CAAC,KAAK;MAC1C,IAAIT,IAAI,KAAK,WAAW,EAAE;QACxBd,MAAM,CAACa,IAAI,CAAC;UAAEC,IAAI,EAAE,WAAW;UAAES,SAAS,EAAEA,SAAS,IAAI,IAAI;UAAExB,IAAI,EAAEA,CAAA,KAAMK,OAAO,CAACoB,aAAa,CAAC;QAAE,CAAC,CAAC;MACvG;IACF;EACF,CAAC,CAAC;EAEF1B,MAAM,CAAC2B,gBAAgB,CAAC,OAAO,EAAE1B,IAAI,EAAE;IAAE2B,IAAI,EAAE;EAAK,CAAC,CAAC;EACtDtB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAACC,KAAK,CAAER,KAAc,IAAKpB,MAAM,CAAC6B,IAAI,CAAC,IAAAR,uBAAY,EAACD,KAAK,CAAC,CAAC,CAAC;EAE7E,OAAOpB,MAAM;AACf,CAAC;AAAC8B,OAAA,CAAApC,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_deviceStatus","require","_channel","_driver","_bleErrors","_blePeripheral","STATUSES","DeviceStatus","CONNECTED","MEASURING","DISCONNECTED","legacyDriver","creator","deviceName","peripheral","signal","stop","events","end","Channel","removeEventListener","managed","disconnect","createDevice","device","bleDeviceOf","onResult","id","data","reading","push","kind","isTimestamped","onDeviceStatusChanged","status","mapped","onError","error","fromBleError","onWaveform","samples","sampleRateHz","millivoltsPerCount","at","waveform","onConnectionEvent","recording","stopRecording","addEventListener","once","connect","catch","fail","exports"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/legacy-driver.ts"],"mappings":"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","ignoreList":[]}
@@ -12,11 +12,12 @@ const endedBeforeConnecting = () => new _errors.BluetoothError("connection-faile
12
12
  class Connections {
13
13
  sessions = new Map();
14
14
  recordingStops = new Map();
15
- constructor(store, readings, policy, onEnded) {
15
+ constructor(store, readings, policy, onEnded, onWaveform) {
16
16
  this.store = store;
17
17
  this.readings = readings;
18
18
  this.policy = policy;
19
19
  this.onEnded = onEnded;
20
+ this.onWaveform = onWaveform;
20
21
  }
21
22
  isActive(id) {
22
23
  return this.sessions.has(id);
@@ -118,6 +119,11 @@ class Connections {
118
119
  this.store.updateDevice(id, {
119
120
  information: event.information
120
121
  });
122
+ } else if (event.kind === "waveform") {
123
+ this.onWaveform({
124
+ deviceId: id,
125
+ ...event.waveform
126
+ });
121
127
  } else if (event.kind === "recording") {
122
128
  this.recordingStops.set(id, event.stop);
123
129
  this.store.updateDevice(id, {
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","recordingStops","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","stopRecording","stop","device","recording","catch","error","asBluetoothError","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","run","then","failure","finally","delete","set","event","keepReadings","apply","kind","status","information","receive","reading","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","recordingStops","constructor","store","readings","policy","onEnded","onWaveform","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","stopRecording","stop","device","recording","catch","error","asBluetoothError","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","run","then","failure","finally","delete","set","event","keepReadings","apply","kind","status","information","deviceId","waveform","receive","reading","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;AAKA,IAAAA,WAAA,GAAAC,OAAA;AAGA;;AAiDA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AAAAC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AACA,MAAMU,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEX,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQ,IAAAY,sBAAU,EAAC;EAAEF,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACE,EAAE;EAAEb;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMc,UAAU,GAAGA,CAACJ,GAAW,EAAEK,QAAwB,KACvD,iBAAiBJ,UAAU,EAAEK,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAMN,UAAU,CAACO,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,IAAIH,IAAI,CAACI,iBAAiB,EAAE;MAC1B,MAAM;QAAEF,IAAI,EAAE,aAAa;QAAEG,WAAW,EAAEL,IAAI,CAACI;MAAkB,CAAC;IACpE;IACA,WAAW,MAAMrB,OAAO,IAAIe,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEJ,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEX,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEmB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACM,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAACf,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;AAKA,IAAAA,WAAA,GAAAC,OAAA;AAGA;;AAyDA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AAAAC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AACA,MAAMU,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEX,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQ,IAAAY,sBAAU,EAAC;EAAEF,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACE,EAAE;EAAEb;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMc,UAAU,GAAGA,CAACJ,GAAW,EAAEK,QAAwB,KACvD,iBAAiBJ,UAAU,EAAEK,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAMN,UAAU,CAACO,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,IAAIH,IAAI,CAACI,iBAAiB,EAAE;MAC1B,MAAM;QAAEF,IAAI,EAAE,aAAa;QAAEG,WAAW,EAAEL,IAAI,CAACI;MAAkB,CAAC;IACpE;IACA,WAAW,MAAMrB,OAAO,IAAIe,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEJ,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEX,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEmB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACM,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAACf,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -27,12 +27,13 @@ class BluetoothRuntime {
27
27
  held = new Set();
28
28
  backoff = new _autoConnect.AutoConnectBackoff();
29
29
  retryTimers = new Set();
30
+ waveformListeners = new Set();
30
31
  scanRequest = 0;
31
32
  disposed = false;
32
33
  constructor(options) {
33
34
  this.options = options;
34
35
  this.readings = new _readings.ReadingLog(this.store, options.sink);
35
- this.connections = new _connections.Connections(this.store, this.readings, options.resultPolicy ?? _resultPolicy.everyReading, id => this.connectionEnded(id));
36
+ this.connections = new _connections.Connections(this.store, this.readings, options.resultPolicy ?? _resultPolicy.everyReading, id => this.connectionEnded(id), waveform => this.waveformListeners.forEach(listener => listener(waveform)));
36
37
  this.paired = new _paired.PairedDevices(paired => this.store.set({
37
38
  paired
38
39
  }), options.pairedStorage);
@@ -52,6 +53,12 @@ class BluetoothRuntime {
52
53
  /** Calls `listener` after every state change; returns the unsubscribe. */
53
54
  subscribe = listener => this.store.subscribe(listener);
54
55
 
56
+ /** Calls `listener` with the live ECG samples of recording devices, for display; returns the unsubscribe. */
57
+ subscribeWaveform = listener => {
58
+ this.waveformListeners.add(listener);
59
+ return () => this.waveformListeners.delete(listener);
60
+ };
61
+
55
62
  /** Reads the permission without prompting. */
56
63
  async checkPermission() {
57
64
  return this.recordPermission(await this.options.permissions.check());
@@ -1 +1 @@
1
- {"version":3,"names":["_autoConnect","require","_connections","_devices","_errors","_paired","_readings","_resultPolicy","_scanLoop","_store","BluetoothRuntime","store","SnapshotStore","known","Map","held","Set","backoff","AutoConnectBackoff","retryTimers","scanRequest","disposed","constructor","options","readings","ReadingLog","sink","connections","Connections","resultPolicy","everyReading","id","connectionEnded","paired","PairedDevices","set","pairedStorage","scan","ScanLoop","scanner","peripheral","found","unwatchAdapter","watchState","adapter","sync","checkPermission","catch","undefined","getSnapshot","get","subscribe","listener","recordPermission","permissions","check","requestPermission","request","openPermissionSettings","openSettings","startScan","assertLive","permission","BluetoothError","scanning","stopScan","connect","deviceId","match","delete","driver","stopRecording","disconnect","add","pair","forget","remove","retrySaves","dispose","close","forEach","clearTimeout","disconnectAll","matchDevice","devices","advertisement","device","key","name","connection","error","connectIfPaired","waiting","has","isActive","allows","succeeded","restartScan","timer","setTimeout","failed","running","restart","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/runtime.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_autoConnect","require","_connections","_devices","_errors","_paired","_readings","_resultPolicy","_scanLoop","_store","BluetoothRuntime","store","SnapshotStore","known","Map","held","Set","backoff","AutoConnectBackoff","retryTimers","waveformListeners","scanRequest","disposed","constructor","options","readings","ReadingLog","sink","connections","Connections","resultPolicy","everyReading","id","connectionEnded","waveform","forEach","listener","paired","PairedDevices","set","pairedStorage","scan","ScanLoop","scanner","peripheral","found","unwatchAdapter","watchState","adapter","sync","checkPermission","catch","undefined","getSnapshot","get","subscribe","subscribeWaveform","add","delete","recordPermission","permissions","check","requestPermission","request","openPermissionSettings","openSettings","startScan","assertLive","permission","BluetoothError","scanning","stopScan","connect","deviceId","match","driver","stopRecording","disconnect","pair","forget","remove","retrySaves","dispose","close","clearTimeout","disconnectAll","matchDevice","devices","advertisement","device","key","name","connection","error","connectIfPaired","waiting","has","isActive","allows","succeeded","restartScan","timer","setTimeout","failed","running","restart","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/runtime.ts"],"mappings":"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","ignoreList":[]}
@@ -414,6 +414,19 @@ export const BTProviderChildWrapper = ({
414
414
  manager.onConnectionEvent(undefined);
415
415
  };
416
416
  }, [acceptedDevices.length, acceptedDevicesSignature, managerState, runtime]);
417
+ React.useEffect(() => {
418
+ if (!managerState || typeof managerState.onWaveform !== "function") {
419
+ return;
420
+ }
421
+ managerState.onWaveform(waveform => {
422
+ if (runtime.hasListeners("waveform")) {
423
+ runtime.emit("waveform", waveform);
424
+ }
425
+ });
426
+ return () => {
427
+ managerState.onWaveform(undefined);
428
+ };
429
+ }, [managerState, runtime]);
417
430
  React.useEffect(() => {
418
431
  if (!acceptedDevices.length || !managerState || btManagerRef.current !== managerState) {
419
432
  return;