@ovok/native 1.16.1-dev.2175 → 1.16.1-dev.2179

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 (89) hide show
  1. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +16 -6
  2. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.frame-reader.js +2 -2
  4. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.frame-reader.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +33 -12
  7. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.advertisement.js +19 -2
  9. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.advertisement.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +18 -3
  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.encryption-handshake.js +103 -0
  13. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.js.map +1 -0
  14. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame-reader.js +4 -2
  15. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame-reader.js.map +1 -1
  16. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.session.js +49 -0
  17. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.session.js.map +1 -0
  18. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +4 -4
  19. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +0 -1
  20. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +19 -8
  22. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  23. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +16 -6
  24. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  25. package/lib/module/modules/bt-management/services/devices/bp2/bp2.frame-reader.js +2 -3
  26. package/lib/module/modules/bt-management/services/devices/bp2/bp2.frame-reader.js.map +1 -1
  27. package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
  28. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +33 -12
  29. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  30. package/lib/module/modules/bt-management/services/devices/lepu/lepu.advertisement.js +17 -1
  31. package/lib/module/modules/bt-management/services/devices/lepu/lepu.advertisement.js.map +1 -1
  32. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +18 -3
  33. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -1
  34. package/lib/module/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.js +99 -0
  35. package/lib/module/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.js.map +1 -0
  36. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame-reader.js +4 -2
  37. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame-reader.js.map +1 -1
  38. package/lib/module/modules/bt-management/services/devices/lepu/lepu.session.js +45 -0
  39. package/lib/module/modules/bt-management/services/devices/lepu/lepu.session.js.map +1 -0
  40. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +4 -4
  41. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +0 -1
  42. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
  43. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +19 -8
  44. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  45. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts +1 -0
  46. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts +2 -1
  48. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +2 -2
  50. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +6 -0
  52. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts +8 -1
  54. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +2 -1
  56. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.d.ts +20 -0
  58. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts +3 -1
  60. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.session.d.ts +17 -0
  62. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.session.d.ts.map +1 -0
  63. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +4 -1
  66. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  67. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts +1 -0
  68. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  69. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts +2 -1
  70. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts.map +1 -1
  71. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +2 -2
  72. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
  73. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +6 -0
  74. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  75. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts +8 -1
  76. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts.map +1 -1
  77. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +2 -1
  78. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
  79. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.d.ts +20 -0
  80. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.encryption-handshake.d.ts.map +1 -0
  81. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts +3 -1
  82. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts.map +1 -1
  83. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.session.d.ts +17 -0
  84. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.session.d.ts.map +1 -0
  85. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
  86. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  87. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +4 -1
  88. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  89. package/package.json +1 -1
@@ -31,8 +31,9 @@ const START_PATTERN_BYTES = 3;
31
31
  * protocol, which is why it is worth having once rather than once per device.
32
32
  */
33
33
  class LepuFrameReader {
34
- constructor(startBytes) {
34
+ constructor(startBytes, session) {
35
35
  this.startBytes = startBytes;
36
+ this.session = session;
36
37
  }
37
38
  readFrame(buffer) {
38
39
  const start = this.findFrameStart(buffer);
@@ -48,7 +49,8 @@ class LepuFrameReader {
48
49
  if (!this.hasValidChecksum(frame)) {
49
50
  return (0, _frameReadResults.corrupt)(start + START_PATTERN_BYTES);
50
51
  }
51
- return (0, _frameReadResults.complete)(frame, start + frameLength);
52
+ const plainFrame = this.session ? this.session.decryptFrame(frame) : frame;
53
+ return plainFrame ? (0, _frameReadResults.complete)(plainFrame, start + frameLength) : (0, _frameReadResults.corrupt)(start + frameLength);
52
54
  }
53
55
  isFrameStart(buffer, index) {
54
56
  if (!this.startBytes.includes((buffer[index] || "").toLowerCase())) {
@@ -1 +1 @@
1
- {"version":3,"names":["_calculateCrc","require","_frameReadResults","_hexToByte","_le16FromHex","COMMAND_INDEX","COMMAND_COMPLEMENT_INDEX","PAYLOAD_LENGTH_INDEX","HEADER_BYTES","CHECKSUM_BYTES","BYTE_MASK","START_PATTERN_BYTES","LepuFrameReader","constructor","startBytes","readFrame","buffer","start","findFrameStart","incomplete","droppableLeadingBytes","payloadLength","le16FromHex","frameLength","length","frame","slice","hasValidChecksum","corrupt","complete","isFrameStart","index","includes","toLowerCase","command","hexToByte","complement","lastCandidate","Math","max","checksummedBytes","declared","calculateCrc8","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.frame-reader.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_calculateCrc","require","_frameReadResults","_hexToByte","_le16FromHex","COMMAND_INDEX","COMMAND_COMPLEMENT_INDEX","PAYLOAD_LENGTH_INDEX","HEADER_BYTES","CHECKSUM_BYTES","BYTE_MASK","START_PATTERN_BYTES","LepuFrameReader","constructor","startBytes","session","readFrame","buffer","start","findFrameStart","incomplete","droppableLeadingBytes","payloadLength","le16FromHex","frameLength","length","frame","slice","hasValidChecksum","corrupt","plainFrame","decryptFrame","complete","isFrameStart","index","includes","toLowerCase","command","hexToByte","complement","lastCandidate","Math","max","checksummedBytes","declared","calculateCrc8","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.frame-reader.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LepuSession = void 0;
7
+ var _bytesToHex = require("../../../utils/bytes-to-hex.js");
8
+ var _calculateCrc = require("../../../utils/calculate-crc-8.js");
9
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
10
+ var _viatomLepuCrypto = require("../viatom/viatom-lepu-crypto.js");
11
+ var _lepuFrame = require("./lepu.frame.js");
12
+ const PAYLOAD_LENGTH_INDEX = 5;
13
+ const BITS_PER_BYTE = 8;
14
+ const BYTE_MASK = 0xff;
15
+
16
+ /**
17
+ * One connection's AES key, from the moment the device hands it over in the handshake.
18
+ *
19
+ * Requests leave encrypted and replies reach every parser in plain text. Without a key, and
20
+ * for an empty payload, frames pass through unchanged, as the vendor's own client does.
21
+ */
22
+ class LepuSession {
23
+ begin = key => {
24
+ this.key = [...key];
25
+ };
26
+ end = () => {
27
+ this.key = undefined;
28
+ };
29
+ encryptFrame = frame => this.withPayload(frame, _viatomLepuCrypto.encryptLepuPayload) ?? [...frame];
30
+
31
+ /** The frame in plain text, or `undefined` when its payload does not decrypt. */
32
+ decryptFrame = frame => this.withPayload(frame, _viatomLepuCrypto.decryptLepuPayload);
33
+ withPayload = (frame, transform) => {
34
+ const payload = (0, _lepuFrame.lepuPayloadOf)(frame).map(_hexToByte.hexToByte);
35
+ if (!this.key || payload.length === 0) {
36
+ return [...frame];
37
+ }
38
+ const transformed = transform(payload, this.key);
39
+ return transformed && rebuildFrame(frame, transformed);
40
+ };
41
+ }
42
+
43
+ /** The same header with a new payload, its length and its checksum. */
44
+ exports.LepuSession = LepuSession;
45
+ const rebuildFrame = (frame, payload) => {
46
+ const body = [...frame.slice(0, PAYLOAD_LENGTH_INDEX), (0, _bytesToHex.byteToHex)(payload.length & BYTE_MASK), (0, _bytesToHex.byteToHex)(payload.length >> BITS_PER_BYTE), ...payload.map(_bytesToHex.byteToHex)];
47
+ return [...body, (0, _bytesToHex.byteToHex)((0, _calculateCrc.calculateCrc8)(body, body.length))];
48
+ };
49
+ //# sourceMappingURL=lepu.session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_bytesToHex","require","_calculateCrc","_hexToByte","_viatomLepuCrypto","_lepuFrame","PAYLOAD_LENGTH_INDEX","BITS_PER_BYTE","BYTE_MASK","LepuSession","begin","key","end","undefined","encryptFrame","frame","withPayload","encryptLepuPayload","decryptFrame","decryptLepuPayload","transform","payload","lepuPayloadOf","map","hexToByte","length","transformed","rebuildFrame","exports","body","slice","byteToHex","calculateCrc8"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.session.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAKA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,MAAMK,oBAAoB,GAAG,CAAC;AAC9B,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,SAAS,GAAG,IAAI;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,CAAC;EAGTC,KAAK,GAAIC,GAAsB,IAAW;IAC/C,IAAI,CAACA,GAAG,GAAG,CAAC,GAAGA,GAAG,CAAC;EACrB,CAAC;EAEMC,GAAG,GAAGA,CAAA,KAAY;IACvB,IAAI,CAACD,GAAG,GAAGE,SAAS;EACtB,CAAC;EAEMC,YAAY,GAAIC,KAAwB,IAC7C,IAAI,CAACC,WAAW,CAACD,KAAK,EAAEE,oCAAkB,CAAC,IAAI,CAAC,GAAGF,KAAK,CAAC;;EAE3D;EACOG,YAAY,GAAIH,KAAwB,IAC7C,IAAI,CAACC,WAAW,CAACD,KAAK,EAAEI,oCAAkB,CAAC;EAErCH,WAAW,GAAGA,CACpBD,KAAwB,EACxBK,SAA8E,KACrD;IACzB,MAAMC,OAAO,GAAG,IAAAC,wBAAa,EAACP,KAAK,CAAC,CAACQ,GAAG,CAACC,oBAAS,CAAC;IAEnD,IAAI,CAAC,IAAI,CAACb,GAAG,IAAIU,OAAO,CAACI,MAAM,KAAK,CAAC,EAAE;MACrC,OAAO,CAAC,GAAGV,KAAK,CAAC;IACnB;IAEA,MAAMW,WAAW,GAAGN,SAAS,CAACC,OAAO,EAAE,IAAI,CAACV,GAAG,CAAC;IAEhD,OAAOe,WAAW,IAAIC,YAAY,CAACZ,KAAK,EAAEW,WAAW,CAAC;EACxD,CAAC;AACH;;AAEA;AAAAE,OAAA,CAAAnB,WAAA,GAAAA,WAAA;AACA,MAAMkB,YAAY,GAAGA,CACnBZ,KAAwB,EACxBM,OAA0B,KACb;EACb,MAAMQ,IAAI,GAAG,CACX,GAAGd,KAAK,CAACe,KAAK,CAAC,CAAC,EAAExB,oBAAoB,CAAC,EACvC,IAAAyB,qBAAS,EAACV,OAAO,CAACI,MAAM,GAAGjB,SAAS,CAAC,EACrC,IAAAuB,qBAAS,EAACV,OAAO,CAACI,MAAM,IAAIlB,aAAa,CAAC,EAC1C,GAAGc,OAAO,CAACE,GAAG,CAACQ,qBAAS,CAAC,CAC1B;EAED,OAAO,CAAC,GAAGF,IAAI,EAAE,IAAAE,qBAAS,EAAC,IAAAC,2BAAa,EAACH,IAAI,EAAEA,IAAI,CAACJ,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC","ignoreList":[]}
@@ -27,10 +27,10 @@ var _checkmeProtocol = require("../checkme/checkme.protocol.js");
27
27
  * - **The payload layout.** Every product decodes differently, and a guessed offset yields
28
28
  * a plausible wrong reading rather than an error. Declared cases are the caller's.
29
29
  *
30
- * Some of these products negotiate encryption in the vendor app (`Bp2`, `Er2` and the
31
- * oximeters do; `Er1`, `Er3`, `Bp3` and `Lepod` do not). The SDK speaks the cleartext
32
- * protocol, which is what the BP2 already runs on in production, so a product that turns out
33
- * to require the handshake will identify itself and then stop rather than mis-report.
30
+ * A product whose advertisement offers or requires encryption gets the vendor's handshake on
31
+ * the standard protocol first (`withLepuEncryption`); the rest speak it in cleartext, as the
32
+ * BP2 does in production. The oxygen protocol has no handshake, so its declarations refuse an
33
+ * advertisement that requires one (`rejectEncryptionAtBytes`).
34
34
  */
35
35
 
36
36
  /**
@@ -69,7 +69,6 @@ const viatomBpMonitor = (advertisedName, params) => {
69
69
  clockSync: "supported",
70
70
  clockSyncProtocol: BP3_MODEL_NAMES.includes(advertisedName) ? "bp3" : "bp2",
71
71
  fileTransfer: BP3_MODEL_NAMES.includes(advertisedName) ? "bp3" : "bp2",
72
- rejectEncryptionAtBytes: [4],
73
72
  pollCommand: RT_DATA,
74
73
  pollIntervalMs: 200,
75
74
  minLengthBytes: MIN_LENGTH_BYTES,
@@ -1 +1 @@
1
- {"version":3,"names":["_le32FromHex","require","_defineCustomDevice","_bp2Files","_lepuNameMatch","_lepuTransports","_tmbBpHandler","_viatomBpEcgHandler","_viatomBpMonitorCases","RT_DATA","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","RESULT_CODE_INDEX","DEVICE_TIME_INDEX","rejectFailedResult","reading","frame","resultCode","Number","parseInt","Error","toString","padStart","recordedAt","length","recordedAtFromLocalSeconds","le32FromHex","undefined","viatomBpMonitor","advertisedName","params","isBp3","BP3_MODEL_NAMES","includes","hasEcg","lepuDevice","id","toLowerCase","replace","nameMatch","lepuNameMatch","clockSync","clockSyncProtocol","fileTransfer","rejectEncryptionAtBytes","pollCommand","pollIntervalMs","minLengthBytes","caseSelectorBytes","cases","BP3_ECG_CASES","BP3_CASES","BP2_CASES","BP2_ECG_CASES","map","each","decorateReading","createFrameHandler","createViatomFrameHandler","expectedDeviceTypes","exports","bp2aMonitor","bp2tMonitor","bp2wMonitor","bp2vMonitor","lpBp2wMonitor","TMB_SERVICE","TMB_WRITE","TMB_ACK","TMB_NOTIFY","TMB_INDICATE","tmbBpMonitor","defineCustomDevice","stuckDataTimeoutMs","preferredMtu","tmb","serviceUuid","writeUuid","ackUuid","services","uuid","monitor","selector","kind","createTmbBloodPressureFrameHandler","TMB_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bp-monitors.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_le32FromHex","require","_defineCustomDevice","_bp2Files","_lepuNameMatch","_lepuTransports","_tmbBpHandler","_viatomBpEcgHandler","_viatomBpMonitorCases","RT_DATA","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","RESULT_CODE_INDEX","DEVICE_TIME_INDEX","rejectFailedResult","reading","frame","resultCode","Number","parseInt","Error","toString","padStart","recordedAt","length","recordedAtFromLocalSeconds","le32FromHex","undefined","viatomBpMonitor","advertisedName","params","isBp3","BP3_MODEL_NAMES","includes","hasEcg","lepuDevice","id","toLowerCase","replace","nameMatch","lepuNameMatch","clockSync","clockSyncProtocol","fileTransfer","pollCommand","pollIntervalMs","minLengthBytes","caseSelectorBytes","cases","BP3_ECG_CASES","BP3_CASES","BP2_CASES","BP2_ECG_CASES","map","each","decorateReading","createFrameHandler","createViatomFrameHandler","expectedDeviceTypes","exports","bp2aMonitor","bp2tMonitor","bp2wMonitor","bp2vMonitor","lpBp2wMonitor","TMB_SERVICE","TMB_WRITE","TMB_ACK","TMB_NOTIFY","TMB_INDICATE","tmbBpMonitor","defineCustomDevice","stuckDataTimeoutMs","preferredMtu","tmb","serviceUuid","writeUuid","ackUuid","services","uuid","monitor","selector","kind","createTmbBloodPressureFrameHandler","TMB_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bp-monitors.ts"],"mappings":"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","ignoreList":[]}
@@ -41,16 +41,22 @@ const RT_DATA = 0x03;
41
41
  /** The ER3 answers its realtime data on a different opcode from the rest of the range. */
42
42
  const ER3_RT_DATA = 0x06;
43
43
  const HEART_RATE_UNIT = "bpm";
44
+
45
+ /** The vendor's own client polls realtime at this pace. */
46
+ const POLL_INTERVAL_MS = 500;
47
+
48
+ /** The run status: the current state in the low nibble, the previous one above it. */
49
+ const RUN_STATUS_BYTE = 15;
50
+ const RECORDING = "2";
44
51
  /** ER1, ER2 and ER3 share one parameter block: the heart rate opens it. */
45
52
  const ER_HEART_RATE_BYTES = [7, 8];
46
53
  /**
47
- * Declares one recorder, reporting the heart rate from its realtime frame.
54
+ * Declares one recorder, reporting the heart rate from its realtime frame while it records.
48
55
  *
49
- * A recorder that is not against the skin reports a rate outside what a heart can beat at,
50
- * so it is discarded rather than reported. The device marks that condition in bits of a
51
- * status byte, which a declaration cannot select on, so a recorder left connected and unworn
52
- * reports a decoding failure on each poll. Reading those bits quietly needs a device class.
56
+ * Every other run status - idle, preparing, saving, lead off - leaves the device connected
57
+ * rather than measuring, so an unworn recorder is never shown as taking a reading.
53
58
  */
59
+ const byteHex = value => value.toString(16).padStart(2, "0");
54
60
  const declareRecorder = (advertisedName, profile, params) => (0, _lepuTransports.lepuDevice)({
55
61
  id: params.id ?? `viatom-${advertisedName.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`,
56
62
  nameMatch: params.nameMatch ?? (0, _lepuNameMatch.lepuNameMatch)(advertisedName),
@@ -61,10 +67,11 @@ const declareRecorder = (advertisedName, profile, params) => (0, _lepuTransports
61
67
  emit: "none"
62
68
  },
63
69
  pollCommand: profile.pollCommand,
64
- minLengthBytes: profile.heartRateBytes[1] + 1,
65
- caseSelectorBytes: [1],
70
+ pollIntervalMs: POLL_INTERVAL_MS,
71
+ minLengthBytes: RUN_STATUS_BYTE + 1,
72
+ caseSelectorBytes: [1, RUN_STATUS_BYTE],
66
73
  cases: [{
67
- selector: profile.pollCommand.toString(16).padStart(2, "0"),
74
+ selector: `${byteHex(profile.pollCommand)}?${RECORDING}`,
68
75
  kind: "result",
69
76
  measurementTypeKey: _next.MeasurementTypeKey.heartRate,
70
77
  description: "Realtime parameters and waveform",
@@ -75,6 +82,10 @@ const declareRecorder = (advertisedName, profile, params) => (0, _lepuTransports
75
82
  encoding: "uint",
76
83
  unit: HEART_RATE_UNIT
77
84
  }]
85
+ }, {
86
+ selector: `${byteHex(profile.pollCommand)}??`,
87
+ kind: "idle",
88
+ description: "Realtime frame while not recording"
78
89
  }],
79
90
  ...(params.expectedDeviceTypes ? {
80
91
  expectedDeviceTypes: params.expectedDeviceTypes
@@ -1 +1 @@
1
- {"version":3,"names":["_next","require","_lepuNameMatch","_lepuTransports","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","ER_HEART_RATE_BYTES","declareRecorder","advertisedName","profile","params","lepuDevice","id","toLowerCase","replace","nameMatch","lepuNameMatch","transport","clockSync","sessionPolicy","minSamples","emit","pollCommand","minLengthBytes","heartRateBytes","caseSelectorBytes","cases","selector","toString","padStart","kind","measurementTypeKey","MeasurementTypeKey","heartRate","description","fields","name","byteIndexes","byteOrder","encoding","unit","expectedDeviceTypes","fileTransfer","undefined","DECODED_ECG_MODEL_NAMES","has","ecgFileDecoder","er1Recorder","exports","er2Recorder","er3Recorder","ER1_MODEL_NAMES","ER2_MODEL_NAMES","Set","ER3_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recorders.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_next","require","_lepuNameMatch","_lepuTransports","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","POLL_INTERVAL_MS","RUN_STATUS_BYTE","RECORDING","ER_HEART_RATE_BYTES","byteHex","value","toString","padStart","declareRecorder","advertisedName","profile","params","lepuDevice","id","toLowerCase","replace","nameMatch","lepuNameMatch","transport","clockSync","sessionPolicy","minSamples","emit","pollCommand","pollIntervalMs","minLengthBytes","caseSelectorBytes","cases","selector","kind","measurementTypeKey","MeasurementTypeKey","heartRate","description","fields","name","byteIndexes","heartRateBytes","byteOrder","encoding","unit","expectedDeviceTypes","fileTransfer","undefined","DECODED_ECG_MODEL_NAMES","has","ecgFileDecoder","er1Recorder","exports","er2Recorder","er3Recorder","ER1_MODEL_NAMES","ER2_MODEL_NAMES","Set","ER3_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recorders.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMG,OAAO,GAAG,IAAI;;AAEpB;AACA,MAAMC,WAAW,GAAG,IAAI;AAExB,MAAMC,eAAe,GAAG,KAAK;;AAE7B;AACA,MAAMC,gBAAgB,GAAG,GAAG;;AAE5B;AACA,MAAMC,eAAe,GAAG,EAAE;AAC1B,MAAMC,SAAS,GAAG,GAAG;AAerB;AACA,MAAMC,mBAAqC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAoBpD;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAO,GAAIC,KAAa,IAAaA,KAAK,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAE9E,MAAMC,eAAe,GAAGA,CACtBC,cAAsB,EACtBC,OAAmB,EACnBC,MAAuB,KAEvB,IAAAC,0BAAU,EAAC;EACTC,EAAE,EAAEF,MAAM,CAACE,EAAE,IAAI,UAAUJ,cAAc,CAACK,WAAW,CAAC,CAAC,CAACC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;EACrFC,SAAS,EAAEL,MAAM,CAACK,SAAS,IAAI,IAAAC,4BAAa,EAACR,cAAc,CAAC;EAC5DS,SAAS,EAAER,OAAO,CAACQ,SAAS;EAC5BC,SAAS,EAAE,WAAW;EACtBC,aAAa,EAAE;IAAEC,UAAU,EAAE,CAAC;IAAEC,IAAI,EAAE;EAAO,CAAC;EAC9CC,WAAW,EAAEb,OAAO,CAACa,WAAW;EAChCC,cAAc,EAAExB,gBAAgB;EAChCyB,cAAc,EAAExB,eAAe,GAAG,CAAC;EACnCyB,iBAAiB,EAAE,CAAC,CAAC,EAAEzB,eAAe,CAAC;EACvC0B,KAAK,EAAE,CACL;IACEC,QAAQ,EAAE,GAAGxB,OAAO,CAACM,OAAO,CAACa,WAAW,CAAC,IAAIrB,SAAS,EAAE;IACxD2B,IAAI,EAAE,QAAQ;IACdC,kBAAkB,EAAEC,wBAAkB,CAACC,SAAS;IAChDC,WAAW,EAAE,kCAAkC;IAC/CC,MAAM,EAAE,CACN;MACEC,IAAI,EAAE,WAAW;MACjBC,WAAW,EAAE,CAAC,GAAG1B,OAAO,CAAC2B,cAAc,CAAC;MACxCC,SAAS,EAAE,QAAQ;MACnBC,QAAQ,EAAE,MAAM;MAChBC,IAAI,EAAEzC;IACR,CAAC;EAEL,CAAC,EACD;IACE6B,QAAQ,EAAE,GAAGxB,OAAO,CAACM,OAAO,CAACa,WAAW,CAAC,IAAI;IAC7CM,IAAI,EAAE,MAAM;IACZI,WAAW,EAAE;EACf,CAAC,CACF;EACD,IAAItB,MAAM,CAAC8B,mBAAmB,GAC1B;IAAEA,mBAAmB,EAAE9B,MAAM,CAAC8B;EAAoB,CAAC,GACnD,CAAC,CAAC,CAAC;EACP,IAAI/B,OAAO,CAACgC,YAAY,KAAKC,SAAS,GAClC,CAAC,CAAC,GACF;IAAED,YAAY,EAAEhC,OAAO,CAACgC;EAAa,CAAC,CAAC;EAC3C,IAAIE,uBAAuB,CAACC,GAAG,CAACpC,cAAc,CAAC,GAC3C;IAAEqC,cAAc,EAAE;EAA6B,CAAC,GAChD,CAAC,CAAC;AACR,CAAC,CAAC;;AAEJ;AACA,MAAMC,WAAW,GAAGA,CAClBtC,cAAsB,EACtBE,MAAuB,KAEvBH,eAAe,CACbC,cAAc,EACd;EACEc,WAAW,EAAE1B,OAAO;EACpBwC,cAAc,EAAElC,mBAAmB;EACnCe,SAAS,EAAE,UAAU;EACrBwB,YAAY,EAAEjC,cAAc,KAAK,OAAO,GAAGkC,SAAS,GAAG;AACzD,CAAC,EACDhC,MACF,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AALAqC,OAAA,CAAAD,WAAA,GAAAA,WAAA;AAMA,MAAME,WAAW,GAAGA,CAClBxC,cAAsB,EACtBE,MAAuB,KAEvBH,eAAe,CACbC,cAAc,EACd;EACEc,WAAW,EAAE1B,OAAO;EACpBwC,cAAc,EAAElC,mBAAmB;EACnCe,SAAS,EAAE,kBAAkB;EAC7BwB,YAAY,EAAE;AAChB,CAAC,EACD/B,MACF,CAAC;;AAEH;AAAAqC,OAAA,CAAAC,WAAA,GAAAA,WAAA;AACA,MAAMC,WAAW,GAAGA,CAClBzC,cAAsB,EACtBE,MAAuB,KAEvBH,eAAe,CACbC,cAAc,EACd;EACEc,WAAW,EAAEzB,WAAW;EACxBuC,cAAc,EAAElC,mBAAmB;EACnCe,SAAS,EAAE,UAAU;EACrBwB,YAAY,EAAE;AAChB,CAAC,EACD/B,MACF,CAAC;;AAEH;AAAAqC,OAAA,CAAAE,WAAA,GAAAA,WAAA;AACA,MAAMC,eAAkC,GAAAH,OAAA,CAAAG,eAAA,GAAG,CACzC,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,WAAW,CACZ;;AAED;AACA,MAAMC,eAAkC,GAAAJ,OAAA,CAAAI,eAAA,GAAG,CACzC,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,CACP;;AAED;AACA,MAAMR,uBAAuB,GAAG,IAAIS,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;AAEpE;AACA,MAAMC,eAAkC,GAAAN,OAAA,CAAAM,eAAA,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC","ignoreList":[]}
@@ -15,6 +15,8 @@ import { i16FromHex } from "../../../utils/i-16-from-hex.js";
15
15
  import { le16FromHex } from "../../../utils/le-16-from-hex.js";
16
16
  import { le32FromHex } from "../../../utils/le-32-from-hex.js";
17
17
  import { BTManagedDevice } from "../bt-managed-device.js";
18
+ import { withLepuEncryption } from "../lepu/lepu.encryption-handshake.js";
19
+ import { LepuSession } from "../lepu/lepu.session.js";
18
20
  import { decodeBP2File, recordedAtFromLocalSeconds } from "./bp2.files.js";
19
21
  import { BP2FrameReader } from "./bp2.frame-reader.js";
20
22
  import { BP2HistorySequencer } from "./bp2.history-sequencer.js";
@@ -64,11 +66,12 @@ class BP2Device extends BTManagedDevice {
64
66
  this.reportedFileNames.clear();
65
67
  const service = bp2MainServices[0];
66
68
  const write = service.writeUuid;
67
- return new BP2HistorySequencer({
68
- write: {
69
- serviceUuid: service.uuid,
70
- characteristicUuid: write.uuid
71
- },
69
+ const commandTarget = {
70
+ serviceUuid: service.uuid,
71
+ characteristicUuid: write.uuid
72
+ };
73
+ const history = new BP2HistorySequencer({
74
+ write: commandTarget,
72
75
  onFile: this.handleHistoryFile,
73
76
  onError: this.handleHistoryError,
74
77
  onTransferFinished: this.reportPendingResults,
@@ -80,8 +83,15 @@ class BP2Device extends BTManagedDevice {
80
83
  skipFiles: this.deliveredFileNames,
81
84
  clockSync: this.clockSync
82
85
  });
86
+ return withLepuEncryption(history, {
87
+ write: commandTarget,
88
+ session: this.lepuSession,
89
+ manufacturerData: this.device.manufacturerData ?? undefined,
90
+ onRefused: this.handleHistoryError
91
+ });
83
92
  };
84
- frameReader = new BP2FrameReader();
93
+ lepuSession = new LepuSession();
94
+ frameReader = new BP2FrameReader(this.lepuSession);
85
95
  preferredMtu = PREFERRED_MTU;
86
96
  handleSuccessResult(successResult, collectedValues) {
87
97
  this.collectedValues = collectedValues;
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","sentryLogger","bloodPressureTranslatedExceptionMap","MeasurementFeedbackKey","PREFERRED_MTU","BloodPressureStates","CaseType","DeviceStatus","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","decodeBP2File","recordedAtFromLocalSeconds","BP2FrameReader","BP2HistorySequencer","bp2MainServices","BP2_ECG_MILLIVOLTS_PER_COUNT","BP2_LIVE_ECG_SAMPLES_PER_SECOND","BP2_FILE_ECG_SAMPLES_PER_SECOND","BP2_ECG_NO_VALUE","BP2_BP_NO_VALUE","BP2_PULSE_NO_VALUES","Set","BP2Device","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","mainServices","stuckDataTimeout","constructor","device","params","clockSync","deliveredFileNames","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","frameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","addDeviceTimestamp","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","lenH","dataLen","dataStart","dataEnd","data","slice","onDeviceStatusChanged","MEASURING","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","result","recordedAt","length","bpMeasurement","status","diastolic","systolic","heartRate","DEVICE_ERROR","REGULAR","errorString","get","DEVICE_INTERRUPTED","has","signature","signatureFor","set","join","diagnosticResult","file","name","decoded","content","pending","add","matchesPendingResult","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","samplesPerSecond","ecgMeasurement","POOR_WAVEFORM","LEAD_OFF","INSUFFICIENT_DATA_LENGTH","expectedSamples","toleranceSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","sentryLogger","bloodPressureTranslatedExceptionMap","MeasurementFeedbackKey","PREFERRED_MTU","BloodPressureStates","CaseType","DeviceStatus","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","withLepuEncryption","LepuSession","decodeBP2File","recordedAtFromLocalSeconds","BP2FrameReader","BP2HistorySequencer","bp2MainServices","BP2_ECG_MILLIVOLTS_PER_COUNT","BP2_LIVE_ECG_SAMPLES_PER_SECOND","BP2_FILE_ECG_SAMPLES_PER_SECOND","BP2_ECG_NO_VALUE","BP2_BP_NO_VALUE","BP2_PULSE_NO_VALUES","Set","BP2Device","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","mainServices","stuckDataTimeout","constructor","device","params","clockSync","deliveredFileNames","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","commandTarget","serviceUuid","uuid","characteristicUuid","history","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","session","lepuSession","manufacturerData","onRefused","frameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","addDeviceTimestamp","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","lenH","dataLen","dataStart","dataEnd","data","slice","onDeviceStatusChanged","MEASURING","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","result","recordedAt","length","bpMeasurement","status","diastolic","systolic","heartRate","DEVICE_ERROR","REGULAR","errorString","get","DEVICE_INTERRUPTED","has","signature","signatureFor","set","join","diagnosticResult","file","name","decoded","content","pending","add","matchesPendingResult","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","samplesPerSecond","ecgMeasurement","POOR_WAVEFORM","LEAD_OFF","INSUFFICIENT_DATA_LENGTH","expectedSamples","toleranceSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import { LepuFrameReader } from "../lepu/lepu.frame-reader.js";
4
-
5
4
  /** The start byte the BP2 and most of its family use. */
6
5
  const BP2_START_BYTES = ["a5"];
7
6
 
@@ -12,8 +11,8 @@ const BP2_START_BYTES = ["a5"];
12
11
  * thing that makes it a BP2 is which start byte it accepts.
13
12
  */
14
13
  export class BP2FrameReader extends LepuFrameReader {
15
- constructor() {
16
- super(BP2_START_BYTES);
14
+ constructor(session) {
15
+ super(BP2_START_BYTES, session);
17
16
  }
18
17
  }
19
18
  //# sourceMappingURL=bp2.frame-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LepuFrameReader","BP2_START_BYTES","BP2FrameReader","constructor"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.frame-reader.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,8BAA2B;;AAE3D;AACA,MAAMC,eAAe,GAAG,CAAC,IAAI,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,SAASF,eAAe,CAAC;EAC3CG,WAAWA,CAAA,EAAG;IACnB,KAAK,CAACF,eAAe,CAAC;EACxB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["LepuFrameReader","BP2_START_BYTES","BP2FrameReader","constructor","session"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.frame-reader.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,8BAA2B;AAG3D;AACA,MAAMC,eAAe,GAAG,CAAC,IAAI,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,SAASF,eAAe,CAAC;EAC3CG,WAAWA,CAACC,OAAqB,EAAE;IACxC,KAAK,CAACH,eAAe,EAAEG,OAAO,CAAC;EACjC;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["sentryLogger","viatomOxygenUsesV2","LepuCommandBuilder","LepuIdentityGate","lepuTransports","DEFAULT_START_BYTE","recordLepuIdentity","deviceData","info","sn","serialNumber","deviceType","protocolMaxLength","createLepuSequencer","lepu","report","clockSync","manufacturerData","selected","selectLepu","write","serviceUuid","characteristicUuid","builder","requestStartByte","startBytes","fixedSequence","protocol","writeWithoutResponse","setClockBeforeInfo","clockSyncProtocol","expectedDeviceTypes","pollCommand","undefined","pollIntervalMs","rejectEncryptionAtBytes","onIdentified","onRefused","manufacturerDataProtocol","transport","aw1","writeUuid"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sentryLogger","viatomOxygenUsesV2","LepuCommandBuilder","LepuIdentityGate","lepuTransports","DEFAULT_START_BYTE","recordLepuIdentity","deviceData","info","sn","serialNumber","deviceType","protocolMaxLength","createLepuSequencer","lepu","report","clockSync","manufacturerData","selected","selectLepu","write","serviceUuid","characteristicUuid","builder","requestStartByte","startBytes","fixedSequence","protocol","writeWithoutResponse","setClockBeforeInfo","clockSyncProtocol","expectedDeviceTypes","pollCommand","undefined","pollIntervalMs","rejectEncryptionAtBytes","onIdentified","onRefused","manufacturerDataProtocol","transport","aw1","writeUuid"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,9 @@ import { decodeBP2File } from "../bp2/bp2.files.js";
10
10
  import { BTManagedDevice } from "../bt-managed-device.js";
11
11
  import { LepuCommandBuilder } from "../lepu/lepu.command-builder.js";
12
12
  import { LepuEcgTransferSequencer } from "../lepu/lepu.ecg-transfer.js";
13
+ import { withLepuEncryption } from "../lepu/lepu.encryption-handshake.js";
13
14
  import { LepuFrameReader } from "../lepu/lepu.frame-reader.js";
15
+ import { LepuSession } from "../lepu/lepu.session.js";
14
16
  import { TmbCommandSequencer } from "../tmb/tmb.command-sequencer.js";
15
17
  import { TmbFrameReader } from "../tmb/tmb.frame-reader.js";
16
18
  import { decodeViatomBp3File } from "../viatom/viatom.bp3-files.js";
@@ -27,8 +29,10 @@ import { createLepuSequencer, recordLepuIdentity, selectLepu } from "./custom-le
27
29
  */
28
30
  export class CustomDevice extends BTManagedDevice {
29
31
  reportedHistoryIds = new Set();
32
+ recordingEnded = false;
30
33
  validators = new Map();
31
34
  sessionAggregates = new Map();
35
+ lepuSession = new LepuSession();
32
36
  constructor(device, params, definition) {
33
37
  super(device, {
34
38
  ...params,
@@ -93,11 +97,11 @@ export class CustomDevice extends BTManagedDevice {
93
97
  if (!lepu) {
94
98
  return;
95
99
  }
96
- this.frameReader = new LepuFrameReader(lepu.startBytes);
100
+ this.frameReader = new LepuFrameReader(lepu.startBytes, this.lepuSession);
97
101
  this.createCommandSequencer = () => {
98
102
  if (lepu.fileTransfer !== undefined) {
99
103
  this.reportedHistoryIds.clear();
100
- return new LepuEcgTransferSequencer({
104
+ return this.withEncryption(lepu, new LepuEcgTransferSequencer({
101
105
  write: {
102
106
  serviceUuid: lepu.write.serviceUuid,
103
107
  characteristicUuid: lepu.write.characteristicUuid
@@ -112,13 +116,9 @@ export class CustomDevice extends BTManagedDevice {
112
116
  onFile: lepu.fileTransfer === "ecg" ? this.reportViatomEcgFile : lepu.fileTransfer === "bp2" ? this.reportViatomBp2File : this.reportViatomBp3File,
113
117
  skipFiles: lepu.fileTransfer === "bp3" ? undefined : this.deliveredFileNames,
114
118
  acceptFile: lepu.fileTransfer === "ecg" ? name => lepu.ecgFileDecoder !== undefined && /^R/i.test(name) : lepu.fileTransfer === "bp3" ? name => /^bp\.list$/i.test(name) : undefined,
115
- pollCommand: lepu.fileTransfer === "ecg" ? undefined : lepu.pollCommand,
116
- pollIntervalMs: lepu.fileTransfer === "ecg" ? undefined : lepu.pollIntervalMs,
117
- afterTransfer: lepu.fileTransfer === "ecg" && lepu.pollCommand ? () => [{
118
- serviceUuid: lepu.write.serviceUuid,
119
- characteristicUuid: lepu.write.characteristicUuid,
120
- frame: new LepuCommandBuilder(lepu.startBytes[0] ?? "a5").build(lepu.pollCommand)
121
- }] : undefined,
119
+ pollCommand: lepu.pollCommand,
120
+ pollIntervalMs: lepu.pollIntervalMs,
121
+ shouldStartTransfer: lepu.fileTransfer === "ecg" ? this.takeRecordingEnded : undefined,
122
122
  onError: reason => this.onError?.(new Error(`Viatom ECG: ${reason}`)),
123
123
  onProgress: progress => this.onConnectionEvent?.({
124
124
  deviceData: this.deviceData,
@@ -128,16 +128,29 @@ export class CustomDevice extends BTManagedDevice {
128
128
  total: progress.totalBytes
129
129
  }
130
130
  })
131
- });
131
+ }));
132
132
  }
133
- return createLepuSequencer(lepu, {
133
+ return this.withEncryption(lepu, createLepuSequencer(lepu, {
134
134
  onIdentified: this.onIdentified,
135
135
  onRefused: this.onIdentityRefused
136
- }, clockSync, this.device.manufacturerData ?? undefined);
136
+ }, clockSync, this.device.manufacturerData ?? undefined));
137
137
  };
138
138
  }
139
+
140
+ /** The standard family runs the vendor's encryption handshake first when it advertises one. */
141
+ withEncryption = (lepu, sequencer) => lepu.protocol === undefined ? withLepuEncryption(sequencer, {
142
+ write: {
143
+ serviceUuid: lepu.write.serviceUuid,
144
+ characteristicUuid: lepu.write.characteristicUuid
145
+ },
146
+ session: this.lepuSession,
147
+ manufacturerData: this.device.manufacturerData ?? undefined,
148
+ startByte: lepu.startBytes[0],
149
+ onRefused: this.onIdentityRefused
150
+ }) : sequencer;
139
151
  reportViatomEcgFile = file => {
140
152
  const decoded = decodeViatomEcgRecording(file.content);
153
+ this.deliveredFileNames.add(file.name);
141
154
  if (decoded.samples.length === 0) {
142
155
  this.onError?.(new Error(`Viatom ECG: file "${file.name}" does not decode to its recorded length.`));
143
156
  return;
@@ -263,8 +276,16 @@ export class CustomDevice extends BTManagedDevice {
263
276
  });
264
277
  }
265
278
 
279
+ /** True once after a measurement ends, when the device may have stored a new record. */
280
+ takeRecordingEnded = () => {
281
+ const ended = this.recordingEnded;
282
+ this.recordingEnded = false;
283
+ return ended;
284
+ };
285
+
266
286
  /** Emits a completed session before the state machine returns to CONNECTED. */
267
287
  handleMeasurementEnd() {
288
+ this.recordingEnded = true;
268
289
  const policy = this.sessionPolicy;
269
290
  if (!policy) {
270
291
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","decodeBP2File","BTManagedDevice","LepuCommandBuilder","LepuEcgTransferSequencer","LepuFrameReader","TmbCommandSequencer","TmbFrameReader","decodeViatomBp3File","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","selectLepu","CustomDevice","reportedHistoryIds","Set","validators","Map","sessionAggregates","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","syncsCurrentTime","preferredMtu","declareLepuProtocol","declareTmbProtocol","declareSequencerFactory","frames","forEach","frame","set","create","createCommandSequencer","deviceId","id","recordCursorStorage","tmb","protocol","startBytes","fileTransfer","clear","characteristicUuid","builder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","afterTransfer","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","file","decoded","content","samples","length","onResult","measurementTypeKey","ecg","caseType","RESULT","diagramPoints","duration","recordedAt","recordingId","reportHistoryOnce","has","add","info","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","policyFor","key","existing","readingFields","fieldNames","recordOffset","decorate","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","discard","reportMeasurement","parsedFields","find","message"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","decodeBP2File","BTManagedDevice","LepuCommandBuilder","LepuEcgTransferSequencer","withLepuEncryption","LepuFrameReader","LepuSession","TmbCommandSequencer","TmbFrameReader","decodeViatomBp3File","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","selectLepu","CustomDevice","reportedHistoryIds","Set","recordingEnded","validators","Map","sessionAggregates","lepuSession","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","syncsCurrentTime","preferredMtu","declareLepuProtocol","declareTmbProtocol","declareSequencerFactory","frames","forEach","frame","set","create","createCommandSequencer","deviceId","id","recordCursorStorage","tmb","protocol","startBytes","fileTransfer","clear","withEncryption","characteristicUuid","builder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","shouldStartTransfer","takeRecordingEnded","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","sequencer","session","startByte","file","decoded","content","add","samples","length","onResult","measurementTypeKey","ecg","caseType","RESULT","diagramPoints","duration","recordedAt","recordingId","reportHistoryOnce","has","info","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","ended","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","policyFor","key","existing","readingFields","fieldNames","recordOffset","decorate","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","discard","reportMeasurement","parsedFields","find","message"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}