@ovok/native 1.6.46 → 1.6.48

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 (291) hide show
  1. package/lib/commonjs/modules/bt-device/constants/baby-sleep-clip-catalog-asset.js +10 -0
  2. package/lib/commonjs/modules/bt-device/constants/baby-sleep-clip-catalog-asset.js.map +1 -0
  3. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js +14 -1
  4. package/lib/commonjs/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  5. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-assets.js +5 -1
  6. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-assets.js.map +1 -1
  7. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-entries.js +19 -0
  8. package/lib/commonjs/modules/bt-device/constants/supported-device-catalog-entries.js.map +1 -1
  9. package/lib/commonjs/modules/bt-device/constants/supported-devices.js +50 -0
  10. package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js +1 -1
  12. package/lib/commonjs/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js +2 -0
  14. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/services/device-classes.js +95 -0
  16. package/lib/commonjs/modules/bt-management/services/device-classes.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/services/device-creator.js +5 -78
  18. package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +6 -1
  20. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.js +57 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.js.map +1 -0
  23. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.js +106 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.js +80 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.js.map +1 -0
  27. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.device.js +55 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.device.js.map +1 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.protocol.js +103 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.protocol.js.map +1 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.sequencer.js +33 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/viatom/lpm311.sequencer.js.map +1 -0
  33. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.device.js +72 -0
  34. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.device.js.map +1 -0
  35. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.protocol.js +103 -0
  36. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.protocol.js.map +1 -0
  37. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.js +110 -0
  38. package/lib/commonjs/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.js.map +1 -0
  39. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.device.js +53 -0
  40. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.device.js.map +1 -0
  41. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.protocol.js +64 -0
  42. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.protocol.js.map +1 -0
  43. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.js +96 -0
  44. package/lib/commonjs/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.js.map +1 -0
  45. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.device.js +54 -0
  46. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.device.js.map +1 -0
  47. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.protocol.js +102 -0
  48. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.protocol.js.map +1 -0
  49. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.sequencer.js +115 -0
  50. package/lib/commonjs/modules/bt-management/services/devices/viatom/sp20.sequencer.js.map +1 -0
  51. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.js +81 -0
  52. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.js.map +1 -0
  53. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.device.js +57 -0
  54. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.device.js.map +1 -0
  55. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.protocol.js +118 -0
  56. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.protocol.js.map +1 -0
  57. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.js +95 -0
  58. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.js.map +1 -0
  59. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.device.js +48 -0
  60. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.device.js.map +1 -0
  61. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js +104 -0
  62. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js.map +1 -0
  63. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js +57 -0
  64. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js.map +1 -0
  65. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js +50 -0
  66. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js.map +1 -0
  67. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +108 -0
  68. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -0
  69. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js +64 -0
  70. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js.map +1 -0
  71. package/lib/commonjs/modules/bt-management/types/clock-sync.js +3 -0
  72. package/lib/commonjs/modules/bt-management/types/clock-sync.js.map +1 -1
  73. package/lib/commonjs/modules/bt-management/types/device-measurement-map.js.map +1 -1
  74. package/lib/commonjs/modules/bt-management/types/integrated-devices.js +13 -0
  75. package/lib/commonjs/modules/bt-management/types/integrated-devices.js.map +1 -1
  76. package/lib/module/modules/bt-device/constants/baby-sleep-clip-catalog-asset.js +7 -0
  77. package/lib/module/modules/bt-device/constants/baby-sleep-clip-catalog-asset.js.map +1 -0
  78. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js +14 -1
  79. package/lib/module/modules/bt-device/constants/device-instruction-pdfs.js.map +1 -1
  80. package/lib/module/modules/bt-device/constants/supported-device-catalog-assets.js +5 -1
  81. package/lib/module/modules/bt-device/constants/supported-device-catalog-assets.js.map +1 -1
  82. package/lib/module/modules/bt-device/constants/supported-device-catalog-entries.js +20 -1
  83. package/lib/module/modules/bt-device/constants/supported-device-catalog-entries.js.map +1 -1
  84. package/lib/module/modules/bt-device/constants/supported-devices.js +50 -0
  85. package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
  86. package/lib/module/modules/bt-management/constants/integrated-devices-map.js +1 -1
  87. package/lib/module/modules/bt-management/constants/integrated-devices-map.js.map +1 -1
  88. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js +2 -0
  89. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
  90. package/lib/module/modules/bt-management/services/device-classes.js +92 -0
  91. package/lib/module/modules/bt-management/services/device-classes.js.map +1 -0
  92. package/lib/module/modules/bt-management/services/device-creator.js +3 -77
  93. package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
  94. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +6 -1
  95. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  96. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.js +52 -0
  97. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.js.map +1 -0
  98. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.js +99 -0
  99. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.js.map +1 -0
  100. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.js +75 -0
  101. package/lib/module/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.js.map +1 -0
  102. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.device.js +50 -0
  103. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.device.js.map +1 -0
  104. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.protocol.js +98 -0
  105. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.protocol.js.map +1 -0
  106. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.sequencer.js +28 -0
  107. package/lib/module/modules/bt-management/services/devices/viatom/lpm311.sequencer.js.map +1 -0
  108. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.device.js +67 -0
  109. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.device.js.map +1 -0
  110. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.protocol.js +94 -0
  111. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.protocol.js.map +1 -0
  112. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.js +105 -0
  113. package/lib/module/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.js.map +1 -0
  114. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.device.js +48 -0
  115. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.device.js.map +1 -0
  116. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.protocol.js +57 -0
  117. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.protocol.js.map +1 -0
  118. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.js +91 -0
  119. package/lib/module/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.js.map +1 -0
  120. package/lib/module/modules/bt-management/services/devices/viatom/sp20.device.js +49 -0
  121. package/lib/module/modules/bt-management/services/devices/viatom/sp20.device.js.map +1 -0
  122. package/lib/module/modules/bt-management/services/devices/viatom/sp20.protocol.js +94 -0
  123. package/lib/module/modules/bt-management/services/devices/viatom/sp20.protocol.js.map +1 -0
  124. package/lib/module/modules/bt-management/services/devices/viatom/sp20.sequencer.js +110 -0
  125. package/lib/module/modules/bt-management/services/devices/viatom/sp20.sequencer.js.map +1 -0
  126. package/lib/module/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.js +71 -0
  127. package/lib/module/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.js.map +1 -0
  128. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.device.js +52 -0
  129. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.device.js.map +1 -0
  130. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.protocol.js +110 -0
  131. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.protocol.js.map +1 -0
  132. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.js +90 -0
  133. package/lib/module/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.js.map +1 -0
  134. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.device.js +43 -0
  135. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.device.js.map +1 -0
  136. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js +92 -0
  137. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.js.map +1 -0
  138. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js +52 -0
  139. package/lib/module/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.js.map +1 -0
  140. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js +45 -0
  141. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.device.js.map +1 -0
  142. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +94 -0
  143. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -0
  144. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js +59 -0
  145. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.js.map +1 -0
  146. package/lib/module/modules/bt-management/types/clock-sync.js +3 -0
  147. package/lib/module/modules/bt-management/types/clock-sync.js.map +1 -1
  148. package/lib/module/modules/bt-management/types/device-measurement-map.js.map +1 -1
  149. package/lib/module/modules/bt-management/types/integrated-devices.js +13 -0
  150. package/lib/module/modules/bt-management/types/integrated-devices.js.map +1 -1
  151. package/lib/typescript/commonjs/src/modules/bt-device/constants/baby-sleep-clip-catalog-asset.d.ts +4 -0
  152. package/lib/typescript/commonjs/src/modules/bt-device/constants/baby-sleep-clip-catalog-asset.d.ts.map +1 -0
  153. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts +5 -1
  155. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-device-catalog-entries.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +1 -1
  158. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/src/modules/bt-management/services/device-classes.d.ts +89 -0
  162. package/lib/typescript/commonjs/src/modules/bt-management/services/device-classes.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  165. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  166. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.d.ts +18 -0
  167. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.d.ts +27 -0
  169. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.d.ts +32 -0
  171. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.device.d.ts +9 -0
  173. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.device.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.protocol.d.ts +14 -0
  175. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.protocol.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.sequencer.d.ts +10 -0
  177. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/lpm311.sequencer.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.device.d.ts +18 -0
  179. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.device.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.protocol.d.ts +42 -0
  181. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.protocol.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.d.ts +31 -0
  183. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.device.d.ts +19 -0
  185. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.device.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.protocol.d.ts +30 -0
  187. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.protocol.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.d.ts +27 -0
  189. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.device.d.ts +20 -0
  191. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.device.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.protocol.d.ts +28 -0
  193. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.protocol.d.ts.map +1 -0
  194. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.sequencer.d.ts +26 -0
  195. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/sp20.sequencer.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.d.ts +7 -0
  197. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.device.d.ts +20 -0
  199. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.device.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.protocol.d.ts +38 -0
  201. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.protocol.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.d.ts +35 -0
  203. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts +15 -0
  205. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts +25 -0
  207. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts.map +1 -0
  208. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts +21 -0
  209. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts +14 -0
  211. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts +31 -0
  213. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts +20 -0
  215. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/src/modules/bt-management/types/clock-sync.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts +14 -1
  218. package/lib/typescript/commonjs/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  219. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts +14 -1
  220. package/lib/typescript/commonjs/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  221. package/lib/typescript/module/src/modules/bt-device/constants/baby-sleep-clip-catalog-asset.d.ts +4 -0
  222. package/lib/typescript/module/src/modules/bt-device/constants/baby-sleep-clip-catalog-asset.d.ts.map +1 -0
  223. package/lib/typescript/module/src/modules/bt-device/constants/device-instruction-pdfs.d.ts.map +1 -1
  224. package/lib/typescript/module/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts +5 -1
  225. package/lib/typescript/module/src/modules/bt-device/constants/supported-device-catalog-assets.d.ts.map +1 -1
  226. package/lib/typescript/module/src/modules/bt-device/constants/supported-device-catalog-entries.d.ts.map +1 -1
  227. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +1 -1
  228. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  229. package/lib/typescript/module/src/modules/bt-management/constants/integrated-devices-map.d.ts.map +1 -1
  230. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
  231. package/lib/typescript/module/src/modules/bt-management/services/device-classes.d.ts +89 -0
  232. package/lib/typescript/module/src/modules/bt-management/services/device-classes.d.ts.map +1 -0
  233. package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
  234. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  235. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  236. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.d.ts +18 -0
  237. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.device.d.ts.map +1 -0
  238. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.d.ts +27 -0
  239. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.protocol.d.ts.map +1 -0
  240. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.d.ts +32 -0
  241. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/baby-sleep-clip.sequencer.d.ts.map +1 -0
  242. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.device.d.ts +9 -0
  243. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.device.d.ts.map +1 -0
  244. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.protocol.d.ts +14 -0
  245. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.protocol.d.ts.map +1 -0
  246. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.sequencer.d.ts +10 -0
  247. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/lpm311.sequencer.d.ts.map +1 -0
  248. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.device.d.ts +18 -0
  249. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.device.d.ts.map +1 -0
  250. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.protocol.d.ts +42 -0
  251. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.protocol.d.ts.map +1 -0
  252. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.d.ts +31 -0
  253. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/oxy-s3.sequencer.d.ts.map +1 -0
  254. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.device.d.ts +19 -0
  255. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.device.d.ts.map +1 -0
  256. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.protocol.d.ts +30 -0
  257. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.protocol.d.ts.map +1 -0
  258. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.d.ts +27 -0
  259. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/pf10aw1.sequencer.d.ts.map +1 -0
  260. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.device.d.ts +20 -0
  261. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.device.d.ts.map +1 -0
  262. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.protocol.d.ts +28 -0
  263. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.protocol.d.ts.map +1 -0
  264. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.sequencer.d.ts +26 -0
  265. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/sp20.sequencer.d.ts.map +1 -0
  266. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.d.ts +7 -0
  267. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-lepu-crypto.d.ts.map +1 -0
  268. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.device.d.ts +20 -0
  269. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.device.d.ts.map +1 -0
  270. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.protocol.d.ts +38 -0
  271. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.protocol.d.ts.map +1 -0
  272. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.d.ts +35 -0
  273. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom-r20.sequencer.d.ts.map +1 -0
  274. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts +15 -0
  275. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.device.d.ts.map +1 -0
  276. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts +25 -0
  277. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.protocol.d.ts.map +1 -0
  278. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts +21 -0
  279. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.d.ts.map +1 -0
  280. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts +14 -0
  281. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.device.d.ts.map +1 -0
  282. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts +31 -0
  283. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -0
  284. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts +20 -0
  285. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.sequencer.d.ts.map +1 -0
  286. package/lib/typescript/module/src/modules/bt-management/types/clock-sync.d.ts.map +1 -1
  287. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts +14 -1
  288. package/lib/typescript/module/src/modules/bt-management/types/device-measurement-map.d.ts.map +1 -1
  289. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts +14 -1
  290. package/lib/typescript/module/src/modules/bt-management/types/integrated-devices.d.ts.map +1 -1
  291. package/package.json +6 -4
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseViatomR20Advertisement = exports.decodeViatomR20Response = exports.decodeViatomR20Parameters = exports.ViatomR20FrameReader = exports.ViatomR20Command = exports.VIATOM_R20_WRITE = exports.VIATOM_R20_SERVICE = exports.VIATOM_R20_NOTIFY = exports.VIATOM_R20_MEASUREMENT_TYPE = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _calculateCrc = require("../../../utils/calculate-crc-8.js");
9
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
10
+ var _le16FromHex = require("../../../utils/le-16-from-hex.js");
11
+ var _lepuAdvertisement = require("../lepu/lepu.advertisement.js");
12
+ var _lepuFrameReader = require("../lepu/lepu.frame-reader.js");
13
+ /* eslint-disable import/group-exports */
14
+
15
+ const VIATOM_R20_SERVICE = exports.VIATOM_R20_SERVICE = "14839ac4-7d7e-415c-9a42-167340cf2339";
16
+ const VIATOM_R20_WRITE = exports.VIATOM_R20_WRITE = "8b00ace7-eb0b-49b0-bbe9-9aee0a26e1a3";
17
+ const VIATOM_R20_NOTIFY = exports.VIATOM_R20_NOTIFY = "0734594a-a8e7-4b1a-a6b1-cd5243059a57";
18
+ const VIATOM_R20_MEASUREMENT_TYPE = exports.VIATOM_R20_MEASUREMENT_TYPE = _core.MeasurementTypeKey.respiratoryTherapy;
19
+ const ViatomR20Command = exports.ViatomR20Command = {
20
+ authenticate: 0xff,
21
+ syncTime: 0xc0,
22
+ readParameters: 54
23
+ };
24
+ const unitComponent = (name, value, unit, code) => ({
25
+ code: {
26
+ text: name
27
+ },
28
+ valueQuantity: {
29
+ value,
30
+ unit,
31
+ system: "http://unitsofmeasure.org",
32
+ code
33
+ }
34
+ });
35
+ const u16 = (bytes, offset) => (bytes[offset] ?? 0) | (bytes[offset + 1] ?? 0) << 8;
36
+ const bounded = (value, min, max) => value >= min && value <= max ? value : undefined;
37
+
38
+ /**
39
+ * ViHealth's `BleBroadcast` uses byte 3 for protocol v1 and byte 4 for v2. The selected
40
+ * byte's high nibble is the encryption level; levels 1 and 2 require the Lepu handshake.
41
+ */
42
+ const parseViatomR20Advertisement = manufacturerData => {
43
+ const bytes = (0, _lepuAdvertisement.manufacturerBytes)(manufacturerData ?? undefined);
44
+ const uuid2 = bytes[4] ?? 0;
45
+ const selected = (uuid2 & 0x0f) === 2 ? uuid2 : bytes[3] ?? 0;
46
+ const level = (selected & 0xf0) >> 4;
47
+ return {
48
+ encrypted: level === 1 || level === 2
49
+ };
50
+ };
51
+
52
+ /** Validates the A5 request/reply frame shared by the ViHealth ventilator models. */
53
+ exports.parseViatomR20Advertisement = parseViatomR20Advertisement;
54
+ const decodeViatomR20Response = frame => {
55
+ if (frame.length < 8 || (0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0xa5) {
56
+ return undefined;
57
+ }
58
+ const command = (0, _hexToByte.hexToByte)(frame[1] ?? "00");
59
+ const checksumIndex = frame.length - 1;
60
+ const payloadLength = (0, _le16FromHex.le16FromHex)(frame, 5);
61
+ if ((0, _hexToByte.hexToByte)(frame[2] ?? "00") !== (~command & 0xff) || frame.length !== payloadLength + 8 || (0, _hexToByte.hexToByte)(frame[checksumIndex] ?? "00") !== (0, _calculateCrc.calculateCrc8)([...frame], checksumIndex)) {
62
+ return undefined;
63
+ }
64
+ return {
65
+ command,
66
+ status: (0, _hexToByte.hexToByte)(frame[3] ?? "00"),
67
+ payload: frame.slice(7, checksumIndex).map(_hexToByte.hexToByte)
68
+ };
69
+ };
70
+
71
+ /**
72
+ * Converts the 24-byte RT_PARAM response documented in VentilatorBleResponse.RtParam.
73
+ * The device response has no measurement timestamp, so callers supply the receive time.
74
+ */
75
+ exports.decodeViatomR20Response = decodeViatomR20Response;
76
+ const decodeViatomR20Parameters = (bytes, recordedAt = new Date()) => {
77
+ if (bytes.length < 24) {
78
+ return undefined;
79
+ }
80
+ const components = [];
81
+ const add = (name, value, min, max, unit, code, includeZero = false) => {
82
+ const valid = bounded(value, min, max);
83
+ if (valid !== undefined && (valid > 0 || includeZero)) {
84
+ components.push(unitComponent(name, valid, unit, code));
85
+ }
86
+ };
87
+ add("Airway pressure", u16(bytes, 0) / 10, 0, 60, "cmH2O", "cm[H2O]");
88
+ add("Inspiratory pressure", u16(bytes, 2) / 10, 0, 60, "cmH2O", "cm[H2O]");
89
+ add("Expiratory pressure", u16(bytes, 4) / 10, 0, 60, "cmH2O", "cm[H2O]");
90
+ add("Tidal volume", u16(bytes, 6), 0, 5000, "mL", "mL");
91
+ add("Minute ventilation", u16(bytes, 8) / 10, 0, 100, "L/min", "L/min");
92
+ add("Leak", u16(bytes, 10) / 10, 0, 200, "L/min", "L/min", true);
93
+ add("Respiratory rate", u16(bytes, 12), 0, 100, "breaths/min", "{breaths}/min");
94
+ add("Inspiratory time", u16(bytes, 14) / 10, 0, 10, "s", "s");
95
+ add("Inspiratory/expiratory ratio", u16(bytes, 16) / 10_000, 0, 10, "ratio", "1");
96
+ add("Blood oxygen saturation", u16(bytes, 18), 1, 100, "%", "%");
97
+ add("Pulse rate", u16(bytes, 20), 1, 300, "beats/min", "/min");
98
+ add("Heart rate", u16(bytes, 22), 1, 300, "beats/min", "/min");
99
+ if (components.length === 0 || components.every(({
100
+ valueQuantity
101
+ }) => (valueQuantity?.value ?? 0) === 0)) {
102
+ return undefined;
103
+ }
104
+ return {
105
+ measurementTypeKey: VIATOM_R20_MEASUREMENT_TYPE,
106
+ components,
107
+ recordedAt
108
+ };
109
+ };
110
+
111
+ /** Reads complete A5 notifications and safely joins split or concatenated frames. */
112
+ exports.decodeViatomR20Parameters = decodeViatomR20Parameters;
113
+ class ViatomR20FrameReader {
114
+ reader = new _lepuFrameReader.LepuFrameReader(["a5"]);
115
+ readFrame = buffer => this.reader.readFrame(buffer);
116
+ }
117
+ exports.ViatomR20FrameReader = ViatomR20FrameReader;
118
+ //# sourceMappingURL=viatom-r20.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_calculateCrc","_hexToByte","_le16FromHex","_lepuAdvertisement","_lepuFrameReader","VIATOM_R20_SERVICE","exports","VIATOM_R20_WRITE","VIATOM_R20_NOTIFY","VIATOM_R20_MEASUREMENT_TYPE","MeasurementTypeKey","respiratoryTherapy","ViatomR20Command","authenticate","syncTime","readParameters","unitComponent","name","value","unit","code","text","valueQuantity","system","u16","bytes","offset","bounded","min","max","undefined","parseViatomR20Advertisement","manufacturerData","manufacturerBytes","uuid2","selected","level","encrypted","decodeViatomR20Response","frame","length","hexToByte","command","checksumIndex","payloadLength","le16FromHex","calculateCrc8","status","payload","slice","map","decodeViatomR20Parameters","recordedAt","Date","components","add","includeZero","valid","push","every","measurementTypeKey","ViatomR20FrameReader","reader","LepuFrameReader","readFrame","buffer"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom-r20.protocol.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ViatomR20Sequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _clockSync = require("../../../types/clock-sync.js");
10
+ var _lepuCommandBuilder = require("../lepu/lepu.command-builder.js");
11
+ var _viatomLepuCrypto = require("./viatom-lepu-crypto.js");
12
+ var _viatomR20Protocol = require("./viatom-r20.protocol.js");
13
+ const timezoneOffsetTenths = (date, timezone) => timezone === "utc" ? 0 : Math.round(-date.getTimezoneOffset() / 6);
14
+
15
+ /** Runs the ViHealth ventilator handshake, optional clock write, and RT_PARAM request. */
16
+ class ViatomR20Sequencer {
17
+ commands = new _lepuCommandBuilder.LepuCommandBuilder("a5");
18
+ resultReported = false;
19
+ constructor(params) {
20
+ this.params = params;
21
+ this.phase = params.encrypted ? "authenticate" : this.nextPhaseAfterAuth();
22
+ }
23
+ initialCommands = () => {
24
+ if (this.phase === "authenticate") {
25
+ return [this.command(_viatomR20Protocol.ViatomR20Command.authenticate, (0, _viatomLepuCrypto.createLepuAccessToken)(this.now()))];
26
+ }
27
+ return [this.commandForCurrentPhase()];
28
+ };
29
+ isNormalDisconnect = () => this.resultReported;
30
+ commandTimeoutMs = () => this.phase === "done" ? undefined : 5_000;
31
+ onCommandTimeout = () => {
32
+ this.phase = "done";
33
+ return {
34
+ terminal: true
35
+ };
36
+ };
37
+ nextCommand = frame => {
38
+ const response = (0, _viatomR20Protocol.decodeViatomR20Response)(frame);
39
+ if (!response || response.status !== 1) {
40
+ return undefined;
41
+ }
42
+ if (this.phase === "authenticate") {
43
+ if (response.command !== _viatomR20Protocol.ViatomR20Command.authenticate) {
44
+ return undefined;
45
+ }
46
+ const sessionKey = (0, _viatomLepuCrypto.parseLepuSessionKey)((0, _viatomLepuCrypto.decryptLepuHandshake)(response.payload));
47
+ if (!sessionKey) {
48
+ return undefined;
49
+ }
50
+ this.sessionKey = sessionKey;
51
+ this.phase = this.nextPhaseAfterAuth();
52
+ return [this.commandForCurrentPhase()];
53
+ }
54
+ if (this.phase === "clock") {
55
+ if (response.command !== _viatomR20Protocol.ViatomR20Command.syncTime) {
56
+ return undefined;
57
+ }
58
+ this.phase = "parameters";
59
+ return [this.command(_viatomR20Protocol.ViatomR20Command.readParameters)];
60
+ }
61
+ if (this.phase === "parameters" && response.command === _viatomR20Protocol.ViatomR20Command.readParameters) {
62
+ const payload = this.sessionKey ? (0, _viatomLepuCrypto.decryptLepuPayload)(response.payload, this.sessionKey) ?? [] : response.payload;
63
+ const measurement = (0, _viatomR20Protocol.decodeViatomR20Parameters)(payload, this.now());
64
+ this.phase = "done";
65
+ if (measurement) {
66
+ this.resultReported = true;
67
+ this.params.onResult({
68
+ ...measurement,
69
+ caseType: _caseType.CaseType.RESULT,
70
+ measurementTypeKey: _core.MeasurementTypeKey.respiratoryTherapy
71
+ });
72
+ }
73
+ }
74
+ return undefined;
75
+ };
76
+ nextPhaseAfterAuth = () => (0, _clockSync.isClockSyncEnabled)(this.params.clockSync) ? "clock" : "parameters";
77
+ commandForCurrentPhase = () => this.phase === "clock" ? this.timeCommand() : this.command(_viatomR20Protocol.ViatomR20Command.readParameters);
78
+ command = (command, payload = []) => {
79
+ const encryptedPayload = this.sessionKey ? (0, _viatomLepuCrypto.encryptLepuPayload)(payload, this.sessionKey) : [...payload];
80
+ return {
81
+ ...this.params.write,
82
+ frame: this.commands.build(command, encryptedPayload),
83
+ withoutResponse: true
84
+ };
85
+ };
86
+ timeCommand = () => {
87
+ const date = this.now();
88
+ const parts = (0, _clockSync.getClockParts)(date, this.params.clockSync?.timezone);
89
+ const timezone = this.params.clockSync?.timezone ?? "local";
90
+ return this.command(_viatomR20Protocol.ViatomR20Command.syncTime, [parts.year & 0xff, parts.year >>> 8, parts.month, parts.day, parts.hours, parts.minutes, parts.seconds, timezoneOffsetTenths(date, timezone) & 0xff]);
91
+ };
92
+ now = () => this.params.clockSync?.now?.() ?? this.params.now?.() ?? new Date();
93
+ }
94
+ exports.ViatomR20Sequencer = ViatomR20Sequencer;
95
+ //# sourceMappingURL=viatom-r20.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_clockSync","_lepuCommandBuilder","_viatomLepuCrypto","_viatomR20Protocol","timezoneOffsetTenths","date","timezone","Math","round","getTimezoneOffset","ViatomR20Sequencer","commands","LepuCommandBuilder","resultReported","constructor","params","phase","encrypted","nextPhaseAfterAuth","initialCommands","command","ViatomR20Command","authenticate","createLepuAccessToken","now","commandForCurrentPhase","isNormalDisconnect","commandTimeoutMs","undefined","onCommandTimeout","terminal","nextCommand","frame","response","decodeViatomR20Response","status","sessionKey","parseLepuSessionKey","decryptLepuHandshake","payload","syncTime","readParameters","decryptLepuPayload","measurement","decodeViatomR20Parameters","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","respiratoryTherapy","isClockSyncEnabled","clockSync","timeCommand","encryptedPayload","encryptLepuPayload","write","build","withoutResponse","parts","getClockParts","year","month","day","hours","minutes","seconds","Date","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom-r20.sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pm10MainServices = exports.Pm10Device = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomPm10Protocol = require("./viatom.pm10.protocol.js");
9
+ var _viatomPm10Sequencer = require("./viatom.pm10.sequencer.js");
10
+ /* eslint-disable import/group-exports, import/order, padding-line-between-statements */
11
+
12
+ const acceptEverything = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const pm10MainServices = exports.pm10MainServices = [{
17
+ uuid: _viatomPm10Protocol.PM10_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomPm10Protocol.PM10_NOTIFY,
20
+ parsingModel: acceptEverything
21
+ }],
22
+ writeUuid: {
23
+ uuid: _viatomPm10Protocol.PM10_WRITE,
24
+ mainCommandUuid: "90"
25
+ }
26
+ }];
27
+ class Pm10Device extends _btManagedDevice.BTManagedDevice {
28
+ mainServices = pm10MainServices;
29
+ stuckDataTimeout = 120_000;
30
+ onStreamStart = undefined;
31
+ preferredMtu = 247;
32
+ constructor(device, params) {
33
+ super(device, params);
34
+ this.frameReader = new _viatomPm10Protocol.Pm10FrameReader();
35
+ this.createCommandSequencer = () => new _viatomPm10Sequencer.Pm10Sequencer({
36
+ write: {
37
+ serviceUuid: _viatomPm10Protocol.PM10_SERVICE,
38
+ characteristicUuid: _viatomPm10Protocol.PM10_WRITE
39
+ },
40
+ onResult: result => this.onResult?.(result)
41
+ });
42
+ }
43
+ handleSuccessResult() {
44
+ return;
45
+ }
46
+ }
47
+ exports.Pm10Device = Pm10Device;
48
+ //# sourceMappingURL=viatom.pm10.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomPm10Protocol","_viatomPm10Sequencer","acceptEverything","caseValuePosition","cases","pm10MainServices","exports","uuid","PM10_SERVICE","monitorUuids","PM10_NOTIFY","parsingModel","writeUuid","PM10_WRITE","mainCommandUuid","Pm10Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","preferredMtu","constructor","device","params","frameReader","Pm10FrameReader","createCommandSequencer","Pm10Sequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.device.ts"],"mappings":";;;;;;AAQA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAVA;;AAYA,MAAMG,gBAAgB,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AACtD,MAAMC,gBAA4B,GAAAC,OAAA,CAAAD,gBAAA,GAAG,CAAC;EAAEE,IAAI,EAAEC,gCAAY;EAAEC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,+BAAW;IAAEC,YAAY,EAAET;EAAiB,CAAC,CAAC;EAAEU,SAAS,EAAE;IAAEL,IAAI,EAAEM,8BAAU;IAAEC,eAAe,EAAE;EAAK;AAAE,CAAC,CAAC;AAC5L,MAAMC,UAAU,SAASC,gCAAe,CAAyB;EAC5DC,YAAY,GAAGZ,gBAAgB;EAC/Ba,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAChBC,YAAY,GAAG,GAAG;EAC9BC,WAAWA,CAACC,MAAc,EAAEC,MAAkD,EAAE;IACrF,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,mCAAe,CAAC,CAAC;IACxC,IAAI,CAACC,sBAAsB,GAAG,MAAM,IAAIC,kCAAa,CAAC;MAAEC,KAAK,EAAE;QAAEC,WAAW,EAAEtB,gCAAY;QAAEuB,kBAAkB,EAAElB;MAAW,CAAC;MAAEmB,QAAQ,EAAGC,MAAM,IAAK,IAAI,CAACD,QAAQ,GAAGC,MAAuF;IAAE,CAAC,CAAC;EACjQ;EACUC,mBAAmBA,CAAA,EAAS;IAAE;EAAQ;AAClD;AAAC5B,OAAA,CAAAS,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pm10GetTotal = exports.pm10GetCaseInfo = exports.pm10GetCaseData = exports.pm10Command = exports.decodePm10WavePage = exports.decodePm10Frame = exports.decodePm10CaseInfo = exports.Pm10FrameReader = exports.PM10_WRITE = exports.PM10_SERVICE = exports.PM10_NOTIFY = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
9
+ /* eslint-disable import/group-exports, import/order, padding-line-between-statements, curly, max-lines */
10
+
11
+ const PM10_SERVICE = exports.PM10_SERVICE = "0000ff12-0000-1000-8000-00805f9b34fb";
12
+ const PM10_WRITE = exports.PM10_WRITE = "0000ff01-0000-1000-8000-00805f9b34fb";
13
+ const PM10_NOTIFY = exports.PM10_NOTIFY = "0000ff02-0000-1000-8000-00805f9b34fb";
14
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
15
+ const checksum = frame => byte(frame.reduce((sum, value) => sum + (0, _hexToByte.hexToByte)(value), 0) & 0x7f);
16
+ const pm10Command = (head, payload = []) => {
17
+ const body = [byte(head), ...payload.map(byte)];
18
+ return [...body, checksum(body)];
19
+ };
20
+ exports.pm10Command = pm10Command;
21
+ const pm10GetTotal = () => pm10Command(0x90, [0x03]);
22
+ exports.pm10GetTotal = pm10GetTotal;
23
+ const pm10GetCaseInfo = type => pm10Command(0x95, [type]);
24
+ exports.pm10GetCaseInfo = pm10GetCaseInfo;
25
+ const pm10GetCaseData = type => pm10Command(0x96, [type]);
26
+ exports.pm10GetCaseData = pm10GetCaseData;
27
+ const decodePm10CaseInfo = content => {
28
+ if (content.length < 16) return undefined;
29
+ const value = index => (0, _hexToByte.hexToByte)(content[index] ?? "00");
30
+ const recordedAt = new Date(2000 + value(0), value(1) - 1, value(2), value(3), value(4), value(5));
31
+ const heartRate = (value(7) & 0x7f) << 7 | value(6) & 0x7f;
32
+ const waveformLength = (value(15) & 0x7f) << 7 | value(14) & 0x7f;
33
+ return {
34
+ recordedAt,
35
+ heartRate,
36
+ waveformLength,
37
+ results: content.slice(8, 14).map((_entry, index) => value(index + 8))
38
+ };
39
+ };
40
+ exports.decodePm10CaseInfo = decodePm10CaseInfo;
41
+ const mergeSevenBit = (mask, values) => values.slice(0, 7).map((value, index) => {
42
+ const raw = (0, _hexToByte.hexToByte)(value) & 0x7f;
43
+ return (mask & 1 << index) !== 0 ? raw | 0x80 : raw;
44
+ });
45
+ const decodePm10WavePage = content => {
46
+ if (content.length < 15) return [];
47
+ const first = mergeSevenBit((0, _hexToByte.hexToByte)(content[0] ?? "00"), content.slice(3, 10));
48
+ const second = mergeSevenBit((0, _hexToByte.hexToByte)(content[1] ?? "00"), content.slice(10, 17));
49
+ return [...first, ...second].map((high, index) => {
50
+ const low = index < 7 ? (0, _hexToByte.hexToByte)(content[index + 3] ?? "00") : (0, _hexToByte.hexToByte)(content[index + 3] ?? "00");
51
+ return (high << 8 | low) - 16384;
52
+ });
53
+ };
54
+ exports.decodePm10WavePage = decodePm10WavePage;
55
+ const responseLength = {
56
+ 0xe0: 7,
57
+ 0xe5: 18,
58
+ 0xe6: 17,
59
+ 0xf2: 8,
60
+ 0xf3: 3,
61
+ 0xf4: 18,
62
+ 0xf5: 3,
63
+ 0xf8: 10
64
+ };
65
+ const decodePm10Frame = frame => {
66
+ const head = (0, _hexToByte.hexToByte)(frame[0] ?? "00");
67
+ const length = responseLength[head];
68
+ if (!length || frame.length < length || checksum(frame.slice(0, -1)) !== frame[length - 1]) return undefined;
69
+ return {
70
+ head,
71
+ content: frame.slice(1, length - 1)
72
+ };
73
+ };
74
+ exports.decodePm10Frame = decodePm10Frame;
75
+ class Pm10FrameReader {
76
+ readFrame(buffer) {
77
+ const start = buffer.findIndex(value => responseLength[(0, _hexToByte.hexToByte)(value)] !== undefined);
78
+ if (start < 0) return {
79
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
80
+ consumedBytes: Math.max(0, buffer.length - 1)
81
+ };
82
+ const length = responseLength[(0, _hexToByte.hexToByte)(buffer[start] ?? "00")];
83
+ if (length === undefined) return {
84
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
85
+ consumedBytes: start + 1
86
+ };
87
+ if (start + length > buffer.length) return {
88
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
89
+ consumedBytes: start
90
+ };
91
+ const frame = buffer.slice(start, start + length);
92
+ if (!decodePm10Frame(frame)) return {
93
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
94
+ consumedBytes: start + 1
95
+ };
96
+ return {
97
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
98
+ consumedBytes: start + length,
99
+ frame
100
+ };
101
+ }
102
+ }
103
+ exports.Pm10FrameReader = Pm10FrameReader;
104
+ //# sourceMappingURL=viatom.pm10.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_frameReadStatus","require","_hexToByte","PM10_SERVICE","exports","PM10_WRITE","PM10_NOTIFY","byte","value","toString","padStart","checksum","frame","reduce","sum","hexToByte","pm10Command","head","payload","body","map","pm10GetTotal","pm10GetCaseInfo","type","pm10GetCaseData","decodePm10CaseInfo","content","length","undefined","index","recordedAt","Date","heartRate","waveformLength","results","slice","_entry","mergeSevenBit","mask","values","raw","decodePm10WavePage","first","second","high","low","responseLength","decodePm10Frame","Pm10FrameReader","readFrame","buffer","start","findIndex","status","FrameReadStatus","INCOMPLETE","consumedBytes","Math","max","CORRUPT","COMPLETE"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.protocol.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Pm10Sequencer = void 0;
7
+ var _core = require("@ovok/core");
8
+ var _caseType = require("../../../types/case-type.js");
9
+ var _viatomPm10Protocol = require("./viatom.pm10.protocol.js");
10
+ /* eslint-disable import/order, padding-line-between-statements, curly */
11
+
12
+ const command = (params, frame) => ({
13
+ ...params.write,
14
+ frame,
15
+ withoutResponse: true
16
+ });
17
+ class Pm10Sequencer {
18
+ phase = "total";
19
+ pages = [];
20
+ constructor(params) {
21
+ this.params = params;
22
+ }
23
+ initialCommands = () => [command(this.params, (0, _viatomPm10Protocol.pm10GetTotal)())];
24
+ isHistoryTransfer = () => true;
25
+ isNormalDisconnect = () => this.phase === "done";
26
+ nextCommand = frame => {
27
+ const response = (0, _viatomPm10Protocol.decodePm10Frame)(frame);
28
+ if (!response) return undefined;
29
+ if (response.head === 0xe0 && this.phase === "total") {
30
+ this.phase = "info";
31
+ return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseInfo)(3))];
32
+ }
33
+ if (response.head === 0xe5 && this.phase === "info") {
34
+ this.info = (0, _viatomPm10Protocol.decodePm10CaseInfo)(response.content);
35
+ this.pages = [];
36
+ this.phase = "data";
37
+ return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseData)(0))];
38
+ }
39
+ if (response.head === 0xe6 && this.phase === "data") {
40
+ this.pages.push(...(0, _viatomPm10Protocol.decodePm10WavePage)(response.content));
41
+ const last = (Number.parseInt(response.content[0] ?? "00", 16) & 0x40) !== 0;
42
+ if (!last) return [command(this.params, (0, _viatomPm10Protocol.pm10GetCaseData)(1))];
43
+ if (this.info) this.params.onResult({
44
+ caseType: _caseType.CaseType.RESULT,
45
+ measurementTypeKey: _core.MeasurementTypeKey.ecg,
46
+ heartRate: this.info.heartRate,
47
+ diagramPoints: this.pages,
48
+ duration: this.pages.length / 125,
49
+ recordedAt: this.info.recordedAt
50
+ });
51
+ this.phase = "done";
52
+ }
53
+ return undefined;
54
+ };
55
+ }
56
+ exports.Pm10Sequencer = Pm10Sequencer;
57
+ //# sourceMappingURL=viatom.pm10.sequencer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_core","require","_caseType","_viatomPm10Protocol","command","params","frame","write","withoutResponse","Pm10Sequencer","phase","pages","constructor","initialCommands","pm10GetTotal","isHistoryTransfer","isNormalDisconnect","nextCommand","response","decodePm10Frame","undefined","head","pm10GetCaseInfo","info","decodePm10CaseInfo","content","pm10GetCaseData","push","decodePm10WavePage","last","Number","parseInt","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","ecg","heartRate","diagramPoints","duration","length","recordedAt","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.pm10.sequencer.ts"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAIA,IAAAE,mBAAA,GAAAF,OAAA;AAPA;;AAUA,MAAMG,OAAO,GAAGA,CAACC,MAAc,EAAEC,KAAwB,MAAqB;EAAE,GAAGD,MAAM,CAACE,KAAK;EAAED,KAAK;EAAEE,eAAe,EAAE;AAAK,CAAC,CAAC;AACzH,MAAMC,aAAa,CAA6B;EAC7CC,KAAK,GAAuC,OAAO;EAEnDC,KAAK,GAAa,EAAE;EACrBC,WAAWA,CAAkBP,MAAc,EAAE;IAAA,KAAhBA,MAAc,GAAdA,MAAc;EAAG;EAC9CQ,eAAe,GAAGA,CAAA,KAAgC,CAACT,OAAO,CAAC,IAAI,CAACC,MAAM,EAAE,IAAAS,gCAAY,EAAC,CAAC,CAAC,CAAC;EACxFC,iBAAiB,GAAGA,CAAA,KAAe,IAAI;EACvCC,kBAAkB,GAAGA,CAAA,KAAe,IAAI,CAACN,KAAK,KAAK,MAAM;EACzDO,WAAW,GAAIX,KAAwB,IAA2C;IACvF,MAAMY,QAAQ,GAAG,IAAAC,mCAAe,EAACb,KAAK,CAAC;IACvC,IAAI,CAACY,QAAQ,EAAE,OAAOE,SAAS;IAC/B,IAAIF,QAAQ,CAACG,IAAI,KAAK,IAAI,IAAI,IAAI,CAACX,KAAK,KAAK,OAAO,EAAE;MAAE,IAAI,CAACA,KAAK,GAAG,MAAM;MAAE,OAAO,CAACN,OAAO,CAAC,IAAI,CAACC,MAAM,EAAE,IAAAiB,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC;IAAE;IAChI,IAAIJ,QAAQ,CAACG,IAAI,KAAK,IAAI,IAAI,IAAI,CAACX,KAAK,KAAK,MAAM,EAAE;MAAE,IAAI,CAACa,IAAI,GAAG,IAAAC,sCAAkB,EAACN,QAAQ,CAACO,OAAO,CAAC;MAAE,IAAI,CAACd,KAAK,GAAG,EAAE;MAAE,IAAI,CAACD,KAAK,GAAG,MAAM;MAAE,OAAO,CAACN,OAAO,CAAC,IAAI,CAACC,MAAM,EAAE,IAAAqB,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC;IAAE;IAClM,IAAIR,QAAQ,CAACG,IAAI,KAAK,IAAI,IAAI,IAAI,CAACX,KAAK,KAAK,MAAM,EAAE;MACnD,IAAI,CAACC,KAAK,CAACgB,IAAI,CAAC,GAAG,IAAAC,sCAAkB,EAACV,QAAQ,CAACO,OAAO,CAAC,CAAC;MACxD,MAAMI,IAAI,GAAG,CAACC,MAAM,CAACC,QAAQ,CAACb,QAAQ,CAACO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC;MAC5E,IAAI,CAACI,IAAI,EAAE,OAAO,CAACzB,OAAO,CAAC,IAAI,CAACC,MAAM,EAAE,IAAAqB,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,IAAI,CAACH,IAAI,EAAE,IAAI,CAAClB,MAAM,CAAC2B,QAAQ,CAAC;QAAEC,QAAQ,EAAEC,kBAAQ,CAACC,MAAM;QAAEC,kBAAkB,EAAEC,wBAAkB,CAACC,GAAG;QAAEC,SAAS,EAAE,IAAI,CAAChB,IAAI,CAACgB,SAAS;QAAEC,aAAa,EAAE,IAAI,CAAC7B,KAAK;QAAE8B,QAAQ,EAAE,IAAI,CAAC9B,KAAK,CAAC+B,MAAM,GAAG,GAAG;QAAEC,UAAU,EAAE,IAAI,CAACpB,IAAI,CAACoB;MAAW,CAAC,CAAC;MAC9O,IAAI,CAACjC,KAAK,GAAG,MAAM;IACrB;IACA,OAAOU,SAAS;EAClB,CAAC;AACH;AAACwB,OAAA,CAAAnC,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.wbp02MainServices = exports.Wbp02Device = void 0;
7
+ var _btManagedDevice = require("../bt-managed-device.js");
8
+ var _viatomWbp02Protocol = require("./viatom.wbp02.protocol.js");
9
+ var _viatomWbp02Sequencer = require("./viatom.wbp02.sequencer.js");
10
+ /* eslint-disable import/group-exports, import/order, padding-line-between-statements */
11
+
12
+ const acceptEverything = {
13
+ caseValuePosition: [],
14
+ cases: []
15
+ };
16
+ const wbp02MainServices = exports.wbp02MainServices = [{
17
+ uuid: _viatomWbp02Protocol.WBP02_DATA_SERVICE,
18
+ monitorUuids: [{
19
+ uuid: _viatomWbp02Protocol.WBP02_NOTIFY,
20
+ parsingModel: acceptEverything
21
+ }]
22
+ }, {
23
+ uuid: _viatomWbp02Protocol.WBP02_CONTROL_SERVICE,
24
+ monitorUuids: [],
25
+ writeUuid: {
26
+ uuid: _viatomWbp02Protocol.WBP02_WRITE,
27
+ mainCommandUuid: "5a"
28
+ }
29
+ }];
30
+ class Wbp02Device extends _btManagedDevice.BTManagedDevice {
31
+ mainServices = wbp02MainServices;
32
+ stuckDataTimeout = 120_000;
33
+ onStreamStart = undefined;
34
+ constructor(device, params) {
35
+ super(device, params);
36
+ this.frameReader = new _viatomWbp02Protocol.Wbp02FrameReader();
37
+ this.createCommandSequencer = () => new _viatomWbp02Sequencer.Wbp02Sequencer({
38
+ write: {
39
+ serviceUuid: _viatomWbp02Protocol.WBP02_CONTROL_SERVICE,
40
+ characteristicUuid: _viatomWbp02Protocol.WBP02_WRITE
41
+ },
42
+ onResult: result => this.onResult?.(result)
43
+ });
44
+ }
45
+ handleSuccessResult() {
46
+ return;
47
+ }
48
+ }
49
+ exports.Wbp02Device = Wbp02Device;
50
+ //# sourceMappingURL=viatom.wbp02.device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_btManagedDevice","require","_viatomWbp02Protocol","_viatomWbp02Sequencer","acceptEverything","caseValuePosition","cases","wbp02MainServices","exports","uuid","WBP02_DATA_SERVICE","monitorUuids","WBP02_NOTIFY","parsingModel","WBP02_CONTROL_SERVICE","writeUuid","WBP02_WRITE","mainCommandUuid","Wbp02Device","BTManagedDevice","mainServices","stuckDataTimeout","onStreamStart","undefined","constructor","device","params","frameReader","Wbp02FrameReader","createCommandSequencer","Wbp02Sequencer","write","serviceUuid","characteristicUuid","onResult","result","handleSuccessResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.wbp02.device.ts"],"mappings":";;;;;;AAQA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAVA;;AAYA,MAAMG,gBAAgB,GAAG;EAAEC,iBAAiB,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AACtD,MAAMC,iBAA6B,GAAAC,OAAA,CAAAD,iBAAA,GAAG,CAC3C;EAAEE,IAAI,EAAEC,uCAAkB;EAAEC,YAAY,EAAE,CAAC;IAAEF,IAAI,EAAEG,iCAAY;IAAEC,YAAY,EAAET;EAAiB,CAAC;AAAE,CAAC,EACpG;EAAEK,IAAI,EAAEK,0CAAqB;EAAEH,YAAY,EAAE,EAAE;EAAEI,SAAS,EAAE;IAAEN,IAAI,EAAEO,gCAAW;IAAEC,eAAe,EAAE;EAAK;AAAE,CAAC,CAC3G;AAEM,MAAMC,WAAW,SAASC,gCAAe,CAA2B;EAC/DC,YAAY,GAAGb,iBAAiB;EAChCc,gBAAgB,GAAG,OAAO;EAC1BC,aAAa,GAAGC,SAAS;EAC5BC,WAAWA,CAACC,MAAc,EAAEC,MAAoD,EAAE;IACvF,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,WAAW,GAAG,IAAIC,qCAAgB,CAAC,CAAC;IACzC,IAAI,CAACC,sBAAsB,GAAG,MAAM,IAAIC,oCAAc,CAAC;MAAEC,KAAK,EAAE;QAAEC,WAAW,EAAElB,0CAAqB;QAAEmB,kBAAkB,EAAEjB;MAAY,CAAC;MAAEkB,QAAQ,EAAGC,MAAM,IAAK,IAAI,CAACD,QAAQ,GAAGC,MAAyF;IAAE,CAAC,CAAC;EAC9Q;EACUC,mBAAmBA,CAAA,EAAS;IAAE;EAAQ;AAClD;AAAC5B,OAAA,CAAAU,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.wbp02SyncTime = exports.wbp02RecordCount = exports.wbp02Record = exports.wbp02Login = exports.wbp02Crc = exports.wbp02Connect = exports.wbp02Command = exports.parseWbp02Record = exports.decodeWbp02Response = exports.Wbp02FrameReader = exports.WBP02_WRITE = exports.WBP02_NOTIFY = exports.WBP02_DATA_SERVICE = exports.WBP02_CONTROL_SERVICE = void 0;
7
+ var _frameReadStatus = require("../../../types/frame-read-status.js");
8
+ var _hexToByte = require("../../../utils/hex-to-byte.js");
9
+ /* eslint-disable import/group-exports, import/order, padding-line-between-statements, curly, max-lines */
10
+
11
+ const WBP02_CONTROL_SERVICE = exports.WBP02_CONTROL_SERVICE = "0000ffe5-0000-1000-8000-00805f9b34fb";
12
+ const WBP02_WRITE = exports.WBP02_WRITE = "0000ffe9-0000-1000-8000-00805f9b34fb";
13
+ const WBP02_DATA_SERVICE = exports.WBP02_DATA_SERVICE = "0000ffe0-0000-1000-8000-00805f9b34fb";
14
+ const WBP02_NOTIFY = exports.WBP02_NOTIFY = "0000ffe4-0000-1000-8000-00805f9b34fb";
15
+ const byte = value => (value & 0xff).toString(16).padStart(2, "0");
16
+
17
+ /** CRC-16 used by the WBP-02 service, returned low byte first. */
18
+ const wbp02Crc = bytes => {
19
+ let crc = 0xffff;
20
+ for (const value of bytes) {
21
+ crc ^= (0, _hexToByte.hexToByte)(value);
22
+ for (let bit = 0; bit < 8; bit += 1) {
23
+ crc = (crc & 1) !== 0 ? crc >>> 1 ^ 0xa001 : crc >>> 1;
24
+ }
25
+ }
26
+ return [byte(crc), byte(crc >> 8)];
27
+ };
28
+ exports.wbp02Crc = wbp02Crc;
29
+ const wbp02Command = (command, payload = []) => {
30
+ const body = ["5a", byte(payload.length + 5), byte(command), ...payload.map(byte)];
31
+ return [...body, ...wbp02Crc(body)];
32
+ };
33
+ exports.wbp02Command = wbp02Command;
34
+ const wbp02Connect = () => wbp02Command(0x10);
35
+ exports.wbp02Connect = wbp02Connect;
36
+ const wbp02SyncTime = (date = new Date()) => wbp02Command(0x12, [date.getFullYear() % 100, date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes()]);
37
+ exports.wbp02SyncTime = wbp02SyncTime;
38
+ const wbp02Login = () => wbp02Command(0x13, [0, 0, 0x45, 0x67]);
39
+ exports.wbp02Login = wbp02Login;
40
+ const wbp02RecordCount = () => wbp02Command(0x53);
41
+ exports.wbp02RecordCount = wbp02RecordCount;
42
+ const wbp02Record = index => wbp02Command(0x54, [index >> 8 & 0xff, index & 0xff]);
43
+ exports.wbp02Record = wbp02Record;
44
+ const decodeWbp02Response = frame => {
45
+ const length = (0, _hexToByte.hexToByte)(frame[1] ?? "00");
46
+ if ((0, _hexToByte.hexToByte)(frame[0] ?? "00") !== 0x5a || length < 7 || frame.length < length) return undefined;
47
+ const complete = frame.slice(0, length);
48
+ const crc = wbp02Crc(complete.slice(0, -2));
49
+ if (complete.at(-2) !== crc[0] || complete.at(-1) !== crc[1]) return undefined;
50
+ return {
51
+ command: (0, _hexToByte.hexToByte)(complete[2] ?? "00"),
52
+ content: complete.slice(3, -2)
53
+ };
54
+ };
55
+ exports.decodeWbp02Response = decodeWbp02Response;
56
+ const parseWbp02Record = content => {
57
+ if (content.length < 13) return undefined;
58
+ const value = offset => (0, _hexToByte.hexToByte)(content[offset] ?? "00") << 8 | (0, _hexToByte.hexToByte)(content[offset + 1] ?? "00");
59
+ const year = 2000 + (0, _hexToByte.hexToByte)(content[6] ?? "00");
60
+ const month = (0, _hexToByte.hexToByte)(content[7] ?? "00");
61
+ const day = (0, _hexToByte.hexToByte)(content[8] ?? "00");
62
+ const hour = (0, _hexToByte.hexToByte)(content[9] ?? "00");
63
+ const minute = (0, _hexToByte.hexToByte)(content[10] ?? "00");
64
+ if (month < 1 || month > 12 || day < 1 || day > 31 || value(0) < 20 || value(0) > 300 || value(2) < 10 || value(2) > 200) return undefined;
65
+ const recordedAt = new Date(year, month - 1, day, hour, minute);
66
+ return {
67
+ systolic: value(0),
68
+ diastolic: value(2),
69
+ heartRate: value(4),
70
+ recordedAt,
71
+ recordingId: `wbp02:${recordedAt.toISOString()}`
72
+ };
73
+ };
74
+ exports.parseWbp02Record = parseWbp02Record;
75
+ class Wbp02FrameReader {
76
+ readFrame(buffer) {
77
+ const start = buffer.findIndex(value => (0, _hexToByte.hexToByte)(value) === 0x5a);
78
+ if (start < 0) return {
79
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
80
+ consumedBytes: Math.max(0, buffer.length - 1)
81
+ };
82
+ if (start + 2 > buffer.length) return {
83
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
84
+ consumedBytes: start
85
+ };
86
+ const length = (0, _hexToByte.hexToByte)(buffer[start + 1] ?? "00");
87
+ if (length < 7) return {
88
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
89
+ consumedBytes: start + 1
90
+ };
91
+ if (start + length > buffer.length) return {
92
+ status: _frameReadStatus.FrameReadStatus.INCOMPLETE,
93
+ consumedBytes: start
94
+ };
95
+ const frame = buffer.slice(start, start + length);
96
+ if (!decodeWbp02Response(frame)) return {
97
+ status: _frameReadStatus.FrameReadStatus.CORRUPT,
98
+ consumedBytes: start + 1
99
+ };
100
+ return {
101
+ status: _frameReadStatus.FrameReadStatus.COMPLETE,
102
+ consumedBytes: start + length,
103
+ frame
104
+ };
105
+ }
106
+ }
107
+ exports.Wbp02FrameReader = Wbp02FrameReader;
108
+ //# sourceMappingURL=viatom.wbp02.protocol.js.map