@ovok/native 0.4.6 → 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 (520) 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 +220 -0
  6. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  7. package/lib/commonjs/modules/bt-management/services/custom/compile-case-fields.js +49 -0
  8. package/lib/commonjs/modules/bt-management/services/custom/compile-case-fields.js.map +1 -0
  9. package/lib/commonjs/modules/bt-management/services/custom/compile-case-shape.js +52 -0
  10. package/lib/commonjs/modules/bt-management/services/custom/compile-case-shape.js.map +1 -0
  11. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js +53 -41
  12. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-case.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js +3 -0
  14. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-field.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js +48 -2
  16. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -1
  17. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +98 -0
  18. package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -0
  19. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +24 -1
  20. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/device-creator.js +19 -8
  22. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  23. package/lib/commonjs/modules/bt-management/services/devices/aoj/aoj.thermometers.js +85 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/aoj/aoj.thermometers.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.frame-reader.js +8 -74
  26. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.frame-reader.js.map +1 -1
  27. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js +155 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js.map +1 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +9 -49
  30. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  31. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +17 -6
  32. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  33. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +21 -14
  34. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  35. package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +55 -0
  36. package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +82 -29
  38. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  39. package/lib/commonjs/modules/bt-management/services/devices/frame-parser.js +2 -1
  40. package/lib/commonjs/modules/bt-management/services/devices/frame-parser.js.map +1 -1
  41. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.command-builder.js +48 -0
  42. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.command-builder.js.map +1 -0
  43. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.commands.js +37 -0
  44. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.commands.js.map +1 -0
  45. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-info.js +83 -0
  46. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-info.js.map +1 -0
  47. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-names.js +26 -0
  48. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.device-names.js.map +1 -0
  49. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-names.js +36 -0
  50. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-names.js.map +1 -0
  51. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +155 -0
  52. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -0
  53. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame-reader.js +98 -0
  54. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame-reader.js.map +1 -0
  55. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame.js +29 -0
  56. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.frame.js.map +1 -0
  57. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +103 -0
  58. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -0
  59. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.name-match.js +32 -0
  60. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.name-match.js.map +1 -0
  61. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.response-type.js +64 -0
  62. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.response-type.js.map +1 -0
  63. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +143 -0
  64. package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -0
  65. package/lib/commonjs/modules/bt-management/services/devices/polling-command-sequencer.js +38 -0
  66. package/lib/commonjs/modules/bt-management/services/devices/polling-command-sequencer.js.map +1 -0
  67. package/lib/commonjs/modules/bt-management/services/devices/sentinel-frame-reader.js +84 -0
  68. package/lib/commonjs/modules/bt-management/services/devices/sentinel-frame-reader.js.map +1 -0
  69. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +130 -0
  70. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -0
  71. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +55 -0
  72. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -0
  73. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js +43 -0
  74. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js.map +1 -0
  75. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js +113 -0
  76. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js.map +1 -0
  77. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js +120 -0
  78. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js.map +1 -0
  79. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-device.js +92 -0
  80. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-device.js.map +1 -0
  81. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js +64 -0
  82. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js.map +1 -0
  83. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js +94 -0
  84. package/lib/commonjs/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js.map +1 -0
  85. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +124 -0
  86. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -0
  87. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +113 -0
  88. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -0
  89. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.lepod.js +117 -0
  90. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.lepod.js.map +1 -0
  91. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.oximeters.js +82 -0
  92. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.oximeters.js.map +1 -0
  93. package/lib/commonjs/modules/bt-management/types/command-sequencer.js +6 -0
  94. package/lib/commonjs/modules/bt-management/types/command-sequencer.js.map +1 -0
  95. package/lib/commonjs/modules/bt-management/types/custom-checksum-algorithm.js +2 -0
  96. package/lib/commonjs/modules/bt-management/types/custom-checksum-algorithm.js.map +1 -0
  97. package/lib/commonjs/modules/bt-management/types/custom-checksum-spec.js +6 -0
  98. package/lib/commonjs/modules/bt-management/types/custom-checksum-spec.js.map +1 -0
  99. package/lib/commonjs/modules/bt-management/types/custom-lepu-spec.js +2 -0
  100. package/lib/commonjs/modules/bt-management/types/custom-lepu-spec.js.map +1 -0
  101. package/lib/commonjs/modules/bt-management/types/custom-measurement-spec.js +6 -0
  102. package/lib/commonjs/modules/bt-management/types/custom-measurement-spec.js.map +1 -0
  103. package/lib/commonjs/modules/bt-management/types/device-command.js +2 -0
  104. package/lib/commonjs/modules/bt-management/types/device-command.js.map +1 -0
  105. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +2 -0
  106. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  107. package/lib/commonjs/modules/bt-management/types/measurement-group.js +6 -0
  108. package/lib/commonjs/modules/bt-management/types/measurement-group.js.map +1 -0
  109. package/lib/commonjs/modules/bt-management/utils/calculate-checksum.js +49 -0
  110. package/lib/commonjs/modules/bt-management/utils/calculate-checksum.js.map +1 -0
  111. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js +21 -0
  112. package/lib/commonjs/modules/bt-management/utils/create-custom-field-parser.js.map +1 -1
  113. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js +9 -0
  114. package/lib/commonjs/modules/bt-management/utils/create-frame-validator.js.map +1 -1
  115. package/lib/commonjs/modules/bt-management/utils/hex-to-bytes.js +19 -0
  116. package/lib/commonjs/modules/bt-management/utils/hex-to-bytes.js.map +1 -0
  117. package/lib/commonjs/modules/bt-management/utils/le-32-to-bytes.js +13 -0
  118. package/lib/commonjs/modules/bt-management/utils/le-32-to-bytes.js.map +1 -0
  119. package/lib/commonjs/modules/bt-management/utils/parse-measurement.js +10 -7
  120. package/lib/commonjs/modules/bt-management/utils/parse-measurement.js.map +1 -1
  121. package/lib/commonjs/modules/bt-management/utils/reject-custom-reading.js +34 -0
  122. package/lib/commonjs/modules/bt-management/utils/reject-custom-reading.js.map +1 -0
  123. package/lib/commonjs/modules/bt-management/utils/summarise-measurement-for-log.js +22 -0
  124. package/lib/commonjs/modules/bt-management/utils/summarise-measurement-for-log.js.map +1 -0
  125. package/lib/commonjs/modules/bt-management/utils/supported-measurement-type-keys.js +18 -0
  126. package/lib/commonjs/modules/bt-management/utils/supported-measurement-type-keys.js.map +1 -0
  127. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +3 -1
  128. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  129. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  130. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  131. package/lib/module/modules/bt-management/index.js +20 -0
  132. package/lib/module/modules/bt-management/index.js.map +1 -1
  133. package/lib/module/modules/bt-management/services/custom/compile-case-fields.js +44 -0
  134. package/lib/module/modules/bt-management/services/custom/compile-case-fields.js.map +1 -0
  135. package/lib/module/modules/bt-management/services/custom/compile-case-shape.js +48 -0
  136. package/lib/module/modules/bt-management/services/custom/compile-case-shape.js.map +1 -0
  137. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js +53 -41
  138. package/lib/module/modules/bt-management/services/custom/compile-custom-case.js.map +1 -1
  139. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js +3 -0
  140. package/lib/module/modules/bt-management/services/custom/compile-custom-field.js.map +1 -1
  141. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js +48 -2
  142. package/lib/module/modules/bt-management/services/custom/compile-custom-frame.js.map +1 -1
  143. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +93 -0
  144. package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -0
  145. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +24 -1
  146. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  147. package/lib/module/modules/bt-management/services/device-creator.js +20 -8
  148. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  149. package/lib/module/modules/bt-management/services/devices/aoj/aoj.thermometers.js +81 -0
  150. package/lib/module/modules/bt-management/services/devices/aoj/aoj.thermometers.js.map +1 -0
  151. package/lib/module/modules/bt-management/services/devices/bp2/bp2.frame-reader.js +8 -73
  152. package/lib/module/modules/bt-management/services/devices/bp2/bp2.frame-reader.js.map +1 -1
  153. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js +150 -0
  154. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js.map +1 -0
  155. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +9 -49
  156. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  157. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +17 -6
  158. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  159. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +21 -14
  160. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  161. package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +51 -0
  162. package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -0
  163. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +82 -29
  164. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  165. package/lib/module/modules/bt-management/services/devices/frame-parser.js +2 -1
  166. package/lib/module/modules/bt-management/services/devices/frame-parser.js.map +1 -1
  167. package/lib/module/modules/bt-management/services/devices/lepu/lepu.command-builder.js +43 -0
  168. package/lib/module/modules/bt-management/services/devices/lepu/lepu.command-builder.js.map +1 -0
  169. package/lib/module/modules/bt-management/services/devices/lepu/lepu.commands.js +33 -0
  170. package/lib/module/modules/bt-management/services/devices/lepu/lepu.commands.js.map +1 -0
  171. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-info.js +79 -0
  172. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-info.js.map +1 -0
  173. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-names.js +22 -0
  174. package/lib/module/modules/bt-management/services/devices/lepu/lepu.device-names.js.map +1 -0
  175. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-names.js +32 -0
  176. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-names.js.map +1 -0
  177. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js +150 -0
  178. package/lib/module/modules/bt-management/services/devices/lepu/lepu.file-transfer.js.map +1 -0
  179. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame-reader.js +93 -0
  180. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame-reader.js.map +1 -0
  181. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame.js +24 -0
  182. package/lib/module/modules/bt-management/services/devices/lepu/lepu.frame.js.map +1 -0
  183. package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +98 -0
  184. package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -0
  185. package/lib/module/modules/bt-management/services/devices/lepu/lepu.name-match.js +27 -0
  186. package/lib/module/modules/bt-management/services/devices/lepu/lepu.name-match.js.map +1 -0
  187. package/lib/module/modules/bt-management/services/devices/lepu/lepu.response-type.js +59 -0
  188. package/lib/module/modules/bt-management/services/devices/lepu/lepu.response-type.js.map +1 -0
  189. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +140 -0
  190. package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -0
  191. package/lib/module/modules/bt-management/services/devices/polling-command-sequencer.js +34 -0
  192. package/lib/module/modules/bt-management/services/devices/polling-command-sequencer.js.map +1 -0
  193. package/lib/module/modules/bt-management/services/devices/sentinel-frame-reader.js +79 -0
  194. package/lib/module/modules/bt-management/services/devices/sentinel-frame-reader.js.map +1 -0
  195. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +123 -0
  196. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -0
  197. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +50 -0
  198. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -0
  199. package/lib/module/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js +38 -0
  200. package/lib/module/modules/bt-management/services/devices/veroval/veroval.bp-monitors.js.map +1 -0
  201. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js +108 -0
  202. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-device.js.map +1 -0
  203. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js +116 -0
  204. package/lib/module/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.js.map +1 -0
  205. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-device.js +87 -0
  206. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-device.js.map +1 -0
  207. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js +60 -0
  208. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-samples.js.map +1 -0
  209. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js +89 -0
  210. package/lib/module/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.js.map +1 -0
  211. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +118 -0
  212. package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -0
  213. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +108 -0
  214. package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -0
  215. package/lib/module/modules/bt-management/services/devices/viatom/viatom.lepod.js +114 -0
  216. package/lib/module/modules/bt-management/services/devices/viatom/viatom.lepod.js.map +1 -0
  217. package/lib/module/modules/bt-management/services/devices/viatom/viatom.oximeters.js +79 -0
  218. package/lib/module/modules/bt-management/services/devices/viatom/viatom.oximeters.js.map +1 -0
  219. package/lib/module/modules/bt-management/types/command-sequencer.js +4 -0
  220. package/lib/module/modules/bt-management/types/command-sequencer.js.map +1 -0
  221. package/lib/module/modules/bt-management/types/custom-checksum-algorithm.js +2 -0
  222. package/lib/module/modules/bt-management/types/custom-checksum-algorithm.js.map +1 -0
  223. package/lib/module/modules/bt-management/types/custom-checksum-spec.js +4 -0
  224. package/lib/module/modules/bt-management/types/custom-checksum-spec.js.map +1 -0
  225. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -1
  226. package/lib/module/modules/bt-management/types/custom-lepu-spec.js +2 -0
  227. package/lib/module/modules/bt-management/types/custom-lepu-spec.js.map +1 -0
  228. package/lib/module/modules/bt-management/types/custom-measurement-spec.js +4 -0
  229. package/lib/module/modules/bt-management/types/custom-measurement-spec.js.map +1 -0
  230. package/lib/module/modules/bt-management/types/device-command.js +2 -0
  231. package/lib/module/modules/bt-management/types/device-command.js.map +1 -0
  232. package/lib/module/modules/bt-management/types/device-measurement-map.js +3 -3
  233. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  234. package/lib/module/modules/bt-management/types/integrated-devices.js +2 -0
  235. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  236. package/lib/module/modules/bt-management/types/measurement-group.js +4 -0
  237. package/lib/module/modules/bt-management/types/measurement-group.js.map +1 -0
  238. package/lib/module/modules/bt-management/utils/calculate-checksum.js +44 -0
  239. package/lib/module/modules/bt-management/utils/calculate-checksum.js.map +1 -0
  240. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js +21 -0
  241. package/lib/module/modules/bt-management/utils/create-custom-field-parser.js.map +1 -1
  242. package/lib/module/modules/bt-management/utils/create-frame-validator.js +9 -0
  243. package/lib/module/modules/bt-management/utils/create-frame-validator.js.map +1 -1
  244. package/lib/module/modules/bt-management/utils/hex-to-bytes.js +14 -0
  245. package/lib/module/modules/bt-management/utils/hex-to-bytes.js.map +1 -0
  246. package/lib/module/modules/bt-management/utils/le-32-to-bytes.js +8 -0
  247. package/lib/module/modules/bt-management/utils/le-32-to-bytes.js.map +1 -0
  248. package/lib/module/modules/bt-management/utils/parse-measurement.js +10 -7
  249. package/lib/module/modules/bt-management/utils/parse-measurement.js.map +1 -1
  250. package/lib/module/modules/bt-management/utils/reject-custom-reading.js +29 -0
  251. package/lib/module/modules/bt-management/utils/reject-custom-reading.js.map +1 -0
  252. package/lib/module/modules/bt-management/utils/summarise-measurement-for-log.js +17 -0
  253. package/lib/module/modules/bt-management/utils/summarise-measurement-for-log.js.map +1 -0
  254. package/lib/module/modules/bt-management/utils/supported-measurement-type-keys.js +13 -0
  255. package/lib/module/modules/bt-management/utils/supported-measurement-type-keys.js.map +1 -0
  256. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  258. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +20 -0
  259. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  260. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-fields.d.ts +13 -0
  261. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-fields.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-shape.d.ts +19 -0
  263. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-case-shape.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts +11 -0
  268. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -0
  269. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/aoj/aoj.thermometers.d.ts +24 -0
  272. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/aoj/aoj.thermometers.d.ts.map +1 -0
  273. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts +5 -8
  274. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts +74 -0
  276. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -0
  277. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +6 -4
  278. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +20 -1
  280. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +12 -1
  282. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +30 -0
  284. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -0
  285. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +32 -2
  286. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/frame-parser.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.command-builder.d.ts +24 -0
  289. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.command-builder.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts +32 -0
  291. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts.map +1 -0
  292. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.device-info.d.ts +27 -0
  293. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.device-info.d.ts.map +1 -0
  294. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts +20 -0
  295. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts.map +1 -0
  296. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-names.d.ts +14 -0
  297. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-names.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +75 -0
  299. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts +28 -0
  301. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts.map +1 -0
  302. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame.d.ts +12 -0
  303. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.frame.d.ts.map +1 -0
  304. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +81 -0
  305. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.name-match.d.ts +17 -0
  307. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.name-match.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.response-type.d.ts +33 -0
  309. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.response-type.d.ts.map +1 -0
  310. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +85 -0
  311. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/polling-command-sequencer.d.ts +27 -0
  313. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/polling-command-sequencer.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts +52 -0
  315. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +53 -0
  317. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +45 -0
  319. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -0
  320. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts +18 -0
  321. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts +19 -0
  323. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts +45 -0
  325. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts +30 -0
  327. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts.map +1 -0
  328. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts +39 -0
  329. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts.map +1 -0
  330. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts +35 -0
  331. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts.map +1 -0
  332. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +44 -0
  333. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts +32 -0
  335. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts +25 -0
  337. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts +39 -0
  339. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts +26 -0
  341. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -0
  342. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts +43 -0
  343. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -1
  344. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-checksum-algorithm.d.ts +10 -0
  345. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-checksum-algorithm.d.ts.map +1 -0
  346. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-checksum-spec.d.ts +23 -0
  347. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-checksum-spec.d.ts.map +1 -0
  348. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +5 -0
  349. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  350. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  351. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -1
  352. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts +7 -1
  353. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -1
  354. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts +8 -0
  355. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -1
  356. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +44 -0
  357. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement-spec.d.ts +9 -0
  359. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-measurement-spec.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/src/modules/bt-management/types/dependent-result-handler-params.d.ts +7 -0
  361. package/lib/typescript/commonjs/src/modules/bt-management/types/dependent-result-handler-params.d.ts.map +1 -1
  362. package/lib/typescript/commonjs/src/modules/bt-management/types/device-command.d.ts +27 -0
  363. package/lib/typescript/commonjs/src/modules/bt-management/types/device-command.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
  365. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  366. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +3 -1
  367. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  368. package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-group.d.ts +14 -0
  369. package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-group.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/src/modules/bt-management/types/parsing-case.d.ts +17 -0
  371. package/lib/typescript/commonjs/src/modules/bt-management/types/parsing-case.d.ts.map +1 -1
  372. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-checksum.d.ts +13 -0
  373. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-checksum.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -1
  375. package/lib/typescript/commonjs/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -1
  376. package/lib/typescript/commonjs/src/modules/bt-management/utils/hex-to-bytes.d.ts +10 -0
  377. package/lib/typescript/commonjs/src/modules/bt-management/utils/hex-to-bytes.d.ts.map +1 -0
  378. package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-to-bytes.d.ts +3 -0
  379. package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-to-bytes.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/src/modules/bt-management/utils/parse-measurement.d.ts +4 -1
  381. package/lib/typescript/commonjs/src/modules/bt-management/utils/parse-measurement.d.ts.map +1 -1
  382. package/lib/typescript/commonjs/src/modules/bt-management/utils/reject-custom-reading.d.ts +15 -0
  383. package/lib/typescript/commonjs/src/modules/bt-management/utils/reject-custom-reading.d.ts.map +1 -0
  384. package/lib/typescript/commonjs/src/modules/bt-management/utils/summarise-measurement-for-log.d.ts +9 -0
  385. package/lib/typescript/commonjs/src/modules/bt-management/utils/summarise-measurement-for-log.d.ts.map +1 -0
  386. package/lib/typescript/commonjs/src/modules/bt-management/utils/supported-measurement-type-keys.d.ts +10 -0
  387. package/lib/typescript/commonjs/src/modules/bt-management/utils/supported-measurement-type-keys.d.ts.map +1 -0
  388. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  389. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  390. package/lib/typescript/module/src/modules/bt-management/index.d.ts +20 -0
  391. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  392. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-fields.d.ts +13 -0
  393. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-fields.d.ts.map +1 -0
  394. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-shape.d.ts +19 -0
  395. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-case-shape.d.ts.map +1 -0
  396. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-case.d.ts.map +1 -1
  397. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-field.d.ts.map +1 -1
  398. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-frame.d.ts.map +1 -1
  399. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts +11 -0
  400. package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -0
  401. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  402. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  403. package/lib/typescript/module/src/modules/bt-management/services/devices/aoj/aoj.thermometers.d.ts +24 -0
  404. package/lib/typescript/module/src/modules/bt-management/services/devices/aoj/aoj.thermometers.d.ts.map +1 -0
  405. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts +5 -8
  406. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.frame-reader.d.ts.map +1 -1
  407. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts +74 -0
  408. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -0
  409. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +6 -4
  410. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  411. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +20 -1
  412. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  413. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +12 -1
  414. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  415. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +30 -0
  416. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -0
  417. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +32 -2
  418. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  419. package/lib/typescript/module/src/modules/bt-management/services/devices/frame-parser.d.ts.map +1 -1
  420. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.command-builder.d.ts +24 -0
  421. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.command-builder.d.ts.map +1 -0
  422. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts +32 -0
  423. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.commands.d.ts.map +1 -0
  424. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.device-info.d.ts +27 -0
  425. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.device-info.d.ts.map +1 -0
  426. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts +20 -0
  427. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.device-names.d.ts.map +1 -0
  428. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-names.d.ts +14 -0
  429. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-names.d.ts.map +1 -0
  430. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts +75 -0
  431. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.file-transfer.d.ts.map +1 -0
  432. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts +28 -0
  433. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame-reader.d.ts.map +1 -0
  434. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame.d.ts +12 -0
  435. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.frame.d.ts.map +1 -0
  436. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +81 -0
  437. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -0
  438. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.name-match.d.ts +17 -0
  439. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.name-match.d.ts.map +1 -0
  440. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.response-type.d.ts +33 -0
  441. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.response-type.d.ts.map +1 -0
  442. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +85 -0
  443. package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -0
  444. package/lib/typescript/module/src/modules/bt-management/services/devices/polling-command-sequencer.d.ts +27 -0
  445. package/lib/typescript/module/src/modules/bt-management/services/devices/polling-command-sequencer.d.ts.map +1 -0
  446. package/lib/typescript/module/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts +52 -0
  447. package/lib/typescript/module/src/modules/bt-management/services/devices/sentinel-frame-reader.d.ts.map +1 -0
  448. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +53 -0
  449. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -0
  450. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +45 -0
  451. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -0
  452. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts +18 -0
  453. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.bp-monitors.d.ts.map +1 -0
  454. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts +19 -0
  455. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-device.d.ts.map +1 -0
  456. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts +45 -0
  457. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.duo-control-sequencer.d.ts.map +1 -0
  458. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts +30 -0
  459. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-device.d.ts.map +1 -0
  460. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts +39 -0
  461. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-samples.d.ts.map +1 -0
  462. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts +35 -0
  463. package/lib/typescript/module/src/modules/bt-management/services/devices/veroval/veroval.ecg-transfer.d.ts.map +1 -0
  464. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +44 -0
  465. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -0
  466. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts +32 -0
  467. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -0
  468. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts +25 -0
  469. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.lepod.d.ts.map +1 -0
  470. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts +39 -0
  471. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts.map +1 -0
  472. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts +26 -0
  473. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -0
  474. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts +43 -0
  475. package/lib/typescript/module/src/modules/bt-management/types/custom-case-spec.d.ts.map +1 -1
  476. package/lib/typescript/module/src/modules/bt-management/types/custom-checksum-algorithm.d.ts +10 -0
  477. package/lib/typescript/module/src/modules/bt-management/types/custom-checksum-algorithm.d.ts.map +1 -0
  478. package/lib/typescript/module/src/modules/bt-management/types/custom-checksum-spec.d.ts +23 -0
  479. package/lib/typescript/module/src/modules/bt-management/types/custom-checksum-spec.d.ts.map +1 -0
  480. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +5 -0
  481. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  482. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts +12 -0
  483. package/lib/typescript/module/src/modules/bt-management/types/custom-device-spec.d.ts.map +1 -1
  484. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts +7 -1
  485. package/lib/typescript/module/src/modules/bt-management/types/custom-field-encoding.d.ts.map +1 -1
  486. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts +8 -0
  487. package/lib/typescript/module/src/modules/bt-management/types/custom-frame-spec.d.ts.map +1 -1
  488. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +44 -0
  489. package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -0
  490. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement-spec.d.ts +9 -0
  491. package/lib/typescript/module/src/modules/bt-management/types/custom-measurement-spec.d.ts.map +1 -0
  492. package/lib/typescript/module/src/modules/bt-management/types/dependent-result-handler-params.d.ts +7 -0
  493. package/lib/typescript/module/src/modules/bt-management/types/dependent-result-handler-params.d.ts.map +1 -1
  494. package/lib/typescript/module/src/modules/bt-management/types/device-command.d.ts +27 -0
  495. package/lib/typescript/module/src/modules/bt-management/types/device-command.d.ts.map +1 -0
  496. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +2 -0
  497. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  498. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +3 -1
  499. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  500. package/lib/typescript/module/src/modules/bt-management/types/measurement-group.d.ts +14 -0
  501. package/lib/typescript/module/src/modules/bt-management/types/measurement-group.d.ts.map +1 -0
  502. package/lib/typescript/module/src/modules/bt-management/types/parsing-case.d.ts +17 -0
  503. package/lib/typescript/module/src/modules/bt-management/types/parsing-case.d.ts.map +1 -1
  504. package/lib/typescript/module/src/modules/bt-management/utils/calculate-checksum.d.ts +13 -0
  505. package/lib/typescript/module/src/modules/bt-management/utils/calculate-checksum.d.ts.map +1 -0
  506. package/lib/typescript/module/src/modules/bt-management/utils/create-custom-field-parser.d.ts.map +1 -1
  507. package/lib/typescript/module/src/modules/bt-management/utils/create-frame-validator.d.ts.map +1 -1
  508. package/lib/typescript/module/src/modules/bt-management/utils/hex-to-bytes.d.ts +10 -0
  509. package/lib/typescript/module/src/modules/bt-management/utils/hex-to-bytes.d.ts.map +1 -0
  510. package/lib/typescript/module/src/modules/bt-management/utils/le-32-to-bytes.d.ts +3 -0
  511. package/lib/typescript/module/src/modules/bt-management/utils/le-32-to-bytes.d.ts.map +1 -0
  512. package/lib/typescript/module/src/modules/bt-management/utils/parse-measurement.d.ts +4 -1
  513. package/lib/typescript/module/src/modules/bt-management/utils/parse-measurement.d.ts.map +1 -1
  514. package/lib/typescript/module/src/modules/bt-management/utils/reject-custom-reading.d.ts +15 -0
  515. package/lib/typescript/module/src/modules/bt-management/utils/reject-custom-reading.d.ts.map +1 -0
  516. package/lib/typescript/module/src/modules/bt-management/utils/summarise-measurement-for-log.d.ts +9 -0
  517. package/lib/typescript/module/src/modules/bt-management/utils/summarise-measurement-for-log.d.ts.map +1 -0
  518. package/lib/typescript/module/src/modules/bt-management/utils/supported-measurement-type-keys.d.ts +10 -0
  519. package/lib/typescript/module/src/modules/bt-management/utils/supported-measurement-type-keys.d.ts.map +1 -0
  520. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ import { customDeviceError } from "./custom-device-error.js";
4
+ import { normalizeBleUuid } from "./normalize-ble-uuid.js";
5
+ const HEX_BYTE = /^[0-9a-f]{2}$/;
6
+ const MAX_OPCODE = 0xff;
7
+ const MAX_DEVICE_TYPE = 0xffff;
8
+ const assertStartBytes = (id, startBytes) => {
9
+ if (!Array.isArray(startBytes) || startBytes.length === 0) {
10
+ throw customDeviceError(id, "lepu.startBytes", "must list at least one frame start byte, such as [\"a5\"]");
11
+ }
12
+ return startBytes.map((byte, index) => {
13
+ const normalized = String(byte).toLowerCase();
14
+ if (!HEX_BYTE.test(normalized)) {
15
+ throw customDeviceError(id, `lepu.startBytes[${index}]`, `is "${String(byte)}"; it must be exactly two hex digits`);
16
+ }
17
+ return normalized;
18
+ });
19
+ };
20
+ const assertDeviceTypes = (id, deviceTypes) => {
21
+ if (!Array.isArray(deviceTypes)) {
22
+ throw customDeviceError(id, "lepu.expectedDeviceTypes", "must be an array of the model numbers this declaration was written for");
23
+ }
24
+ return deviceTypes.map((deviceType, index) => {
25
+ if (!Number.isInteger(deviceType) || deviceType < 0 || deviceType > MAX_DEVICE_TYPE) {
26
+ throw customDeviceError(id, `lepu.expectedDeviceTypes[${index}]`, `is ${String(deviceType)}; a model number is a whole number between 0 and ${MAX_DEVICE_TYPE}`);
27
+ }
28
+ return deviceType;
29
+ });
30
+ };
31
+
32
+ /**
33
+ * The opcode to poll with, once the device has been identified.
34
+ *
35
+ * Identification is the advertised name unless `expectedDeviceTypes` narrows it further.
36
+ * The name is what the vendor's own SDK binds every one of its products on - a 732-line
37
+ * cascade of name checks resolving to 176 models - so requiring more than that to poll at
38
+ * all would hold this SDK to a bar the hardware's own maker does not meet, and would leave
39
+ * every device undeclarable.
40
+ *
41
+ * Naming the models is still the stronger declaration, and is worth doing once the numbers
42
+ * are known: the family's low opcodes act, and a frame built for the wrong product is still
43
+ * well formed, so a name that matched the wrong hardware would not be caught by anything
44
+ * else in the protocol.
45
+ */
46
+ const assertPollCommand = (id, lepu) => {
47
+ const {
48
+ pollCommand
49
+ } = lepu;
50
+ if (pollCommand === undefined) {
51
+ return undefined;
52
+ }
53
+ if (!Number.isInteger(pollCommand) || pollCommand < 0 || pollCommand > MAX_OPCODE) {
54
+ throw customDeviceError(id, "lepu.pollCommand", `is ${String(pollCommand)}; an opcode is a whole number between 0 and ${MAX_OPCODE}`);
55
+ }
56
+ return pollCommand;
57
+ };
58
+
59
+ /**
60
+ * Validates the Lepu declaration and normalises its UUIDs.
61
+ *
62
+ * The write service has to be one the declaration already monitors: a command written to a
63
+ * service the device never opened is accepted by nothing and answered by nothing, which
64
+ * looks exactly like hardware that is simply not responding.
65
+ */
66
+ export const compileCustomLepu = (id, spec, serviceUuids) => {
67
+ const lepu = spec.lepu;
68
+ if (!lepu) {
69
+ return undefined;
70
+ }
71
+ if (spec.services.some(service => service.write)) {
72
+ throw customDeviceError(id, "services[].write", "cannot be declared alongside lepu, which builds its own commands and addresses them through lepu.write");
73
+ }
74
+ const startBytes = assertStartBytes(id, lepu.startBytes);
75
+ const expectedDeviceTypes = assertDeviceTypes(id, lepu.expectedDeviceTypes);
76
+ const pollCommand = assertPollCommand(id, lepu);
77
+ const serviceUuid = normalizeBleUuid(id, "lepu.write.serviceUuid", lepu.write?.serviceUuid);
78
+ if (!serviceUuids.includes(serviceUuid)) {
79
+ throw customDeviceError(id, "lepu.write.serviceUuid", `is "${serviceUuid}", which this device does not declare among its services`);
80
+ }
81
+ return {
82
+ startBytes,
83
+ expectedDeviceTypes,
84
+ ...(pollCommand === undefined ? {} : {
85
+ pollCommand
86
+ }),
87
+ write: {
88
+ serviceUuid,
89
+ characteristicUuid: normalizeBleUuid(id, "lepu.write.characteristicUuid", lepu.write?.characteristicUuid)
90
+ }
91
+ };
92
+ };
93
+ //# sourceMappingURL=compile-custom-lepu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["customDeviceError","normalizeBleUuid","HEX_BYTE","MAX_OPCODE","MAX_DEVICE_TYPE","assertStartBytes","id","startBytes","Array","isArray","length","map","byte","index","normalized","String","toLowerCase","test","assertDeviceTypes","deviceTypes","deviceType","Number","isInteger","assertPollCommand","lepu","pollCommand","undefined","compileCustomLepu","spec","serviceUuids","services","some","service","write","expectedDeviceTypes","serviceUuid","includes","characteristicUuid"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-lepu.ts"],"mappings":"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","ignoreList":[]}
@@ -2,11 +2,16 @@
2
2
 
3
3
  import { CUSTOM_DEVICE_BRAND } from "../../constants/custom-device-brand.js";
4
4
  import { IntegratedDevices } from "../../types/integrated-devices.js";
5
+ import { compileCustomLepu } from "./compile-custom-lepu.js";
5
6
  import { compileCustomMonitor } from "./compile-custom-monitor.js";
6
7
  import { customDeviceError } from "./custom-device-error.js";
7
8
  import { normalizeBleUuid } from "./normalize-ble-uuid.js";
8
9
  const MIN_STUCK_TIMEOUT_MS = 1_000;
9
10
 
11
+ /** The smallest MTU a BLE link has, and the largest an ATT packet may declare. */
12
+ const MIN_MTU = 23;
13
+ const MAX_MTU = 517;
14
+
10
15
  // The SDK's own F4 scale waits this long, because it sleeps while still connected.
11
16
  const MAX_STUCK_TIMEOUT_MS = 6_000_000;
12
17
  const HEX_BYTES = /^([0-9a-f]{2})+$/;
@@ -42,6 +47,16 @@ const assertStuckTimeout = (id, spec) => {
42
47
  }
43
48
  return timeout;
44
49
  };
50
+ const assertPreferredMtu = (id, spec) => {
51
+ const mtu = spec.preferredMtu;
52
+ if (mtu === undefined) {
53
+ return undefined;
54
+ }
55
+ if (!Number.isInteger(mtu) || mtu < MIN_MTU || mtu > MAX_MTU) {
56
+ throw customDeviceError(id, "preferredMtu", `is ${String(mtu)}; it must be a whole number between ${MIN_MTU} and ${MAX_MTU}`);
57
+ }
58
+ return mtu;
59
+ };
45
60
  const compileWrite = (id, path, write) => {
46
61
  if (!write) {
47
62
  return undefined;
@@ -68,6 +83,7 @@ export const defineCustomDevice = spec => {
68
83
  const id = assertIdentity(spec);
69
84
  const nameMatch = compileNameMatch(id, spec);
70
85
  const stuckDataTimeout = assertStuckTimeout(id, spec);
86
+ const preferredMtu = assertPreferredMtu(id, spec);
71
87
  if (!Array.isArray(spec.services) || spec.services.length === 0) {
72
88
  throw customDeviceError(id, "services", "must declare at least one service");
73
89
  }
@@ -101,6 +117,7 @@ export const defineCustomDevice = spec => {
101
117
  writeUuid: compileWrite(id, path, service.write)
102
118
  };
103
119
  });
120
+ const lepu = compileCustomLepu(id, spec, mainServices.map(service => service.uuid));
104
121
  return {
105
122
  [CUSTOM_DEVICE_BRAND]: true,
106
123
  id: id,
@@ -109,7 +126,13 @@ export const defineCustomDevice = spec => {
109
126
  mainServices,
110
127
  stuckDataTimeout,
111
128
  fields,
112
- frames
129
+ frames,
130
+ ...(preferredMtu === undefined ? {} : {
131
+ preferredMtu
132
+ }),
133
+ ...(lepu === undefined ? {} : {
134
+ lepu
135
+ })
113
136
  };
114
137
  };
115
138
  //# sourceMappingURL=define-custom-device.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CUSTOM_DEVICE_BRAND","IntegratedDevices","compileCustomMonitor","customDeviceError","normalizeBleUuid","MIN_STUCK_TIMEOUT_MS","MAX_STUCK_TIMEOUT_MS","HEX_BYTES","assertIdentity","spec","id","trim","String","builtIn","Object","values","find","name","toLowerCase","compileNameMatch","nameMatch","RegExp","global","sticky","exact","replace","assertStuckTimeout","timeout","stuckDataTimeoutMs","Number","isInteger","compileWrite","path","write","undefined","commandHex","test","uuid","mainCommandUuid","defineCustomDevice","stuckDataTimeout","Array","isArray","services","length","fields","Map","frames","seenCharacteristics","Set","mainServices","map","service","serviceIndex","monitor","monitorUuids","monitorIndex","monitorPath","characteristic","frame","has","add","set","writeUuid"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/define-custom-device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CUSTOM_DEVICE_BRAND","IntegratedDevices","compileCustomLepu","compileCustomMonitor","customDeviceError","normalizeBleUuid","MIN_STUCK_TIMEOUT_MS","MIN_MTU","MAX_MTU","MAX_STUCK_TIMEOUT_MS","HEX_BYTES","assertIdentity","spec","id","trim","String","builtIn","Object","values","find","name","toLowerCase","compileNameMatch","nameMatch","RegExp","global","sticky","exact","replace","assertStuckTimeout","timeout","stuckDataTimeoutMs","Number","isInteger","assertPreferredMtu","mtu","preferredMtu","undefined","compileWrite","path","write","commandHex","test","uuid","mainCommandUuid","defineCustomDevice","stuckDataTimeout","Array","isArray","services","length","fields","Map","frames","seenCharacteristics","Set","mainServices","map","service","serviceIndex","monitor","monitorUuids","monitorIndex","monitorPath","characteristic","frame","has","add","set","writeUuid","lepu"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/define-custom-device.ts"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,24 @@ 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";
13
+
14
+ /**
15
+ * The built-in names the SDK can actually build.
16
+ *
17
+ * `integratedDevicesMap` matches more names than this, on purpose: matching is what names a
18
+ * device in a scan result and a device list, which is useful for hardware the SDK cannot
19
+ * yet decode. Connecting to one of those is what fails, and it fails saying so.
20
+ */
21
+ const DEVICE_CLASSES = {
22
+ [IntegratedDevices.BP2]: BP2Device,
23
+ [IntegratedDevices.F4]: F4Device,
24
+ [IntegratedDevices.PC60WF]: SPO2Device,
25
+ [IntegratedDevices.BC01]: BC01Device,
26
+ [IntegratedDevices.VEROVAL_DUO_CONTROL]: VerovalDuoControlDevice,
27
+ [IntegratedDevices.VEROVAL_ECG]: VerovalEcgDevice
28
+ };
11
29
  const collectCustomDevices = acceptedDevices => {
12
30
  const customDevices = new Map();
13
31
  const matchers = new Set();
@@ -67,15 +85,9 @@ export class DeviceCreator {
67
85
  // @ts-expect-error - the caller asked for this custom device by its own id
68
86
  return new CustomDevice(params.device, params, custom);
69
87
  }
70
- const deviceMap = {
71
- [IntegratedDevices.BP2]: BP2Device,
72
- [IntegratedDevices.F4]: F4Device,
73
- [IntegratedDevices.PC60WF]: SPO2Device,
74
- [IntegratedDevices.BC01]: BC01Device
75
- };
76
- const deviceClass = deviceMap[params.deviceName];
88
+ const deviceClass = DEVICE_CLASSES[params.deviceName];
77
89
  if (!deviceClass) {
78
- throw new Error(`Device ${params.device.name} not found`);
90
+ throw new Error(`"${params.deviceName}" is a name the SDK matches during a scan but has no decoder for, so "${params.device.name}" cannot be connected. The names it can decode are ${Object.keys(DEVICE_CLASSES).join(", ")}; anything else needs a declaration registered with defineCustomDevice and passed in acceptedDevices.`);
79
91
  }
80
92
 
81
93
  // @ts-expect-error - This is a workaround to allow the deviceClass to be instantiated with the correct type
@@ -1 +1 @@
1
- {"version":3,"names":["integratedDevicesMap","IntegratedDevices","isCustomDeviceDefinition","BC01Device","BP2Device","CustomDevice","F4Device","SPO2Device","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","deviceMap","BP2","F4","PC60WF","BC01","deviceClass","destroy","clear","regex","deviceType","test","some","values","size","firstKey","keys","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":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ import { MeasurementTypeKey } from "@ovok/core";
4
+ import { defineCustomDevice } from "../../custom/define-custom-device.js";
5
+
6
+ /**
7
+ * Declarations for the AOJ Medical thermometers.
8
+ *
9
+ * Their frame is `aa | 01 | cmd | len | payload | xor`, where the checksum covers everything
10
+ * from the device-type byte up to itself. It is not the Lepu framing, despite both being
11
+ * reachable from the same vendor app: no complement byte, no sequence number, a one-byte
12
+ * length and an exclusive-or rather than a CRC.
13
+ */
14
+
15
+ /** Every frame opens with these two: a fixed start byte and a fixed device type. */
16
+ const FRAME_HEADER = ["aa", "01"];
17
+ const COMMAND_BYTE = 2;
18
+
19
+ /** Header, a three-byte payload and the checksum. */
20
+ const FRAME_BYTES = 8;
21
+ const CHECKSUM_INDEX = 7;
22
+
23
+ /** The checksum starts after the start byte, which it does not cover. */
24
+ const CHECKSUM_FROM = 1;
25
+ const PAYLOAD = 4;
26
+
27
+ /** The device answers a realtime-temperature request with this. */
28
+ const TEMPERATURE_REPLY = "c1";
29
+
30
+ /** Hundredths of a degree, big-endian - the one field in this family that is not little. */
31
+ const TEMPERATURE_SCALE = 0.01;
32
+ const TEMPERATURE_DECIMALS = 2;
33
+ const SPOT_CHECK_TIMEOUT_MS = 60_000;
34
+ /**
35
+ * The AOJ-20A infrared thermometer.
36
+ *
37
+ * Declared without a write characteristic, because the device sends its reading rather than
38
+ * waiting to be asked: the vendor app has a request for it, calls it from nowhere, and still
39
+ * displays temperatures - so the reply arrives when someone takes a measurement. Not writing
40
+ * also means not polling, which for a spot-check device would otherwise re-report the same
41
+ * reading for as long as the link stayed up.
42
+ *
43
+ * Only the realtime reply is declared. The stored-history reply shares the header and would
44
+ * need its own case; nothing reads history yet, and a case that decoded it into the same
45
+ * measurement would post old readings as though they had just been taken.
46
+ */
47
+ export const aoj20aThermometer = params => defineCustomDevice({
48
+ id: params.id,
49
+ nameMatch: params.nameMatch,
50
+ stuckDataTimeoutMs: params.stuckDataTimeoutMs ?? SPOT_CHECK_TIMEOUT_MS,
51
+ services: [{
52
+ uuid: "ffe0",
53
+ monitor: [{
54
+ uuid: "ffe1",
55
+ frame: {
56
+ header: FRAME_HEADER,
57
+ minLengthBytes: FRAME_BYTES,
58
+ checksum: {
59
+ algorithm: "xor",
60
+ index: CHECKSUM_INDEX,
61
+ from: CHECKSUM_FROM
62
+ }
63
+ },
64
+ caseSelectorBytes: [COMMAND_BYTE],
65
+ cases: [{
66
+ selector: TEMPERATURE_REPLY,
67
+ kind: "result",
68
+ measurementTypeKey: MeasurementTypeKey.temperature,
69
+ fields: [{
70
+ name: "bodyTemp",
71
+ byteIndexes: [PAYLOAD, PAYLOAD + 1],
72
+ byteOrder: "big",
73
+ unit: "Cel",
74
+ scale: TEMPERATURE_SCALE,
75
+ decimals: TEMPERATURE_DECIMALS
76
+ }]
77
+ }]
78
+ }]
79
+ }]
80
+ });
81
+ //# sourceMappingURL=aoj.thermometers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MeasurementTypeKey","defineCustomDevice","FRAME_HEADER","COMMAND_BYTE","FRAME_BYTES","CHECKSUM_INDEX","CHECKSUM_FROM","PAYLOAD","TEMPERATURE_REPLY","TEMPERATURE_SCALE","TEMPERATURE_DECIMALS","SPOT_CHECK_TIMEOUT_MS","aoj20aThermometer","params","id","nameMatch","stuckDataTimeoutMs","services","uuid","monitor","frame","header","minLengthBytes","checksum","algorithm","index","from","caseSelectorBytes","cases","selector","kind","measurementTypeKey","temperature","fields","name","byteIndexes","byteOrder","unit","scale","decimals"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/aoj/aoj.thermometers.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAG/C,SAASC,kBAAkB,QAAQ,sCAAmC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMC,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAEjC,MAAMC,YAAY,GAAG,CAAC;;AAEtB;AACA,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,cAAc,GAAG,CAAC;;AAExB;AACA,MAAMC,aAAa,GAAG,CAAC;AAEvB,MAAMC,OAAO,GAAG,CAAC;;AAEjB;AACA,MAAMC,iBAAiB,GAAG,IAAI;;AAE9B;AACA,MAAMC,iBAAiB,GAAG,IAAI;AAC9B,MAAMC,oBAAoB,GAAG,CAAC;AAE9B,MAAMC,qBAAqB,GAAG,MAAM;AAapC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAC5BC,MAAuB,IAEvBZ,kBAAkB,CAAC;EACjBa,EAAE,EAAED,MAAM,CAACC,EAAE;EACbC,SAAS,EAAEF,MAAM,CAACE,SAAS;EAC3BC,kBAAkB,EAAEH,MAAM,CAACG,kBAAkB,IAAIL,qBAAqB;EACtEM,QAAQ,EAAE,CACR;IACEC,IAAI,EAAE,MAAM;IACZC,OAAO,EAAE,CACP;MACED,IAAI,EAAE,MAAM;MACZE,KAAK,EAAE;QACLC,MAAM,EAAEnB,YAAY;QACpBoB,cAAc,EAAElB,WAAW;QAC3BmB,QAAQ,EAAE;UACRC,SAAS,EAAE,KAAK;UAChBC,KAAK,EAAEpB,cAAc;UACrBqB,IAAI,EAAEpB;QACR;MACF,CAAC;MACDqB,iBAAiB,EAAE,CAACxB,YAAY,CAAC;MACjCyB,KAAK,EAAE,CACL;QACEC,QAAQ,EAAErB,iBAAiB;QAC3BsB,IAAI,EAAE,QAAQ;QACdC,kBAAkB,EAAE/B,kBAAkB,CAACgC,WAAW;QAClDC,MAAM,EAAE,CACN;UACEC,IAAI,EAAE,UAAU;UAChBC,WAAW,EAAE,CAAC5B,OAAO,EAAEA,OAAO,GAAG,CAAC,CAAC;UACnC6B,SAAS,EAAE,KAAK;UAChBC,IAAI,EAAE,KAAK;UACXC,KAAK,EAAE7B,iBAAiB;UACxB8B,QAAQ,EAAE7B;QACZ,CAAC;MAEL,CAAC;IAEL,CAAC;EAEL,CAAC;AAEL,CAAC,CAAC","ignoreList":[]}
@@ -1,84 +1,19 @@
1
1
  "use strict";
2
2
 
3
- import { FrameReadStatus } from "../../../types/frame-read-status.js";
4
- import { calculateCrc8 } from "../../../utils/calculate-crc-8.js";
5
- import { hexToByte } from "../../../utils/hex-to-byte.js";
6
- import { le16FromHex } from "../../../utils/le-16-from-hex.js";
7
- const FRAME_START_BYTE = "a5";
8
- const COMMAND_INDEX = 1;
9
- const COMMAND_COMPLEMENT_INDEX = 2;
10
- const PAYLOAD_LENGTH_INDEX = 5;
11
- const HEADER_BYTES = 7;
12
- const CHECKSUM_BYTES = 1;
13
- const BYTE_MASK = 0xff;
3
+ import { LepuFrameReader } from "../lepu/lepu.frame-reader.js";
14
4
 
15
- /** Start byte, command and its complement: the shortest run that can identify a start. */
16
- const START_PATTERN_BYTES = 3;
17
- const isFrameStart = (buffer, index) => {
18
- if ((buffer[index] || "").toLowerCase() !== FRAME_START_BYTE) {
19
- return false;
20
- }
21
- const command = hexToByte(buffer[index + COMMAND_INDEX] || "0");
22
- const complement = hexToByte(buffer[index + COMMAND_COMPLEMENT_INDEX] || "0");
23
- return command === (~complement & BYTE_MASK);
24
- };
25
- const findFrameStart = buffer => {
26
- const lastCandidate = buffer.length - START_PATTERN_BYTES;
27
- for (let index = 0; index <= lastCandidate; index++) {
28
- if (isFrameStart(buffer, index)) {
29
- return index;
30
- }
31
- }
32
- return -1;
33
- };
34
-
35
- /**
36
- * Bytes that cannot begin a frame start, and are therefore safe to drop when no start
37
- * was found. The trailing bytes are kept because a start pattern may still be arriving.
38
- */
39
- const droppableLeadingBytes = buffer => Math.max(0, buffer.length - (START_PATTERN_BYTES - 1));
5
+ /** The start byte the BP2 and most of its family use. */
6
+ const BP2_START_BYTES = ["a5"];
40
7
 
41
8
  /**
42
9
  * Reads Lepu protocol frames as used by the BP2.
43
10
  *
44
- * Layout: `a5 | cmd | ~cmd | type | seq | lenLow lenHigh | payload | crc8`, where the
45
- * checksum covers every byte before it. The complement of the command byte only narrows
46
- * the search for a start; the checksum is what actually decides a frame is trustworthy.
11
+ * The frame itself is shared across the family, so it lives in `LepuFrameReader`; the only
12
+ * thing that makes it a BP2 is which start byte it accepts.
47
13
  */
48
- export class BP2FrameReader {
49
- readFrame(buffer) {
50
- const start = findFrameStart(buffer);
51
- if (start === -1) {
52
- return {
53
- status: FrameReadStatus.INCOMPLETE,
54
- consumedBytes: droppableLeadingBytes(buffer)
55
- };
56
- }
57
- const payloadLength = le16FromHex(buffer, start + PAYLOAD_LENGTH_INDEX);
58
- const frameLength = HEADER_BYTES + payloadLength + CHECKSUM_BYTES;
59
- if (start + frameLength > buffer.length) {
60
- return {
61
- status: FrameReadStatus.INCOMPLETE,
62
- consumedBytes: start
63
- };
64
- }
65
- const frame = buffer.slice(start, start + frameLength);
66
- if (!this.hasValidChecksum(frame)) {
67
- return {
68
- status: FrameReadStatus.CORRUPT,
69
- consumedBytes: start + START_PATTERN_BYTES
70
- };
71
- }
72
- return {
73
- status: FrameReadStatus.COMPLETE,
74
- consumedBytes: start + frameLength,
75
- frame
76
- };
77
- }
78
- hasValidChecksum(frame) {
79
- const checksummedBytes = frame.length - CHECKSUM_BYTES;
80
- const declared = hexToByte(frame[checksummedBytes] || "0");
81
- return declared === calculateCrc8(frame, checksummedBytes);
14
+ export class BP2FrameReader extends LepuFrameReader {
15
+ constructor() {
16
+ super(BP2_START_BYTES);
82
17
  }
83
18
  }
84
19
  //# sourceMappingURL=bp2.frame-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FrameReadStatus","calculateCrc8","hexToByte","le16FromHex","FRAME_START_BYTE","COMMAND_INDEX","COMMAND_COMPLEMENT_INDEX","PAYLOAD_LENGTH_INDEX","HEADER_BYTES","CHECKSUM_BYTES","BYTE_MASK","START_PATTERN_BYTES","isFrameStart","buffer","index","toLowerCase","command","complement","findFrameStart","lastCandidate","length","droppableLeadingBytes","Math","max","BP2FrameReader","readFrame","start","status","INCOMPLETE","consumedBytes","payloadLength","frameLength","frame","slice","hasValidChecksum","CORRUPT","COMPLETE","checksummedBytes","declared"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.frame-reader.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["LepuFrameReader","BP2_START_BYTES","BP2FrameReader","constructor"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.frame-reader.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,8BAA2B;;AAE3D;AACA,MAAMC,eAAe,GAAG,CAAC,IAAI,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,SAASF,eAAe,CAAC;EAC3CG,WAAWA,CAAA,EAAG;IACnB,KAAK,CAACF,eAAe,CAAC;EACxB;AACF","ignoreList":[]}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ import { slog } from "../../../helpers/utils/s-log.js";
4
+ import { sentryLogger } from "../../../helpers/utils/sentry-logger.js";
5
+ import { hexToBase64 } from "../../utils/hex-to-base-64.js";
6
+ const MAX_WRITE_ATTEMPTS = 3;
7
+
8
+ /** The MTU every BLE link starts at, before either side asks for more. */
9
+ const DEFAULT_ATT_MTU = 23;
10
+
11
+ /** An ATT write spends three bytes on its own header. */
12
+ const ATT_WRITE_HEADER_BYTES = 3;
13
+
14
+ /**
15
+ * The write channel to a connected device.
16
+ *
17
+ * These protocols allow one command outstanding at a time, and the reply to it is what
18
+ * decides the next one, so writes are serialised rather than merely guarded against
19
+ * re-entry. Refusing a command while another is in flight stalls a self-clocking exchange
20
+ * permanently: the refused command is the one that would have provoked the next reply, and
21
+ * nothing retries it.
22
+ */
23
+ export class BTCommandWriter {
24
+ pendingWrites = Promise.resolve();
25
+ mtu = DEFAULT_ATT_MTU;
26
+ constructor(device, onError) {
27
+ this.device = device;
28
+ this.onError = onError;
29
+ }
30
+
31
+ /**
32
+ * Records what the link actually negotiated.
33
+ *
34
+ * The floor stands until something says otherwise, because a link that has not
35
+ * negotiated is at the minimum, and over-estimating truncates while under-estimating
36
+ * only costs a second packet.
37
+ */
38
+ useNegotiatedMtu = mtu => {
39
+ if (typeof mtu === "number" && Number.isInteger(mtu) && mtu > this.mtu) {
40
+ this.mtu = mtu;
41
+ }
42
+ };
43
+
44
+ /** Drops anything still queued, for a link that is going away. */
45
+ reset = () => {
46
+ this.pendingWrites = Promise.resolve();
47
+ };
48
+
49
+ /**
50
+ * Queues commands behind whatever is already being written.
51
+ *
52
+ * The returned promise settles when the last of them has been written and never rejects.
53
+ * A write that fails is retried and reported where it happens; the catch here is a
54
+ * backstop, so that anything that gets past that still cannot poison the queue and
55
+ * silence every command after it.
56
+ */
57
+ send = commands => {
58
+ this.pendingWrites = this.pendingWrites.then(() => this.writeInOrder(commands)).catch(error => {
59
+ this.onError?.(error);
60
+ });
61
+ return this.pendingWrites;
62
+ };
63
+ writeInOrder = async commands => {
64
+ for (const command of commands) {
65
+ await this.writeCommand(command);
66
+ }
67
+ };
68
+
69
+ /**
70
+ * Writes one command, split to fit the link.
71
+ *
72
+ * A write longer than the negotiated MTU is truncated by the stack rather than refused,
73
+ * so an oversized command arrives as a shorter one whose header still looks valid. The
74
+ * Er2 negotiates the 23-byte minimum where the rest of the family grants 247, which is
75
+ * enough to cut a 28-byte file-read request in half.
76
+ *
77
+ * A chunk that cannot be written abandons the rest of the command. The device reassembles
78
+ * by arrival, so continuing past a gap would hand it a frame that is not the one asked
79
+ * for - worse than sending nothing, because it would be answered.
80
+ */
81
+ writeCommand = async command => {
82
+ for (const chunk of this.chunksOf(command.frame)) {
83
+ const written = await this.writeChunk(command, chunk);
84
+ if (!written) {
85
+ return;
86
+ }
87
+ }
88
+ };
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
+
104
+ /**
105
+ * Splits a frame into writes the link will carry whole.
106
+ *
107
+ * A frame that already fits yields one chunk, so the common command - a poll of a handful
108
+ * of bytes - is written exactly as it was before there was any splitting at all.
109
+ */
110
+ chunksOf = frame => {
111
+ const size = Math.max(1, this.mtu - ATT_WRITE_HEADER_BYTES);
112
+ const chunks = [];
113
+ for (let start = 0; start < frame.length; start += size) {
114
+ chunks.push(frame.slice(start, start + size));
115
+ }
116
+ return chunks;
117
+ };
118
+
119
+ /**
120
+ * Writes one chunk, retrying a failed write.
121
+ *
122
+ * The attempt count is local rather than an instance field, so a write that exhausted its
123
+ * retries cannot leave the next one with none left - which is what a shared counter did
124
+ * on any path that failed to reset it.
125
+ */
126
+ writeChunk = async (command, chunk) => {
127
+ for (let attempt = 1; attempt <= MAX_WRITE_ATTEMPTS; attempt++) {
128
+ try {
129
+ const isConnected = await this.device.isConnected();
130
+ if (!isConnected) {
131
+ return false;
132
+ }
133
+ await this.writeTo(command, hexToBase64(chunk.join("")));
134
+ return true;
135
+ } catch (error) {
136
+ sentryLogger("error", "DEVICE: Error sending command", {
137
+ error: error instanceof Error ? error.message : error,
138
+ deviceName: this.device.name
139
+ });
140
+ if (attempt === MAX_WRITE_ATTEMPTS) {
141
+ slog(error, "BT_CONNECTION_HANDLER: Error sending command", {
142
+ deviceName: this.device.name
143
+ });
144
+ }
145
+ }
146
+ }
147
+ return false;
148
+ };
149
+ }
150
+ //# sourceMappingURL=bt-command-writer.js.map
@@ -0,0 +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","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":[]}