@ovok/native 1.16.1-dev.2183 → 1.16.1-dev.2187

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 (139) hide show
  1. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  2. package/lib/commonjs/modules/bt-management/services/bt-manager.js +13 -0
  3. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  4. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +13 -6
  5. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +5 -0
  7. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +31 -5
  9. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +42 -4
  11. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +55 -0
  13. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -0
  14. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +2 -2
  15. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
  16. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +5 -12
  17. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +35 -0
  19. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -0
  20. package/lib/commonjs/modules/bt-management/utils/le-32-from-hex.js.map +1 -1
  21. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js +13 -1
  22. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
  23. package/lib/commonjs/modules/next/bluetooth/connections.js +25 -0
  24. package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
  25. package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
  26. package/lib/commonjs/modules/next/bluetooth/errors.js.map +1 -1
  27. package/lib/commonjs/modules/next/bluetooth/runtime.js +13 -0
  28. package/lib/commonjs/modules/next/bluetooth/runtime.js.map +1 -1
  29. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  30. package/lib/module/modules/bt-management/services/bt-manager.js +13 -0
  31. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  32. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +13 -6
  33. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  34. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +5 -0
  35. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  36. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +31 -5
  37. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  38. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +41 -4
  39. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -1
  40. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +51 -0
  41. package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -0
  42. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +2 -2
  43. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
  44. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +3 -10
  45. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  46. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +31 -0
  47. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -0
  48. package/lib/module/modules/bt-management/utils/le-32-from-hex.js.map +1 -1
  49. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js +13 -1
  50. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
  51. package/lib/module/modules/next/bluetooth/connections.js +25 -0
  52. package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
  53. package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
  54. package/lib/module/modules/next/bluetooth/errors.js.map +1 -1
  55. package/lib/module/modules/next/bluetooth/runtime.js +13 -0
  56. package/lib/module/modules/next/bluetooth/runtime.js.map +1 -1
  57. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  58. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +6 -0
  60. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  63. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +8 -0
  65. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +6 -0
  67. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +23 -0
  69. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -0
  70. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +2 -2
  71. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts +8 -0
  74. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -0
  75. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +16 -6
  76. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts +17 -1
  78. package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-from-hex.d.ts +1 -1
  80. package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-from-hex.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts +7 -0
  83. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +8 -0
  85. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts +1 -1
  87. package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
  89. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts +7 -0
  91. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +15 -1
  93. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  94. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  95. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  96. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +6 -0
  97. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  98. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
  99. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  100. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  101. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +8 -0
  102. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  103. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +6 -0
  104. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
  105. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +23 -0
  106. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -0
  107. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +2 -2
  108. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
  109. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  110. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts +8 -0
  111. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -0
  112. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +16 -6
  113. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  114. package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts +17 -1
  115. package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -1
  116. package/lib/typescript/module/src/modules/bt-management/utils/le-32-from-hex.d.ts +1 -1
  117. package/lib/typescript/module/src/modules/bt-management/utils/le-32-from-hex.d.ts.map +1 -1
  118. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
  119. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts +7 -0
  120. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  121. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +8 -0
  122. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  123. package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts +1 -1
  124. package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts.map +1 -1
  125. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
  126. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  127. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts +7 -0
  128. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
  129. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +15 -1
  130. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  131. package/package.json +1 -1
  132. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js +0 -26
  133. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js.map +0 -1
  134. package/lib/module/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js +0 -22
  135. package/lib/module/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js.map +0 -1
  136. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts +0 -12
  137. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts.map +0 -1
  138. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts +0 -12
  139. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts.map +0 -1
@@ -21,6 +21,8 @@ interface LepuEcgTransferParams {
21
21
  pollIntervalMs?: number;
22
22
  /** Asked with each poll answer; without it, the stored files are read again after every poll. */
23
23
  shouldStartTransfer?: (pollAnswer: readonly string[]) => boolean;
24
+ /** An opcode the app asked for, sent in place of the next poll; polling resumes on its answer. */
25
+ takeRequestedCommand?: () => number | undefined;
24
26
  onProgress?: (progress: {
25
27
  name: string;
26
28
  receivedBytes: number;
@@ -33,6 +35,7 @@ declare class LepuEcgTransferSequencer implements CommandSequencer {
33
35
  private phase;
34
36
  private readonly clockRetry;
35
37
  private transfer;
38
+ private requestedCommand;
36
39
  private readonly identity;
37
40
  constructor(params: LepuEcgTransferParams);
38
41
  initialCommands: () => readonly DeviceCommand[];
@@ -42,6 +45,9 @@ declare class LepuEcgTransferSequencer implements CommandSequencer {
42
45
  onCommandTimeout: () => CommandTimeoutResult;
43
46
  commandProgress: (frame: readonly string[]) => "ignored" | "complete";
44
47
  nextCommand: (frame: readonly string[]) => readonly DeviceCommand[] | undefined;
48
+ private requestedOrPoll;
49
+ private finishRequested;
50
+ private resumePolling;
45
51
  private startClockOrTransfer;
46
52
  private setTimeCommand;
47
53
  private finishClock;
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.ecg-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAGjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAoB,MAAM,sBAAsB,CAAC;AAKlE,UAAU,qBAAqB;IAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iGAAiG;IACjG,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;IACjE,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;AAUD,oFAAoF;AACpF,cAAM,wBAAyB,YAAW,gBAAgB;IAMrC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAL1C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAER,MAAM,EAAE,qBAAqB;IAa1D,eAAe,QAAO,SAAS,aAAa,EAAE,CACnB;IAE3B,iBAAiB,QAAO,OAAO,CAAS;IAExC,gBAAgB,QAAO,MAAM,GAAG,SAAS,CAU9C;IAEF,2FAA2F;IACpF,gBAAgB,QAAO,oBAAoB,CAkBhD;IAEK,eAAe,GAAI,OAAO,SAAS,MAAM,EAAE,KAAG,SAAS,GAAG,UAAU,CAazE;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAuBrC;IAEF,OAAO,CAAC,oBAAoB,CAS1B;IAEF,OAAO,CAAC,cAAc,CAMnB;IAEH,OAAO,CAAC,WAAW,CAcjB;IAEF,OAAO,CAAC,aAAa,CAgBnB;IAEF,OAAO,CAAC,cAAc,CAUpB;IAEF,OAAO,CAAC,WAAW,CAMhB;CACJ;AAED,QAAA,MAAM,YAAY,GAAI,YAAY,gBAAgB,KAAG,MAAM,EAe1D,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,CAAC;AAClD,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"lepu.ecg-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
2
+ import { DeviceConnectionEvent } from "../../../types/device-connection-event";
3
+ type RecordingStatus = NonNullable<CustomLepuSpec["recordingStatus"]>;
4
+ type Recording = NonNullable<DeviceConnectionEvent["recording"]>;
5
+ /** Follows a recorder's open recording through its poll answers. */
6
+ declare class LepuRecordingWatch {
7
+ private readonly status;
8
+ private readonly onRecordingChanged;
9
+ private state;
10
+ private leadOffSince;
11
+ private reported;
12
+ constructor(status: RecordingStatus, onRecordingChanged: (recording: Recording | undefined) => void);
13
+ /** Reads one poll answer; true when it is the first in the saved state, so the files are read. */
14
+ observe: (pollAnswer: readonly string[]) => boolean;
15
+ /** Whether a recording is open, so that stopping it means something. */
16
+ isOpen: () => boolean;
17
+ private recordingIn;
18
+ private isLeadOff;
19
+ /** Reports a change in what the app would act on, not every tick of the seconds. */
20
+ private report;
21
+ }
22
+ export { LepuRecordingWatch };
23
+ //# sourceMappingURL=lepu.recording-watch.d.ts.map
@@ -0,0 +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;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IANrC,OAAO,CAAC,KAAK,CAAqB;IAClC,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,CAQvD;IAEF,wEAAwE;IACjE,MAAM,QAAO,OAAO,CACqC;IAEhE,OAAO,CAAC,WAAW,CAYjB;IAEF,OAAO,CAAC,SAAS,CAA0D;IAE3E,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAYZ;CACH;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -129,8 +129,8 @@ interface LepuDeviceParams {
129
129
  pollCommand?: number;
130
130
  /** Delay before each realtime poll, for devices with a fixed polling cadence. */
131
131
  pollIntervalMs?: number;
132
- /** Where a poll answer says a record was just saved; see `CustomLepuSpec`. */
133
- recordSavedStatus?: CustomLepuSpec["recordSavedStatus"];
132
+ /** How a recorder reports its open recording; see `CustomLepuSpec`. */
133
+ recordingStatus?: CustomLepuSpec["recordingStatus"];
134
134
  /**
135
135
  * Shortest frame any declared case may be read from. The seven-byte header and the
136
136
  * trailing checksum are part of it, so a one-byte payload is nine.
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.transports.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.transports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lepu.transports.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.transports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"viatom.ecg-recorders.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAgEjF,UAAU,eAAe;IAEvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AA2DD,uFAAuF;AACvF,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ;;;;;GAKG;AACH,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ,6EAA6E;AAC7E,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ,6CAA6C;AAC7C,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAWrC,CAAC;AAEF,gFAAgF;AAChF,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAUrC,CAAC;AAKF,8EAA8E;AAC9E,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAAyB,CAAC;AAEhE,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"viatom.ecg-recorders.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAiEjF,UAAU,eAAe;IAEvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AA2DD,uFAAuF;AACvF,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ;;;;;GAKG;AACH,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ,6EAA6E;AAC7E,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBAUA,CAAC;AAEJ,6CAA6C;AAC7C,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAWrC,CAAC;AAEF,gFAAgF;AAChF,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAUrC,CAAC;AAKF,8EAA8E;AAC9E,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAAyB,CAAC;AAEhE,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,GACZ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
2
+ /** The run status, with the current state in its low nibble. */
3
+ declare const RUN_STATUS_BYTE = 15;
4
+ declare const RECORDING_STATE = 2;
5
+ /** How an ER recorder reports its open recording in the realtime answer. */
6
+ declare const viatomRecordingStatus: (advertisedName: string) => NonNullable<CustomLepuSpec["recordingStatus"]>;
7
+ export { RECORDING_STATE, RUN_STATUS_BYTE, viatomRecordingStatus };
8
+ //# sourceMappingURL=viatom.ecg-recording-status.d.ts.map
@@ -0,0 +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;AAEjE,gEAAgE;AAChE,QAAA,MAAM,eAAe,KAAK,CAAC;AAC3B,QAAA,MAAM,eAAe,IAAI,CAAC;AAe1B,4EAA4E;AAC5E,QAAA,MAAM,qBAAqB,GACzB,gBAAgB,MAAM,KACrB,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAU9C,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
@@ -65,14 +65,24 @@ export interface CustomLepuSpec {
65
65
  /** Delay before each realtime poll, for devices with a fixed polling cadence. */
66
66
  pollIntervalMs?: number;
67
67
  /**
68
- * Where a poll answer says a record was just saved: the run-status byte and the state in its
69
- * low nibble. Entering that state reads the stored ECG files again.
68
+ * How a recorder reports its open recording in each poll answer. Entering the saved state
69
+ * reads the stored ECG files again, and the recording can be stopped on request.
70
70
  */
71
- recordSavedStatus?: {
72
- /** The run-status byte's index in the poll answer, header included. */
71
+ recordingStatus?: {
72
+ /** The run-status byte's index in the poll answer, header included; its low nibble is the state. */
73
73
  byteIndex: number;
74
- /** The low-nibble state that means a record was just saved. */
75
- state: number;
74
+ /** Where the seconds recorded so far sit in the poll answer, u32 little-endian. */
75
+ secondsByteIndex: number;
76
+ /** Low-nibble state while recording. */
77
+ recordingState: number;
78
+ /** Low-nibble state while the electrodes have no contact and the recording stays open. */
79
+ leadOffState: number;
80
+ /** Low-nibble state once the recording has been stored. */
81
+ savedState: number;
82
+ /** The shortest recording the device stores when it is stopped. */
83
+ minimumStoredSeconds: number;
84
+ /** The opcode that stops the recording, storing it when it is long enough. */
85
+ stopCommand: number;
76
86
  };
77
87
  /** Sends the command through the write-without-response characteristic. */
78
88
  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,iBAAiB,CAAC,EAAE;QAElB,uEAAuE;QACvE,SAAS,EAAE,MAAM,CAAC;QAElB,+DAA+D;QAC/D,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
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;KACrB,CAAC;IAEF,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -1,6 +1,6 @@
1
1
  import { DeviceData } from "./device-data";
2
2
  /** Kind of connection lifecycle event. */
3
- export type DeviceConnectionEventKind = "pairing" | "connected" | "bonded" | "history-download" | "battery" | "device-identified" | "clock-synchronized";
3
+ export type DeviceConnectionEventKind = "pairing" | "connected" | "bonded" | "history-download" | "battery" | "device-identified" | "clock-synchronized" | "recording";
4
4
  /** Connection lifecycle event of a device. */
5
5
  export interface DeviceConnectionEvent {
6
6
  /** Device the event relates to. */
@@ -22,5 +22,21 @@ export interface DeviceConnectionEvent {
22
22
  clockAt?: Date;
23
23
  /** Phone's UTC offset in minutes east of UTC at the clock write. */
24
24
  phoneUtcOffsetMinutes?: number;
25
+ /**
26
+ * A recorder's open recording, on a `recording` event; absent once the recording has ended.
27
+ * Sent when it starts, when the electrodes lose or regain contact, and when it becomes long
28
+ * enough to be stored.
29
+ */
30
+ recording?: {
31
+ /** Seconds recorded so far. */
32
+ seconds: number;
33
+ /**
34
+ * When the electrodes lost contact, while they have none; the recording stays open until it
35
+ * is stopped. An app can offer to stop it once this is old enough, as the vendor app does.
36
+ */
37
+ leadOffSince?: Date;
38
+ /** Stopping now stores the recording; a shorter one is discarded by the device. */
39
+ storesOnStop: boolean;
40
+ };
25
41
  }
26
42
  //# sourceMappingURL=device-connection-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-connection-event.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/device-connection-event.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,0CAA0C;AAC1C,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,WAAW,GACX,QAAQ,GACR,kBAAkB,GAClB,SAAS,GACT,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IAEpC,mCAAmC;IACnC,UAAU,EAAE,UAAU,CAAC;IAEvB,qBAAqB;IACrB,IAAI,EAAE,yBAAyB,CAAC;IAEhC,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE;QAET,kCAAkC;QAClC,OAAO,EAAE,MAAM,CAAC;QAEhB,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"device-connection-event.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/types/device-connection-event.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,0CAA0C;AAC1C,MAAM,MAAM,yBAAyB,GACjC,SAAS,GACT,WAAW,GACX,QAAQ,GACR,kBAAkB,GAClB,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,WAAW,CAAC;AAEhB,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IAEpC,mCAAmC;IACnC,UAAU,EAAE,UAAU,CAAC;IAEvB,qBAAqB;IACrB,IAAI,EAAE,yBAAyB,CAAC;IAEhC,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE;QAET,kCAAkC;QAClC,OAAO,EAAE,MAAM,CAAC;QAEhB,iCAAiC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAEV,+BAA+B;QAC/B,OAAO,EAAE,MAAM,CAAC;QAEhB;;;WAGG;QACH,YAAY,CAAC,EAAE,IAAI,CAAC;QAEpB,mFAAmF;QACnF,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH"}
@@ -1,2 +1,2 @@
1
- export declare const le32FromHex: (hex: string[], i: number) => number;
1
+ export declare const le32FromHex: (hex: readonly string[], i: number) => number;
2
2
  //# sourceMappingURL=le-32-from-hex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"le-32-from-hex.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/utils/le-32-from-hex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,EAAE,GAAG,MAAM,KAAG,MAOtD,CAAC"}
1
+ {"version":3,"file":"le-32-from-hex.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-management/utils/le-32-from-hex.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,MAAM,EAAE,EAAE,GAAG,MAAM,KAAG,MAO/D,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,MAkC9F,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,CAAC"}
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,MAuC9F,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -10,11 +10,18 @@ declare class Connections {
10
10
  private readonly policy;
11
11
  private readonly onEnded;
12
12
  private readonly sessions;
13
+ private readonly recordingStops;
13
14
  constructor(store: SnapshotStore, readings: ReadingLog, policy: ResultPolicy, onEnded: (id: string) => void);
14
15
  isActive(id: string): boolean;
15
16
  /** Resolves once connected; joins a connection still opening or open, and waits out one being closed. */
16
17
  connect(peripheral: Peripheral, driver: Driver): Promise<void>;
17
18
  disconnect(id: string): Promise<void>;
19
+ /**
20
+ * Stops the recording a connected device holds open.
21
+ *
22
+ * @throws BluetoothError `no-open-recording` when the device holds none.
23
+ */
24
+ stopRecording(id: string): Promise<void>;
18
25
  /** Disconnects every device; resolves once every connection has ended. */
19
26
  disconnectAll(): Promise<void>;
20
27
  private start;
@@ -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;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAGpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAGzC,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,0EAA0E;IAC7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C,OAAO,CAAC,KAAK;YAsCC,GAAG;IAMjB,OAAO,CAAC,KAAK;CAkBd;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
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;IAP1B,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;IAGzC,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;CAqBd;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,6 +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
5
  import { Peripheral } from "./transport";
5
6
  /** What a driver reports while it runs. */
6
7
  type DeviceEvent = {
@@ -20,6 +21,13 @@ type DeviceEvent = {
20
21
  id: string | null;
21
22
  /** The decoded reading. */
22
23
  reading: Measurement;
24
+ } | {
25
+ /** The recording the device holds open changed. */
26
+ kind: "recording";
27
+ /** The open recording, or `null` once it has closed. */
28
+ recording: DeviceRecording | null;
29
+ /** Stops the open recording. */
30
+ stop: () => Promise<void>;
23
31
  } | {
24
32
  /** The device or its protocol reported an error; the connection may continue. */
25
33
  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;AAEjD,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,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"}
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;AAE7C,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,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"}
@@ -1,5 +1,5 @@
1
1
  /** Why a Bluetooth operation failed. */
2
- type BluetoothErrorCode = "permission-denied" | "powered-off" | "unsupported" | "scan-failed" | "connection-failed" | "pairing-required" | "discovery-failed" | "device-error" | "frame-invalid" | "measurement-failed" | "device-not-found" | "runtime-disposed" | "save-failed" | "unknown";
2
+ type BluetoothErrorCode = "permission-denied" | "powered-off" | "unsupported" | "scan-failed" | "connection-failed" | "pairing-required" | "discovery-failed" | "device-error" | "frame-invalid" | "measurement-failed" | "device-not-found" | "no-open-recording" | "runtime-disposed" | "save-failed" | "unknown";
3
3
  /** Every failure the Bluetooth runtime reports; `cause` holds the underlying error, when any. */
4
4
  declare class BluetoothError extends Error {
5
5
  /** Why it failed. */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/errors.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,KAAK,kBAAkB,GACnB,mBAAmB,GACnB,aAAa,GACb,aAAa,GACb,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,SAAS,CAAC;AAEd,iGAAiG;AACjG,cAAM,cAAe,SAAQ,KAAK;IAM9B,qBAAqB;aACL,IAAI,EAAE,kBAAkB;IAN1C,iCAAiC;IACjC,SAAgB,IAAI,oBAAoB;;IAItC,qBAAqB;IACL,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO;CAIlB;AAED,oFAAoF;AACpF,QAAA,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,MAAM,kBAAkB,KAAG,cAGwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/errors.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,KAAK,kBAAkB,GACnB,mBAAmB,GACnB,aAAa,GACb,aAAa,GACb,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,aAAa,GACb,SAAS,CAAC;AAEd,iGAAiG;AACjG,cAAM,cAAe,SAAQ,KAAK;IAM9B,qBAAqB;aACL,IAAI,EAAE,kBAAkB;IAN1C,iCAAiC;IACjC,SAAgB,IAAI,oBAAoB;;IAItC,qBAAqB;IACL,IAAI,EAAE,kBAAkB,EACxC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO;CAIlB;AAED,oFAAoF;AACpF,QAAA,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,MAAM,kBAAkB,KAAG,cAGwB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAC5C,YAAY,EAAE,kBAAkB,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, NearbyDevice, SaveState } from "./snapshot";
14
+ export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, 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,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7G,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"}
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;AAC9H,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"}
@@ -63,6 +63,13 @@ declare class BluetoothRuntime {
63
63
  * @throws BluetoothError `device-not-found`, `connection-failed` or the driver's failure.
64
64
  */
65
65
  connect(deviceId: string): Promise<void>;
66
+ /**
67
+ * Stops the recording a connected recorder holds open, for instance once the user confirms it while
68
+ * its `recording.leadOffSince` is set. The stored recording then arrives as a reading.
69
+ *
70
+ * @throws BluetoothError `no-open-recording` when the device holds none; `runtime-disposed` after `dispose`.
71
+ */
72
+ stopRecording(deviceId: string): Promise<void>;
66
73
  /** Disconnects a device; a paired one stays disconnected until `connect` or `pair` is called again. */
67
74
  disconnect(deviceId: string): Promise<void>;
68
75
  /** Remembers a device, so it connects whenever the scan finds it, and connects to it now. */
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/next/bluetooth/runtime.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,20 @@ type NearbyDevice = {
19
19
  error: BluetoothError | null;
20
20
  /** What the device reported about itself on its last connection; absent until it has connected. */
21
21
  information?: DeviceInformation;
22
+ /** The recording the device holds open, for recorders that report one; absent when none is open. */
23
+ recording?: DeviceRecording;
24
+ };
25
+ /** A recording a recorder holds open, as its last realtime answer reported it. */
26
+ type DeviceRecording = {
27
+ /** Seconds recorded so far, as of the last change. */
28
+ seconds: number;
29
+ /**
30
+ * When the electrodes lost contact, while they have none; the recording stays open until it is
31
+ * stopped. An app can offer `stopRecording` once this is old enough, as the vendor app does.
32
+ */
33
+ leadOffSince?: Date;
34
+ /** Stopping now stores the recording; a shorter one is discarded by the device. */
35
+ storesOnStop: boolean;
22
36
  };
23
37
  /** Where saving a reading stands. */
24
38
  type SaveState = {
@@ -68,5 +82,5 @@ type BluetoothSnapshot = {
68
82
  /** Recent readings, oldest first. */
69
83
  readings: readonly DeviceReading[];
70
84
  };
71
- export type { BluetoothSnapshot, ConnectionState, DeviceReading, NearbyDevice, SaveState };
85
+ export type { BluetoothSnapshot, ConnectionState, DeviceReading, DeviceRecording, NearbyDevice, SaveState };
72
86
  //# 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;CACjC,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,YAAY,EAAE,SAAS,EAAE,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ovok/native",
3
- "version": "1.16.1-dev.2183+f416b77",
3
+ "version": "1.16.1-dev.2187+fea3e76",
4
4
  "description": "React native component sdk for OVOK",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.LepuRecordSavedWatch = void 0;
7
- var _hexToByte = require("../../../utils/hex-to-byte.js");
8
- const LOW_NIBBLE = 0x0f;
9
- /** Spots the poll answer on which a recorder enters its record-saved state. */
10
- class LepuRecordSavedWatch {
11
- wasSaved = false;
12
- constructor(status) {
13
- this.status = status;
14
- }
15
-
16
- /** True on the first answer in the saved state, false on those that follow it. */
17
- hasJustSaved = pollAnswer => {
18
- const runStatus = (0, _hexToByte.hexToByte)(pollAnswer[this.status.byteIndex] ?? "00");
19
- const isSaved = (runStatus & LOW_NIBBLE) === this.status.state;
20
- const justSaved = isSaved && !this.wasSaved;
21
- this.wasSaved = isSaved;
22
- return justSaved;
23
- };
24
- }
25
- exports.LepuRecordSavedWatch = LepuRecordSavedWatch;
26
- //# sourceMappingURL=lepu.record-saved-watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_hexToByte","require","LOW_NIBBLE","LepuRecordSavedWatch","wasSaved","constructor","status","hasJustSaved","pollAnswer","runStatus","hexToByte","byteIndex","isSaved","state","justSaved","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.record-saved-watch.ts"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,MAAMC,UAAU,GAAG,IAAI;AAIvB;AACA,MAAMC,oBAAoB,CAAC;EACjBC,QAAQ,GAAG,KAAK;EAEjBC,WAAWA,CAAkBC,MAAyB,EAAE;IAAA,KAA3BA,MAAyB,GAAzBA,MAAyB;EAAG;;EAEhE;EACOC,YAAY,GAAIC,UAA6B,IAAc;IAChE,MAAMC,SAAS,GAAG,IAAAC,oBAAS,EAACF,UAAU,CAAC,IAAI,CAACF,MAAM,CAACK,SAAS,CAAC,IAAI,IAAI,CAAC;IACtE,MAAMC,OAAO,GAAG,CAACH,SAAS,GAAGP,UAAU,MAAM,IAAI,CAACI,MAAM,CAACO,KAAK;IAC9D,MAAMC,SAAS,GAAGF,OAAO,IAAI,CAAC,IAAI,CAACR,QAAQ;IAE3C,IAAI,CAACA,QAAQ,GAAGQ,OAAO;IAEvB,OAAOE,SAAS;EAClB,CAAC;AACH;AAACC,OAAA,CAAAZ,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- import { hexToByte } from "../../../utils/hex-to-byte.js";
4
- const LOW_NIBBLE = 0x0f;
5
- /** Spots the poll answer on which a recorder enters its record-saved state. */
6
- class LepuRecordSavedWatch {
7
- wasSaved = false;
8
- constructor(status) {
9
- this.status = status;
10
- }
11
-
12
- /** True on the first answer in the saved state, false on those that follow it. */
13
- hasJustSaved = pollAnswer => {
14
- const runStatus = hexToByte(pollAnswer[this.status.byteIndex] ?? "00");
15
- const isSaved = (runStatus & LOW_NIBBLE) === this.status.state;
16
- const justSaved = isSaved && !this.wasSaved;
17
- this.wasSaved = isSaved;
18
- return justSaved;
19
- };
20
- }
21
- export { LepuRecordSavedWatch };
22
- //# sourceMappingURL=lepu.record-saved-watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["hexToByte","LOW_NIBBLE","LepuRecordSavedWatch","wasSaved","constructor","status","hasJustSaved","pollAnswer","runStatus","byteIndex","isSaved","state","justSaved"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.record-saved-watch.ts"],"mappings":";;AACA,SAASA,SAAS,QAAQ,+BAA4B;AAEtD,MAAMC,UAAU,GAAG,IAAI;AAIvB;AACA,MAAMC,oBAAoB,CAAC;EACjBC,QAAQ,GAAG,KAAK;EAEjBC,WAAWA,CAAkBC,MAAyB,EAAE;IAAA,KAA3BA,MAAyB,GAAzBA,MAAyB;EAAG;;EAEhE;EACOC,YAAY,GAAIC,UAA6B,IAAc;IAChE,MAAMC,SAAS,GAAGR,SAAS,CAACO,UAAU,CAAC,IAAI,CAACF,MAAM,CAACI,SAAS,CAAC,IAAI,IAAI,CAAC;IACtE,MAAMC,OAAO,GAAG,CAACF,SAAS,GAAGP,UAAU,MAAM,IAAI,CAACI,MAAM,CAACM,KAAK;IAC9D,MAAMC,SAAS,GAAGF,OAAO,IAAI,CAAC,IAAI,CAACP,QAAQ;IAE3C,IAAI,CAACA,QAAQ,GAAGO,OAAO;IAEvB,OAAOE,SAAS;EAClB,CAAC;AACH;AAEA,SAASV,oBAAoB","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
2
- type RecordSavedStatus = NonNullable<CustomLepuSpec["recordSavedStatus"]>;
3
- /** Spots the poll answer on which a recorder enters its record-saved state. */
4
- declare class LepuRecordSavedWatch {
5
- private readonly status;
6
- private wasSaved;
7
- constructor(status: RecordSavedStatus);
8
- /** True on the first answer in the saved state, false on those that follow it. */
9
- hasJustSaved: (pollAnswer: readonly string[]) => boolean;
10
- }
11
- export { LepuRecordSavedWatch };
12
- //# sourceMappingURL=lepu.record-saved-watch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lepu.record-saved-watch.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKjE,KAAK,iBAAiB,GAAG,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE1E,+EAA+E;AAC/E,cAAM,oBAAoB;IAGL,OAAO,CAAC,QAAQ,CAAC,MAAM;IAF1C,OAAO,CAAC,QAAQ,CAAS;gBAEW,MAAM,EAAE,iBAAiB;IAE7D,kFAAkF;IAC3E,YAAY,GAAI,YAAY,SAAS,MAAM,EAAE,KAAG,OAAO,CAQ5D;CACH;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,12 +0,0 @@
1
- import { CustomLepuSpec } from "../../../types/custom-lepu-spec";
2
- type RecordSavedStatus = NonNullable<CustomLepuSpec["recordSavedStatus"]>;
3
- /** Spots the poll answer on which a recorder enters its record-saved state. */
4
- declare class LepuRecordSavedWatch {
5
- private readonly status;
6
- private wasSaved;
7
- constructor(status: RecordSavedStatus);
8
- /** True on the first answer in the saved state, false on those that follow it. */
9
- hasJustSaved: (pollAnswer: readonly string[]) => boolean;
10
- }
11
- export { LepuRecordSavedWatch };
12
- //# sourceMappingURL=lepu.record-saved-watch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lepu.record-saved-watch.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKjE,KAAK,iBAAiB,GAAG,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE1E,+EAA+E;AAC/E,cAAM,oBAAoB;IAGL,OAAO,CAAC,QAAQ,CAAC,MAAM;IAF1C,OAAO,CAAC,QAAQ,CAAS;gBAEW,MAAM,EAAE,iBAAiB;IAE7D,kFAAkF;IAC3E,YAAY,GAAI,YAAY,SAAS,MAAM,EAAE,KAAG,OAAO,CAQ5D;CACH;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}