@ovok/native 0.4.7 → 0.4.8

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 (205) hide show
  1. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js +3 -1
  2. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js +1 -1
  4. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/index.js +44 -0
  6. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  7. package/lib/commonjs/modules/bt-management/services/custom/compile-case-shape.js +52 -0
  8. package/lib/commonjs/modules/bt-management/services/custom/compile-case-shape.js.map +1 -0
  9. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js +8 -2
  10. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js +3 -0
  12. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/services/device-creator.js +5 -1
  14. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js +15 -1
  16. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  17. package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +20 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +30 -44
  20. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/frame-parser.js +2 -1
  22. package/lib/commonjs/modules/bt-management/services/devices/frame-parser.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/services/devices/sentinel-frame-reader.js +84 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/sentinel-frame-reader.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +27 -53
  26. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  27. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +55 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js +43 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js +113 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js +120 -0
  34. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-device.js +92 -0
  36. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-device.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js +64 -0
  38. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js.map +1 -0
  39. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js +94 -0
  40. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js.map +1 -0
  41. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +2 -0
  42. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  43. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js +21 -0
  44. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js.map +1 -1
  45. package/lib/commonjs/modules/bt-management/utils/parse-measurement.js +10 -7
  46. package/lib/commonjs/modules/bt-management/utils/parse-measurement.js.map +1 -1
  47. package/lib/commonjs/modules/bt-management/utils/reject-custom-reading.js +34 -0
  48. package/lib/commonjs/modules/bt-management/utils/reject-custom-reading.js.map +1 -0
  49. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +3 -1
  50. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  51. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  52. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  53. package/lib/module/modules/bt-management/index.js +4 -0
  54. package/lib/module/modules/bt-management/index.js.map +1 -1
  55. package/lib/module/modules/bt-management/services/custom/compile-case-shape.js +48 -0
  56. package/lib/module/modules/bt-management/services/custom/compile-case-shape.js.map +1 -0
  57. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js +8 -2
  58. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js.map +1 -1
  59. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js +3 -0
  60. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js.map +1 -1
  61. package/lib/module/modules/bt-management/services/device-creator.js +5 -1
  62. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  63. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js +15 -1
  64. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  65. package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +20 -1
  66. package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
  67. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +31 -45
  68. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  69. package/lib/module/modules/bt-management/services/devices/frame-parser.js +2 -1
  70. package/lib/module/modules/bt-management/services/devices/frame-parser.js.map +1 -1
  71. package/lib/module/modules/bt-management/services/devices/sentinel-frame-reader.js +79 -0
  72. package/lib/module/modules/bt-management/services/devices/sentinel-frame-reader.js.map +1 -0
  73. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +19 -45
  74. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  75. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +50 -0
  76. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -0
  77. package/lib/module/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js +38 -0
  78. package/lib/module/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js.map +1 -0
  79. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js +108 -0
  80. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js.map +1 -0
  81. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js +116 -0
  82. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js.map +1 -0
  83. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-device.js +87 -0
  84. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-device.js.map +1 -0
  85. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js +60 -0
  86. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js.map +1 -0
  87. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js +89 -0
  88. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js.map +1 -0
  89. package/lib/module/modules/bt-management/types/device-measurement-map.js +3 -3
  90. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  91. package/lib/module/modules/bt-management/types/integrated-devices.js +2 -0
  92. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  93. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js +21 -0
  94. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js.map +1 -1
  95. package/lib/module/modules/bt-management/utils/parse-measurement.js +10 -7
  96. package/lib/module/modules/bt-management/utils/parse-measurement.js.map +1 -1
  97. package/lib/module/modules/bt-management/utils/reject-custom-reading.js +29 -0
  98. package/lib/module/modules/bt-management/utils/reject-custom-reading.js.map +1 -0
  99. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +4 -0
  102. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-shape.d.ts +19 -0
  104. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-shape.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts +7 -0
  109. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +11 -2
  111. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +10 -13
  113. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/frame-parser.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts +52 -0
  116. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +22 -13
  118. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +45 -0
  120. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts +18 -0
  122. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts +19 -0
  124. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts +45 -0
  126. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts +30 -0
  128. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts +39 -0
  130. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts +35 -0
  132. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts +30 -0
  134. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts +7 -1
  136. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/modules/bt-management/types/dependent-result-handler-params.d.ts +7 -0
  138. package/lib/typescript/commonjs/src/modules/bt-management/types/dependent-result-handler-params.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/src/modules/bt-management/types/device-command.d.ts +9 -0
  140. package/lib/typescript/commonjs/src/modules/bt-management/types/device-command.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
  142. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +3 -1
  144. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/modules/bt-management/types/parsing-case.d.ts +8 -0
  146. package/lib/typescript/commonjs/src/modules/bt-management/types/parsing-case.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/src/modules/bt-management/utils/parse-measurement.d.ts +4 -1
  149. package/lib/typescript/commonjs/src/modules/bt-management/utils/parse-measurement.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/src/modules/bt-management/utils/reject-custom-reading.d.ts +15 -0
  151. package/lib/typescript/commonjs/src/modules/bt-management/utils/reject-custom-reading.d.ts.map +1 -0
  152. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  153. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  154. package/lib/typescript/module/src/modules/bt-management/index.d.ts +4 -0
  155. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  156. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-shape.d.ts +19 -0
  157. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-shape.d.ts.map +1 -0
  158. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -1
  159. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -1
  160. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  161. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts +7 -0
  162. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  163. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +11 -2
  164. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
  165. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +10 -13
  166. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  167. package/lib/typescript/module/src/modules/bt-management/services/devices/frame-parser.d.ts.map +1 -1
  168. package/lib/typescript/module/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts +52 -0
  169. package/lib/typescript/module/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts.map +1 -0
  170. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +22 -13
  171. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  172. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +45 -0
  173. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -0
  174. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts +18 -0
  175. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts.map +1 -0
  176. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts +19 -0
  177. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts.map +1 -0
  178. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts +45 -0
  179. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts.map +1 -0
  180. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts +30 -0
  181. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts.map +1 -0
  182. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts +39 -0
  183. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts.map +1 -0
  184. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts +35 -0
  185. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts.map +1 -0
  186. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts +30 -0
  187. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -1
  188. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts +7 -1
  189. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -1
  190. package/lib/typescript/module/src/modules/bt-management/types/dependent-result-handler-params.d.ts +7 -0
  191. package/lib/typescript/module/src/modules/bt-management/types/dependent-result-handler-params.d.ts.map +1 -1
  192. package/lib/typescript/module/src/modules/bt-management/types/device-command.d.ts +9 -0
  193. package/lib/typescript/module/src/modules/bt-management/types/device-command.d.ts.map +1 -1
  194. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
  195. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  196. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +3 -1
  197. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  198. package/lib/typescript/module/src/modules/bt-management/types/parsing-case.d.ts +8 -0
  199. package/lib/typescript/module/src/modules/bt-management/types/parsing-case.d.ts.map +1 -1
  200. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -1
  201. package/lib/typescript/module/src/modules/bt-management/utils/parse-measurement.d.ts +4 -1
  202. package/lib/typescript/module/src/modules/bt-management/utils/parse-measurement.d.ts.map +1 -1
  203. package/lib/typescript/module/src/modules/bt-management/utils/reject-custom-reading.d.ts +15 -0
  204. package/lib/typescript/module/src/modules/bt-management/utils/reject-custom-reading.d.ts.map +1 -0
  205. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rejectCustomReading = exports.discardedReadingError = void 0;
7
+ /** The reading that was thrown away, and why, so a decoding fault can be diagnosed. */
8
+ const discardedReadingError = (deviceId, reason, parsedData) => new Error(`Custom device "${deviceId}": ${reason}. The reading was discarded (decoded ${JSON.stringify(parsedData)}).`);
9
+
10
+ /**
11
+ * Why a decoded property is not a reading, or nothing when it is.
12
+ *
13
+ * The checks are the last thing between a misread frame and a clinical record, so each one
14
+ * says what was wrong rather than returning a bare false: a property the measurement does
15
+ * not have is a declaration mistake, a value that is not a finite number is a frame shorter
16
+ * than the declaration expects, and a value outside the envelope is a decoding fault
17
+ * wearing the shape of a reading.
18
+ */
19
+ exports.discardedReadingError = discardedReadingError;
20
+ const rejectCustomReading = (fields, measurementTypeKey, name, value) => {
21
+ const field = fields.get(`${measurementTypeKey}:${name}`);
22
+ if (!field) {
23
+ return `decoded "${name}", which is not declared for ${measurementTypeKey}`;
24
+ }
25
+ if (typeof value !== "number" || !Number.isFinite(value)) {
26
+ return `could not decode ${name}; the frame was shorter than the declaration expects`;
27
+ }
28
+ if (value < field.min || value > field.max) {
29
+ return `decoded ${name} = ${value} ${field.unit}, outside the accepted range ${field.min}-${field.max} ${field.unit}`;
30
+ }
31
+ return undefined;
32
+ };
33
+ exports.rejectCustomReading = rejectCustomReading;
34
+ //# sourceMappingURL=reject-custom-reading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["discardedReadingError","deviceId","reason","parsedData","Error","JSON","stringify","exports","rejectCustomReading","fields","measurementTypeKey","name","value","field","get","Number","isFinite","min","max","unit","undefined"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/reject-custom-reading.ts"],"mappings":";;;;;;AAEA;AACA,MAAMA,qBAAqB,GAAGA,CAC5BC,QAAgB,EAChBC,MAAc,EACdC,UAAmB,KAEnB,IAAIC,KAAK,CACP,kBAAkBH,QAAQ,MAAMC,MAAM,wCAAwCG,IAAI,CAACC,SAAS,CAACH,UAAU,CAAC,IAC1G,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAI,OAAA,CAAAP,qBAAA,GAAAA,qBAAA;AASA,MAAMQ,mBAAmB,GAAGA,CAC1BC,MAAgD,EAChDC,kBAA0B,EAC1BC,IAAY,EACZC,KAAc,KACS;EACvB,MAAMC,KAAK,GAAGJ,MAAM,CAACK,GAAG,CAAC,GAAGJ,kBAAkB,IAAIC,IAAI,EAAE,CAAC;EAEzD,IAAI,CAACE,KAAK,EAAE;IACV,OAAO,YAAYF,IAAI,gCAAgCD,kBAAkB,EAAE;EAC7E;EAEA,IAAI,OAAOE,KAAK,KAAK,QAAQ,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,EAAE;IACxD,OAAO,oBAAoBD,IAAI,sDAAsD;EACvF;EAEA,IAAIC,KAAK,GAAGC,KAAK,CAACI,GAAG,IAAIL,KAAK,GAAGC,KAAK,CAACK,GAAG,EAAE;IAC1C,OAAO,WAAWP,IAAI,MAAMC,KAAK,IAAIC,KAAK,CAACM,IAAI,gCAAgCN,KAAK,CAACI,GAAG,IAAIJ,KAAK,CAACK,GAAG,IAAIL,KAAK,CAACM,IAAI,EAAE;EACvH;EAEA,OAAOC,SAAS;AAClB,CAAC;AAACb,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -24,6 +24,8 @@ export const DEVICE_INSTRUCTION_PDFS = {
24
24
  [IntegratedDevices.CMED]: "",
25
25
  [IntegratedDevices.SP80B]: "",
26
26
  [IntegratedDevices.S5]: "",
27
- [IntegratedDevices.BGM]: ""
27
+ [IntegratedDevices.BGM]: "",
28
+ [IntegratedDevices.VEROVAL_DUO_CONTROL]: "",
29
+ [IntegratedDevices.VEROVAL_ECG]: ""
28
30
  };
29
31
  //# sourceMappingURL=device-instruction-pdfs.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IntegratedDevices","pdfBaseUrl","DEVICE_INSTRUCTION_PDFS","BP2","F4","SPO2","PC60WF","ALIVE_COR","COSINUSS","AOJ20A","TAIDOC_GLUCOSE","GLUCOCHECK","CLEVERTEMP","FORATEMP","ANDESFITTEMP","FORA_SCALE","BC01","RPM_SCALE","CMED","SP80B","S5","BGM"],"sourceRoot":"../../../../../src","sources":["modules/bt-device/constants/device-instruction-pdfs.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,8BAAqB;;AAEvD;AACA;AACA,MAAMC,UAAU,GACd,2EAA2E;AAE7E,OAAO,MAAMC,uBAA0D,GAAG;EACxE,CAACF,iBAAiB,CAACG,GAAG,GAAG,GAAGF,UAAU,yBAAyB;EAC/D,CAACD,iBAAiB,CAACI,EAAE,GAAG,GAAGH,UAAU,yBAAyB;EAC9D,CAACD,iBAAiB,CAACK,IAAI,GAAG,GAAGJ,UAAU,yBAAyB;EAChE,CAACD,iBAAiB,CAACM,MAAM,GAAG,GAAGL,UAAU,2BAA2B;EACpE,CAACD,iBAAiB,CAACO,SAAS,GAAG,GAAGN,UAAU,sBAAsB;EAClE,CAACD,iBAAiB,CAACQ,QAAQ,GAAG,GAAGP,UAAU,sBAAsB;EACjE,CAACD,iBAAiB,CAACS,MAAM,GAAG,GAAGR,UAAU,oBAAoB;EAC7D,CAACD,iBAAiB,CAACU,cAAc,GAAG,GAAGT,UAAU,oBAAoB;EACrE,CAACD,iBAAiB,CAACW,UAAU,GAAG,GAAGV,UAAU,iBAAiB;EAC9D,CAACD,iBAAiB,CAACY,UAAU,GAAG,GAAGX,UAAU,oBAAoB;EACjE,CAACD,iBAAiB,CAACa,QAAQ,GAAG,GAAGZ,UAAU,gBAAgB;EAC3D,CAACD,iBAAiB,CAACc,YAAY,GAAG,GAAGb,UAAU,oBAAoB;EACnE,CAACD,iBAAiB,CAACe,UAAU,GAAG,GAAGd,UAAU,gBAAgB;EAC7D,CAACD,iBAAiB,CAACgB,IAAI,GAAG,GAAGf,UAAU,YAAY;EACnD,CAACD,iBAAiB,CAACiB,SAAS,GAAG,GAAGhB,UAAU,wBAAwB;EACpE,CAACD,iBAAiB,CAACkB,IAAI,GAAG,EAAE;EAC5B,CAAClB,iBAAiB,CAACmB,KAAK,GAAG,EAAE;EAC7B,CAACnB,iBAAiB,CAACoB,EAAE,GAAG,EAAE;EAC1B,CAACpB,iBAAiB,CAACqB,GAAG,GAAG;AAC3B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["IntegratedDevices","pdfBaseUrl","DEVICE_INSTRUCTION_PDFS","BP2","F4","SPO2","PC60WF","ALIVE_COR","COSINUSS","AOJ20A","TAIDOC_GLUCOSE","GLUCOCHECK","CLEVERTEMP","FORATEMP","ANDESFITTEMP","FORA_SCALE","BC01","RPM_SCALE","CMED","SP80B","S5","BGM","VEROVAL_DUO_CONTROL","VEROVAL_ECG"],"sourceRoot":"../../../../../src","sources":["modules/bt-device/constants/device-instruction-pdfs.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,8BAAqB;;AAEvD;AACA;AACA,MAAMC,UAAU,GACd,2EAA2E;AAE7E,OAAO,MAAMC,uBAA0D,GAAG;EACxE,CAACF,iBAAiB,CAACG,GAAG,GAAG,GAAGF,UAAU,yBAAyB;EAC/D,CAACD,iBAAiB,CAACI,EAAE,GAAG,GAAGH,UAAU,yBAAyB;EAC9D,CAACD,iBAAiB,CAACK,IAAI,GAAG,GAAGJ,UAAU,yBAAyB;EAChE,CAACD,iBAAiB,CAACM,MAAM,GAAG,GAAGL,UAAU,2BAA2B;EACpE,CAACD,iBAAiB,CAACO,SAAS,GAAG,GAAGN,UAAU,sBAAsB;EAClE,CAACD,iBAAiB,CAACQ,QAAQ,GAAG,GAAGP,UAAU,sBAAsB;EACjE,CAACD,iBAAiB,CAACS,MAAM,GAAG,GAAGR,UAAU,oBAAoB;EAC7D,CAACD,iBAAiB,CAACU,cAAc,GAAG,GAAGT,UAAU,oBAAoB;EACrE,CAACD,iBAAiB,CAACW,UAAU,GAAG,GAAGV,UAAU,iBAAiB;EAC9D,CAACD,iBAAiB,CAACY,UAAU,GAAG,GAAGX,UAAU,oBAAoB;EACjE,CAACD,iBAAiB,CAACa,QAAQ,GAAG,GAAGZ,UAAU,gBAAgB;EAC3D,CAACD,iBAAiB,CAACc,YAAY,GAAG,GAAGb,UAAU,oBAAoB;EACnE,CAACD,iBAAiB,CAACe,UAAU,GAAG,GAAGd,UAAU,gBAAgB;EAC7D,CAACD,iBAAiB,CAACgB,IAAI,GAAG,GAAGf,UAAU,YAAY;EACnD,CAACD,iBAAiB,CAACiB,SAAS,GAAG,GAAGhB,UAAU,wBAAwB;EACpE,CAACD,iBAAiB,CAACkB,IAAI,GAAG,EAAE;EAC5B,CAAClB,iBAAiB,CAACmB,KAAK,GAAG,EAAE;EAC7B,CAACnB,iBAAiB,CAACoB,EAAE,GAAG,EAAE;EAC1B,CAACpB,iBAAiB,CAACqB,GAAG,GAAG,EAAE;EAC3B,CAACrB,iBAAiB,CAACsB,mBAAmB,GAAG,EAAE;EAC3C,CAACtB,iBAAiB,CAACuB,WAAW,GAAG;AACnC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  import { IntegratedDevices } from "../types/integrated-devices.js";
4
- export const integratedDevicesMap = new Map([[/^BP2 \d{4}$/, IntegratedDevices.BP2], [/^F4$/, IntegratedDevices.F4], [/^Oxyfit \d{4}$/, IntegratedDevices.SPO2], [/^OxySmart \d{4}$/, IntegratedDevices.PC60WF], [/^AOJ-20A$/, IntegratedDevices.AOJ20A], [/^TAIDOC TD4216(?: \w+)?$/, IntegratedDevices.TAIDOC_GLUCOSE], [/^GlucoCheck Gold$/, IntegratedDevices.GLUCOCHECK], [/^FORA IR20$/, IntegratedDevices.FORATEMP], [/^TEMP$/, IntegratedDevices.ANDESFITTEMP], [/^two$/, IntegratedDevices.COSINUSS], [/^cmed$/, IntegratedDevices.CMED], [/^BC01\d{4}$/, IntegratedDevices.BC01], [/^FORA W550$/, IntegratedDevices.FORA_SCALE], [/^GBS-2012-B$/, IntegratedDevices.RPM_SCALE], [/^TAIDOC TD1107$/, IntegratedDevices.CLEVERTEMP], [/^PULMO80BEXPGC\d{6}$/, IntegratedDevices.SP80B], [/^Le S5$/, IntegratedDevices.S5], [/^TeleBGM Gen1 BLE$/, IntegratedDevices.BGM]]);
4
+ export const integratedDevicesMap = new Map([[/^BP2 \d{4}$/, IntegratedDevices.BP2], [/^F4$/, IntegratedDevices.F4], [/^Oxyfit \d{4}$/, IntegratedDevices.SPO2], [/^OxySmart \d{4}$/, IntegratedDevices.PC60WF], [/^AOJ-20A$/, IntegratedDevices.AOJ20A], [/^TAIDOC TD4216(?: \w+)?$/, IntegratedDevices.TAIDOC_GLUCOSE], [/^GlucoCheck Gold$/, IntegratedDevices.GLUCOCHECK], [/^FORA IR20$/, IntegratedDevices.FORATEMP], [/^TEMP$/, IntegratedDevices.ANDESFITTEMP], [/^two$/, IntegratedDevices.COSINUSS], [/^cmed$/, IntegratedDevices.CMED], [/^BC01\d{4}$/, IntegratedDevices.BC01], [/^FORA W550$/, IntegratedDevices.FORA_SCALE], [/^GBS-2012-B$/, IntegratedDevices.RPM_SCALE], [/^TAIDOC TD1107$/, IntegratedDevices.CLEVERTEMP], [/^PULMO80BEXPGC\d{6}$/, IntegratedDevices.SP80B], [/^Le S5$/, IntegratedDevices.S5], [/^TeleBGM Gen1 BLE$/, IntegratedDevices.BGM], [/^Veroval duo control$/i, IntegratedDevices.VEROVAL_DUO_CONTROL], [/^Veroval ECG$/i, IntegratedDevices.VEROVAL_ECG]]);
5
5
  //# sourceMappingURL=integrated-devices-map.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IntegratedDevices","integratedDevicesMap","Map","BP2","F4","SPO2","PC60WF","AOJ20A","TAIDOC_GLUCOSE","GLUCOCHECK","FORATEMP","ANDESFITTEMP","COSINUSS","CMED","BC01","FORA_SCALE","RPM_SCALE","CLEVERTEMP","SP80B","S5","BGM"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/integrated-devices-map.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,gCAA6B;AAE/D,OAAO,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAA4B,CACrE,CAAC,aAAa,EAAEF,iBAAiB,CAACG,GAAG,CAAC,EACtC,CAAC,MAAM,EAAEH,iBAAiB,CAACI,EAAE,CAAC,EAC9B,CAAC,gBAAgB,EAAEJ,iBAAiB,CAACK,IAAI,CAAC,EAC1C,CAAC,kBAAkB,EAAEL,iBAAiB,CAACM,MAAM,CAAC,EAC9C,CAAC,WAAW,EAAEN,iBAAiB,CAACO,MAAM,CAAC,EACvC,CAAC,0BAA0B,EAAEP,iBAAiB,CAACQ,cAAc,CAAC,EAC9D,CAAC,mBAAmB,EAAER,iBAAiB,CAACS,UAAU,CAAC,EACnD,CAAC,aAAa,EAAET,iBAAiB,CAACU,QAAQ,CAAC,EAC3C,CAAC,QAAQ,EAAEV,iBAAiB,CAACW,YAAY,CAAC,EAC1C,CAAC,OAAO,EAAEX,iBAAiB,CAACY,QAAQ,CAAC,EACrC,CAAC,QAAQ,EAAEZ,iBAAiB,CAACa,IAAI,CAAC,EAClC,CAAC,aAAa,EAAEb,iBAAiB,CAACc,IAAI,CAAC,EACvC,CAAC,aAAa,EAAEd,iBAAiB,CAACe,UAAU,CAAC,EAC7C,CAAC,cAAc,EAAEf,iBAAiB,CAACgB,SAAS,CAAC,EAC7C,CAAC,iBAAiB,EAAEhB,iBAAiB,CAACiB,UAAU,CAAC,EACjD,CAAC,sBAAsB,EAAEjB,iBAAiB,CAACkB,KAAK,CAAC,EACjD,CAAC,SAAS,EAAElB,iBAAiB,CAACmB,EAAE,CAAC,EACjC,CAAC,oBAAoB,EAAEnB,iBAAiB,CAACoB,GAAG,CAAC,CAC9C,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["IntegratedDevices","integratedDevicesMap","Map","BP2","F4","SPO2","PC60WF","AOJ20A","TAIDOC_GLUCOSE","GLUCOCHECK","FORATEMP","ANDESFITTEMP","COSINUSS","CMED","BC01","FORA_SCALE","RPM_SCALE","CLEVERTEMP","SP80B","S5","BGM","VEROVAL_DUO_CONTROL","VEROVAL_ECG"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/constants/integrated-devices-map.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,gCAA6B;AAE/D,OAAO,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAA4B,CACrE,CAAC,aAAa,EAAEF,iBAAiB,CAACG,GAAG,CAAC,EACtC,CAAC,MAAM,EAAEH,iBAAiB,CAACI,EAAE,CAAC,EAC9B,CAAC,gBAAgB,EAAEJ,iBAAiB,CAACK,IAAI,CAAC,EAC1C,CAAC,kBAAkB,EAAEL,iBAAiB,CAACM,MAAM,CAAC,EAC9C,CAAC,WAAW,EAAEN,iBAAiB,CAACO,MAAM,CAAC,EACvC,CAAC,0BAA0B,EAAEP,iBAAiB,CAACQ,cAAc,CAAC,EAC9D,CAAC,mBAAmB,EAAER,iBAAiB,CAACS,UAAU,CAAC,EACnD,CAAC,aAAa,EAAET,iBAAiB,CAACU,QAAQ,CAAC,EAC3C,CAAC,QAAQ,EAAEV,iBAAiB,CAACW,YAAY,CAAC,EAC1C,CAAC,OAAO,EAAEX,iBAAiB,CAACY,QAAQ,CAAC,EACrC,CAAC,QAAQ,EAAEZ,iBAAiB,CAACa,IAAI,CAAC,EAClC,CAAC,aAAa,EAAEb,iBAAiB,CAACc,IAAI,CAAC,EACvC,CAAC,aAAa,EAAEd,iBAAiB,CAACe,UAAU,CAAC,EAC7C,CAAC,cAAc,EAAEf,iBAAiB,CAACgB,SAAS,CAAC,EAC7C,CAAC,iBAAiB,EAAEhB,iBAAiB,CAACiB,UAAU,CAAC,EACjD,CAAC,sBAAsB,EAAEjB,iBAAiB,CAACkB,KAAK,CAAC,EACjD,CAAC,SAAS,EAAElB,iBAAiB,CAACmB,EAAE,CAAC,EACjC,CAAC,oBAAoB,EAAEnB,iBAAiB,CAACoB,GAAG,CAAC,EAC7C,CAAC,wBAAwB,EAAEpB,iBAAiB,CAACqB,mBAAmB,CAAC,EACjE,CAAC,gBAAgB,EAAErB,iBAAiB,CAACsB,WAAW,CAAC,CAClD,CAAC","ignoreList":[]}
@@ -36,6 +36,10 @@ export * from "./services/devices/custom/custom.device.js";
36
36
  export * from "./services/bt-manager.js";
37
37
  export * from "./services/custom/define-custom-device.js";
38
38
  export * from "./services/devices/standard-gatt/standard-gatt.devices.js";
39
+ export * from "./services/devices/veroval/veroval.bp-monitors.js";
40
+ export * from "./services/devices/veroval/veroval.duo-control-device.js";
41
+ export * from "./services/devices/veroval/veroval.ecg-device.js";
42
+ export * from "./services/devices/veroval/veroval.ecg-samples.js";
39
43
  export * from "./services/devices/lepu/lepu.transports.js";
40
44
  export * from "./services/devices/aoj/aoj.thermometers.js";
41
45
  export * from "./services/devices/viatom/viatom.bp-monitors.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,cAAc,2CAAwC;AACtD,cAAc,8CAA2C;AACzD,cAAc,4CAAyC;AACvD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,+CAA4C;AAC1D,cAAc,+CAA4C;AAE1D,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/bt-management/index.ts"],"mappings":";;AAAA,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,6BAA0B;AACxC,cAAc,qCAAkC;AAChD,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,kCAA+B;AAC7C,cAAc,8BAA2B;AACzC,cAAc,8BAA2B;AACzC,cAAc,6BAA0B;AACxC,cAAc,+BAA4B;AAC1C,cAAc,gCAA6B;AAC3C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,2BAAwB;AACtC,cAAc,uBAAoB;AAClC,cAAc,0BAAuB;AACrC,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,+BAA4B;AAC1C,cAAc,6BAA0B;AACxC,cAAc,yBAAsB;AACpC,cAAc,0BAAuB;AACrC,cAAc,6BAA0B;AACxC,cAAc,sCAAmC;AACjD,cAAc,4BAAyB;AACvC,cAAc,2BAAwB;AACtC,cAAc,0CAAuC;AAErD,cAAc,yCAAsC;AACpD,cAAc,4CAAyC;AACvD,cAAc,0BAAuB;AACrC,cAAc,2CAAwC;AACtD,cAAc,2DAAwD;AACtE,cAAc,mDAAgD;AAC9D,cAAc,0DAAuD;AACrE,cAAc,kDAA+C;AAC7D,cAAc,mDAAgD;AAC9D,cAAc,4CAAyC;AACvD,cAAc,4CAAyC;AACvD,cAAc,iDAA8C;AAC5D,cAAc,+CAA4C;AAC1D,cAAc,mDAAgD;AAC9D,cAAc,2CAAwC;AACtD,cAAc,8CAA2C;AACzD,cAAc,4CAAyC;AACvD,cAAc,0CAAuC;AACrD,cAAc,6CAA0C;AACxD,cAAc,+CAA4C;AAC1D,cAAc,+CAA4C;AAE1D,cAAc,0CAAuC;AAErD,cAAc,6BAA0B;AACxC,cAAc,6CAA0C;AACxD,cAAc,oCAAiC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { customDeviceError } from "./custom-device-error.js";
4
+
5
+ /**
6
+ * How long a frame of this shape is, which may be longer than the shortest the
7
+ * characteristic emits but never shorter: the selector chose this shape, so its own fields
8
+ * are the ones that have to fit.
9
+ */
10
+ const assertCaseLength = (id, path, caseSpec, frameMinLengthBytes) => {
11
+ const declared = caseSpec.minLengthBytes;
12
+ if (declared === undefined) {
13
+ return frameMinLengthBytes;
14
+ }
15
+ if (!Number.isInteger(declared) || declared < frameMinLengthBytes) {
16
+ throw customDeviceError(id, `${path}.minLengthBytes`, `is ${String(declared)}; it must be a whole number of bytes no smaller than frame.minLengthBytes (${frameMinLengthBytes})`);
17
+ }
18
+ return declared;
19
+ };
20
+
21
+ /**
22
+ * A frame that is a run of records, and how wide one is.
23
+ *
24
+ * The characteristic has to guarantee at least one whole record, otherwise a declaration
25
+ * whose fields all fit could still never decode anything.
26
+ */
27
+ const assertRepeatedRecords = (id, path, caseSpec, frameMinLengthBytes) => {
28
+ const declared = caseSpec.repeatedRecords;
29
+ if (!declared) {
30
+ return undefined;
31
+ }
32
+ const from = declared.from ?? 0;
33
+ if (!Number.isInteger(declared.recordBytes) || declared.recordBytes < 1) {
34
+ throw customDeviceError(id, `${path}.repeatedRecords.recordBytes`, `is ${String(declared.recordBytes)}; a record is a whole number of bytes, at least one`);
35
+ }
36
+ if (!Number.isInteger(from) || from < 0) {
37
+ throw customDeviceError(id, `${path}.repeatedRecords.from`, `is ${String(declared.from)}; it must be a byte offset of zero or more`);
38
+ }
39
+ if (from + declared.recordBytes > frameMinLengthBytes) {
40
+ throw customDeviceError(id, `${path}.repeatedRecords`, `needs ${from + declared.recordBytes} bytes for one record, which frame.minLengthBytes (${frameMinLengthBytes}) does not guarantee`);
41
+ }
42
+ return {
43
+ recordBytes: declared.recordBytes,
44
+ from
45
+ };
46
+ };
47
+ export { assertCaseLength, assertRepeatedRecords };
48
+ //# sourceMappingURL=compile-case-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["customDeviceError","assertCaseLength","id","path","caseSpec","frameMinLengthBytes","declared","minLengthBytes","undefined","Number","isInteger","String","assertRepeatedRecords","repeatedRecords","from","recordBytes"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-case-shape.ts"],"mappings":";;AAEA,SAASA,iBAAiB,QAAQ,0BAAuB;;AAEzD;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CACvBC,EAAU,EACVC,IAAY,EACZC,QAAwB,EACxBC,mBAA2B,KAChB;EACX,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,cAAc;EAExC,IAAID,QAAQ,KAAKE,SAAS,EAAE;IAC1B,OAAOH,mBAAmB;EAC5B;EAEA,IAAI,CAACI,MAAM,CAACC,SAAS,CAACJ,QAAQ,CAAC,IAAIA,QAAQ,GAAGD,mBAAmB,EAAE;IACjE,MAAML,iBAAiB,CACrBE,EAAE,EACF,GAAGC,IAAI,iBAAiB,EACxB,MAAMQ,MAAM,CAACL,QAAQ,CAAC,8EAA8ED,mBAAmB,GACzH,CAAC;EACH;EAEA,OAAOC,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,qBAAqB,GAAGA,CAC5BV,EAAU,EACVC,IAAY,EACZC,QAAwB,EACxBC,mBAA2B,KAC2B;EACtD,MAAMC,QAAQ,GAAGF,QAAQ,CAACS,eAAe;EAEzC,IAAI,CAACP,QAAQ,EAAE;IACb,OAAOE,SAAS;EAClB;EAEA,MAAMM,IAAI,GAAGR,QAAQ,CAACQ,IAAI,IAAI,CAAC;EAE/B,IAAI,CAACL,MAAM,CAACC,SAAS,CAACJ,QAAQ,CAACS,WAAW,CAAC,IAAIT,QAAQ,CAACS,WAAW,GAAG,CAAC,EAAE;IACvE,MAAMf,iBAAiB,CACrBE,EAAE,EACF,GAAGC,IAAI,8BAA8B,EACrC,MAAMQ,MAAM,CAACL,QAAQ,CAACS,WAAW,CAAC,qDACpC,CAAC;EACH;EAEA,IAAI,CAACN,MAAM,CAACC,SAAS,CAACI,IAAI,CAAC,IAAIA,IAAI,GAAG,CAAC,EAAE;IACvC,MAAMd,iBAAiB,CACrBE,EAAE,EACF,GAAGC,IAAI,uBAAuB,EAC9B,MAAMQ,MAAM,CAACL,QAAQ,CAACQ,IAAI,CAAC,4CAC7B,CAAC;EACH;EAEA,IAAIA,IAAI,GAAGR,QAAQ,CAACS,WAAW,GAAGV,mBAAmB,EAAE;IACrD,MAAML,iBAAiB,CACrBE,EAAE,EACF,GAAGC,IAAI,kBAAkB,EACzB,SAASW,IAAI,GAAGR,QAAQ,CAACS,WAAW,sDAAsDV,mBAAmB,sBAC/G,CAAC;EACH;EAEA,OAAO;IAAEU,WAAW,EAAET,QAAQ,CAACS,WAAW;IAAED;EAAK,CAAC;AACpD,CAAC;AAED,SAASb,gBAAgB,EAAEW,qBAAqB","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  import { measurementFieldCatalog } from "../../constants/measurement-field-catalog.js";
4
4
  import { CaseType } from "../../types/case-type.js";
5
5
  import { assertRequiredFields, compileFields } from "./compile-case-fields.js";
6
+ import { assertCaseLength, assertRepeatedRecords } from "./compile-case-shape.js";
6
7
  import { customDeviceError } from "./custom-device-error.js";
7
8
 
8
9
  /**
@@ -58,6 +59,8 @@ const declaredMeasurements = (id, path, caseSpec, measurementTypeKey) => {
58
59
 
59
60
  /** Validates one declared frame shape and turns it into a parsing case. */
60
61
  export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) => {
62
+ const caseMinLengthBytes = assertCaseLength(id, path, caseSpec, minLengthBytes);
63
+ const repeatedRecords = assertRepeatedRecords(id, path, caseSpec, minLengthBytes);
61
64
  const caseType = CASE_TYPES[caseSpec.kind];
62
65
  if (!caseType) {
63
66
  throw customDeviceError(id, `${path}.kind`, `is "${String(caseSpec.kind)}"; expected ${Object.keys(CASE_TYPES).join(", ")}`);
@@ -99,7 +102,7 @@ export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) =>
99
102
 
100
103
  // Every field is checked first, so a misspelt property is reported as the typo it is
101
104
  // rather than as the required property it failed to satisfy.
102
- parseDefinitions.push(...compileFields(id, measurementPath, measurement.fields, key, minLengthBytes, fields, names));
105
+ parseDefinitions.push(...compileFields(id, measurementPath, measurement.fields, key, repeatedRecords?.recordBytes ?? caseMinLengthBytes, fields, names));
103
106
  assertRequiredFields(id, measurementPath, measurement.fields, key);
104
107
  measurements.push({
105
108
  measurementTypeKey: key,
@@ -112,7 +115,10 @@ export const compileCustomCase = (id, path, caseSpec, minLengthBytes, fields) =>
112
115
  caseValue: String(caseSpec.selector ?? "").toLowerCase(),
113
116
  parseDefinitions,
114
117
  description: caseSpec.description,
115
- measurements
118
+ measurements,
119
+ ...(repeatedRecords ? {
120
+ repeatedRecords
121
+ } : {})
116
122
  };
117
123
  };
118
124
  //# sourceMappingURL=compile-custom-case.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["measurementFieldCatalog","CaseType","assertRequiredFields","compileFields","customDeviceError","CASE_TYPES","result","DEPENDENT","stream","STREAM","idle","OTHER","assertMeasurementTypeKey","id","path","caseSpec","key","measurementTypeKey","undefined","kind","Object","keys","join","declaredMeasurements","additional","additionalMeasurements","Array","isArray","measurement","fields","map","index","compileCustomCase","minLengthBytes","caseType","String","declared","length","caseValue","selector","toLowerCase","parseDefinitions","description","names","Set","measurements","forEach","measurementPath","push","fieldNames","field","name"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-case.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["measurementFieldCatalog","CaseType","assertRequiredFields","compileFields","assertCaseLength","assertRepeatedRecords","customDeviceError","CASE_TYPES","result","DEPENDENT","stream","STREAM","idle","OTHER","assertMeasurementTypeKey","id","path","caseSpec","key","measurementTypeKey","undefined","kind","Object","keys","join","declaredMeasurements","additional","additionalMeasurements","Array","isArray","measurement","fields","map","index","compileCustomCase","minLengthBytes","caseMinLengthBytes","repeatedRecords","caseType","String","declared","length","caseValue","selector","toLowerCase","parseDefinitions","description","names","Set","measurements","forEach","measurementPath","push","recordBytes","fieldNames","field","name"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-case.ts"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,9 @@ const assertByteIndexes = (id, path, field, minLengthBytes) => {
16
16
  throw customDeviceError(id, `${path}.byteIndexes`, "reads the same byte twice");
17
17
  }
18
18
  const encoding = field.encoding ?? "uint";
19
+ if (encoding === "ascii" && field.byteOrder === "little") {
20
+ throw customDeviceError(id, `${path}.byteOrder`, 'is "little" on an "ascii" field; decimal digits read left to right, so reversing them would turn 120 into 21');
21
+ }
19
22
  const required = WIDTHS[encoding];
20
23
  if (required !== undefined && indexes.length !== required) {
21
24
  throw customDeviceError(id, `${path}.encoding`, `"${encoding}" needs exactly ${required} bytes, but ${indexes.length} byte index(es) are declared`);
@@ -1 +1 @@
1
- {"version":3,"names":["measurementFieldCatalog","customDeviceError","MAX_INTEGER_BYTES","WIDTHS","sfloat","float","assertByteIndexes","id","path","field","minLengthBytes","indexes","byteIndexes","Array","isArray","length","some","i","Number","isInteger","Set","size","encoding","required","undefined","outOfFrame","filter","assertArithmetic","scale","isFinite","offset","decimals","compileCustomField","measurementTypeKey","catalog","known","name","Object","keys","join","unit","min","max","byteOrder","reverse"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-field.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["measurementFieldCatalog","customDeviceError","MAX_INTEGER_BYTES","WIDTHS","sfloat","float","assertByteIndexes","id","path","field","minLengthBytes","indexes","byteIndexes","Array","isArray","length","some","i","Number","isInteger","Set","size","encoding","byteOrder","required","undefined","outOfFrame","filter","assertArithmetic","scale","isFinite","offset","decimals","compileCustomField","measurementTypeKey","catalog","known","name","Object","keys","join","unit","min","max","reverse"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-field.ts"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,8 @@ import { BP2Device } from "./devices/bp2/bp2.device.js";
8
8
  import { CustomDevice } from "./devices/custom/custom.device.js";
9
9
  import { F4Device } from "./devices/f4/f4.device.js";
10
10
  import { SPO2Device } from "./devices/spo/spo2.device.js";
11
+ import { VerovalDuoControlDevice } from "./devices/veroval/veroval.duo-control-device.js";
12
+ import { VerovalEcgDevice } from "./devices/veroval/veroval.ecg-device.js";
11
13
 
12
14
  /**
13
15
  * The built-in names the SDK can actually build.
@@ -20,7 +22,9 @@ const DEVICE_CLASSES = {
20
22
  [IntegratedDevices.BP2]: BP2Device,
21
23
  [IntegratedDevices.F4]: F4Device,
22
24
  [IntegratedDevices.PC60WF]: SPO2Device,
23
- [IntegratedDevices.BC01]: BC01Device
25
+ [IntegratedDevices.BC01]: BC01Device,
26
+ [IntegratedDevices.VEROVAL_DUO_CONTROL]: VerovalDuoControlDevice,
27
+ [IntegratedDevices.VEROVAL_ECG]: VerovalEcgDevice
24
28
  };
25
29
  const collectCustomDevices = acceptedDevices => {
26
30
  const customDevices = new Map();
@@ -1 +1 @@
1
- {"version":3,"names":["integratedDevicesMap","IntegratedDevices","isCustomDeviceDefinition","BC01Device","BP2Device","CustomDevice","F4Device","SPO2Device","DEVICE_CLASSES","BP2","F4","PC60WF","BC01","collectCustomDevices","acceptedDevices","customDevices","Map","matchers","Set","forEach","entry","index","Error","has","id","nameMatch","source","set","add","DeviceCreator","deviceNameCache","CACHE_MAX_SIZE","constructor","acceptedDeviceNames","getDeviceName","foundName","undefined","get","matched","matchDeviceName","cacheDeviceName","createDevice","params","String","deviceName","trim","device","name","custom","deviceClass","Object","keys","join","destroy","clear","regex","deviceType","test","some","values","size","firstKey","next","value","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/device-creator.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["integratedDevicesMap","IntegratedDevices","isCustomDeviceDefinition","BC01Device","BP2Device","CustomDevice","F4Device","SPO2Device","VerovalDuoControlDevice","VerovalEcgDevice","DEVICE_CLASSES","BP2","F4","PC60WF","BC01","VEROVAL_DUO_CONTROL","VEROVAL_ECG","collectCustomDevices","acceptedDevices","customDevices","Map","matchers","Set","forEach","entry","index","Error","has","id","nameMatch","source","set","add","DeviceCreator","deviceNameCache","CACHE_MAX_SIZE","constructor","acceptedDeviceNames","getDeviceName","foundName","undefined","get","matched","matchDeviceName","cacheDeviceName","createDevice","params","String","deviceName","trim","device","name","custom","deviceClass","Object","keys","join","destroy","clear","regex","deviceType","test","some","values","size","firstKey","next","value","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/device-creator.ts"],"mappings":"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","ignoreList":[]}
@@ -87,6 +87,20 @@ export class BTCommandWriter {
87
87
  }
88
88
  };
89
89
 
90
+ /**
91
+ * Writes one chunk the way the characteristic accepts writes.
92
+ *
93
+ * A with-response write to a characteristic that only supports write-without-response
94
+ * fails outright, so the command says which it is rather than the transport guessing.
95
+ */
96
+ writeTo = async (command, value) => {
97
+ if (command.withoutResponse) {
98
+ await this.device.writeCharacteristicWithoutResponseForService(command.serviceUuid, command.characteristicUuid, value);
99
+ return;
100
+ }
101
+ await this.device.writeCharacteristicWithResponseForService(command.serviceUuid, command.characteristicUuid, value);
102
+ };
103
+
90
104
  /**
91
105
  * Splits a frame into writes the link will carry whole.
92
106
  *
@@ -116,7 +130,7 @@ export class BTCommandWriter {
116
130
  if (!isConnected) {
117
131
  return false;
118
132
  }
119
- await this.device.writeCharacteristicWithResponseForService(command.serviceUuid, command.characteristicUuid, hexToBase64(chunk.join("")));
133
+ await this.writeTo(command, hexToBase64(chunk.join("")));
120
134
  return true;
121
135
  } catch (error) {
122
136
  sentryLogger("error", "DEVICE: Error sending command", {
@@ -1 +1 @@
1
- {"version":3,"names":["slog","sentryLogger","hexToBase64","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","constructor","device","onError","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","chunk","chunksOf","frame","written","writeChunk","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","writeCharacteristicWithResponseForService","serviceUuid","characteristicUuid","join","Error","message","deviceName","name"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["slog","sentryLogger","hexToBase64","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","constructor","device","onError","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","chunk","chunksOf","frame","written","writeChunk","writeTo","value","withoutResponse","writeCharacteristicWithoutResponseForService","serviceUuid","characteristicUuid","writeCharacteristicWithResponseForService","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","join","Error","message","deviceName","name"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
3
4
  import { LepuCommandBuilder } from "../lepu/lepu.command-builder.js";
4
5
  import { LepuIdentityGate } from "../lepu/lepu.identity-gate.js";
5
6
 
@@ -16,7 +17,24 @@ const DEFAULT_START_BYTE = "a5";
16
17
  * answers on the one it is addressed with, so the list matters for reading and its head for
17
18
  * writing.
18
19
  */
19
- export const createLepuSequencer = (lepu, report) => new LepuIdentityGate({
20
+ /**
21
+ * Records what the device said it was.
22
+ *
23
+ * The model number is logged because it is the only place one exists: the vendor's SDK
24
+ * never reads the field back, so a declaration written without it is completed by
25
+ * connecting once and reading this line.
26
+ */
27
+ const recordLepuIdentity = (deviceData, info) => {
28
+ deviceData.sn = info.serialNumber;
29
+ sentryLogger("info", "BT_MANAGER: Device identified itself", {
30
+ deviceId: deviceData.id,
31
+ deviceName: deviceData.name,
32
+ deviceType: info.deviceType,
33
+ branchCode: info.branchCode,
34
+ protocolMaxLength: info.protocolMaxLength
35
+ });
36
+ };
37
+ const createLepuSequencer = (lepu, report) => new LepuIdentityGate({
20
38
  write: {
21
39
  serviceUuid: lepu.write.serviceUuid,
22
40
  characteristicUuid: lepu.write.characteristicUuid
@@ -29,4 +47,5 @@ export const createLepuSequencer = (lepu, report) => new LepuIdentityGate({
29
47
  onIdentified: report.onIdentified,
30
48
  onRefused: report.onRefused
31
49
  });
50
+ export { createLepuSequencer, recordLepuIdentity };
32
51
  //# sourceMappingURL=custom-lepu-sequencer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LepuCommandBuilder","LepuIdentityGate","DEFAULT_START_BYTE","createLepuSequencer","lepu","report","write","serviceUuid","characteristicUuid","builder","startBytes","expectedDeviceTypes","pollCommand","undefined","onIdentified","onRefused"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":";;AAEA,SAASA,kBAAkB,QAAQ,iCAA8B;AAEjE,SAASC,gBAAgB,QAAQ,+BAA4B;;AAE7D;AACA,MAAMC,kBAAkB,GAAG,IAAI;AAO/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,IAAoB,EACpBC,MAAsB,KAEtB,IAAIJ,gBAAgB,CAAC;EACnBK,KAAK,EAAE;IACLC,WAAW,EAAEH,IAAI,CAACE,KAAK,CAACC,WAAW;IACnCC,kBAAkB,EAAEJ,IAAI,CAACE,KAAK,CAACE;EACjC,CAAC;EACDC,OAAO,EAAE,IAAIT,kBAAkB,CAACI,IAAI,CAACM,UAAU,CAAC,CAAC,CAAC,IAAIR,kBAAkB,CAAC;EACzES,mBAAmB,EAAEP,IAAI,CAACO,mBAAmB;EAC7C,IAAIP,IAAI,CAACQ,WAAW,KAAKC,SAAS,GAAG,CAAC,CAAC,GAAG;IAAED,WAAW,EAAER,IAAI,CAACQ;EAAY,CAAC,CAAC;EAC5EE,YAAY,EAAET,MAAM,CAACS,YAAY;EACjCC,SAAS,EAAEV,MAAM,CAACU;AACpB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["sentryLogger","LepuCommandBuilder","LepuIdentityGate","DEFAULT_START_BYTE","recordLepuIdentity","deviceData","info","sn","serialNumber","deviceId","id","deviceName","name","deviceType","branchCode","protocolMaxLength","createLepuSequencer","lepu","report","write","serviceUuid","characteristicUuid","builder","startBytes","expectedDeviceTypes","pollCommand","undefined","onIdentified","onRefused"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4CAAyC;AAItE,SAASC,kBAAkB,QAAQ,iCAA8B;AAEjE,SAASC,gBAAgB,QAAQ,+BAA4B;;AAE7D;AACA,MAAMC,kBAAkB,GAAG,IAAI;AAO/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGA,CACzBC,UAAsB,EACtBC,IAAoB,KACX;EACTD,UAAU,CAACE,EAAE,GAAGD,IAAI,CAACE,YAAY;EAEjCR,YAAY,CAAC,MAAM,EAAE,sCAAsC,EAAE;IAC3DS,QAAQ,EAAEJ,UAAU,CAACK,EAAE;IACvBC,UAAU,EAAEN,UAAU,CAACO,IAAI;IAC3BC,UAAU,EAAEP,IAAI,CAACO,UAAU;IAC3BC,UAAU,EAAER,IAAI,CAACQ,UAAU;IAC3BC,iBAAiB,EAAET,IAAI,CAACS;EAC1B,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,mBAAmB,GAAGA,CAC1BC,IAAoB,EACpBC,MAAsB,KAEtB,IAAIhB,gBAAgB,CAAC;EACnBiB,KAAK,EAAE;IACLC,WAAW,EAAEH,IAAI,CAACE,KAAK,CAACC,WAAW;IACnCC,kBAAkB,EAAEJ,IAAI,CAACE,KAAK,CAACE;EACjC,CAAC;EACDC,OAAO,EAAE,IAAIrB,kBAAkB,CAACgB,IAAI,CAACM,UAAU,CAAC,CAAC,CAAC,IAAIpB,kBAAkB,CAAC;EACzEqB,mBAAmB,EAAEP,IAAI,CAACO,mBAAmB;EAC7C,IAAIP,IAAI,CAACQ,WAAW,KAAKC,SAAS,GAAG,CAAC,CAAC,GAAG;IAAED,WAAW,EAAER,IAAI,CAACQ;EAAY,CAAC,CAAC;EAC5EE,YAAY,EAAET,MAAM,CAACS,YAAY;EACjCC,SAAS,EAAEV,MAAM,CAACU;AACpB,CAAC,CAAC;AAEJ,SAASZ,mBAAmB,EAAEZ,kBAAkB","ignoreList":[]}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
4
3
  import { CaseType } from "../../../types/case-type.js";
5
4
  import { createFrameValidator } from "../../../utils/create-frame-validator.js";
5
+ import { parseMeasurement } from "../../../utils/parse-measurement.js";
6
+ import { discardedReadingError, rejectCustomReading } from "../../../utils/reject-custom-reading.js";
6
7
  import { BTManagedDevice } from "../bt-managed-device.js";
7
8
  import { LepuFrameReader } from "../lepu/lepu.frame-reader.js";
8
- import { createLepuSequencer } from "./custom-lepu-sequencer.js";
9
+ import { createLepuSequencer, recordLepuIdentity } from "./custom-lepu-sequencer.js";
9
10
  /**
10
11
  * Runs a device registered with defineCustomDevice.
11
12
  *
@@ -49,29 +50,7 @@ export class CustomDevice extends BTManagedDevice {
49
50
  onRefused: this.onIdentityRefused
50
51
  });
51
52
  }
52
-
53
- /**
54
- * Records what the device said it was.
55
- *
56
- * The model number is logged because it is the only place one exists: the vendor's SDK
57
- * never reads the field back, so a declaration written without it is completed by
58
- * connecting once and reading this line.
59
- */
60
- onIdentified = info => {
61
- this.deviceData.sn = info.serialNumber;
62
- sentryLogger("info", "BT_MANAGER: Device identified itself", {
63
- deviceId: this.deviceData.id,
64
- deviceName: this.deviceData.name,
65
- deviceType: info.deviceType,
66
- branchCode: info.branchCode,
67
- protocolMaxLength: info.protocolMaxLength
68
- });
69
- };
70
-
71
- /**
72
- * Nothing is sent to a device that could not be identified, because the same opcode means
73
- * different things on different models in this family.
74
- */
53
+ onIdentified = info => recordLepuIdentity(this.deviceData, info);
75
54
  onIdentityRefused = reason => {
76
55
  this.onError?.(new Error(`Custom device "${this.definition.id}" was not addressed: ${reason}.`));
77
56
  };
@@ -90,7 +69,7 @@ export class CustomDevice extends BTManagedDevice {
90
69
  */
91
70
  handleDependentResult = data => {
92
71
  try {
93
- this.report(data.parsedData, data.parsingCase);
72
+ this.reportFrame(data);
94
73
  } catch (error) {
95
74
  this.onError?.(error);
96
75
  }
@@ -111,6 +90,26 @@ export class CustomDevice extends BTManagedDevice {
111
90
  return;
112
91
  }
113
92
 
93
+ /**
94
+ * Reports what the frame carried, which may be more than one reading.
95
+ *
96
+ * A device handing over its stored history answers one request with every record it
97
+ * holds, back to back. Those were taken at different times and are separate readings, so
98
+ * each record is decoded and reported on its own. A trailing part-record is ignored: half
99
+ * a record is not a reading.
100
+ */
101
+ reportFrame(data) {
102
+ const repeated = data.parsingCase.repeatedRecords;
103
+ if (!repeated || !data.frame) {
104
+ this.report(data.parsedData, data.parsingCase);
105
+ return;
106
+ }
107
+ const records = Math.floor((data.frame.length - repeated.from) / repeated.recordBytes);
108
+ for (let record = 0; record < records; record++) {
109
+ this.report(parseMeasurement(data.frame, data.parsingCase, repeated.from + record * repeated.recordBytes), data.parsingCase);
110
+ }
111
+ }
112
+
114
113
  /**
115
114
  * Reports every reading the frame carried.
116
115
  *
@@ -125,11 +124,14 @@ export class CustomDevice extends BTManagedDevice {
125
124
  report(parsedData, parsingCase) {
126
125
  const measurements = parsingCase.measurements ?? [];
127
126
  if (measurements.length === 0) {
128
- this.fail("a result frame carries no measurement type", parsedData);
127
+ this.discard("a result frame carries no measurement type", parsedData);
129
128
  return;
130
129
  }
131
130
  measurements.forEach(measurement => this.reportMeasurement(parsedData, measurement));
132
131
  }
132
+ discard(reason, parsedData) {
133
+ this.onError?.(discardedReadingError(this.definition.id, reason, parsedData));
134
+ }
133
135
  reportMeasurement(parsedData, measurement) {
134
136
  const reading = {
135
137
  caseType: parsedData.caseType,
@@ -138,28 +140,12 @@ export class CustomDevice extends BTManagedDevice {
138
140
  measurement.fieldNames.forEach(name => {
139
141
  reading[name] = parsedData[name];
140
142
  });
141
- const rejection = measurement.fieldNames.map(name => this.reject(measurement.measurementTypeKey, name, reading[name])).find(message => message !== undefined);
143
+ const rejection = measurement.fieldNames.map(name => rejectCustomReading(this.definition.fields, measurement.measurementTypeKey, name, reading[name])).find(message => message !== undefined);
142
144
  if (rejection) {
143
- this.fail(rejection, reading);
145
+ this.discard(rejection, reading);
144
146
  return;
145
147
  }
146
148
  this.onResult?.(reading);
147
149
  }
148
- reject(measurementTypeKey, name, value) {
149
- const field = this.definition.fields.get(`${measurementTypeKey}:${name}`);
150
- if (!field) {
151
- return `decoded "${name}", which is not declared for ${measurementTypeKey}`;
152
- }
153
- if (typeof value !== "number" || !Number.isFinite(value)) {
154
- return `could not decode ${name}; the frame was shorter than the declaration expects`;
155
- }
156
- if (value < field.min || value > field.max) {
157
- return `decoded ${name} = ${value} ${field.unit}, outside the accepted range ${field.min}-${field.max} ${field.unit}`;
158
- }
159
- return undefined;
160
- }
161
- fail(reason, parsedData) {
162
- this.onError?.(new Error(`Custom device "${this.definition.id}": ${reason}. The reading was discarded (decoded ${JSON.stringify(parsedData)}).`));
163
- }
164
150
  }
165
151
  //# sourceMappingURL=custom.device.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sentryLogger","CaseType","createFrameValidator","BTManagedDevice","LepuFrameReader","createLepuSequencer","CustomDevice","validators","Map","constructor","device","params","definition","mainServices","stuckDataTimeout","preferredMtu","undefined","declareLepuProtocol","frames","forEach","frame","uuid","set","lepu","frameReader","startBytes","createCommandSequencer","onIdentified","onRefused","onIdentityRefused","info","deviceData","sn","serialNumber","deviceId","id","deviceName","name","deviceType","branchCode","protocolMaxLength","reason","onError","Error","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","report","parsedData","parsingCase","error","caseType","OTHER","handleSuccessResult","measurements","length","fail","measurement","reportMeasurement","reading","measurementTypeKey","fieldNames","rejection","map","reject","find","message","onResult","value","field","fields","Number","isFinite","min","max","unit","JSON","stringify"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","BTManagedDevice","LepuFrameReader","createLepuSequencer","recordLepuIdentity","CustomDevice","validators","Map","constructor","device","params","definition","mainServices","stuckDataTimeout","preferredMtu","undefined","declareLepuProtocol","frames","forEach","frame","uuid","set","lepu","frameReader","startBytes","createCommandSequencer","onIdentified","onRefused","onIdentityRefused","info","deviceData","reason","onError","Error","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","reportFrame","error","parsingCase","caseType","OTHER","handleSuccessResult","repeated","repeatedRecords","report","parsedData","records","Math","floor","length","from","recordBytes","record","measurements","discard","measurement","reportMeasurement","reading","measurementTypeKey","fieldNames","name","rejection","map","fields","find","message","onResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,8 @@ export class FrameParser {
31
31
  return {
32
32
  parsingCase,
33
33
  measurementTypeKey: parsingCase.measurementTypeKey,
34
- parsedData: parsedData
34
+ parsedData: parsedData,
35
+ frame
35
36
  };
36
37
  }
37
38
  findParsingModel(uuid) {