@ovok/native 1.6.41 → 1.6.43

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 (140) hide show
  1. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js +6 -1
  2. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  3. package/lib/commonjs/modules/bt-device/constants/supported-devices.js +37 -0
  4. package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js +1 -1
  6. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  7. package/lib/commonjs/modules/bt-management/index.js +33 -0
  8. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/device-creator.js +9 -1
  10. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.device.js +50 -0
  12. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.device.js.map +1 -0
  13. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js +113 -0
  14. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js.map +1 -0
  15. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js +74 -0
  16. package/lib/commonjs/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-names.js +1 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-names.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/viatom/ap20.device.js +51 -0
  20. package/lib/commonjs/modules/bt-management/services/devices/viatom/ap20.device.js.map +1 -0
  21. package/lib/commonjs/modules/bt-management/services/devices/viatom/pc68b.device.js +51 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/viatom/pc68b.device.js.map +1 -0
  23. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.js +122 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.js +79 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.js.map +1 -0
  27. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +9 -1
  28. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.js +50 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.vtm20f.js +60 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.vtm20f.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +5 -0
  34. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  35. package/lib/commonjs/modules/bt-management/utils/calculate-crc-8-pc.js +22 -0
  36. package/lib/commonjs/modules/bt-management/utils/calculate-crc-8-pc.js.map +1 -0
  37. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +6 -1
  38. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  39. package/lib/module/modules/bt-device/constants/supported-devices.js +38 -1
  40. package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
  41. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  42. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  43. package/lib/module/modules/bt-management/index.js +3 -0
  44. package/lib/module/modules/bt-management/index.js.map +1 -1
  45. package/lib/module/modules/bt-management/services/device-creator.js +9 -1
  46. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  47. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.device.js +45 -0
  48. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.device.js.map +1 -0
  49. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js +104 -0
  50. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.protocol.js.map +1 -0
  51. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js +69 -0
  52. package/lib/module/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.js.map +1 -0
  53. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-names.js +1 -1
  54. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-names.js.map +1 -1
  55. package/lib/module/modules/bt-management/services/devices/viatom/ap20.device.js +46 -0
  56. package/lib/module/modules/bt-management/services/devices/viatom/ap20.device.js.map +1 -0
  57. package/lib/module/modules/bt-management/services/devices/viatom/pc68b.device.js +46 -0
  58. package/lib/module/modules/bt-management/services/devices/viatom/pc68b.device.js.map +1 -0
  59. package/lib/module/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.js +113 -0
  60. package/lib/module/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.js.map +1 -0
  61. package/lib/module/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.js +74 -0
  62. package/lib/module/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.js.map +1 -0
  63. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +7 -1
  64. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
  65. package/lib/module/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.js +45 -0
  66. package/lib/module/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.js.map +1 -0
  67. package/lib/module/modules/bt-management/services/devices/viatom/viatom.vtm20f.js +56 -0
  68. package/lib/module/modules/bt-management/services/devices/viatom/viatom.vtm20f.js.map +1 -0
  69. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  70. package/lib/module/modules/bt-management/types/integrated-devices.js +5 -0
  71. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  72. package/lib/module/modules/bt-management/utils/calculate-crc-8-pc.js +17 -0
  73. package/lib/module/modules/bt-management/utils/calculate-crc-8-pc.js.map +1 -0
  74. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +3 -0
  78. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts +22 -0
  81. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts +37 -0
  83. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts +26 -0
  85. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/ap20.device.d.ts +16 -0
  88. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/ap20.device.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc68b.device.d.ts +16 -0
  90. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pc68b.device.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.d.ts +33 -0
  92. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.d.ts +23 -0
  94. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.d.ts.map +1 -0
  95. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +5 -1
  96. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.d.ts +8 -0
  98. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.d.ts.map +1 -0
  99. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.d.ts +7 -0
  100. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +5 -0
  102. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +6 -1
  104. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-8-pc.d.ts +3 -0
  106. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-8-pc.d.ts.map +1 -0
  107. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  108. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  109. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  110. package/lib/typescript/module/src/modules/bt-management/index.d.ts +3 -0
  111. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  112. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  113. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts +22 -0
  114. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.device.d.ts.map +1 -0
  115. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts +37 -0
  116. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.protocol.d.ts.map +1 -0
  117. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts +26 -0
  118. package/lib/typescript/module/src/modules/bt-management/services/devices/checkme/checkme-pod.sequencer.d.ts.map +1 -0
  119. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts.map +1 -1
  120. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/ap20.device.d.ts +16 -0
  121. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/ap20.device.d.ts.map +1 -0
  122. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc68b.device.d.ts +16 -0
  123. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pc68b.device.d.ts.map +1 -0
  124. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.d.ts +33 -0
  125. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-aa55.protocol.d.ts.map +1 -0
  126. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.d.ts +23 -0
  127. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.d.ts.map +1 -0
  128. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +5 -1
  129. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
  130. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.d.ts +8 -0
  131. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.d.ts.map +1 -0
  132. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.d.ts +7 -0
  133. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.vtm20f.frame-reader.d.ts.map +1 -0
  134. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +5 -0
  135. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  136. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +6 -1
  137. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  138. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-8-pc.d.ts +3 -0
  139. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-8-pc.d.ts.map +1 -0
  140. package/package.json +1 -1
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseCheckmePodRealtimeReading = exports.decodeCheckmePodResponse = exports.checkmePodSyncTime = exports.checkmePodCommand = exports.CheckmePodFrameReader = exports.CheckmePodCommand = exports.CHECKME_POD_WRITE = exports.CHECKME_POD_SERVICE = exports.CHECKME_POD_NOTIFY = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _calculateCrc = require("../../../utils/calculate-crc-8.js");
9
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const CHECKME_POD_SERVICE = exports.CHECKME_POD_SERVICE = "14839ac4-7d7e-415c-9a42-167340cf2339";
13
+ const CHECKME_POD_WRITE = exports.CHECKME_POD_WRITE = "8b00ace7-eb0b-49b0-bbe9-9aee0a26e1a3";
14
+ const CHECKME_POD_NOTIFY = exports.CHECKME_POD_NOTIFY = "0734594a-a8e7-4b1a-a6b1-cd5243059a57";
15
+ const CheckmePodCommand = exports.CheckmePodCommand = {
16
+ info: 0x14,
17
+ syncParameters: 0x16,
18
+ realtimeData: 0x20
19
+ };
20
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
21
+ const littleEndian16 = (bytes, offset) => (0, _hexToByte.hexToByte)(bytes[offset] ?? "00") | (0, _hexToByte.hexToByte)(bytes[offset + 1] ?? "00") << 8;
22
+ const ascii = value => [...value].map(character => byte(character.charCodeAt(0)));
23
+
24
+ /** Builds the AA command envelope used by Checkme Pod and Checkme Pod-WPS. */
25
+ const checkmePodCommand = (command, payload = [], sequence = 0) => {
26
+ const frame = ["aa", byte(command), byte(~command), byte(sequence), byte(sequence >> 8), byte(payload.length), byte(payload.length >> 8), ...payload, "00"];
27
+ frame[frame.length - 1] = byte((0, _calculateCrc.calculateCrc8)(frame, frame.length - 1));
28
+ return frame;
29
+ };
30
+ exports.checkmePodCommand = checkmePodCommand;
31
+ const checkmePodSyncTime = (now = new Date()) => {
32
+ const pad = value => value.toString().padStart(2, "0");
33
+ const time = `${now.getFullYear().toString().padStart(4, "0")}-${pad(now.getMonth() + 1)}-${pad(now.getDate())},${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
34
+ return checkmePodCommand(CheckmePodCommand.syncParameters, ascii(JSON.stringify({
35
+ SetTIME: time
36
+ })));
37
+ };
38
+ exports.checkmePodSyncTime = checkmePodSyncTime;
39
+ const decodeCheckmePodResponse = frame => {
40
+ if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0x55) {
41
+ return undefined;
42
+ }
43
+ const length = littleEndian16(frame, 5);
44
+ if (frame.length !== length + 8) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ state: (0, _hexToByte.hexToByte)(frame[1] ?? "01") === 0,
49
+ sequence: littleEndian16(frame, 3),
50
+ content: frame.slice(7, 7 + length)
51
+ };
52
+ };
53
+ exports.decodeCheckmePodResponse = decodeCheckmePodResponse;
54
+ /** Decodes the 20-byte RtParam prefix used by the vendor's realtime response. */
55
+ const parseCheckmePodRealtimeReading = content => {
56
+ if (content.length < 20) {
57
+ return undefined;
58
+ }
59
+ const state = (0, _hexToByte.hexToByte)(content[7] ?? "00");
60
+ return {
61
+ pulseRate: littleEndian16(content, 0),
62
+ bloodOxygen: littleEndian16(content, 2),
63
+ perfusionIndex: (0, _hexToByte.hexToByte)(content[4] ?? "00") / 10,
64
+ temperature: littleEndian16(content, 5) / 10,
65
+ oxygenState: state & 0x03,
66
+ temperatureState: (state & 0x0c) >> 2,
67
+ batteryState: (0, _hexToByte.hexToByte)(content[8] ?? "00"),
68
+ battery: (0, _hexToByte.hexToByte)(content[9] ?? "00"),
69
+ runStatus: (0, _hexToByte.hexToByte)(content[10] ?? "00")
70
+ };
71
+ };
72
+
73
+ /** Reads split and concatenated Checkme Pod notifications with CRC validation. */
74
+ exports.parseCheckmePodRealtimeReading = parseCheckmePodRealtimeReading;
75
+ class CheckmePodFrameReader {
76
+ readFrame(buffer) {
77
+ const start = buffer.findIndex((value, index) => (0, _hexToByte.hexToByte)(value) === 0x55 && index + 2 < buffer.length && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === (~(0, _hexToByte.hexToByte)(buffer[index + 2] ?? "00") & 0xff));
78
+ if (start < 0) {
79
+ return {
80
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
81
+ consumedBytes: Math.max(0, buffer.length - 1)
82
+ };
83
+ }
84
+ const payloadLength = littleEndian16(buffer, start + 5);
85
+ const frameLength = payloadLength + 8;
86
+ if (frameLength < 8) {
87
+ return {
88
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
89
+ consumedBytes: start + 1
90
+ };
91
+ }
92
+ if (start + frameLength > buffer.length) {
93
+ return {
94
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
95
+ consumedBytes: start
96
+ };
97
+ }
98
+ const frame = buffer.slice(start, start + frameLength);
99
+ if ((0, _calculateCrc.calculateCrc8)([...frame], frame.length - 1) !== (0, _hexToByte.hexToByte)(frame.at(-1) ?? "00")) {
100
+ return {
101
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
102
+ consumedBytes: start + 1
103
+ };
104
+ }
105
+ return {
106
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
107
+ consumedBytes: start + frameLength,
108
+ frame
109
+ };
110
+ }
111
+ }
112
+ exports.CheckmePodFrameReader = CheckmePodFrameReader;
113
+ //# sourceMappingURL=checkme-pod.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_calculateCrc","_hexToByte","CHECKME_POD_SERVICE","exports","CHECKME_POD_WRITE","CHECKME_POD_NOTIFY","CheckmePodCommand","info","syncParameters","realtimeData","byte","value","toString","padStart","littleEndian16","bytes","offset","hexToByte","ascii","map","character","charCodeAt","checkmePodCommand","command","payload","sequence","frame","length","calculateCrc8","checkmePodSyncTime","now","Date","pad","time","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","JSON","stringify","SetTIME","decodeCheckmePodResponse","undefined","state","content","slice","parseCheckmePodRealtimeReading","pulseRate","bloodOxygen","perfusionIndex","temperature","oxygenState","temperatureState","batteryState","battery","runStatus","CheckmePodFrameReader","readFrame","buffer","start","findIndex","index","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","payloadLength","frameLength","CORRUPT","at","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme-pod.protocol.ts"],"mappings":";;;;;;AAGA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AANA;;AAQO,MAAMG,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,sCAAsC;AAClE,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,sCAAsC;AAChE,MAAMC,kBAAkB,GAAAF,OAAA,CAAAE,kBAAA,GAAG,sCAAsC;AAEjE,MAAMC,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAG;EAC/BC,IAAI,EAAE,IAAI;EACVC,cAAc,EAAE,IAAI;EACpBC,YAAY,EAAE;AAChB,CAAU;AAEV,MAAMC,IAAI,GAAIC,KAAa,IACzB,CAACA,KAAK,GAAG,IAAI,EAAEC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAE9C,MAAMC,cAAc,GAAGA,CAACC,KAAwB,EAAEC,MAAc,KAC9D,IAAAC,oBAAS,EAACF,KAAK,CAACC,MAAM,CAAC,IAAI,IAAI,CAAC,GAC/B,IAAAC,oBAAS,EAACF,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAE;AAE7C,MAAME,KAAK,GAAIP,KAAa,IAC1B,CAAC,GAAGA,KAAK,CAAC,CAACQ,GAAG,CAAEC,SAAS,IAAKV,IAAI,CAACU,SAAS,CAACC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE9D;AACO,MAAMC,iBAAiB,GAAGA,CAC/BC,OAAe,EACfC,OAA0B,GAAG,EAAE,EAC/BC,QAAQ,GAAG,CAAC,KACC;EACb,MAAMC,KAAK,GAAG,CACZ,IAAI,EACJhB,IAAI,CAACa,OAAO,CAAC,EACbb,IAAI,CAAC,CAACa,OAAO,CAAC,EACdb,IAAI,CAACe,QAAQ,CAAC,EACdf,IAAI,CAACe,QAAQ,IAAI,CAAC,CAAC,EACnBf,IAAI,CAACc,OAAO,CAACG,MAAM,CAAC,EACpBjB,IAAI,CAACc,OAAO,CAACG,MAAM,IAAI,CAAC,CAAC,EACzB,GAAGH,OAAO,EACV,IAAI,CACL;EAECE,KAAK,CAACA,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,GAAGjB,IAAI,CAAC,IAAAkB,2BAAa,EAACF,KAAK,EAAEA,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC;EAEtE,OAAOD,KAAK;AAChB,CAAC;AAACvB,OAAA,CAAAmB,iBAAA,GAAAA,iBAAA;AAEK,MAAMO,kBAAkB,GAAGA,CAACC,GAAS,GAAG,IAAIC,IAAI,CAAC,CAAC,KAAe;EACtE,MAAMC,GAAG,GAAIrB,KAAa,IAAaA,KAAK,CAACC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAExE,MAAMoB,IAAI,GAAG,GAAGH,GAAG,CAACI,WAAW,CAAC,CAAC,CAACtB,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAImB,GAAG,CAClEF,GAAG,CAACK,QAAQ,CAAC,CAAC,GAAG,CACnB,CAAC,IAAIH,GAAG,CAACF,GAAG,CAACM,OAAO,CAAC,CAAC,CAAC,IAAIJ,GAAG,CAACF,GAAG,CAACO,QAAQ,CAAC,CAAC,CAAC,IAAIL,GAAG,CACnDF,GAAG,CAACQ,UAAU,CAAC,CACjB,CAAC,IAAIN,GAAG,CAACF,GAAG,CAACS,UAAU,CAAC,CAAC,CAAC,EAAE;EAE5B,OAAOjB,iBAAiB,CACtBhB,iBAAiB,CAACE,cAAc,EAChCU,KAAK,CAACsB,IAAI,CAACC,SAAS,CAAC;IAAEC,OAAO,EAAET;EAAK,CAAC,CAAC,CACzC,CAAC;AACH,CAAC;AAAC9B,OAAA,CAAA0B,kBAAA,GAAAA,kBAAA;AAQK,MAAMc,wBAAwB,GACnCjB,KAAwB,IACW;EACnC,IAAI,IAAAT,oBAAS,EAACS,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;IACxC,OAAOkB,SAAS;EAClB;EAEA,MAAMjB,MAAM,GAAGb,cAAc,CAACY,KAAK,EAAE,CAAC,CAAC;EAEvC,IAAIA,KAAK,CAACC,MAAM,KAAKA,MAAM,GAAG,CAAC,EAAE;IAC/B,OAAOiB,SAAS;EAClB;EAEA,OAAO;IACLC,KAAK,EAAE,IAAA5B,oBAAS,EAACS,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;IACxCD,QAAQ,EAAEX,cAAc,CAACY,KAAK,EAAE,CAAC,CAAC;IAClCoB,OAAO,EAAEpB,KAAK,CAACqB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAGpB,MAAM;EACpC,CAAC;AACH,CAAC;AAACxB,OAAA,CAAAwC,wBAAA,GAAAA,wBAAA;AAcF;AACO,MAAMK,8BAA8B,GACzCF,OAA0B,IACgB;EAC1C,IAAIA,OAAO,CAACnB,MAAM,GAAG,EAAE,EAAE;IACvB,OAAOiB,SAAS;EAClB;EAEA,MAAMC,KAAK,GAAG,IAAA5B,oBAAS,EAAC6B,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;EAE3C,OAAO;IACLG,SAAS,EAAEnC,cAAc,CAACgC,OAAO,EAAE,CAAC,CAAC;IACrCI,WAAW,EAAEpC,cAAc,CAACgC,OAAO,EAAE,CAAC,CAAC;IACvCK,cAAc,EAAE,IAAAlC,oBAAS,EAAC6B,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;IAClDM,WAAW,EAAEtC,cAAc,CAACgC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;IAC5CO,WAAW,EAAER,KAAK,GAAG,IAAI;IACzBS,gBAAgB,EAAE,CAACT,KAAK,GAAG,IAAI,KAAK,CAAC;IACrCU,YAAY,EAAE,IAAAtC,oBAAS,EAAC6B,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3CU,OAAO,EAAE,IAAAvC,oBAAS,EAAC6B,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACtCW,SAAS,EAAE,IAAAxC,oBAAS,EAAC6B,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI;EAC1C,CAAC;AACH,CAAC;;AAED;AAAA3C,OAAA,CAAA6C,8BAAA,GAAAA,8BAAA;AACO,MAAMU,qBAAqB,CAAwB;EACjDC,SAASA,CAACC,MAAyB,EAAmB;IAC3D,MAAMC,KAAK,GAAGD,MAAM,CAACE,SAAS,CAC5B,CAACnD,KAAK,EAAEoD,KAAK,KACX,IAAA9C,oBAAS,EAACN,KAAK,CAAC,KAAK,IAAI,IACzBoD,KAAK,GAAG,CAAC,GAAGH,MAAM,CAACjC,MAAM,IACzB,IAAAV,oBAAS,EAAC2C,MAAM,CAACG,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MACjC,CAAC,IAAA9C,oBAAS,EAAC2C,MAAM,CAACG,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CACnD,CAAC;IAED,IAAIF,KAAK,GAAG,CAAC,EAAE;MACb,OAAO;QACLG,MAAM,EAAEC,gCAAe,CAACC,UAAU;QAClCC,aAAa,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAET,MAAM,CAACjC,MAAM,GAAG,CAAC;MAC9C,CAAC;IACH;IAEA,MAAM2C,aAAa,GAAGxD,cAAc,CAAC8C,MAAM,EAAEC,KAAK,GAAG,CAAC,CAAC;IACvD,MAAMU,WAAW,GAAGD,aAAa,GAAG,CAAC;IAErC,IAAIC,WAAW,GAAG,CAAC,EAAE;MACnB,OAAO;QACLP,MAAM,EAAEC,gCAAe,CAACO,OAAO;QAC/BL,aAAa,EAAEN,KAAK,GAAG;MACzB,CAAC;IACH;IAEA,IAAIA,KAAK,GAAGU,WAAW,GAAGX,MAAM,CAACjC,MAAM,EAAE;MACvC,OAAO;QAAEqC,MAAM,EAAEC,gCAAe,CAACC,UAAU;QAAEC,aAAa,EAAEN;MAAM,CAAC;IACrE;IAEA,MAAMnC,KAAK,GAAGkC,MAAM,CAACb,KAAK,CAACc,KAAK,EAAEA,KAAK,GAAGU,WAAW,CAAC;IAEtD,IACE,IAAA3C,2BAAa,EAAC,CAAC,GAAGF,KAAK,CAAC,EAAEA,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,KAC3C,IAAAV,oBAAS,EAACS,KAAK,CAAC+C,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAC/B;MACA,OAAO;QACLT,MAAM,EAAEC,gCAAe,CAACO,OAAO;QAC/BL,aAAa,EAAEN,KAAK,GAAG;MACzB,CAAC;IACH;IAEA,OAAO;MACLG,MAAM,EAAEC,gCAAe,CAACS,QAAQ;MAChCP,aAAa,EAAEN,KAAK,GAAGU,WAAW;MAClC7C;IACF,CAAC;EACH;AACF;AAACvB,OAAA,CAAAuD,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CheckmePodSequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _checkmePodProtocol = require("./checkme-pod.protocol.js");
10
+ const command = (write, frame) => ({
11
+ ...write,
12
+ frame,
13
+ withoutResponse: true
14
+ });
15
+ const valid = value => Number.isFinite(value) && value > 0;
16
+
17
+ /** Drives the info -> clock sync -> realtime exchange used by Checkme Pod. */
18
+ class CheckmePodSequencer {
19
+ phase = "info";
20
+ constructor(params) {
21
+ this.params = params;
22
+ }
23
+ initialCommands = () => [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.info))];
24
+ nextCommand = frame => {
25
+ const response = (0, _checkmePodProtocol.decodeCheckmePodResponse)(frame);
26
+ if (!response?.state) {
27
+ return undefined;
28
+ }
29
+ if (this.phase === "info") {
30
+ this.phase = "sync";
31
+ return [this.write((0, _checkmePodProtocol.checkmePodSyncTime)(this.params.now?.() ?? new Date()))];
32
+ }
33
+ if (this.phase === "sync") {
34
+ this.phase = "realtime";
35
+ return [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.realtimeData))];
36
+ }
37
+ this.report(response);
38
+ return [this.write((0, _checkmePodProtocol.checkmePodCommand)(_checkmePodProtocol.CheckmePodCommand.realtimeData))];
39
+ };
40
+ write = frame => command(this.params.write, frame);
41
+ report = response => {
42
+ const reading = (0, _checkmePodProtocol.parseCheckmePodRealtimeReading)(response.content);
43
+ if (!reading) {
44
+ return;
45
+ }
46
+ const recordedAt = this.params.now?.() ?? new Date();
47
+ if (valid(reading.bloodOxygen) || valid(reading.pulseRate)) {
48
+ this.params.onResult({
49
+ caseType: _caseType.CaseType.RESULT,
50
+ measurementTypeKey: _core.MeasurementTypeKey.bloodOxygenPulseRate,
51
+ ...(valid(reading.bloodOxygen) ? {
52
+ bloodOxygen: reading.bloodOxygen
53
+ } : {}),
54
+ ...(valid(reading.pulseRate) ? {
55
+ pulseRate: reading.pulseRate
56
+ } : {}),
57
+ ...(valid(reading.perfusionIndex) ? {
58
+ perfusionIndex: reading.perfusionIndex
59
+ } : {}),
60
+ recordedAt
61
+ });
62
+ }
63
+ if (valid(reading.temperature)) {
64
+ this.params.onResult({
65
+ caseType: _caseType.CaseType.RESULT,
66
+ measurementTypeKey: _core.MeasurementTypeKey.temperature,
67
+ bodyTemp: reading.temperature,
68
+ recordedAt
69
+ });
70
+ }
71
+ };
72
+ }
73
+ exports.CheckmePodSequencer = CheckmePodSequencer;
74
+ //# sourceMappingURL=checkme-pod.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_checkmePodProtocol","command","write","frame","withoutResponse","valid","value","Number","isFinite","CheckmePodSequencer","phase","constructor","params","initialCommands","checkmePodCommand","CheckmePodCommand","info","nextCommand","response","decodeCheckmePodResponse","state","undefined","checkmePodSyncTime","now","Date","realtimeData","report","reading","parseCheckmePodRealtimeReading","content","recordedAt","bloodOxygen","pulseRate","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","bloodOxygenPulseRate","perfusionIndex","temperature","bodyTemp","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/checkme/checkme-pod.sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -25,7 +25,7 @@ exports.LEPU_FIRST_WORD_DEVICE_NAMES = exports.LEPU_DEVICE_NAMES = exports.LEPU_
25
25
  * `lepuNameMatch` derives the exclusions from the list itself. Adding a name automatically
26
26
  * narrows every name it extends, which an ordered list would leave to whoever inserted it.
27
27
  */
28
- const LEPU_DEVICE_NAMES = exports.LEPU_DEVICE_NAMES = ["AI-S100", "AITele", "AIView VS", "AP-20", "AP-20-WPS", "AirBP", "Aura_BP2", "BBSM BS1", "BBSM P1", "BBSM S1", "BBSM S2", "BBSM S3", "BM10", "BP2", "BP2A", "BP2A Nexus", "BP2B", "BP2T", "BP2V", "BP2W", "BP3", "BP3-B", "BP3-C1", "BP3-C2", "BP3A", "BP3B", "BP3C", "BP3D", "BP3E", "BP3F", "BP3G", "BP3H", "BP3K", "BP3L", "BP3Z", "BP4 Flex", "BPWATCH", "BUZUD-CML", "Band-WU", "Bioland-BGM", "CB1L-1", "Cardio AI", "CMB590611", "CMB590840", "CMB592254", "CMI_PC303", "CMRing", "CMTouch", "CPR Feedback", "CPR-01", "CPR-02", "CheckADV", "Checkme", "Checkme EX", "Checkme Pod", "Checkme Pod-WPS", "Checkme lite A", "CheckmeLE", "CheckmeLP", "DUAL-SPP", "EM-B", "EM-W", "ER1", "ER1-H", "ER1-L", "ER1-S", "ER1-SP", "ER1-W", "ER1S", "ER2", "ER2-S", "EZY-HB-01", "EZY-HBB-02", "GM_300SNT", "GM_300SNT-BLE", "Genial-T31", "HDM3D", "HDM3G", "HHM1", "HHM2", "HHM3", "HHM4", "JFK1001", "JFR1001", "KCA", "KCB", "KS-60FW", "KardiaBP", "KidsO2-WPS", "LBM-1", "LEPU AED", "LEPU ER1", "LEPU-ER2", "LP ER2", "LP-BP2W", "LPM311", "LPRE", "Le S5", "Le-F2 Pro", "Le-W", "LeRes", "Lepod", "LepodPro", "Lepu PO6", "Lescale F3", "Lescale F4L", "Lescale F4P", "Lescale P3", "M5", "MY-SS2501", "N9+BP2", "O2 Intg", "O2M-WPS", "O2R WAVE", "O2RMed S", "O2Ring", "O2Ring S", "O2Ring SC", "O2Ring SF", "O2Ring SP", "O2Ring-RE", "O2RingF", "OxyU", "OxyU SE", "Oxyfit", "Oxyfit-WPS", "PC-100", "PC-200", "PC-200-BLE", "PC-60B_SN", "PC-60F_SN", "PC-60NW", "PC-60NW-1_SN", "PC-60NW-WPS", "PC-60NW_BLE", "PC-60NW_SN", "PC-66B", "PC-68B", "PC66B-VE", "PC80B", "PC80B-BLE", "PC80B_BLE:", "PC_300SNT", "PC_300SNT-BLE", "PF-10", "PF-10AW", "PF-10AW-1", "PF-10AW1", "PF-10BW", "PF-10BW1", "PF-10BWS", "PF-20", "PF-20AW", "PF-20B", "PF10AW-ME", "PF10BW-VE", "PM10", "PO6B-WE", "POD-1W-WU", "POD-1_SN", "POD-2B_SN", "PoctorM3102", "QC-200", "R10", "R11", "R20", "R200", "R21", "S5W-VU", "S5W_SN", "S6W", "S6W1", "S7BW", "S7W", "S8-AW", "SA10AW-PU", "SHQFlex", "SHQO2Pro", "SI PO2", "SI PO4", "SI PO6", "SP-20", "SP-20-BLE", "SP-20-WPS", "T-201", "TMB-2288", "TMB_2088", "VCOMIN", "VTM AD5", "W12c", "WBP-02", "ZH-SG", "ZH-SG-A606", "aed_box", "iGate", "int-ER2", "le B1", "le S1", "KidsO2", "O2BAND", "SleepU", "WearO2", "OxySmart", "FHR-666(BLE)", "SleepO2", "Station", "F4", "F5", "F8", "O2", "BTP", "ECN", "ER3", "LDT", "M12", "O2M", "O2S", "OMP", "BPW1", "LEM1", "O2MP", "DuoEK", "O2NCI", "VBeat", "VTM01", "OxyRing", "Oxylink", "LD-TECK", "BPM-188", "MY_SCALE", "BabyO2N", "Pulsebit", "Vetcorder", "BabyO2"];
28
+ const LEPU_DEVICE_NAMES = exports.LEPU_DEVICE_NAMES = ["AI-S100", "AITele", "AIView VS", "AP-20", "AP-20-WPS", "AirBP", "Aura_BP2", "BBSM BS1", "BBSM P1", "BBSM S1", "BBSM S2", "BBSM S3", "BM10", "BP2", "BP2A", "BP2A Nexus", "BP2B", "BP2T", "BP2V", "BP2W", "BP3", "BP3-B", "BP3-C1", "BP3-C2", "BP3A", "BP3B", "BP3C", "BP3D", "BP3E", "BP3F", "BP3G", "BP3H", "BP3K", "BP3L", "BP3Z", "BP4 Flex", "BPWATCH", "BUZUD-CML", "Band-WU", "Bioland-BGM", "CB1L-1", "Cardio AI", "CMB590611", "CMB590840", "CMB592254", "CMI_PC303", "CMRing", "CMTouch", "CPR Feedback", "CPR-01", "CPR-02", "CheckADV", "Checkme", "Checkme EX", "Checkme Pod", "Checkme Pod-WPS", "Checkme lite A", "CheckmeLE", "CheckmeLP", "DUAL-SPP", "EM-B", "EM-W", "ER1", "ER1-H", "ER1-L", "ER1-S", "ER1-SP", "ER1-W", "ER1S", "ER2", "ER2-S", "EZY-HB-01", "EZY-HBB-02", "GM_300SNT", "GM_300SNT-BLE", "Genial-T31", "HDM3D", "HDM3G", "HHM1", "HHM2", "HHM3", "HHM4", "JFK1001", "JFR1001", "KCA", "KCB", "KS-60FW", "KardiaBP", "KidsO2-WPS", "LBM-1", "LEPU AED", "LEPU ER1", "LEPU-ER2", "LP ER2", "LP-BP2W", "LPM311", "LPRE", "Le S5", "Le-F2 Pro", "Le-W", "LeRes", "Lepod", "LepodPro", "Lepu PO6", "Lescale F3", "Lescale F4L", "Lescale F4P", "Lescale P3", "M5", "MY-SS2501", "N9+BP2", "O2 Intg", "O2M-WPS", "O2R WAVE", "O2RMed S", "O2Ring", "O2Ring S", "O2Ring SC", "O2Ring SF", "O2Ring SP", "O2Ring-RE", "O2RingF", "OxyU", "OxyU SE", "Oxyfit", "Oxyfit-WPS", "PC-100", "PC-200", "PC-200-BLE", "PC-60B_SN", "PC-60F_SN", "PC-60NW", "PC-60NW-1_SN", "PC-60NW-WPS", "PC-60NW_BLE", "PC-60NW_SN", "PC-66B", "PC-68B", "PC66B-VE", "PC80B", "PC80B-BLE", "PC80B_BLE:", "PC_300SNT", "PC_300SNT-BLE", "PF-10", "PF-10AW", "PF-10AW-1", "PF-10AW1", "PF-10BW", "PF-10BW1", "PF-10BWS", "PF-20", "PF-20AW", "PF-20B", "PF10AW-ME", "PF10BW-VE", "PM10", "PO6B-WE", "POD-1W-WU", "POD-1_SN", "POD-2B_SN", "PoctorM3102", "QC-200", "R10", "R11", "R20", "R200", "R21", "S5W-VU", "S5W_SN", "S6W", "S6W1", "S7BW", "S7W", "S8-AW", "SA10AW-PU", "SHQFlex", "SHQO2Pro", "SI PO2", "SI PO4", "SI PO6", "SP-20", "SP-20-BLE", "SP-20-WPS", "T-201", "TMB-2288", "TMB_2088", "VCOMIN", "VTM AD5", "VTM 20F", "W12c", "WBP-02", "ZH-SG", "ZH-SG-A606", "aed_box", "iGate", "int-ER2", "le B1", "le S1", "KidsO2", "O2BAND", "SleepU", "WearO2", "OxySmart", "FHR-666(BLE)", "SleepO2", "Station", "F4", "F5", "F8", "O2", "BTP", "ECN", "ER3", "LDT", "M12", "O2M", "O2S", "OMP", "BPW1", "LEM1", "O2MP", "DuoEK", "O2NCI", "VBeat", "VTM01", "OxyRing", "Oxylink", "LD-TECK", "BPM-188", "MY_SCALE", "BabyO2N", "Pulsebit", "Vetcorder", "BabyO2"];
29
29
 
30
30
  /** Names the vendor matches by the complete first word of the advertisement. */
31
31
  const LEPU_FIRST_WORD_DEVICE_NAMES = exports.LEPU_FIRST_WORD_DEVICE_NAMES = ["KidsO2", "O2BAND", "SleepU", "WearO2", "OxySmart", "FHR-666(BLE)", "SleepO2", "Station", "F4", "F5", "F8", "O2", "BTP", "ECN", "ER3", "LDT", "M12", "O2M", "O2S", "OMP", "BPW1", "LEM1", "O2MP", "DuoEK", "O2NCI", "VBeat", "VTM01", "OxyRing", "Oxylink", "LD-TECK", "BPM-188", "MY_SCALE", "BabyO2N", "Pulsebit", "Vetcorder", "BabyO2"];
@@ -1 +1 @@
1
- {"version":3,"names":["LEPU_DEVICE_NAMES","exports","LEPU_FIRST_WORD_DEVICE_NAMES","LEPU_CATALOG_EXCLUDED_DEVICE_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.device-names.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["LEPU_DEVICE_NAMES","exports","LEPU_FIRST_WORD_DEVICE_NAMES","LEPU_CATALOG_EXCLUDED_DEVICE_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.device-names.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ap20MainServices = exports.Ap20Device = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomAa55Protocol = require("./viatom-aa55.protocol.js");
9
+ var _viatomAa55Sequencer = require("./viatom-aa55.sequencer.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const acceptNothing = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const ap20MainServices = exports.ap20MainServices = [{
17
+ uuid: _viatomAa55Protocol.VIATOM_AA55_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomAa55Protocol.VIATOM_AA55_NOTIFY,
20
+ parsingModel: acceptNothing
21
+ }],
22
+ writeUuid: {
23
+ uuid: _viatomAa55Protocol.VIATOM_AA55_WRITE,
24
+ mainCommandUuid: "aa55"
25
+ }
26
+ }];
27
+
28
+ /** Viatom AP-20 and AP-20-WPS realtime oximeter driver. */
29
+ class Ap20Device extends _btManagedDevice.BTManagedDevice {
30
+ mainServices = ap20MainServices;
31
+ stuckDataTimeout = 60_000;
32
+ onStreamStart = undefined;
33
+ preferredMtu = 247;
34
+ constructor(device, params) {
35
+ super(device, params);
36
+ this.frameReader = new _viatomAa55Protocol.ViatomAa55FrameReader();
37
+ this.createCommandSequencer = () => new _viatomAa55Sequencer.ViatomAa55Sequencer({
38
+ write: {
39
+ serviceUuid: _viatomAa55Protocol.VIATOM_AA55_SERVICE,
40
+ characteristicUuid: _viatomAa55Protocol.VIATOM_AA55_WRITE
41
+ },
42
+ perfusionScale: 1,
43
+ onResult: result => this.onResult?.(result)
44
+ });
45
+ }
46
+ handleSuccessResult() {
47
+ return;
48
+ }
49
+ }
50
+ exports.Ap20Device = Ap20Device;
51
+ //# sourceMappingURL=ap20.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomAa55Protocol","_viatomAa55Sequencer","acceptNothing","caseValuePosition","cases","ap20MainServices","exports","uuid","VIATOM_AA55_SERVICE","monitorUuids","VIATOM_AA55_NOTIFY","parsingModel","writeUuid","VIATOM_AA55_WRITE","mainCommandUuid","Ap20Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","ViatomAa55FrameReader","createCommandSequencer","ViatomAa55Sequencer","write","serviceUuid","characteristicUuid","perfusionScale","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/ap20.device.ts"],"mappings":";;;;;;AASA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AAMA,IAAAE,oBAAA,GAAAF,OAAA;AAjBA;;AAmBA,MAAMG,aAAa,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEnD,MAAMC,gBAA4B,GAAAC,OAAA,CAAAD,gBAAA,GAAG,CAC1C;EACEE,IAAI,EAAEC,uCAAmB;EACzBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,sCAAkB;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACzEU,SAAS,EAAE;IACTL,IAAI,EAAEM,qCAAiB;IACvBC,eAAe,EAAE;EACnB;AACF,CAAC,CACF;;AAED;AACO,MAAMC,UAAU,SAASC,gCAAe,CAAyB;EAC5DC,YAAY,GAAGZ,gBAAgB;EAC/Ba,gBAAgB,GAAG,MAAM;EACzBC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAE9BC,WAAWA,CAChBC,MAAc,EACdC,MAAkD,EAClD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,yCAAqB,CAAC,CAAC;IAC9C,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,wCAAmB,CAAC;MACtBC,KAAK,EAAE;QACLC,WAAW,EAAEtB,uCAAmB;QAChCuB,kBAAkB,EAAElB;MACtB,CAAC;MACDmB,cAAc,EAAE,CAAC;MACjBC,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC7B,OAAA,CAAAS,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pc68bMainServices = exports.Pc68bDevice = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomAa55Protocol = require("./viatom-aa55.protocol.js");
9
+ var _viatomAa55Sequencer = require("./viatom-aa55.sequencer.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const acceptNothing = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const pc68bMainServices = exports.pc68bMainServices = [{
17
+ uuid: _viatomAa55Protocol.VIATOM_AA55_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomAa55Protocol.VIATOM_AA55_NOTIFY,
20
+ parsingModel: acceptNothing
21
+ }],
22
+ writeUuid: {
23
+ uuid: _viatomAa55Protocol.VIATOM_AA55_WRITE,
24
+ mainCommandUuid: "aa55"
25
+ }
26
+ }];
27
+
28
+ /** Viatom PC-68B realtime oximeter driver. */
29
+ class Pc68bDevice extends _btManagedDevice.BTManagedDevice {
30
+ mainServices = pc68bMainServices;
31
+ stuckDataTimeout = 60_000;
32
+ onStreamStart = undefined;
33
+ preferredMtu = 247;
34
+ constructor(device, params) {
35
+ super(device, params);
36
+ this.frameReader = new _viatomAa55Protocol.ViatomAa55FrameReader();
37
+ this.createCommandSequencer = () => new _viatomAa55Sequencer.ViatomAa55Sequencer({
38
+ write: {
39
+ serviceUuid: _viatomAa55Protocol.VIATOM_AA55_SERVICE,
40
+ characteristicUuid: _viatomAa55Protocol.VIATOM_AA55_WRITE
41
+ },
42
+ perfusionScale: 0.1,
43
+ onResult: result => this.onResult?.(result)
44
+ });
45
+ }
46
+ handleSuccessResult() {
47
+ return;
48
+ }
49
+ }
50
+ exports.Pc68bDevice = Pc68bDevice;
51
+ //# sourceMappingURL=pc68b.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomAa55Protocol","_viatomAa55Sequencer","acceptNothing","caseValuePosition","cases","pc68bMainServices","exports","uuid","VIATOM_AA55_SERVICE","monitorUuids","VIATOM_AA55_NOTIFY","parsingModel","writeUuid","VIATOM_AA55_WRITE","mainCommandUuid","Pc68bDevice","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","ViatomAa55FrameReader","createCommandSequencer","ViatomAa55Sequencer","write","serviceUuid","characteristicUuid","perfusionScale","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/pc68b.device.ts"],"mappings":";;;;;;AASA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AAMA,IAAAE,oBAAA,GAAAF,OAAA;AAjBA;;AAmBA,MAAMG,aAAa,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEnD,MAAMC,iBAA6B,GAAAC,OAAA,CAAAD,iBAAA,GAAG,CAC3C;EACEE,IAAI,EAAEC,uCAAmB;EACzBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,sCAAkB;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACzEU,SAAS,EAAE;IACTL,IAAI,EAAEM,qCAAiB;IACvBC,eAAe,EAAE;EACnB;AACF,CAAC,CACF;;AAED;AACO,MAAMC,WAAW,SAASC,gCAAe,CAA0B;EAC9DC,YAAY,GAAGZ,iBAAiB;EAChCa,gBAAgB,GAAG,MAAM;EACzBC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAE9BC,WAAWA,CAChBC,MAAc,EACdC,MAAmD,EACnD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,yCAAqB,CAAC,CAAC;IAC9C,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,wCAAmB,CAAC;MACtBC,KAAK,EAAE;QACLC,WAAW,EAAEtB,uCAAmB;QAChCuB,kBAAkB,EAAElB;MACtB,CAAC;MACDmB,cAAc,EAAE,GAAG;MACnBC,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC7B,OAAA,CAAAS,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.viatomAa55SetTime = exports.viatomAa55Command = exports.parseViatomAa55OximeterReading = exports.decodeViatomAa55Response = exports.ViatomAa55FrameReader = exports.VIATOM_AA55_WRITE = exports.VIATOM_AA55_SERVICE = exports.VIATOM_AA55_NOTIFY = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _calculateCrc8Pc = require("../../../utils/calculate-crc-8-pc.js");
9
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const VIATOM_AA55_SERVICE = exports.VIATOM_AA55_SERVICE = "14839ac4-7d7e-415c-9a42-167340cf2339";
13
+ const VIATOM_AA55_WRITE = exports.VIATOM_AA55_WRITE = "8b00ace7-eb0b-49b0-bbe9-9aee0a26e1a3";
14
+ const VIATOM_AA55_NOTIFY = exports.VIATOM_AA55_NOTIFY = "0734594a-a8e7-4b1a-a6b1-cd5243059a57";
15
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
16
+ const littleEndian32 = value => [byte(value), byte(value >>> 8), byte(value >>> 16), byte(value >>> 24)];
17
+
18
+ /**
19
+ * Builds the AA 55 command used by the Viatom AP-20 and PC-68B interfaces.
20
+ * The length byte includes the command and checksum, as in the vendor library.
21
+ */
22
+ const viatomAa55Command = (token, command, payload = []) => {
23
+ const frame = ["aa", "55", byte(token), byte(payload.length + 2), byte(command), ...payload, "00"];
24
+ frame[frame.length - 1] = byte((0, _calculateCrc8Pc.calculateCrc8Pc)(frame));
25
+ return frame;
26
+ };
27
+
28
+ /** The vendor's TimeData: local epoch and timezone offset, both little-endian. */
29
+ exports.viatomAa55Command = viatomAa55Command;
30
+ const viatomAa55SetTime = (now = new Date()) => {
31
+ const offsetSeconds = -now.getTimezoneOffset() * 60;
32
+ const localEpochSeconds = Math.floor(now.getTime() / 1000) - offsetSeconds;
33
+ return viatomAa55Command(0x0f, 0x87, [...littleEndian32(localEpochSeconds), ...littleEndian32(offsetSeconds), "00", "00"]);
34
+ };
35
+ exports.viatomAa55SetTime = viatomAa55SetTime;
36
+ const decodeViatomAa55Response = frame => {
37
+ if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0xaa || (0, _hexToByte.hexToByte)(frame[1] ?? "00") !== 0x55) {
38
+ return undefined;
39
+ }
40
+ const length = (0, _hexToByte.hexToByte)(frame[3] ?? "00");
41
+ if (length < 2 || frame.length !== length + 4) {
42
+ return undefined;
43
+ }
44
+ if ((0, _calculateCrc8Pc.calculateCrc8Pc)(frame) !== (0, _hexToByte.hexToByte)(frame.at(-1) ?? "00")) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ token: (0, _hexToByte.hexToByte)(frame[2] ?? "00"),
49
+ type: (0, _hexToByte.hexToByte)(frame[4] ?? "00"),
50
+ content: frame.slice(5, frame.length - 1)
51
+ };
52
+ };
53
+ exports.decodeViatomAa55Response = decodeViatomAa55Response;
54
+ /** Decodes the six-byte realtime parameter payload shared by both products. */
55
+ const parseViatomAa55OximeterReading = (content, perfusionScale) => {
56
+ if (content.length < 6) {
57
+ return undefined;
58
+ }
59
+ const flags = (0, _hexToByte.hexToByte)(content[4] ?? "00");
60
+ return {
61
+ bloodOxygen: (0, _hexToByte.hexToByte)(content[0] ?? "00"),
62
+ pulseRate: (0, _hexToByte.hexToByte)(content[1] ?? "00") | (0, _hexToByte.hexToByte)(content[2] ?? "00") << 8,
63
+ perfusionIndex: (0, _hexToByte.hexToByte)(content[3] ?? "00") * perfusionScale,
64
+ probeOff: (flags & 0x02) !== 0,
65
+ pulseSearching: (flags & 0x04) !== 0
66
+ };
67
+ };
68
+
69
+ /** Reads split and concatenated AA55 frames with the vendor CRC-8/PC checksum. */
70
+ exports.parseViatomAa55OximeterReading = parseViatomAa55OximeterReading;
71
+ class ViatomAa55FrameReader {
72
+ readFrame(buffer) {
73
+ const start = this.findHeader(buffer);
74
+ if (start < 0) {
75
+ return {
76
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
77
+ consumedBytes: Math.max(0, buffer.length - 1)
78
+ };
79
+ }
80
+ if (start + 4 > buffer.length) {
81
+ return {
82
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
83
+ consumedBytes: start
84
+ };
85
+ }
86
+ const frameLength = (0, _hexToByte.hexToByte)(buffer[start + 3] ?? "00") + 4;
87
+ if (frameLength < 6) {
88
+ return {
89
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
90
+ consumedBytes: start + 2
91
+ };
92
+ }
93
+ if (start + frameLength > buffer.length) {
94
+ return {
95
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
96
+ consumedBytes: start
97
+ };
98
+ }
99
+ const frame = buffer.slice(start, start + frameLength);
100
+ if ((0, _calculateCrc8Pc.calculateCrc8Pc)(frame) !== (0, _hexToByte.hexToByte)(frame.at(-1) ?? "00")) {
101
+ return {
102
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
103
+ consumedBytes: start + 2
104
+ };
105
+ }
106
+ return {
107
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
108
+ consumedBytes: start + frameLength,
109
+ frame
110
+ };
111
+ }
112
+ findHeader = buffer => {
113
+ for (let index = 0; index < buffer.length - 1; index += 1) {
114
+ if ((0, _hexToByte.hexToByte)(buffer[index] ?? "00") === 0xaa && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === 0x55) {
115
+ return index;
116
+ }
117
+ }
118
+ return -1;
119
+ };
120
+ }
121
+ exports.ViatomAa55FrameReader = ViatomAa55FrameReader;
122
+ //# sourceMappingURL=viatom-aa55.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_calculateCrc8Pc","_hexToByte","VIATOM_AA55_SERVICE","exports","VIATOM_AA55_WRITE","VIATOM_AA55_NOTIFY","byte","value","toString","padStart","littleEndian32","viatomAa55Command","token","command","payload","frame","length","calculateCrc8Pc","viatomAa55SetTime","now","Date","offsetSeconds","getTimezoneOffset","localEpochSeconds","Math","floor","getTime","decodeViatomAa55Response","hexToByte","undefined","at","type","content","slice","parseViatomAa55OximeterReading","perfusionScale","flags","bloodOxygen","pulseRate","perfusionIndex","probeOff","pulseSearching","ViatomAa55FrameReader","readFrame","buffer","start","findHeader","status","FrameReadStatus","INCOMPLETE","consumedBytes","max","frameLength","CORRUPT","COMPLETE","index"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom-aa55.protocol.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ViatomAa55Sequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _viatomAa55Protocol = require("./viatom-aa55.protocol.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const command = (write, frame) => ({
13
+ ...write,
14
+ frame,
15
+ withoutResponse: true
16
+ });
17
+ const validOxygen = value => Number.isFinite(value) && value >= 50 && value <= 100;
18
+ const validPulse = value => Number.isFinite(value) && value > 0 && value <= 300;
19
+
20
+ /** Drives the clock, realtime-parameter and realtime-wave exchange used by AP-20 and PC-68B. */
21
+ class ViatomAa55Sequencer {
22
+ phase = "clock";
23
+ constructor(params) {
24
+ this.params = params;
25
+ }
26
+ initialCommands = () => [this.write((0, _viatomAa55Protocol.viatomAa55SetTime)(this.params.now?.() ?? new Date()))];
27
+ nextCommand = frame => {
28
+ const response = (0, _viatomAa55Protocol.decodeViatomAa55Response)(frame);
29
+ if (!response || response.token !== 0x0f) {
30
+ return undefined;
31
+ }
32
+ if (response.type === 1) {
33
+ if (this.phase === "ready") {
34
+ this.report(response);
35
+ }
36
+ return undefined;
37
+ }
38
+ if (this.phase === "clock" && response.type === 7) {
39
+ this.phase = "parameters";
40
+ return [this.write((0, _viatomAa55Protocol.viatomAa55Command)(0x0f, 0x84, ["01"]))];
41
+ }
42
+ if (this.phase === "parameters" && response.type === 4) {
43
+ this.phase = "wave";
44
+ return [this.write((0, _viatomAa55Protocol.viatomAa55Command)(0x0f, 0x85, ["01"]))];
45
+ }
46
+ if (this.phase === "wave" && response.type === 5) {
47
+ this.phase = "ready";
48
+ }
49
+ return undefined;
50
+ };
51
+ write = frame => command(this.params.write, frame);
52
+ report = response => {
53
+ const reading = (0, _viatomAa55Protocol.parseViatomAa55OximeterReading)(response.content, this.params.perfusionScale);
54
+ if (!reading || reading.probeOff || reading.pulseSearching) {
55
+ return;
56
+ }
57
+ const hasOxygen = validOxygen(reading.bloodOxygen);
58
+ const hasPulse = validPulse(reading.pulseRate);
59
+ if (!hasOxygen && !hasPulse) {
60
+ return;
61
+ }
62
+ this.params.onResult({
63
+ caseType: _caseType.CaseType.RESULT,
64
+ measurementTypeKey: _core.MeasurementTypeKey.bloodOxygenPulseRate,
65
+ ...(hasOxygen ? {
66
+ bloodOxygen: reading.bloodOxygen
67
+ } : {}),
68
+ ...(hasPulse ? {
69
+ pulseRate: reading.pulseRate
70
+ } : {}),
71
+ ...(reading.perfusionIndex > 0 ? {
72
+ perfusionIndex: reading.perfusionIndex
73
+ } : {}),
74
+ recordedAt: this.params.now?.() ?? new Date()
75
+ });
76
+ };
77
+ }
78
+ exports.ViatomAa55Sequencer = ViatomAa55Sequencer;
79
+ //# sourceMappingURL=viatom-aa55.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_viatomAa55Protocol","command","write","frame","withoutResponse","validOxygen","value","Number","isFinite","validPulse","ViatomAa55Sequencer","phase","constructor","params","initialCommands","viatomAa55SetTime","now","Date","nextCommand","response","decodeViatomAa55Response","token","undefined","type","report","viatomAa55Command","reading","parseViatomAa55OximeterReading","content","perfusionScale","probeOff","pulseSearching","hasOxygen","bloodOxygen","hasPulse","pulseRate","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","bloodOxygenPulseRate","perfusionIndex","recordedAt","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom-aa55.sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.viatomBpMonitor = exports.tmbBpMonitor = exports.bp2wMonitor = exports.bp2tMonitor = exports.bp2aMonitor = exports.TMB_MODEL_NAMES = exports.BP3_MODEL_NAMES = void 0;
6
+ exports.viatomBpMonitor = exports.tmbBpMonitor = exports.lpBp2wMonitor = exports.bp2wMonitor = exports.bp2vMonitor = exports.bp2tMonitor = exports.bp2aMonitor = exports.TMB_MODEL_NAMES = exports.BP3_MODEL_NAMES = void 0;
7
7
  var _le32FromHex = require("../../../utils/le-32-from-hex.js");
8
8
  var _defineCustomDevice = require("../../custom/define-custom-device.js");
9
9
  var _bp2Files = require("../bp2/bp2.files.js");
@@ -94,7 +94,15 @@ const bp2tMonitor = params => viatomBpMonitor("BP2T", params);
94
94
  /** BP2W. Documented in its own section, but decoding the same realtime struct. */
95
95
  exports.bp2tMonitor = bp2tMonitor;
96
96
  const bp2wMonitor = params => viatomBpMonitor("BP2W", params);
97
+
98
+ /** BP2V, the WiFi variant that uses the BP2 realtime layout without ECG frames. */
97
99
  exports.bp2wMonitor = bp2wMonitor;
100
+ const bp2vMonitor = params => viatomBpMonitor("BP2V", params);
101
+
102
+ /** LP-BP2W, the Lepu-branded WiFi variant of the BP2 family. */
103
+ exports.bp2vMonitor = bp2vMonitor;
104
+ const lpBp2wMonitor = params => viatomBpMonitor("LP-BP2W", params);
105
+ exports.lpBp2wMonitor = lpBp2wMonitor;
98
106
  const TMB_SERVICE = "0000a610-0000-1000-8000-00805f9b34fb";
99
107
  const TMB_WRITE = "0000a624-0000-1000-8000-00805f9b34fb";
100
108
  const TMB_ACK = "0000a622-0000-1000-8000-00805f9b34fb";