@ovok/native 1.6.43 → 1.6.44

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 (158) 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 +30 -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/services/device-creator.js +11 -1
  8. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.device.js +50 -0
  10. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.device.js.map +1 -0
  11. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.js +115 -0
  12. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.js.map +1 -0
  13. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.js +58 -0
  14. package/lib/commonjs/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.js.map +1 -0
  15. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.device.js +41 -0
  16. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.device.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.js +61 -0
  18. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.js.map +1 -0
  19. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.js +41 -0
  20. package/lib/commonjs/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.js.map +1 -0
  21. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.device.js +50 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.device.js.map +1 -0
  23. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.js +141 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.js +76 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.js.map +1 -0
  27. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.device.js +50 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.device.js.map +1 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.js +149 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.js +81 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.device.js +50 -0
  34. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.device.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.js +228 -0
  36. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.js +122 -0
  38. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.js.map +1 -0
  39. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +5 -0
  40. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  41. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +6 -1
  42. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  43. package/lib/module/modules/bt-device/constants/supported-devices.js +30 -0
  44. package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
  45. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  46. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  47. package/lib/module/modules/bt-management/services/device-creator.js +11 -1
  48. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  49. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.device.js +45 -0
  50. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.device.js.map +1 -0
  51. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.js +106 -0
  52. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.js.map +1 -0
  53. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.js +53 -0
  54. package/lib/module/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.js.map +1 -0
  55. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.device.js +36 -0
  56. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.device.js.map +1 -0
  57. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.js +55 -0
  58. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.js.map +1 -0
  59. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.js +36 -0
  60. package/lib/module/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.js.map +1 -0
  61. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.device.js +45 -0
  62. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.device.js.map +1 -0
  63. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.js +130 -0
  64. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.js.map +1 -0
  65. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.js +71 -0
  66. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.js.map +1 -0
  67. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.device.js +45 -0
  68. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.device.js.map +1 -0
  69. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.js +136 -0
  70. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.js.map +1 -0
  71. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.js +76 -0
  72. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.js.map +1 -0
  73. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.device.js +45 -0
  74. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.device.js.map +1 -0
  75. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.js +209 -0
  76. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.js.map +1 -0
  77. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.js +117 -0
  78. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.js.map +1 -0
  79. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  80. package/lib/module/modules/bt-management/types/integrated-devices.js +5 -0
  81. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.device.d.ts +16 -0
  87. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.device.d.ts.map +1 -0
  88. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.d.ts +26 -0
  89. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.d.ts +24 -0
  91. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.d.ts.map +1 -0
  92. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.device.d.ts +15 -0
  93. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.device.d.ts.map +1 -0
  94. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.d.ts +16 -0
  95. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.d.ts.map +1 -0
  96. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.d.ts +17 -0
  97. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.d.ts.map +1 -0
  98. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.device.d.ts +16 -0
  99. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.device.d.ts.map +1 -0
  100. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.d.ts +36 -0
  101. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.d.ts +26 -0
  103. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.d.ts.map +1 -0
  104. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.device.d.ts +16 -0
  105. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.device.d.ts.map +1 -0
  106. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.d.ts +43 -0
  107. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.d.ts.map +1 -0
  108. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.d.ts +26 -0
  109. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.d.ts.map +1 -0
  110. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.device.d.ts +16 -0
  111. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.device.d.ts.map +1 -0
  112. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.d.ts +73 -0
  113. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.d.ts +25 -0
  115. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +5 -0
  117. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +6 -1
  119. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  120. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  121. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  122. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  123. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  124. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.device.d.ts +16 -0
  125. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.device.d.ts.map +1 -0
  126. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.d.ts +26 -0
  127. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.protocol.d.ts.map +1 -0
  128. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.d.ts +24 -0
  129. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/bioland.bgm.sequencer.d.ts.map +1 -0
  130. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.device.d.ts +15 -0
  131. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.device.d.ts.map +1 -0
  132. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.d.ts +16 -0
  133. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.protocol.d.ts.map +1 -0
  134. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.d.ts +17 -0
  135. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.d.ts.map +1 -0
  136. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.device.d.ts +16 -0
  137. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.device.d.ts.map +1 -0
  138. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.d.ts +36 -0
  139. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.d.ts.map +1 -0
  140. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.d.ts +26 -0
  141. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.d.ts.map +1 -0
  142. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.device.d.ts +16 -0
  143. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.device.d.ts.map +1 -0
  144. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.d.ts +43 -0
  145. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.protocol.d.ts.map +1 -0
  146. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.d.ts +26 -0
  147. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc100.sequencer.d.ts.map +1 -0
  148. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.device.d.ts +16 -0
  149. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.device.d.ts.map +1 -0
  150. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.d.ts +73 -0
  151. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.protocol.d.ts.map +1 -0
  152. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.d.ts +25 -0
  153. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pc300.sequencer.d.ts.map +1 -0
  154. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +5 -0
  155. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  156. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +6 -1
  157. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  158. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parsePoctorResult = exports.PoctorFrameReader = exports.POCTOR_WRITE = exports.POCTOR_SERVICE = exports.POCTOR_NOTIFY = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
9
+ /* eslint-disable import/group-exports */
10
+
11
+ const POCTOR_SERVICE = exports.POCTOR_SERVICE = "00010203-0405-0607-0809-0a0b0c0d1910";
12
+ const POCTOR_WRITE = exports.POCTOR_WRITE = "00010203-0405-0607-0809-0a0b0c0d2b11";
13
+ const POCTOR_NOTIFY = exports.POCTOR_NOTIFY = "00010203-0405-0607-0809-0a0b0c0d2b10";
14
+ const fromHex = value => (0, _hexToByte.hexToByte)(value);
15
+ const fromAscii = bytes => bytes.map(value => String.fromCharCode(fromHex(value))).join("");
16
+ const parsePoctorResult = frame => {
17
+ const text = fromAscii(frame).trim();
18
+ const fields = text.split(",");
19
+ if (fields.length < 7) {
20
+ return undefined;
21
+ }
22
+ const type = Number.parseInt(fields[0] ?? "", 10);
23
+ const yearValue = Number.parseInt(fields[1] ?? "", 10);
24
+ const month = Number.parseInt(fields[2] ?? "", 10);
25
+ const day = Number.parseInt(fields[3] ?? "", 10);
26
+ const hour = Number.parseInt(fields[4] ?? "", 10);
27
+ const minute = Number.parseInt(fields[5] ?? "", 10);
28
+ const rawValue = Number.parseInt(fields[6] ?? "", 10);
29
+ const year = yearValue < 100 ? yearValue + 2_000 : yearValue;
30
+ const recordedAt = new Date(year, month - 1, day, hour, minute);
31
+ if (type !== 0 && type !== 1 || !Number.isFinite(rawValue) || month < 1 || month > 12 || day < 1 || day > 31 || hour < 0 || hour > 23 || minute < 0 || minute > 59 || recordedAt.getFullYear() !== year || recordedAt.getMonth() !== month - 1 || recordedAt.getDate() !== day) {
32
+ return undefined;
33
+ }
34
+ return {
35
+ type: type,
36
+ value: type === 0 ? rawValue / 10 : rawValue,
37
+ recordedAt
38
+ };
39
+ };
40
+
41
+ /** Reads CRLF-terminated Poctor M3102 ASCII records. */
42
+ exports.parsePoctorResult = parsePoctorResult;
43
+ class PoctorFrameReader {
44
+ readFrame(buffer) {
45
+ const carriageReturn = buffer.indexOf("0d");
46
+ if (carriageReturn < 0 || buffer[carriageReturn + 1] !== "0a") {
47
+ return {
48
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
49
+ consumedBytes: 0
50
+ };
51
+ }
52
+ const end = carriageReturn + 2;
53
+ return {
54
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
55
+ consumedBytes: end,
56
+ frame: buffer.slice(0, end)
57
+ };
58
+ }
59
+ }
60
+ exports.PoctorFrameReader = PoctorFrameReader;
61
+ //# sourceMappingURL=poctor.m3102.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_hexToByte","POCTOR_SERVICE","exports","POCTOR_WRITE","POCTOR_NOTIFY","fromHex","value","hexToByte","fromAscii","bytes","map","String","fromCharCode","join","parsePoctorResult","frame","text","trim","fields","split","length","undefined","type","Number","parseInt","yearValue","month","day","hour","minute","rawValue","year","recordedAt","Date","isFinite","getFullYear","getMonth","getDate","PoctorFrameReader","readFrame","buffer","carriageReturn","indexOf","status","FrameReadStatus","INCOMPLETE","consumedBytes","end","COMPLETE","slice"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/poctor.m3102.protocol.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PoctorSequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _poctorM3102Protocol = require("./poctor.m3102.protocol.js");
10
+ /** Listens for Poctor's unsolicited CRLF records; it has no safe poll command. */
11
+ class PoctorSequencer {
12
+ constructor(params) {
13
+ this.params = params;
14
+ }
15
+ initialCommands = () => [];
16
+ nextCommand = frame => {
17
+ const result = (0, _poctorM3102Protocol.parsePoctorResult)(frame);
18
+ if (!result) {
19
+ return undefined;
20
+ }
21
+ if (result.type === 0) {
22
+ this.params.onResult({
23
+ caseType: _caseType.CaseType.RESULT,
24
+ measurementTypeKey: _core.MeasurementTypeKey.bloodGlucose,
25
+ bloodGlucose: result.value,
26
+ recordedAt: result.recordedAt
27
+ });
28
+ } else {
29
+ this.params.onResult({
30
+ caseType: _caseType.CaseType.RESULT,
31
+ measurementTypeKey: _core.MeasurementTypeKey.uricAcid,
32
+ uro: result.value,
33
+ urineValues: [],
34
+ recordedAt: result.recordedAt
35
+ });
36
+ }
37
+ return undefined;
38
+ };
39
+ }
40
+ exports.PoctorSequencer = PoctorSequencer;
41
+ //# sourceMappingURL=poctor.m3102.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_poctorM3102Protocol","PoctorSequencer","constructor","params","initialCommands","nextCommand","frame","result","parsePoctorResult","undefined","type","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","bloodGlucose","value","recordedAt","uricAcid","uro","urineValues","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/poctor.m3102.sequencer.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAMA,IAAAC,SAAA,GAAAD,OAAA;AAKA,IAAAE,oBAAA,GAAAF,OAAA;AAQA;AACO,MAAMG,eAAe,CAA6B;EAChDC,WAAWA,CAAkBC,MAA6B,EAAE;IAAA,KAA/BA,MAA6B,GAA7BA,MAA6B;EAAG;EAE7DC,eAAe,GAAGA,CAAA,KAAgC,EAAE;EAEpDC,WAAW,GAAIC,KAAwB,IAAgB;IAC5D,MAAMC,MAAM,GAAG,IAAAC,sCAAiB,EAACF,KAAK,CAAC;IAEvC,IAAI,CAACC,MAAM,EAAE;MACX,OAAOE,SAAS;IAClB;IAEA,IAAIF,MAAM,CAACG,IAAI,KAAK,CAAC,EAAE;MACrB,IAAI,CAACP,MAAM,CAACQ,QAAQ,CAAC;QACnBC,QAAQ,EAAEC,kBAAQ,CAACC,MAAM;QACzBC,kBAAkB,EAAEC,wBAAkB,CAACC,YAAY;QACnDA,YAAY,EAAEV,MAAM,CAACW,KAAK;QAC1BC,UAAU,EAAEZ,MAAM,CAACY;MACrB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAAChB,MAAM,CAACQ,QAAQ,CAAC;QACnBC,QAAQ,EAAEC,kBAAQ,CAACC,MAAM;QACzBC,kBAAkB,EAAEC,wBAAkB,CAACI,QAAQ;QAC/CC,GAAG,EAAEd,MAAM,CAACW,KAAK;QACjBI,WAAW,EAAE,EAAE;QACfH,UAAU,EAAEZ,MAAM,CAACY;MACrB,CAAC,CAAC;IACJ;IAEA,OAAOV,SAAS;EAClB,CAAC;AACH;AAACc,OAAA,CAAAtB,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.bpm188MainServices = exports.Bpm188Device = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomBpm188Protocol = require("./viatom.bpm188.protocol.js");
9
+ var _viatomBpm188Sequencer = require("./viatom.bpm188.sequencer.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const acceptNothing = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const bpm188MainServices = exports.bpm188MainServices = [{
17
+ uuid: _viatomBpm188Protocol.BPM188_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomBpm188Protocol.BPM188_NOTIFY,
20
+ parsingModel: acceptNothing
21
+ }],
22
+ writeUuid: {
23
+ uuid: _viatomBpm188Protocol.BPM188_WRITE,
24
+ mainCommandUuid: "0240dc"
25
+ }
26
+ }];
27
+
28
+ /** Viatom B02T/B02S blood-pressure history, exposed as BPM-188. */
29
+ class Bpm188Device extends _btManagedDevice.BTManagedDevice {
30
+ mainServices = bpm188MainServices;
31
+ stuckDataTimeout = 180_000;
32
+ onStreamStart = undefined;
33
+ preferredMtu = 247;
34
+ constructor(device, params) {
35
+ super(device, params);
36
+ this.frameReader = new _viatomBpm188Protocol.Bpm188FrameReader();
37
+ this.createCommandSequencer = () => new _viatomBpm188Sequencer.Bpm188Sequencer({
38
+ write: {
39
+ serviceUuid: _viatomBpm188Protocol.BPM188_SERVICE,
40
+ characteristicUuid: _viatomBpm188Protocol.BPM188_WRITE
41
+ },
42
+ onResult: result => this.onResult?.(result)
43
+ });
44
+ }
45
+ handleSuccessResult() {
46
+ return;
47
+ }
48
+ }
49
+ exports.Bpm188Device = Bpm188Device;
50
+ //# sourceMappingURL=viatom.bpm188.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomBpm188Protocol","_viatomBpm188Sequencer","acceptNothing","caseValuePosition","cases","bpm188MainServices","exports","uuid","BPM188_SERVICE","monitorUuids","BPM188_NOTIFY","parsingModel","writeUuid","BPM188_WRITE","mainCommandUuid","Bpm188Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","Bpm188FrameReader","createCommandSequencer","Bpm188Sequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bpm188.device.ts"],"mappings":";;;;;;AASA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,qBAAA,GAAAD,OAAA;AAMA,IAAAE,sBAAA,GAAAF,OAAA;AAjBA;;AAmBA,MAAMG,aAAa,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAEnD,MAAMC,kBAA8B,GAAAC,OAAA,CAAAD,kBAAA,GAAG,CAC5C;EACEE,IAAI,EAAEC,oCAAc;EACpBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,mCAAa;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACpEU,SAAS,EAAE;IACTL,IAAI,EAAEM,kCAAY;IAClBC,eAAe,EAAE;EACnB;AACF,CAAC,CACF;;AAED;AACO,MAAMC,YAAY,SAASC,gCAAe,CAA2B;EAChEC,YAAY,GAAGZ,kBAAkB;EACjCa,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAE9BC,WAAWA,CAChBC,MAAc,EACdC,MAAoD,EACpD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,uCAAiB,CAAC,CAAC;IAC1C,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,sCAAe,CAAC;MAClBC,KAAK,EAAE;QACLC,WAAW,EAAEtB,oCAAc;QAC3BuB,kBAAkB,EAAElB;MACtB,CAAC;MACDmB,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC5B,OAAA,CAAAS,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseBpm188Record = exports.decodeBpm188Response = exports.calculateBpm188Checksum = exports.bpm188SyncTime = exports.bpm188GetRecords = exports.bpm188GetInfo = exports.Bpm188MessageType = exports.Bpm188FrameReader = exports.BPM188_WRITE = exports.BPM188_SERVICE = exports.BPM188_NOTIFY = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
9
+ /* eslint-disable import/group-exports */
10
+
11
+ const BPM188_SERVICE = exports.BPM188_SERVICE = "000018f0-0000-1000-8000-00805f9b34fb";
12
+ const BPM188_WRITE = exports.BPM188_WRITE = "00002af1-0000-1000-8000-00805f9b34fb";
13
+ const BPM188_NOTIFY = exports.BPM188_NOTIFY = "00002af0-0000-1000-8000-00805f9b34fb";
14
+ const Bpm188MessageType = exports.Bpm188MessageType = {
15
+ info: 0xab,
16
+ syncTime: 0xb0,
17
+ records: 0xb1,
18
+ recordsEnd: 0xb3
19
+ };
20
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
21
+
22
+ /** The B02T/B02S checksum starts with 0x40 and XORs bytes 2 through n-2. */
23
+ const calculateBpm188Checksum = bytes => {
24
+ let checksum = 0x40;
25
+ for (let index = 2; index < bytes.length - 1; index += 1) {
26
+ checksum ^= (0, _hexToByte.hexToByte)(bytes[index] ?? "00");
27
+ }
28
+ return byte(checksum);
29
+ };
30
+ exports.calculateBpm188Checksum = calculateBpm188Checksum;
31
+ const command = (type, payload = []) => {
32
+ const frame = ["02", "40", "dc", byte(payload.length + 1), byte(type), ...payload, "00"];
33
+ frame[frame.length - 1] = calculateBpm188Checksum(frame);
34
+ return frame;
35
+ };
36
+ const bpm188GetInfo = () => command(Bpm188MessageType.info);
37
+ exports.bpm188GetInfo = bpm188GetInfo;
38
+ const bpm188SyncTime = (now = new Date()) => command(Bpm188MessageType.syncTime, [byte(now.getFullYear() - 2000), byte(now.getMonth() + 1), byte(now.getDate()), byte(now.getHours()), byte(now.getMinutes()), byte(now.getSeconds())]);
39
+ exports.bpm188SyncTime = bpm188SyncTime;
40
+ const bpm188GetRecords = () => command(Bpm188MessageType.records, ["00", "00", "00", "00"]);
41
+ exports.bpm188GetRecords = bpm188GetRecords;
42
+ const decodeBpm188Response = bytes => {
43
+ if ((0, _hexToByte.hexToByte)(bytes[0] ?? "00") !== 0x02 || (0, _hexToByte.hexToByte)(bytes[1] ?? "00") !== 0x40 || (0, _hexToByte.hexToByte)(bytes[2] ?? "00") !== 0xdd) {
44
+ return undefined;
45
+ }
46
+ const payloadLength = (0, _hexToByte.hexToByte)(bytes[3] ?? "00");
47
+ const expectedLength = payloadLength + 5;
48
+ if (payloadLength < 1 || bytes.length < expectedLength) {
49
+ return undefined;
50
+ }
51
+ const frame = bytes.slice(0, expectedLength);
52
+ if (frame.at(-1) !== calculateBpm188Checksum(frame)) {
53
+ return undefined;
54
+ }
55
+ return {
56
+ type: (0, _hexToByte.hexToByte)(frame[4] ?? "00"),
57
+ content: frame.slice(5, -1)
58
+ };
59
+ };
60
+ exports.decodeBpm188Response = decodeBpm188Response;
61
+ const validDate = content => {
62
+ const year = 2000 + (0, _hexToByte.hexToByte)(content[9] ?? "00");
63
+ const month = (0, _hexToByte.hexToByte)(content[10] ?? "00");
64
+ const day = (0, _hexToByte.hexToByte)(content[11] ?? "00");
65
+ const hour = (0, _hexToByte.hexToByte)(content[12] ?? "00");
66
+ const minute = (0, _hexToByte.hexToByte)(content[13] ?? "00");
67
+ const date = new Date(year, month - 1, day, hour, minute, 0, 0);
68
+ if (month < 1 || month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day || date.getHours() !== hour || date.getMinutes() !== minute) {
69
+ return undefined;
70
+ }
71
+ return date;
72
+ };
73
+ const parseBpm188Record = content => {
74
+ if (content.length < 14) {
75
+ return undefined;
76
+ }
77
+ const systolic = (0, _hexToByte.hexToByte)(content[0] ?? "00") << 8 | (0, _hexToByte.hexToByte)(content[1] ?? "00");
78
+ const diastolic = (0, _hexToByte.hexToByte)(content[2] ?? "00") << 8 | (0, _hexToByte.hexToByte)(content[3] ?? "00");
79
+ const heartRate = (0, _hexToByte.hexToByte)(content[5] ?? "00");
80
+ const recordedAt = validDate(content);
81
+ if (!recordedAt || systolic < 20 || systolic > 300 || diastolic < 10 || diastolic > 200) {
82
+ return undefined;
83
+ }
84
+ return {
85
+ systolic,
86
+ diastolic,
87
+ heartRate,
88
+ userId: (0, _hexToByte.hexToByte)(content[6] ?? "00"),
89
+ storeId: (0, _hexToByte.hexToByte)(content[7] ?? "00") << 8 | (0, _hexToByte.hexToByte)(content[8] ?? "00"),
90
+ recordedAt
91
+ };
92
+ };
93
+
94
+ /** Reads the split and concatenated 02 40 dd history responses. */
95
+ exports.parseBpm188Record = parseBpm188Record;
96
+ class Bpm188FrameReader {
97
+ readFrame(buffer) {
98
+ const start = this.findStart(buffer);
99
+ if (start < 0) {
100
+ return {
101
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
102
+ consumedBytes: Math.max(0, buffer.length - 1)
103
+ };
104
+ }
105
+ const length = (0, _hexToByte.hexToByte)(buffer[start + 3] ?? "00") + 5;
106
+ if (length < 6) {
107
+ return {
108
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
109
+ consumedBytes: start + 1
110
+ };
111
+ }
112
+ if (start + length > buffer.length) {
113
+ return {
114
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
115
+ consumedBytes: start
116
+ };
117
+ }
118
+ const frame = buffer.slice(start, start + length);
119
+ if (frame.at(-1) !== calculateBpm188Checksum(frame)) {
120
+ return {
121
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
122
+ consumedBytes: start + 1
123
+ };
124
+ }
125
+ return {
126
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
127
+ consumedBytes: start + length,
128
+ frame
129
+ };
130
+ }
131
+ findStart(buffer) {
132
+ for (let index = 0; index + 3 < buffer.length; index += 1) {
133
+ if ((0, _hexToByte.hexToByte)(buffer[index] ?? "00") === 0x02 && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === 0x40 && (0, _hexToByte.hexToByte)(buffer[index + 2] ?? "00") === 0xdd) {
134
+ return index;
135
+ }
136
+ }
137
+ return -1;
138
+ }
139
+ }
140
+ exports.Bpm188FrameReader = Bpm188FrameReader;
141
+ //# sourceMappingURL=viatom.bpm188.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_hexToByte","BPM188_SERVICE","exports","BPM188_WRITE","BPM188_NOTIFY","Bpm188MessageType","info","syncTime","records","recordsEnd","byte","value","toString","padStart","calculateBpm188Checksum","bytes","checksum","index","length","hexToByte","command","type","payload","frame","bpm188GetInfo","bpm188SyncTime","now","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","bpm188GetRecords","decodeBpm188Response","undefined","payloadLength","expectedLength","slice","at","content","validDate","year","month","day","hour","minute","date","parseBpm188Record","systolic","diastolic","heartRate","recordedAt","userId","storeId","Bpm188FrameReader","readFrame","buffer","start","findStart","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bpm188.protocol.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Bpm188Sequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _viatomBpm188Protocol = require("./viatom.bpm188.protocol.js");
10
+ const command = (write, frame) => ({
11
+ ...write,
12
+ frame,
13
+ withoutResponse: true
14
+ });
15
+
16
+ /** Drives the BPM-188 info -> clock -> two-user history exchange. */
17
+ class Bpm188Sequencer {
18
+ phase = "info";
19
+ endedUsers = new Set();
20
+ constructor(params) {
21
+ this.params = params;
22
+ }
23
+ initialCommands = () => this.remember(this.write((0, _viatomBpm188Protocol.bpm188GetInfo)()));
24
+ isHistoryTransfer = () => true;
25
+ isNormalDisconnect = () => this.phase === "done";
26
+ commandTimeoutMs = () => this.phase === "done" ? undefined : 5_000;
27
+ onCommandTimeout = () => {
28
+ this.phase = "done";
29
+ return {
30
+ terminal: true
31
+ };
32
+ };
33
+ nextCommand = frame => {
34
+ const response = (0, _viatomBpm188Protocol.decodeBpm188Response)(frame);
35
+ if (!response || this.phase === "done") {
36
+ return undefined;
37
+ }
38
+ if (this.phase === "info") {
39
+ this.phase = "sync";
40
+ return this.remember(this.write((0, _viatomBpm188Protocol.bpm188SyncTime)(this.params.now?.())));
41
+ }
42
+ if (this.phase === "sync") {
43
+ this.phase = "records";
44
+ return this.remember(this.write((0, _viatomBpm188Protocol.bpm188GetRecords)()));
45
+ }
46
+ if (response.type === _viatomBpm188Protocol.Bpm188MessageType.records || response.type === _viatomBpm188Protocol.Bpm188MessageType.recordsEnd) {
47
+ const record = (0, _viatomBpm188Protocol.parseBpm188Record)(response.content);
48
+ if (record) {
49
+ this.params.onResult({
50
+ caseType: _caseType.CaseType.RESULT,
51
+ measurementTypeKey: _core.MeasurementTypeKey.bloodPressure,
52
+ systolic: record.systolic,
53
+ diastolic: record.diastolic,
54
+ heartRate: record.heartRate,
55
+ recordedAt: record.recordedAt
56
+ });
57
+ }
58
+ if (response.type === _viatomBpm188Protocol.Bpm188MessageType.recordsEnd) {
59
+ const userId = record?.userId ?? response.content[6];
60
+ if (userId !== undefined) {
61
+ this.endedUsers.add(typeof userId === "number" ? userId : Number.parseInt(userId, 16));
62
+ }
63
+ if (this.endedUsers.has(0) && this.endedUsers.has(1)) {
64
+ this.phase = "done";
65
+ }
66
+ }
67
+ }
68
+ return undefined;
69
+ };
70
+ write = frame => command(this.params.write, frame);
71
+ remember = next => {
72
+ return [next];
73
+ };
74
+ }
75
+ exports.Bpm188Sequencer = Bpm188Sequencer;
76
+ //# sourceMappingURL=viatom.bpm188.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_viatomBpm188Protocol","command","write","frame","withoutResponse","Bpm188Sequencer","phase","endedUsers","Set","constructor","params","initialCommands","remember","bpm188GetInfo","isHistoryTransfer","isNormalDisconnect","commandTimeoutMs","undefined","onCommandTimeout","terminal","nextCommand","response","decodeBpm188Response","bpm188SyncTime","now","bpm188GetRecords","type","Bpm188MessageType","records","recordsEnd","record","parseBpm188Record","content","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","bloodPressure","systolic","diastolic","heartRate","recordedAt","userId","add","Number","parseInt","has","next","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bpm188.sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pc100MainServices = exports.Pc100Device = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomPc100Protocol = require("./viatom.pc100.protocol.js");
9
+ var _viatomPc100Sequencer = require("./viatom.pc100.sequencer.js");
10
+ /* eslint-disable import/group-exports */
11
+
12
+ const acceptNothing = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const pc100MainServices = exports.pc100MainServices = [{
17
+ uuid: _viatomPc100Protocol.PC100_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomPc100Protocol.PC100_NOTIFY,
20
+ parsingModel: acceptNothing
21
+ }],
22
+ writeUuid: {
23
+ uuid: _viatomPc100Protocol.PC100_WRITE,
24
+ mainCommandUuid: "aa55"
25
+ }
26
+ }];
27
+
28
+ /** Viatom PC-100 spot-check monitor over the FFF0 AA55 protocol. */
29
+ class Pc100Device extends _btManagedDevice.BTManagedDevice {
30
+ mainServices = pc100MainServices;
31
+ stuckDataTimeout = 60_000;
32
+ onStreamStart = undefined;
33
+ preferredMtu = 247;
34
+ constructor(device, params) {
35
+ super(device, params);
36
+ this.frameReader = new _viatomPc100Protocol.Pc100FrameReader();
37
+ this.createCommandSequencer = () => new _viatomPc100Sequencer.Pc100Sequencer({
38
+ write: {
39
+ serviceUuid: _viatomPc100Protocol.PC100_SERVICE,
40
+ characteristicUuid: _viatomPc100Protocol.PC100_WRITE
41
+ },
42
+ onResult: result => this.onResult?.(result)
43
+ });
44
+ }
45
+ handleSuccessResult() {
46
+ return;
47
+ }
48
+ }
49
+ exports.Pc100Device = Pc100Device;
50
+ //# sourceMappingURL=viatom.pc100.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomPc100Protocol","_viatomPc100Sequencer","acceptNothing","caseValuePosition","cases","pc100MainServices","exports","uuid","PC100_SERVICE","monitorUuids","PC100_NOTIFY","parsingModel","writeUuid","PC100_WRITE","mainCommandUuid","Pc100Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","Pc100FrameReader","createCommandSequencer","Pc100Sequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pc100.device.ts"],"mappings":";;;;;;AASA,IAAAA,gBAAA,GAAAC,OAAA;AAEA,IAAAC,oBAAA,GAAAD,OAAA;AAMA,IAAAE,qBAAA,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,kCAAa;EACnBC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,iCAAY;IAAEC,YAAY,EAAET;EAAc,CAAC,CAAC;EACnEU,SAAS,EAAE;IACTL,IAAI,EAAEM,gCAAW;IACjBC,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,qCAAgB,CAAC,CAAC;IACzC,IAAI,CAACC,sBAAsB,GAAG,MAC5B,IAAIC,oCAAc,CAAC;MACjBC,KAAK,EAAE;QACLC,WAAW,EAAEtB,kCAAa;QAC1BuB,kBAAkB,EAAElB;MACtB,CAAC;MACDmB,QAAQ,EAAGC,MAAM,IACf,IAAI,CAACD,QAAQ,GACXC,MAGF;IACJ,CAAC,CAAC;EACN;EAEUC,mBAAmBA,CAAA,EAAS;IACpC;EACF;AACF;AAAC5B,OAAA,CAAAS,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pc100Handshake = exports.pc100GetDeviceInfo = exports.pc100GetDeviceId = exports.pc100GetBloodPressureResult = exports.pc100Command = exports.parsePc100BloodPressureResult = exports.parsePc100BloodOxygenResult = exports.decodePc100Response = exports.Pc100FrameReader = exports.Pc100Command = exports.PC100_WRITE = exports.PC100_SERVICE = exports.PC100_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 PC100_SERVICE = exports.PC100_SERVICE = "0000fff0-0000-1000-8000-00805f9b34fb";
13
+ const PC100_WRITE = exports.PC100_WRITE = "0000fff2-0000-1000-8000-00805f9b34fb";
14
+ const PC100_NOTIFY = exports.PC100_NOTIFY = "0000fff1-0000-1000-8000-00805f9b34fb";
15
+ const Pc100Command = exports.Pc100Command = {
16
+ handshake: 0xff,
17
+ deviceId: 0xff,
18
+ deviceInfo: 0x51,
19
+ bloodPressureResult: 0x43,
20
+ bloodOxygenParameters: 0x53
21
+ };
22
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
23
+
24
+ /** Builds the PC-100 AA55 frame used by Pc100BleCmd. */
25
+ const pc100Command = (command, type, payload = []) => {
26
+ const frame = ["aa", "55", byte(command), byte(payload.length + 2), byte(type), ...payload, "00"];
27
+ frame[frame.length - 1] = byte((0, _calculateCrc8Pc.calculateCrc8Pc)(frame));
28
+ return frame;
29
+ };
30
+ exports.pc100Command = pc100Command;
31
+ const pc100Handshake = () => pc100Command(Pc100Command.handshake, 0x01);
32
+ exports.pc100Handshake = pc100Handshake;
33
+ const pc100GetDeviceId = () => pc100Command(Pc100Command.deviceId, 0x10);
34
+ exports.pc100GetDeviceId = pc100GetDeviceId;
35
+ const pc100GetDeviceInfo = () => pc100Command(Pc100Command.deviceInfo, 0x01);
36
+ exports.pc100GetDeviceInfo = pc100GetDeviceInfo;
37
+ const pc100GetBloodPressureResult = () => pc100Command(Pc100Command.bloodPressureResult, 0x01);
38
+ exports.pc100GetBloodPressureResult = pc100GetBloodPressureResult;
39
+ const decodePc100Response = bytes => {
40
+ if ((0, _hexToByte.hexToByte)(bytes[0] ?? "00") !== 0xaa || (0, _hexToByte.hexToByte)(bytes[1] ?? "00") !== 0x55) {
41
+ return undefined;
42
+ }
43
+ const length = (0, _hexToByte.hexToByte)(bytes[3] ?? "00");
44
+ const expectedLength = length + 4;
45
+ if (length < 2 || bytes.length < expectedLength) {
46
+ return undefined;
47
+ }
48
+ const frame = bytes.slice(0, expectedLength);
49
+ if ((0, _hexToByte.hexToByte)(frame.at(-1) ?? "00") !== (0, _calculateCrc8Pc.calculateCrc8Pc)(frame)) {
50
+ return undefined;
51
+ }
52
+ return {
53
+ command: (0, _hexToByte.hexToByte)(frame[2] ?? "00"),
54
+ type: (0, _hexToByte.hexToByte)(frame[4] ?? "00"),
55
+ content: frame.slice(5, -1)
56
+ };
57
+ };
58
+ exports.decodePc100Response = decodePc100Response;
59
+ const parsePc100BloodPressureResult = content => {
60
+ if (content.length < 5) {
61
+ return undefined;
62
+ }
63
+ const first = (0, _hexToByte.hexToByte)(content[0] ?? "00");
64
+ const systolic = (first & 0x7f) << 8 | (0, _hexToByte.hexToByte)(content[1] ?? "00");
65
+ const diastolic = (0, _hexToByte.hexToByte)(content[3] ?? "00");
66
+ const heartRate = (0, _hexToByte.hexToByte)(content[4] ?? "00");
67
+ if (systolic < 20 || systolic > 300 || diastolic < 10 || diastolic > 200 || heartRate < 20 || heartRate > 300) {
68
+ return undefined;
69
+ }
70
+ return {
71
+ systolic,
72
+ diastolic,
73
+ heartRate,
74
+ irregularHeartbeat: (first & 0x80) !== 0
75
+ };
76
+ };
77
+ exports.parsePc100BloodPressureResult = parsePc100BloodPressureResult;
78
+ const parsePc100BloodOxygenResult = content => {
79
+ if (content.length < 5) {
80
+ return undefined;
81
+ }
82
+ const bloodOxygen = (0, _hexToByte.hexToByte)(content[0] ?? "00");
83
+ const pulseRate = (0, _hexToByte.hexToByte)(content[1] ?? "00") | (0, _hexToByte.hexToByte)(content[2] ?? "00") << 8;
84
+ const perfusionIndex = (0, _hexToByte.hexToByte)(content[3] ?? "00");
85
+ const state = (0, _hexToByte.hexToByte)(content[4] ?? "00");
86
+ if (bloodOxygen < 50 || bloodOxygen > 100 || pulseRate < 20 || pulseRate > 300 || (state & 0x02) === 0) {
87
+ return undefined;
88
+ }
89
+ return {
90
+ bloodOxygen,
91
+ pulseRate,
92
+ perfusionIndex
93
+ };
94
+ };
95
+
96
+ /** Reads split and concatenated PC-100 AA55 frames. */
97
+ exports.parsePc100BloodOxygenResult = parsePc100BloodOxygenResult;
98
+ class Pc100FrameReader {
99
+ readFrame(buffer) {
100
+ const start = this.findStart(buffer);
101
+ if (start < 0) {
102
+ return {
103
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
104
+ consumedBytes: Math.max(0, buffer.length - 1)
105
+ };
106
+ }
107
+ if (start + 4 > buffer.length) {
108
+ return {
109
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
110
+ consumedBytes: start
111
+ };
112
+ }
113
+ const length = (0, _hexToByte.hexToByte)(buffer[start + 3] ?? "00") + 4;
114
+ if (length < 6) {
115
+ return {
116
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
117
+ consumedBytes: start + 1
118
+ };
119
+ }
120
+ if (start + length > buffer.length) {
121
+ return {
122
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
123
+ consumedBytes: start
124
+ };
125
+ }
126
+ const frame = buffer.slice(start, start + length);
127
+ if ((0, _hexToByte.hexToByte)(frame.at(-1) ?? "00") !== (0, _calculateCrc8Pc.calculateCrc8Pc)(frame)) {
128
+ return {
129
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
130
+ consumedBytes: start + 1
131
+ };
132
+ }
133
+ return {
134
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
135
+ consumedBytes: start + length,
136
+ frame
137
+ };
138
+ }
139
+ findStart = buffer => {
140
+ for (let index = 0; index + 1 < buffer.length; index += 1) {
141
+ if ((0, _hexToByte.hexToByte)(buffer[index] ?? "00") === 0xaa && (0, _hexToByte.hexToByte)(buffer[index + 1] ?? "00") === 0x55) {
142
+ return index;
143
+ }
144
+ }
145
+ return -1;
146
+ };
147
+ }
148
+ exports.Pc100FrameReader = Pc100FrameReader;
149
+ //# sourceMappingURL=viatom.pc100.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_calculateCrc8Pc","_hexToByte","PC100_SERVICE","exports","PC100_WRITE","PC100_NOTIFY","Pc100Command","handshake","deviceId","deviceInfo","bloodPressureResult","bloodOxygenParameters","byte","value","toString","padStart","pc100Command","command","type","payload","frame","length","calculateCrc8Pc","pc100Handshake","pc100GetDeviceId","pc100GetDeviceInfo","pc100GetBloodPressureResult","decodePc100Response","bytes","hexToByte","undefined","expectedLength","slice","at","content","parsePc100BloodPressureResult","first","systolic","diastolic","heartRate","irregularHeartbeat","parsePc100BloodOxygenResult","bloodOxygen","pulseRate","perfusionIndex","state","Pc100FrameReader","readFrame","buffer","start","findStart","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE","index"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pc100.protocol.ts"],"mappings":"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","ignoreList":[]}