@ovok/native 1.6.25 → 1.6.26

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 (111) hide show
  1. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +7 -0
  2. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/devices/aoj/aoj.thermometers.js +8 -3
  4. package/lib/commonjs/modules/bt-management/services/devices/aoj/aoj.thermometers.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +7 -2
  6. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  7. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.commands.js +2 -0
  8. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.commands.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +77 -0
  10. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -0
  11. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +1 -1
  12. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +2 -2
  14. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +6 -0
  16. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
  17. package/lib/commonjs/modules/bt-management/services/devices/spo/pc60fw.frame-reader.js +71 -0
  18. package/lib/commonjs/modules/bt-management/services/devices/spo/pc60fw.frame-reader.js.map +1 -0
  19. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js +31 -5
  20. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.main-services.js +5 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.main-services.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +1 -1
  24. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
  25. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +8 -1
  26. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  27. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.lepod.js +1 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.lepod.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/utils/calculate-crc-8-maxim.js +24 -0
  30. package/lib/commonjs/modules/bt-management/utils/calculate-crc-8-maxim.js.map +1 -0
  31. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +7 -0
  32. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
  33. package/lib/module/modules/bt-management/services/devices/aoj/aoj.thermometers.js +8 -3
  34. package/lib/module/modules/bt-management/services/devices/aoj/aoj.thermometers.js.map +1 -1
  35. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +7 -2
  36. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  37. package/lib/module/modules/bt-management/services/devices/lepu/lepu.commands.js +2 -0
  38. package/lib/module/modules/bt-management/services/devices/lepu/lepu.commands.js.map +1 -1
  39. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +73 -0
  40. package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -0
  41. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +1 -1
  42. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -1
  43. package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +2 -2
  44. package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -1
  45. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +6 -0
  46. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
  47. package/lib/module/modules/bt-management/services/devices/spo/pc60fw.frame-reader.js +66 -0
  48. package/lib/module/modules/bt-management/services/devices/spo/pc60fw.frame-reader.js.map +1 -0
  49. package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js +31 -5
  50. package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
  51. package/lib/module/modules/bt-management/services/devices/spo/spo2.main-services.js +5 -0
  52. package/lib/module/modules/bt-management/services/devices/spo/spo2.main-services.js.map +1 -1
  53. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js +1 -1
  54. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-files.js.map +1 -1
  55. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +8 -1
  56. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
  57. package/lib/module/modules/bt-management/services/devices/viatom/viatom.lepod.js +1 -0
  58. package/lib/module/modules/bt-management/services/devices/viatom/viatom.lepod.js.map +1 -1
  59. package/lib/module/modules/bt-management/utils/calculate-crc-8-maxim.js +19 -0
  60. package/lib/module/modules/bt-management/utils/calculate-crc-8-maxim.js.map +1 -0
  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/aoj/aoj.thermometers.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts +2 -0
  65. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +41 -0
  67. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -0
  68. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +2 -0
  69. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +2 -0
  71. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +5 -0
  73. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/pc60fw.frame-reader.d.ts +8 -0
  75. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/pc60fw.frame-reader.d.ts.map +1 -0
  76. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts +5 -0
  77. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.main-services.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +2 -0
  83. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-8-maxim.d.ts +3 -0
  85. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-8-maxim.d.ts.map +1 -0
  86. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
  87. package/lib/typescript/module/src/modules/bt-management/services/devices/aoj/aoj.thermometers.d.ts.map +1 -1
  88. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  89. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts +2 -0
  90. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts.map +1 -1
  91. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +41 -0
  92. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -0
  93. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +2 -0
  94. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -1
  95. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +2 -0
  96. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -1
  97. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +5 -0
  98. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
  99. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/pc60fw.frame-reader.d.ts +8 -0
  100. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/pc60fw.frame-reader.d.ts.map +1 -0
  101. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts +5 -0
  102. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
  103. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.main-services.d.ts.map +1 -1
  104. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-files.d.ts.map +1 -1
  105. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
  106. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts.map +1 -1
  107. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +2 -0
  108. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
  109. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-8-maxim.d.ts +3 -0
  110. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-8-maxim.d.ts.map +1 -0
  111. package/package.json +1 -1
@@ -114,6 +114,9 @@ const lepuDevice = params => {
114
114
  matchByService: params.nameMatch === undefined,
115
115
  stuckDataTimeoutMs: params.stuckDataTimeoutMs ?? DEFAULT_STUCK_TIMEOUT_MS,
116
116
  preferredMtu: transport.preferredMtu,
117
+ ...(params.clockSync === undefined ? {} : {
118
+ clockSync: params.clockSync
119
+ }),
117
120
  lepu: {
118
121
  protocol: params.protocol,
119
122
  startBytes: [viatomOxygen ? "55" : START_BYTE],
@@ -126,6 +129,9 @@ const lepuDevice = params => {
126
129
  ...(params.fileTransfer === undefined ? {} : {
127
130
  fileTransfer: params.fileTransfer
128
131
  }),
132
+ ...(params.ecgFileDecoder === undefined ? {} : {
133
+ ecgFileDecoder: params.ecgFileDecoder
134
+ }),
129
135
  ...(params.pollCommand === undefined ? {} : {
130
136
  pollCommand: params.pollCommand
131
137
  }),
@@ -1 +1 @@
1
- {"version":3,"names":["defineCustomDevice","STANDARD_SERVICE","STANDARD_WRITE","STANDARD_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","PREFERRED_MTU","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","id","nameMatch","matchByService","undefined","stuckDataTimeoutMs","lepu","startBytes","requestStartByte","write","characteristicUuid","expectedDeviceTypes","fileTransfer","pollCommand","writeWithoutResponse","setClockBeforeInfo","services","uuid","monitor","frame","minLengthBytes","caseSelectorBytes","cases","decorateReading"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.transports.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["defineCustomDevice","STANDARD_SERVICE","STANDARD_WRITE","STANDARD_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","PREFERRED_MTU","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","id","nameMatch","matchByService","undefined","stuckDataTimeoutMs","clockSync","lepu","startBytes","requestStartByte","write","characteristicUuid","expectedDeviceTypes","fileTransfer","ecgFileDecoder","pollCommand","writeWithoutResponse","setClockBeforeInfo","services","uuid","monitor","frame","minLengthBytes","caseSelectorBytes","cases","decorateReading"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.transports.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import { FrameReadStatus } from "../../../types/frame-read-status.js";
4
+ import { calculateCrc8Maxim } from "../../../utils/calculate-crc-8-maxim.js";
5
+ import { hexToByte } from "../../../utils/hex-to-byte.js";
6
+ const HEADER = ["aa", "55"];
7
+ const LENGTH_INDEX = 3;
8
+ const HEADER_BYTES = 4;
9
+ const CHECKSUM_BYTES = 1;
10
+ const byteAt = (buffer, index) => hexToByte(buffer[index] ?? "0");
11
+
12
+ /** Reads the length-prefixed, CRC-8/MAXIM frames used by PC-60FW. */
13
+ export class Pc60FwFrameReader {
14
+ readFrame(buffer) {
15
+ const start = this.findHeader(buffer);
16
+ if (start === -1) {
17
+ return {
18
+ status: FrameReadStatus.INCOMPLETE,
19
+ consumedBytes: Math.max(0, buffer.length - 1)
20
+ };
21
+ }
22
+ if (start + HEADER_BYTES > buffer.length) {
23
+ return {
24
+ status: FrameReadStatus.INCOMPLETE,
25
+ consumedBytes: start
26
+ };
27
+ }
28
+ const payloadLength = byteAt(buffer, start + LENGTH_INDEX);
29
+ const frameLength = HEADER_BYTES + payloadLength;
30
+ if (payloadLength < CHECKSUM_BYTES) {
31
+ return {
32
+ status: FrameReadStatus.CORRUPT,
33
+ consumedBytes: start + HEADER.length
34
+ };
35
+ }
36
+ if (start + frameLength > buffer.length) {
37
+ return {
38
+ status: FrameReadStatus.INCOMPLETE,
39
+ consumedBytes: start
40
+ };
41
+ }
42
+ const frame = buffer.slice(start, start + frameLength);
43
+ const declared = byteAt(frame, frame.length - CHECKSUM_BYTES);
44
+ const actual = calculateCrc8Maxim(frame, frame.length - CHECKSUM_BYTES);
45
+ if (declared !== actual) {
46
+ return {
47
+ status: FrameReadStatus.CORRUPT,
48
+ consumedBytes: start + HEADER.length
49
+ };
50
+ }
51
+ return {
52
+ status: FrameReadStatus.COMPLETE,
53
+ consumedBytes: start + frameLength,
54
+ frame
55
+ };
56
+ }
57
+ findHeader(buffer) {
58
+ for (let index = 0; index < buffer.length - 1; index++) {
59
+ if (buffer[index]?.toLowerCase() === HEADER[0] && buffer[index + 1]?.toLowerCase() === HEADER[1]) {
60
+ return index;
61
+ }
62
+ }
63
+ return -1;
64
+ }
65
+ }
66
+ //# sourceMappingURL=pc60fw.frame-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FrameReadStatus","calculateCrc8Maxim","hexToByte","HEADER","LENGTH_INDEX","HEADER_BYTES","CHECKSUM_BYTES","byteAt","buffer","index","Pc60FwFrameReader","readFrame","start","findHeader","status","INCOMPLETE","consumedBytes","Math","max","length","payloadLength","frameLength","CORRUPT","frame","slice","declared","actual","COMPLETE","toLowerCase"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/pc60fw.frame-reader.ts"],"mappings":";;AACA,SAASA,eAAe,QAAQ,qCAAkC;AAElE,SAASC,kBAAkB,QAAQ,yCAAsC;AACzE,SAASC,SAAS,QAAQ,+BAA4B;AAEtD,MAAMC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3B,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,cAAc,GAAG,CAAC;AAExB,MAAMC,MAAM,GAAGA,CAACC,MAAyB,EAAEC,KAAa,KACtDP,SAAS,CAACM,MAAM,CAACC,KAAK,CAAC,IAAI,GAAG,CAAC;;AAEjC;AACA,OAAO,MAAMC,iBAAiB,CAAwB;EAC7CC,SAASA,CAACH,MAAyB,EAAmB;IAC3D,MAAMI,KAAK,GAAG,IAAI,CAACC,UAAU,CAACL,MAAM,CAAC;IAErC,IAAII,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,OAAO;QACLE,MAAM,EAAEd,eAAe,CAACe,UAAU;QAClCC,aAAa,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEV,MAAM,CAACW,MAAM,GAAG,CAAC;MAC9C,CAAC;IACH;IAEA,IAAIP,KAAK,GAAGP,YAAY,GAAGG,MAAM,CAACW,MAAM,EAAE;MACxC,OAAO;QAAEL,MAAM,EAAEd,eAAe,CAACe,UAAU;QAAEC,aAAa,EAAEJ;MAAM,CAAC;IACrE;IAEA,MAAMQ,aAAa,GAAGb,MAAM,CAACC,MAAM,EAAEI,KAAK,GAAGR,YAAY,CAAC;IAC1D,MAAMiB,WAAW,GAAGhB,YAAY,GAAGe,aAAa;IAEhD,IAAIA,aAAa,GAAGd,cAAc,EAAE;MAClC,OAAO;QACLQ,MAAM,EAAEd,eAAe,CAACsB,OAAO;QAC/BN,aAAa,EAAEJ,KAAK,GAAGT,MAAM,CAACgB;MAChC,CAAC;IACH;IAEA,IAAIP,KAAK,GAAGS,WAAW,GAAGb,MAAM,CAACW,MAAM,EAAE;MACvC,OAAO;QAAEL,MAAM,EAAEd,eAAe,CAACe,UAAU;QAAEC,aAAa,EAAEJ;MAAM,CAAC;IACrE;IAEA,MAAMW,KAAK,GAAGf,MAAM,CAACgB,KAAK,CAACZ,KAAK,EAAEA,KAAK,GAAGS,WAAW,CAAC;IACtD,MAAMI,QAAQ,GAAGlB,MAAM,CAACgB,KAAK,EAAEA,KAAK,CAACJ,MAAM,GAAGb,cAAc,CAAC;IAC7D,MAAMoB,MAAM,GAAGzB,kBAAkB,CAACsB,KAAK,EAAEA,KAAK,CAACJ,MAAM,GAAGb,cAAc,CAAC;IAEvE,IAAImB,QAAQ,KAAKC,MAAM,EAAE;MACvB,OAAO;QACLZ,MAAM,EAAEd,eAAe,CAACsB,OAAO;QAC/BN,aAAa,EAAEJ,KAAK,GAAGT,MAAM,CAACgB;MAChC,CAAC;IACH;IAEA,OAAO;MACLL,MAAM,EAAEd,eAAe,CAAC2B,QAAQ;MAChCX,aAAa,EAAEJ,KAAK,GAAGS,WAAW;MAClCE;IACF,CAAC;EACH;EAEQV,UAAUA,CAACL,MAAyB,EAAU;IACpD,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,MAAM,CAACW,MAAM,GAAG,CAAC,EAAEV,KAAK,EAAE,EAAE;MACtD,IACED,MAAM,CAACC,KAAK,CAAC,EAAEmB,WAAW,CAAC,CAAC,KAAKzB,MAAM,CAAC,CAAC,CAAC,IAC1CK,MAAM,CAACC,KAAK,GAAG,CAAC,CAAC,EAAEmB,WAAW,CAAC,CAAC,KAAKzB,MAAM,CAAC,CAAC,CAAC,EAC9C;QACA,OAAOM,KAAK;MACd;IACF;IAEA,OAAO,CAAC,CAAC;EACX;AACF","ignoreList":[]}
@@ -2,11 +2,13 @@
2
2
 
3
3
  import { CaseType } from "../../../types/case-type.js";
4
4
  import { BTManagedDevice } from "../bt-managed-device.js";
5
+ import { Pc60FwFrameReader } from "./pc60fw.frame-reader.js";
5
6
  import { spo2MainServices } from "./spo2.main-services.js";
6
7
  export class SPO2Device extends BTManagedDevice {
7
8
  onStreamStart = () => {};
8
9
  mainServices = spo2MainServices;
9
10
  stuckDataTimeout = 30_000;
11
+ frameReader = new Pc60FwFrameReader();
10
12
  validatePackage = pkg => {
11
13
  pkg = pkg.map(b => b.toLowerCase());
12
14
  let headIndex = -1;
@@ -37,14 +39,24 @@ export class SPO2Device extends BTManagedDevice {
37
39
  if (successResult.caseType === CaseType.STREAM || successResult.caseType === CaseType.OTHER) {
38
40
  return;
39
41
  }
40
- if ((collectedValues[9] ?? "0") !== "02") {
42
+ const status = Number.parseInt(collectedValues[9] ?? "0", 16);
43
+ if ((status & 0x02) === 0) {
44
+ if ((status & 0x04) === 0 && this.isValidParameterResult(successResult)) {
45
+ this.lastValidResult = this.withoutPerfusionMarker(successResult);
46
+ }
47
+ return true;
48
+ }
49
+ const lastValidResult = this.lastValidResult ?? (successResult.perfusionIndex === undefined ? successResult : undefined);
50
+ this.lastValidResult = undefined;
51
+ if (!lastValidResult) {
41
52
  return true;
42
53
  }
43
- if (!successResult.measurementTypeKey) {
44
- this.onError?.(new Error(`Measurement type is undefined for case ${successResult.caseType}`));
54
+ if (!lastValidResult.measurementTypeKey) {
55
+ this.onError?.(new Error(`Measurement type is undefined for case ${lastValidResult.caseType}`));
45
56
  return;
46
57
  }
47
- this.handlePulseOximeterResult(successResult);
58
+ this.handlePulseOximeterResult(lastValidResult);
59
+ return;
48
60
  }
49
61
  handlePulseOximeterResult(successResult) {
50
62
  const error = this.checkIfHasError(successResult);
@@ -55,10 +67,24 @@ export class SPO2Device extends BTManagedDevice {
55
67
  this.onResult?.(successResult);
56
68
  }
57
69
  checkIfHasError(successResult) {
58
- if (!successResult.bloodOxygen) {
70
+ if (!this.isValidParameterResult(successResult)) {
59
71
  return "feedback-messages.measurement.disturb-detected-error";
60
72
  }
61
73
  return undefined;
62
74
  }
75
+ isValidParameterResult(successResult) {
76
+ const bloodOxygen = successResult.bloodOxygen;
77
+ const pulseRate = successResult.pulseRate;
78
+ return typeof bloodOxygen === "number" && bloodOxygen >= 50 && bloodOxygen <= 100 && ![0, 127, 255].includes(bloodOxygen) && typeof pulseRate === "number" && pulseRate >= 20 && pulseRate <= 300 && ![0, 255, 511, 65535].includes(pulseRate);
79
+ }
80
+ withoutPerfusionMarker(successResult) {
81
+ if (successResult.perfusionIndex !== 0 && successResult.perfusionIndex !== 255) {
82
+ return successResult;
83
+ }
84
+ return {
85
+ ...successResult,
86
+ perfusionIndex: undefined
87
+ };
88
+ }
63
89
  }
64
90
  //# sourceMappingURL=spo2.device.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CaseType","BTManagedDevice","spo2MainServices","SPO2Device","onStreamStart","mainServices","stuckDataTimeout","validatePackage","pkg","map","b","toLowerCase","headIndex","i","length","slice","toNum","hex","parseInt","lengthByte","totalLen","handleSuccessResult","successResult","collectedValues","caseType","STREAM","OTHER","measurementTypeKey","onError","Error","handlePulseOximeterResult","error","checkIfHasError","onResult","bloodOxygen","undefined"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.device.ts"],"mappings":";;AAEA,SAASA,QAAQ,QAAQ,6BAA0B;AAKnD,SAASC,eAAe,QAAQ,yBAAsB;AAEtD,SAASC,gBAAgB,QAAQ,yBAAsB;AAEvD,OAAO,MAAMC,UAAU,SAASF,eAAe,CAA2B;EAC9DG,aAAa,GAAeA,CAAA,KAAM,CAAC,CAAC;EAEpCC,YAAY,GAAeH,gBAAgB;EAC3CI,gBAAgB,GAAG,MAAM;EAEzBC,eAAe,GAAgCC,GAAG,IAAK;IAC/DA,GAAG,GAAGA,GAAG,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;IAErC,IAAIC,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;MACvC,IAAIL,GAAG,CAACK,CAAC,CAAC,KAAK,IAAI,IAAIL,GAAG,CAACK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QAC1CD,SAAS,GAAGC,CAAC;QACb;MACF;IACF;IAEA,IAAID,SAAS,KAAK,CAAC,CAAC,EAAE;MACpB,OAAO,KAAK;IACd;IAEA,IAAIA,SAAS,GAAG,CAAC,EAAE;MACjBJ,GAAG,GAAGA,GAAG,CAACO,KAAK,CAACH,SAAS,CAAC;IAC5B;IAEA,IAAIJ,GAAG,CAACM,MAAM,GAAG,CAAC,EAAE;MAClB,OAAO,KAAK;IACd;IAEA,MAAME,KAAK,GAAIC,GAAY,IAAKC,QAAQ,CAACD,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;IAE7D,MAAME,UAAU,GAAGH,KAAK,CAACR,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAMY,QAAQ,GAAG,CAAC,GAAGD,UAAU;IAE/B,IAAIX,GAAG,CAACM,MAAM,GAAGM,QAAQ,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb,CAAC;EAESC,mBAAmBA,CAC3BC,aAEC,EACDC,eAAyB,EACT;IAChB,IACED,aAAa,CAACE,QAAQ,KAAKxB,QAAQ,CAACyB,MAAM,IAC1CH,aAAa,CAACE,QAAQ,KAAKxB,QAAQ,CAAC0B,KAAK,EACzC;MACA;IACF;IAEA,IAAI,CAACH,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,EAAE;MACxC,OAAO,IAAI;IACb;IAEA,IAAI,CAACD,aAAa,CAACK,kBAAkB,EAAE;MACrC,IAAI,CAACC,OAAO,GACV,IAAIC,KAAK,CACP,0CAA0CP,aAAa,CAACE,QAAQ,EAClE,CACF,CAAC;MAED;IACF;IAEA,IAAI,CAACM,yBAAyB,CAACR,aAAa,CAAC;EAC/C;EAEQQ,yBAAyBA,CAC/BR,aAAgE,EAC1D;IACN,MAAMS,KAAK,GAAG,IAAI,CAACC,eAAe,CAACV,aAAa,CAAC;IAEjD,IAAIS,KAAK,EAAE;MACT,IAAI,CAACH,OAAO,GAAGG,KAAK,CAAC;MAErB;IACF;IAEA,IAAI,CAACE,QAAQ,GAAGX,aAAa,CAAC;EAChC;EAEQU,eAAeA,CACrBV,aAAgE,EAC5C;IACpB,IAAI,CAACA,aAAa,CAACY,WAAW,EAAE;MAC9B,OAAO,sDAAsD;IAC/D;IAEA,OAAOC,SAAS;EAClB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["CaseType","BTManagedDevice","Pc60FwFrameReader","spo2MainServices","SPO2Device","onStreamStart","mainServices","stuckDataTimeout","frameReader","validatePackage","pkg","map","b","toLowerCase","headIndex","i","length","slice","toNum","hex","parseInt","lengthByte","totalLen","handleSuccessResult","successResult","collectedValues","caseType","STREAM","OTHER","status","Number","isValidParameterResult","lastValidResult","withoutPerfusionMarker","perfusionIndex","undefined","measurementTypeKey","onError","Error","handlePulseOximeterResult","error","checkIfHasError","onResult","bloodOxygen","pulseRate","includes"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.device.ts"],"mappings":"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","ignoreList":[]}
@@ -39,6 +39,11 @@ export const spo2MainServices = [{
39
39
  parseType: "number",
40
40
  byteIndexes: [7, 6],
41
41
  parseReference: 16
42
+ }, {
43
+ name: "perfusionIndex",
44
+ parseType: "number",
45
+ byteIndexes: [8],
46
+ customParserDefinition: value => parseInt(value, 16) / 10
42
47
  }]
43
48
  }]
44
49
  }
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","CaseType","spo2MainServices","uuid","monitorUuids","parsingModel","caseValuePosition","cases","measurementTypeKey","bloodOxygenPulseRate","caseType","STREAM","caseValue","parseDefinitions","description","RESULT","name","parseType","byteIndexes","parseReference"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.main-services.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAE/C,SAASC,QAAQ,QAAQ,6BAA0B;AAGnD,OAAO,MAAMC,gBAA4B,GAAG,CAC1C;EACEC,IAAI,EAAE,sCAAsC;EAC5CC,YAAY,EAAE,CACZ;IACED,IAAI,EAAE,sCAAsC;IAC5CE,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC/BC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,EAAE;QACpBC,WAAW,EAAE;MACf,CAAC,EAED;QACEN,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,EAAE;QACpBC,WAAW,EAAE;MACf,CAAC,EAED;QACEN,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE;MACpB,CAAC,EAED;QACEL,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACc,MAAM;QACzBH,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,CAChB;UACEG,IAAI,EAAE,aAAa;UACnBC,SAAS,EAAE,QAAQ;UACnBC,WAAW,EAAE,CAAC,CAAC,CAAC;UAChBC,cAAc,EAAE;QAClB,CAAC,EACD;UACEH,IAAI,EAAE,WAAW;UACjBC,SAAS,EAAE,QAAQ;UACnBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACnBC,cAAc,EAAE;QAClB,CAAC;MAEL,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,CACF","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","CaseType","spo2MainServices","uuid","monitorUuids","parsingModel","caseValuePosition","cases","measurementTypeKey","bloodOxygenPulseRate","caseType","STREAM","caseValue","parseDefinitions","description","RESULT","name","parseType","byteIndexes","parseReference","customParserDefinition","value","parseInt"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.main-services.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAE/C,SAASC,QAAQ,QAAQ,6BAA0B;AAGnD,OAAO,MAAMC,gBAA4B,GAAG,CAC1C;EACEC,IAAI,EAAE,sCAAsC;EAC5CC,YAAY,EAAE,CACZ;IACED,IAAI,EAAE,sCAAsC;IAC5CE,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC/BC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,EAAE;QACpBC,WAAW,EAAE;MACf,CAAC,EAED;QACEN,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,EAAE;QACpBC,WAAW,EAAE;MACf,CAAC,EAED;QACEN,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACU,MAAM;QACzBC,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE;MACpB,CAAC,EAED;QACEL,kBAAkB,EAAER,kBAAkB,CAACS,oBAAoB;QAC3DC,QAAQ,EAAET,QAAQ,CAACc,MAAM;QACzBH,SAAS,EAAE,UAAU;QACrBC,gBAAgB,EAAE,CAChB;UACEG,IAAI,EAAE,aAAa;UACnBC,SAAS,EAAE,QAAQ;UACnBC,WAAW,EAAE,CAAC,CAAC,CAAC;UAChBC,cAAc,EAAE;QAClB,CAAC,EACD;UACEH,IAAI,EAAE,WAAW;UACjBC,SAAS,EAAE,QAAQ;UACnBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACnBC,cAAc,EAAE;QAClB,CAAC,EACD;UACEH,IAAI,EAAE,gBAAgB;UACtBC,SAAS,EAAE,QAAQ;UACnBC,WAAW,EAAE,CAAC,CAAC,CAAC;UAChBE,sBAAsB,EAAGC,KAAa,IACpCC,QAAQ,CAACD,KAAK,EAAE,EAAE,CAAC,GAAG;QAC1B,CAAC;MAEL,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,CACF","ignoreList":[]}
@@ -35,7 +35,7 @@ const decodeViatomEcgRecording = content => {
35
35
  for (let index = waveStart; index + 1 < waveEnd; index += 2) {
36
36
  const raw = hexToByte(content[index] ?? "0") | hexToByte(content[index + 1] ?? "0") << 8;
37
37
  const signed = raw & 0x8000 ? raw - 0x10000 : raw;
38
- samples.push(signed * VIATOM_ECG_MILLIVOLTS_PER_COUNT);
38
+ samples.push(raw === 0x7fff ? 0 : signed * VIATOM_ECG_MILLIVOLTS_PER_COUNT);
39
39
  }
40
40
  const recordedSeconds = readUInt32LittleEndian(content, content.length - 20);
41
41
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["hexToByte","VIATOM_ECG_SAMPLE_RATE_HZ","VIATOM_ECG_MILLIVOLTS_PER_COUNT","validDate","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","undefined","recordedAtFromViatomFileName","name","digits","match","length","Number","slice","readUInt32LittleEndian","bytes","from","decodeViatomEcgRecording","content","samples","duration","waveStart","waveEnd","index","raw","signed","push","recordedSeconds"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["hexToByte","VIATOM_ECG_SAMPLE_RATE_HZ","VIATOM_ECG_MILLIVOLTS_PER_COUNT","validDate","year","month","day","hour","minute","second","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","undefined","recordedAtFromViatomFileName","name","digits","match","length","Number","slice","readUInt32LittleEndian","bytes","from","decodeViatomEcgRecording","content","samples","duration","waveStart","waveEnd","index","raw","signed","push","recordedSeconds"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"mappings":"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","ignoreList":[]}
@@ -52,6 +52,7 @@ const declareRecorder = (advertisedName, profile, params) => lepuDevice({
52
52
  id: params.id ?? `viatom-${advertisedName.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`,
53
53
  nameMatch: params.nameMatch ?? lepuNameMatch(advertisedName),
54
54
  transport: profile.transport,
55
+ clockSync: "supported",
55
56
  pollCommand: profile.pollCommand,
56
57
  minLengthBytes: profile.heartRateBytes[1] + 1,
57
58
  caseSelectorBytes: [1],
@@ -71,7 +72,10 @@ const declareRecorder = (advertisedName, profile, params) => lepuDevice({
71
72
  ...(params.expectedDeviceTypes ? {
72
73
  expectedDeviceTypes: params.expectedDeviceTypes
73
74
  } : {}),
74
- fileTransfer: "ecg"
75
+ fileTransfer: "ecg",
76
+ ...(RAW_ECG_MODEL_NAMES.has(advertisedName) ? {
77
+ ecgFileDecoder: "raw-int16"
78
+ } : {})
75
79
  });
76
80
 
77
81
  /** The ER1, and the handheld recorders sold under other names on the same protocol. */
@@ -106,6 +110,9 @@ const ER1_MODEL_NAMES = ["ER1", "ER1-H", "ER1-L", "ER1-S", "ER1-SP", "ER1-W", "E
106
110
  /** The names the ER2 recorders advertise, all of them on the small-MTU link. */
107
111
  const ER2_MODEL_NAMES = ["ER2", "ER2-S", "HHM2", "HHM3", "LP ER2"];
108
112
 
113
+ /** These are the only Viatom recorders whose stored waveform is verified raw int16. */
114
+ const RAW_ECG_MODEL_NAMES = new Set(["ER1-L", "ER1-S", "ER1-W"]);
115
+
109
116
  /** The ER3 is identified separately from the ER1/ER2 opcode family. */
110
117
  const ER3_MODEL_NAMES = ["ER3"];
111
118
  export { er1Recorder, ER1_MODEL_NAMES, er2Recorder, ER2_MODEL_NAMES, ER3_MODEL_NAMES, er3Recorder };
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","ER_HEART_RATE_BYTES","declareRecorder","advertisedName","profile","params","id","toLowerCase","replace","nameMatch","transport","pollCommand","minLengthBytes","heartRateBytes","caseSelectorBytes","cases","selector","toString","padStart","kind","measurementTypeKey","heartRate","description","fields","name","byteIndexes","byteOrder","encoding","unit","expectedDeviceTypes","fileTransfer","er1Recorder","er2Recorder","er3Recorder","ER1_MODEL_NAMES","ER2_MODEL_NAMES","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":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","ER_HEART_RATE_BYTES","declareRecorder","advertisedName","profile","params","id","toLowerCase","replace","nameMatch","transport","clockSync","pollCommand","minLengthBytes","heartRateBytes","caseSelectorBytes","cases","selector","toString","padStart","kind","measurementTypeKey","heartRate","description","fields","name","byteIndexes","byteOrder","encoding","unit","expectedDeviceTypes","fileTransfer","RAW_ECG_MODEL_NAMES","has","ecgFileDecoder","er1Recorder","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":[]}
@@ -91,6 +91,7 @@ const lepodMonitor = (advertisedName, params) => lepuDevice({
91
91
  id: params.id ?? `viatom-${advertisedName.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`,
92
92
  nameMatch: params.nameMatch ?? lepuNameMatch(advertisedName),
93
93
  fileTransfer: "ecg",
94
+ clockSync: "supported",
94
95
  pollCommand: RT_DATA,
95
96
  minLengthBytes: MIN_LENGTH_BYTES,
96
97
  caseSelectorBytes: [1],
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","MIN_LENGTH_BYTES","HEART_RATE","RESPIRATION_RATE","BLOOD_OXYGEN","PULSE_RATE","PERFUSION_INDEX","TEMPERATURE","PERFUSION_SCALE","TEMPERATURE_SCALE","littleEndian","name","byteIndexes","unit","byteOrder","encoding","LEPOD_MEASUREMENTS","measurementTypeKey","bloodOxygenPulseRate","fields","scale","decimals","respiratoryRate","temperature","lepodMonitor","advertisedName","params","id","toLowerCase","replace","nameMatch","fileTransfer","pollCommand","minLengthBytes","caseSelectorBytes","cases","selector","kind","heartRate","description","additionalMeasurements","map","each","expectedDeviceTypes","LEPOD_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.lepod.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","MIN_LENGTH_BYTES","HEART_RATE","RESPIRATION_RATE","BLOOD_OXYGEN","PULSE_RATE","PERFUSION_INDEX","TEMPERATURE","PERFUSION_SCALE","TEMPERATURE_SCALE","littleEndian","name","byteIndexes","unit","byteOrder","encoding","LEPOD_MEASUREMENTS","measurementTypeKey","bloodOxygenPulseRate","fields","scale","decimals","respiratoryRate","temperature","lepodMonitor","advertisedName","params","id","toLowerCase","replace","nameMatch","fileTransfer","clockSync","pollCommand","minLengthBytes","caseSelectorBytes","cases","selector","kind","heartRate","description","additionalMeasurements","map","each","expectedDeviceTypes","LEPOD_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.lepod.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { hexToByte } from "./hex-to-byte.js";
4
+ const CRC8_POLYNOMIAL = 0x8c;
5
+ const BITS_PER_BYTE = 8;
6
+ const BYTE_MASK = 0xff;
7
+
8
+ /** CRC-8/MAXIM (Dallas/1-Wire), initial value 0x00. */
9
+ export const calculateCrc8Maxim = (hex, byteCount) => {
10
+ let remainder = 0;
11
+ for (let index = 0; index < byteCount; index++) {
12
+ remainder ^= hexToByte(hex[index] || "0");
13
+ for (let bit = 0; bit < BITS_PER_BYTE; bit++) {
14
+ remainder = remainder & 1 ? remainder >> 1 ^ CRC8_POLYNOMIAL : remainder >> 1;
15
+ }
16
+ }
17
+ return remainder & BYTE_MASK;
18
+ };
19
+ //# sourceMappingURL=calculate-crc-8-maxim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["hexToByte","CRC8_POLYNOMIAL","BITS_PER_BYTE","BYTE_MASK","calculateCrc8Maxim","hex","byteCount","remainder","index","bit"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/calculate-crc-8-maxim.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,kBAAe;AAEzC,MAAMC,eAAe,GAAG,IAAI;AAC5B,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,SAAS,GAAG,IAAI;;AAEtB;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,GAAsB,EACtBC,SAAiB,KACN;EACX,IAAIC,SAAS,GAAG,CAAC;EAEjB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,SAAS,EAAEE,KAAK,EAAE,EAAE;IAC9CD,SAAS,IAAIP,SAAS,CAACK,GAAG,CAACG,KAAK,CAAC,IAAI,GAAG,CAAC;IAEzC,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGP,aAAa,EAAEO,GAAG,EAAE,EAAE;MAC5CF,SAAS,GACPA,SAAS,GAAG,CAAC,GACRA,SAAS,IAAI,CAAC,GAAIN,eAAe,GAClCM,SAAS,IAAI,CAAC;IACtB;EACF;EAEA,OAAOA,SAAS,GAAGJ,SAAS;AAC9B,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"compile-custom-lepu.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/custom/compile-custom-lepu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqH9D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,MAAM,EACV,MAAM,gBAAgB,EACtB,cAAc,SAAS,MAAM,EAAE,KAC9B,cAAc,GAAG,SAgEnB,CAAC"}
1
+ {"version":3,"file":"compile-custom-lepu.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/custom/compile-custom-lepu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqH9D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,MAAM,EACV,MAAM,gBAAgB,EACtB,cAAc,SAAS,MAAM,EAAE,KAC9B,cAAc,GAAG,SA0EnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"aoj.thermometers.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/aoj/aoj.thermometers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAmCjF,UAAU,eAAe;IAEvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,eAAe,KACtB,sBA0CC,CAAC"}
1
+ {"version":3,"file":"aoj.thermometers.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/aoj/aoj.thermometers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAoCjF,UAAU,eAAe;IAEvB,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,eAAe,KACtB,sBA+CC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/custom/custom.device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAOvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAevD,KAAK,mBAAmB,GAAG,yBAAyB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACvE,KAAK,YAAY,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC/D,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC;IACnC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkD;gBAG3E,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAC1C,UAAU,EAAE,sBAAsB;IA0BpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,mBAAmB,CAiBzB;IAEF,OAAO,CAAC,YAAY,CACwB;IAE5C,OAAO,CAAC,iBAAiB,CAMvB;IAEF,SAAS,CAAC,eAAe,GAAI,KAAK,MAAM,EAAE,EAAE,MAAM,MAAM,KAAG,OAAO,CAQhE;IAEF;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,GAC7B,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,KACtD,4BAA4B,CAAC,mBAAmB,CAAC,CAalD;IAEF,4FAA4F;IAC5F,SAAS,CAAC,2BAA2B,GACnC,OAAO,4BAA4B,CAAC,mBAAmB,CAAC,KACvD,OAAO,CAAS;IAEnB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,GAAG,OAAO;IAI/C,mFAAmF;IACnF,SAAS,CAAC,eAAe,GACvB,SAAS,YAAY,EACrB,QAAQ,SAAS,MAAM,EAAE,EACzB,eAAe,MAAM,KACpB,YAAY,CAK6B;IAE5C;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IA2BnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM;IAmBd,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,iBAAiB;CAmC1B"}
1
+ {"version":3,"file":"custom.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/custom/custom.device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAOvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAgBvD,KAAK,mBAAmB,GAAG,yBAAyB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACvE,KAAK,YAAY,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;AAEjE;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC/D,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC;IACnC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkD;gBAG3E,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAC1C,UAAU,EAAE,sBAAsB;IA0BpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA4D3B,OAAO,CAAC,mBAAmB,CAiBzB;IAEF,OAAO,CAAC,YAAY,CACwB;IAE5C,OAAO,CAAC,iBAAiB,CAMvB;IAEF,SAAS,CAAC,eAAe,GAAI,KAAK,MAAM,EAAE,EAAE,MAAM,MAAM,KAAG,OAAO,CAQhE;IAEF;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,GAC7B,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,KACtD,4BAA4B,CAAC,mBAAmB,CAAC,CAalD;IAEF,4FAA4F;IAC5F,SAAS,CAAC,2BAA2B,GACnC,OAAO,4BAA4B,CAAC,mBAAmB,CAAC,KACvD,OAAO,CAAS;IAEnB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,GAAG,OAAO;IAI/C,mFAAmF;IACnF,SAAS,CAAC,eAAe,GACvB,SAAS,YAAY,EACrB,QAAQ,SAAS,MAAM,EAAE,EACzB,eAAe,MAAM,KACpB,YAAY,CAK6B;IAE5C;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IA2BnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM;IAmBd,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,iBAAiB;CAmC1B"}
@@ -18,6 +18,8 @@ export declare const LepuCommand: {
18
18
  * addressing it with an opcode that means something else on the wrong hardware.
19
19
  */
20
20
  readonly GET_INFO: 225;
21
+ /** Sets the device's local wall clock before history is requested. */
22
+ readonly SET_TIME: 236;
21
23
  readonly GET_BATTERY: 228;
22
24
  /** Enumerate the records stored on the device. */
23
25
  readonly GET_FILE_LIST: 241;
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.commands.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;IACtB,iDAAiD;;IAGjD;;;;;;OAMG;;;IAKH,kDAAkD;;IAGlD,yEAAyE;;IAGzE,mDAAmD;;IAGnD,yDAAyD;;CAEjD,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"lepu.commands.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;IACtB,iDAAiD;;IAGjD;;;;;;OAMG;;IAGH,sEAAsE;;;IAKtE,kDAAkD;;IAGlD,yEAAyE;;IAGzE,mDAAmD;;IAGnD,yDAAyD;;CAEjD,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { ClockSyncOptions } from "../../../types/clock-sync";
2
+ import { CommandSequencer } from "../../../types/command-sequencer";
3
+ import { DeviceCommand } from "../../../types/device-command";
4
+ import { LepuCommandBuilder } from "./lepu.command-builder";
5
+ import { LepuDeviceInfo } from "./lepu.device-info";
6
+ import { LepuFile } from "./lepu.file-transfer";
7
+ interface LepuEcgTransferParams {
8
+ write: Omit<DeviceCommand, "frame">;
9
+ builder: LepuCommandBuilder;
10
+ clockSync?: ClockSyncOptions;
11
+ expectedDeviceTypes: readonly number[];
12
+ onIdentified?: (info: LepuDeviceInfo) => void;
13
+ onRefused: (reason: string) => void;
14
+ onFile: (file: LepuFile) => void;
15
+ onError: (reason: string) => void;
16
+ skipFiles?: ReadonlySet<string>;
17
+ acceptFile?: (name: string) => boolean;
18
+ afterTransfer?: () => readonly DeviceCommand[];
19
+ onProgress?: (progress: {
20
+ name: string;
21
+ receivedBytes: number;
22
+ totalBytes: number;
23
+ }) => void;
24
+ }
25
+ /** Identifies a recorder, sets its local clock, then downloads its stored files. */
26
+ declare class LepuEcgTransferSequencer implements CommandSequencer {
27
+ private readonly params;
28
+ private phase;
29
+ private transfer;
30
+ private readonly identity;
31
+ constructor(params: LepuEcgTransferParams);
32
+ initialCommands: () => readonly DeviceCommand[];
33
+ isHistoryTransfer: () => boolean;
34
+ nextCommand: (frame: readonly string[]) => readonly DeviceCommand[] | undefined;
35
+ private startClockOrTransfer;
36
+ private finishClock;
37
+ private startTransfer;
38
+ }
39
+ export { LepuEcgTransferSequencer };
40
+ export type { LepuEcgTransferParams };
41
+ //# sourceMappingURL=lepu.ecg-transfer.d.ts.map
@@ -0,0 +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,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,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,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,aAAa,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAC/C,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;AAID,oFAAoF;AACpF,cAAM,wBAAyB,YAAW,gBAAgB;IAKrC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAER,MAAM,EAAE,qBAAqB;IAW1D,eAAe,QAAO,SAAS,aAAa,EAAE,CACnB;IAE3B,iBAAiB,QAAO,OAAO,CAAS;IAExC,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAUrC;IAEF,OAAO,CAAC,oBAAoB,CAgB1B;IAEF,OAAO,CAAC,WAAW,CAcjB;IAEF,OAAO,CAAC,aAAa,CAcnB;CACH;AAmBD,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
@@ -17,6 +17,8 @@ interface LepuFileTransferParams {
17
17
  onError: (reason: string) => void;
18
18
  /** Files the app has already persisted and does not want again. */
19
19
  skipFiles?: ReadonlySet<string>;
20
+ /** Files this transfer knows how to decode; rejected names are never opened. */
21
+ acceptFile?: (name: string) => boolean;
20
22
  /** Commands to start after history has been exhausted, such as live polling. */
21
23
  afterTransfer?: () => readonly DeviceCommand[];
22
24
  /** Called as each chunk lands, for a long file with a person waiting on it. */
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.file-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.file-transfer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAI9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAsB5D,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,sBAAsB;IAE9B,kDAAkD;IAClD,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,yFAAyF;IACzF,OAAO,EAAE,kBAAkB,CAAC;IAE5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEjC,yFAAyF;IACzF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEhC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAE/C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,cAAM,gBAAiB,YAAW,gBAAgB;IAS7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAR1C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEa,MAAM,EAAE,sBAAsB;IAE3D,iBAAiB,QAAO,OAAO,CAAS;IAExC,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CA+BrC;IAEF,OAAO,CAAC,YAAY,CAwBlB;IAEF,0FAA0F;IAC1F,OAAO,CAAC,UAAU,CAqBhB;IAEF;;;;OAIG;IACH,OAAO,CAAC,WAAW,CA2BjB;IAEF,OAAO,CAAC,UAAU,CAgBhB;IAEF,OAAO,CAAC,SAAS,CAEf;IAEF;;;;;OAKG;IACH,OAAO,CAAC,IAAI,CAWV;IAEF,OAAO,CAAC,UAAU,CAMf;CACJ;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"lepu.file-transfer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.file-transfer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAI9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAsB5D,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,sBAAsB;IAE9B,kDAAkD;IAClD,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,yFAAyF;IACzF,OAAO,EAAE,kBAAkB,CAAC;IAE5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEjC,yFAAyF;IACzF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEhC,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAEvC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,CAAC;IAE/C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,cAAM,gBAAiB,YAAW,gBAAgB;IAS7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAR1C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEa,MAAM,EAAE,sBAAsB;IAE3D,iBAAiB,QAAO,OAAO,CAAS;IAExC,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CA+BrC;IAEF,OAAO,CAAC,YAAY,CA4BlB;IAEF,0FAA0F;IAC1F,OAAO,CAAC,UAAU,CAqBhB;IAEF;;;;OAIG;IACH,OAAO,CAAC,WAAW,CA2BjB;IAEF,OAAO,CAAC,UAAU,CAgBhB;IAEF,OAAO,CAAC,SAAS,CAEf;IAEF;;;;;OAKG;IACH,OAAO,CAAC,IAAI,CAWV;IAEF,OAAO,CAAC,UAAU,CAMf;CACJ;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC"}
@@ -17,6 +17,8 @@ interface LepuIdentityGateParams {
17
17
  pollCommand?: number;
18
18
  /** Called with what the device said it was, whether or not it was expected. */
19
19
  onIdentified?: (info: LepuDeviceInfo) => void;
20
+ /** Commands to begin after the device has passed the identity check. */
21
+ onAdmitted?: () => readonly DeviceCommand[] | undefined;
20
22
  /** Called when the device cannot be admitted. */
21
23
  onRefused: (reason: string) => void;
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.identity-gate.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.identity-gate.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAGjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAMzE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAE5B,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,8CAA8C;IAC9C,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C,iDAAiD;IACjD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAKD,sEAAsE;AACtE,qBAAa,gBAAiB,YAAW,gBAAgB;IAKpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAqB;gBAEP,MAAM,EAAE,sBAAsB;IAE3D,eAAe,QAAO,SAAS,aAAa,EAAE,CAiBnD;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAcrC;IAEF,8DAA8D;IAC9D,OAAO,CAAC,KAAK,CAsCX;IAEF,4FAA4F;IAC5F,OAAO,CAAC,MAAM,CAKZ;IAEF,+EAA+E;IAC/E,OAAO,CAAC,IAAI,CAGqC;IAEjD,OAAO,CAAC,UAAU,CAWf;IAEH,OAAO,CAAC,uBAAuB,CA0D7B;CACH"}
1
+ {"version":3,"file":"lepu.identity-gate.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.identity-gate.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAGjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAMzE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAE5B,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,8CAA8C;IAC9C,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IAExD,iDAAiD;IACjD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAKD,sEAAsE;AACtE,qBAAa,gBAAiB,YAAW,gBAAgB;IAKpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAqB;gBAEP,MAAM,EAAE,sBAAsB;IAE3D,eAAe,QAAO,SAAS,aAAa,EAAE,CAiBnD;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAcrC;IAEF,8DAA8D;IAC9D,OAAO,CAAC,KAAK,CAyCX;IAEF,4FAA4F;IAC5F,OAAO,CAAC,MAAM,CAKZ;IAEF,+EAA+E;IAC/E,OAAO,CAAC,IAAI,CAGqC;IAEjD,OAAO,CAAC,UAAU,CAWf;IAEH,OAAO,CAAC,uBAAuB,CA0D7B;CACH"}
@@ -1,3 +1,4 @@
1
+ import { ClockSyncCapability } from "../../../types/clock-sync";
1
2
  import { CustomCaseSpec } from "../../../types/custom-case-spec";
2
3
  import { CustomDeviceDefinition, CustomReadingDecorator } from "../../../types/custom-device-definition";
3
4
  /**
@@ -58,6 +59,10 @@ interface LepuDeviceParams {
58
59
  /** Uses write-without-response, as the Viatom oximeter characteristic requires. */
59
60
  writeWithoutResponse?: boolean;
60
61
  fileTransfer?: "ecg";
62
+ /** Decoder used for stored ECG files. Omit this when the format is not verified. */
63
+ ecgFileDecoder?: "raw-int16";
64
+ /** Declares the device clock capability when the protocol has been verified. */
65
+ clockSync?: ClockSyncCapability;
61
66
  /**
62
67
  * The models this declaration was written for, as the device reports them.
63
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"lepu.transports.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAyEjD;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc;;;;;;;IAQlB,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9B,CAAC;AAEnD,KAAK,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAErD,UAAU,gBAAgB;IAExB,gFAAgF;IAChF,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAEzC,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,oFAAoF;IACpF,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAE9B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,YAAY,CAAC,EAAE,KAAK,CAAC;IAErB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,QAAA,MAAM,UAAU,GAAI,QAAQ,gBAAgB,KAAG,sBAgD9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"lepu.transports.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/lepu/lepu.transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAyEjD;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc;;;;;;;IAQlB,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9B,CAAC;AAEnD,KAAK,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AACrD,UAAU,gBAAgB;IAExB,gFAAgF;IAChF,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAEzC,qFAAqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,oFAAoF;IACpF,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAE9B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC;IAElC,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,YAAY,CAAC,EAAE,KAAK,CAAC;IAErB,oFAAoF;IACpF,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B,gFAAgF;IAChF,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,QAAA,MAAM,UAAU,GAAI,QAAQ,gBAAgB,KAAG,sBAoD9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { FrameReadResult } from "../../../types/frame-read-result";
2
+ import { FrameReader } from "../../../types/frame-reader";
3
+ /** Reads the length-prefixed, CRC-8/MAXIM frames used by PC-60FW. */
4
+ export declare class Pc60FwFrameReader implements FrameReader {
5
+ readFrame(buffer: readonly string[]): FrameReadResult;
6
+ private findHeader;
7
+ }
8
+ //# sourceMappingURL=pc60fw.frame-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pc60fw.frame-reader.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/spo/pc60fw.frame-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY1D,qEAAqE;AACrE,qBAAa,iBAAkB,YAAW,WAAW;IAC5C,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe;IA8C5D,OAAO,CAAC,UAAU;CAYnB"}
@@ -3,13 +3,18 @@ import { IntegratedDevices } from "../../../types/integrated-devices";
3
3
  import { MeasurementWithCaseType } from "../../../types/measurement-with-case-type";
4
4
  import { IService } from "../../../types/service.type";
5
5
  import { BTManagedDevice } from "../bt-managed-device";
6
+ import { Pc60FwFrameReader } from "./pc60fw.frame-reader";
6
7
  export declare class SPO2Device extends BTManagedDevice<IntegratedDevices.PC60WF> {
7
8
  protected onStreamStart: () => void;
8
9
  protected mainServices: IService[];
9
10
  protected stuckDataTimeout: number;
11
+ protected frameReader: Pc60FwFrameReader;
12
+ private lastValidResult;
10
13
  protected validatePackage: (pkg: string[]) => boolean;
11
14
  protected handleSuccessResult(successResult: MeasurementWithCaseType<MeasurementTypeForDevices<[IntegratedDevices.PC60WF]>>, collectedValues: string[]): void | boolean;
12
15
  private handlePulseOximeterResult;
13
16
  private checkIfHasError;
17
+ private isValidParameterResult;
18
+ private withoutPerfusionMarker;
14
19
  }
15
20
  //# sourceMappingURL=spo2.device.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spo2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/spo/spo2.device.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,qBAAa,UAAW,SAAQ,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACvE,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAAY;IAE/C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAoB;IACtD,SAAS,CAAC,gBAAgB,SAAU;IAEpC,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAmCnD;IAEF,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CACtD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IAyBjB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,eAAe;CASxB"}
1
+ {"version":3,"file":"spo2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/spo/spo2.device.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,qBAAa,UAAW,SAAQ,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACvE,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAAY;IAE/C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAoB;IACtD,SAAS,CAAC,gBAAgB,SAAU;IACpC,SAAS,CAAC,WAAW,EAAE,iBAAiB,CAA2B;IACnE,OAAO,CAAC,eAAe,CAAgE;IAEvF,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAmCnD;IAEF,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CACtD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IA2CjB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,sBAAsB;CAY/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"spo2.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/spo/spo2.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAwDtC,CAAC"}
1
+ {"version":3,"file":"spo2.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/spo/spo2.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EA+DtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"viatom.ecg-files.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,yBAAyB,MAAM,CAAC;AACtC,QAAA,MAAM,+BAA+B,WAAW,CAAC;AAsBjD,0EAA0E;AAC1E,QAAA,MAAM,4BAA4B,GAAI,MAAM,MAAM,KAAG,IAAI,GAAG,SA0B3D,CAAC;AAQF,8EAA8E;AAC9E,QAAA,MAAM,wBAAwB,GAC5B,SAAS,SAAS,MAAM,EAAE,KACzB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAyBvC,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC"}
1
+ {"version":3,"file":"viatom.ecg-files.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/viatom/viatom.ecg-files.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,yBAAyB,MAAM,CAAC;AACtC,QAAA,MAAM,+BAA+B,WAAW,CAAC;AAsBjD,0EAA0E;AAC1E,QAAA,MAAM,4BAA4B,GAAI,MAAM,MAAM,KAAG,IAAI,GAAG,SA0B3D,CAAC;AAQF,8EAA8E;AAC9E,QAAA,MAAM,wBAAwB,GAC5B,SAAS,SAAS,MAAM,EAAE,KACzB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CA2BvC,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,+BAA+B,EAC/B,yBAAyB,GAC1B,CAAC"}
@@ -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;AAqDjF,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;AA6CD,uFAAuF;AACvF,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ;;;;;GAKG;AACH,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ,6EAA6E;AAC7E,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ,6CAA6C;AAC7C,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EASrC,CAAC;AAEF,gFAAgF;AAChF,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAA+C,CAAC;AAEtF,uEAAuE;AACvE,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAAY,CAAC;AAEnD,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;AAqDjF,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;AAiDD,uFAAuF;AACvF,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ;;;;;GAKG;AACH,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ,6EAA6E;AAC7E,QAAA,MAAM,WAAW,GACf,gBAAgB,MAAM,EACtB,QAAQ,eAAe,KACtB,sBASA,CAAC;AAEJ,6CAA6C;AAC7C,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EASrC,CAAC;AAEF,gFAAgF;AAChF,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAA+C,CAAC;AAKtF,uEAAuE;AACvE,QAAA,MAAM,eAAe,EAAE,SAAS,MAAM,EAAY,CAAC;AAEnD,OAAO,EACL,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,GACZ,CAAC"}