@ovok/native 1.16.1-rc.3 → 1.16.1-rc.4

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 (597) hide show
  1. package/lib/commonjs/modules/bt-management/components/android-bluetooth-foreground-service.js +3 -1
  2. package/lib/commonjs/modules/bt-management/components/android-bluetooth-foreground-service.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/components/bluetooth-device-picker.js +9 -141
  4. package/lib/commonjs/modules/bt-management/components/bluetooth-device-picker.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  6. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  7. package/lib/commonjs/modules/bt-management/components/device-picker-sheet.js +160 -0
  8. package/lib/commonjs/modules/bt-management/components/device-picker-sheet.js.map +1 -0
  9. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js +2 -1
  11. package/lib/commonjs/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/hooks/use-measurements.js +1 -1
  13. package/lib/commonjs/modules/bt-management/hooks/use-measurements.js.map +1 -1
  14. package/lib/commonjs/modules/bt-management/index.js +12 -0
  15. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  16. package/lib/commonjs/modules/bt-management/services/bt-manager.js +50 -0
  17. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  18. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +3 -0
  19. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  20. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  21. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  22. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  23. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  24. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js +59 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  26. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js +18 -37
  27. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  28. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +31 -3
  29. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  30. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js +68 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js +70 -0
  33. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  34. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  35. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  36. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js +4 -7
  37. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js.map +1 -1
  38. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js +106 -0
  39. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js.map +1 -0
  40. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +38 -31
  41. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  42. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js +41 -0
  43. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js.map +1 -0
  44. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +77 -0
  45. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  46. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +49 -0
  47. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  48. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +89 -0
  49. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  50. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +35 -42
  51. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  52. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +22 -24
  53. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -1
  54. package/lib/commonjs/modules/bt-management/services/record-cursor.js +70 -0
  55. package/lib/commonjs/modules/bt-management/services/record-cursor.js.map +1 -0
  56. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js +8 -0
  57. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  58. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js +2 -0
  59. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js.map +1 -0
  60. package/lib/commonjs/modules/bt-management/utils/bluetooth-permission-list.js +19 -0
  61. package/lib/commonjs/modules/bt-management/utils/bluetooth-permission-list.js.map +1 -0
  62. package/lib/commonjs/modules/bt-management/utils/device-user.js +22 -0
  63. package/lib/commonjs/modules/bt-management/utils/device-user.js.map +1 -0
  64. package/lib/commonjs/modules/bt-management/utils/kpa-to-mmhg.js +9 -0
  65. package/lib/commonjs/modules/bt-management/utils/kpa-to-mmhg.js.map +1 -0
  66. package/lib/commonjs/modules/bt-management/utils/result-identity.js +26 -35
  67. package/lib/commonjs/modules/bt-management/utils/result-identity.js.map +1 -1
  68. package/lib/commonjs/modules/bt-management/utils/rr-interval.js +16 -0
  69. package/lib/commonjs/modules/bt-management/utils/rr-interval.js.map +1 -0
  70. package/lib/commonjs/modules/bt-management/utils/temperature-type.js +15 -0
  71. package/lib/commonjs/modules/bt-management/utils/temperature-type.js.map +1 -0
  72. package/lib/commonjs/modules/bt-management/utils/wait.js +10 -0
  73. package/lib/commonjs/modules/bt-management/utils/wait.js.map +1 -0
  74. package/lib/commonjs/modules/next/background-sync/index.js +28 -0
  75. package/lib/commonjs/modules/next/background-sync/index.js.map +1 -0
  76. package/lib/commonjs/modules/next/background-sync/offline-measurement-background-sync.js +63 -0
  77. package/lib/commonjs/modules/next/background-sync/offline-measurement-background-sync.js.map +1 -0
  78. package/lib/commonjs/modules/next/bluetooth/auto-connect.js +32 -0
  79. package/lib/commonjs/modules/next/bluetooth/auto-connect.js.map +1 -0
  80. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-errors.js +33 -0
  81. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-errors.js.map +1 -0
  82. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js +162 -0
  83. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -0
  84. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-scanner.js +75 -0
  85. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-scanner.js.map +1 -0
  86. package/lib/commonjs/modules/next/bluetooth/ble-plx/built-in-devices.js +34 -0
  87. package/lib/commonjs/modules/next/bluetooth/ble-plx/built-in-devices.js.map +1 -0
  88. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js +67 -0
  89. package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -0
  90. package/lib/commonjs/modules/next/bluetooth/connections.js +114 -0
  91. package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -0
  92. package/lib/commonjs/modules/next/bluetooth/daily-total-day.js.map +1 -0
  93. package/lib/commonjs/modules/next/bluetooth/devices.js +41 -0
  94. package/lib/commonjs/modules/next/bluetooth/devices.js.map +1 -0
  95. package/lib/commonjs/modules/next/bluetooth/driver.js +30 -20
  96. package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
  97. package/lib/commonjs/modules/next/bluetooth/errors.js +26 -0
  98. package/lib/commonjs/modules/next/bluetooth/errors.js.map +1 -0
  99. package/lib/commonjs/modules/next/bluetooth/index.js +122 -11
  100. package/lib/commonjs/modules/next/bluetooth/index.js.map +1 -1
  101. package/lib/commonjs/modules/next/bluetooth/link.js +0 -103
  102. package/lib/commonjs/modules/next/bluetooth/link.js.map +1 -1
  103. package/lib/commonjs/modules/next/bluetooth/paired.js +50 -0
  104. package/lib/commonjs/modules/next/bluetooth/paired.js.map +1 -0
  105. package/lib/commonjs/modules/next/bluetooth/permissions.js +2 -0
  106. package/lib/commonjs/modules/next/bluetooth/permissions.js.map +1 -0
  107. package/lib/commonjs/modules/next/bluetooth/react/bluetooth-device-picker.js +44 -0
  108. package/lib/commonjs/modules/next/bluetooth/react/bluetooth-device-picker.js.map +1 -0
  109. package/lib/commonjs/modules/next/bluetooth/react/context.js +54 -0
  110. package/lib/commonjs/modules/next/bluetooth/react/context.js.map +1 -0
  111. package/lib/commonjs/modules/next/bluetooth/react/hooks.js +86 -0
  112. package/lib/commonjs/modules/next/bluetooth/react/hooks.js.map +1 -0
  113. package/lib/commonjs/modules/next/bluetooth/react-native/create-bluetooth-runtime.js +28 -0
  114. package/lib/commonjs/modules/next/bluetooth/react-native/create-bluetooth-runtime.js.map +1 -0
  115. package/lib/commonjs/modules/next/bluetooth/react-native/os-permissions.js +32 -0
  116. package/lib/commonjs/modules/next/bluetooth/react-native/os-permissions.js.map +1 -0
  117. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js +43 -0
  118. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -0
  119. package/lib/commonjs/modules/next/bluetooth/readings.js +93 -0
  120. package/lib/commonjs/modules/next/bluetooth/readings.js.map +1 -0
  121. package/lib/commonjs/modules/next/bluetooth/result-policy.js +15 -2
  122. package/lib/commonjs/modules/next/bluetooth/result-policy.js.map +1 -1
  123. package/lib/commonjs/modules/next/bluetooth/runtime.js +223 -0
  124. package/lib/commonjs/modules/next/bluetooth/runtime.js.map +1 -0
  125. package/lib/commonjs/modules/next/bluetooth/scan-loop.js +82 -0
  126. package/lib/commonjs/modules/next/bluetooth/scan-loop.js.map +1 -0
  127. package/lib/commonjs/modules/next/bluetooth/sig-profiles.js +46 -13
  128. package/lib/commonjs/modules/next/bluetooth/sig-profiles.js.map +1 -1
  129. package/lib/commonjs/modules/next/bluetooth/sink.js +6 -0
  130. package/lib/commonjs/modules/next/bluetooth/sink.js.map +1 -0
  131. package/lib/commonjs/modules/next/bluetooth/snapshot.js +6 -0
  132. package/lib/commonjs/modules/next/bluetooth/snapshot.js.map +1 -0
  133. package/lib/commonjs/modules/next/bluetooth/stable-hash.js +42 -0
  134. package/lib/commonjs/modules/next/bluetooth/stable-hash.js.map +1 -0
  135. package/lib/commonjs/modules/next/bluetooth/store.js +61 -0
  136. package/lib/commonjs/modules/next/bluetooth/store.js.map +1 -0
  137. package/lib/commonjs/modules/next/bluetooth/transport.js +6 -0
  138. package/lib/commonjs/modules/next/bluetooth/transport.js.map +1 -0
  139. package/lib/commonjs/modules/next/data-sync/index.js +17 -0
  140. package/lib/commonjs/modules/next/data-sync/index.js.map +1 -0
  141. package/lib/module/modules/bt-management/components/android-bluetooth-foreground-service.js +3 -1
  142. package/lib/module/modules/bt-management/components/android-bluetooth-foreground-service.js.map +1 -1
  143. package/lib/module/modules/bt-management/components/bluetooth-device-picker.js +9 -141
  144. package/lib/module/modules/bt-management/components/bluetooth-device-picker.js.map +1 -1
  145. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  146. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  147. package/lib/module/modules/bt-management/components/device-picker-sheet.js +154 -0
  148. package/lib/module/modules/bt-management/components/device-picker-sheet.js.map +1 -0
  149. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  150. package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js +4 -3
  151. package/lib/module/modules/bt-management/hooks/use-bluetooth-permission.js.map +1 -1
  152. package/lib/module/modules/bt-management/hooks/use-measurements.js +1 -1
  153. package/lib/module/modules/bt-management/hooks/use-measurements.js.map +1 -1
  154. package/lib/module/modules/bt-management/index.js +1 -0
  155. package/lib/module/modules/bt-management/index.js.map +1 -1
  156. package/lib/module/modules/bt-management/services/bt-manager.js +50 -0
  157. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  158. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +3 -0
  159. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  160. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  161. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  162. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  163. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  164. package/lib/module/modules/bt-management/services/devices/bt-current-time.js +55 -0
  165. package/lib/module/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  166. package/lib/module/modules/bt-management/services/devices/bt-device-information.js +18 -37
  167. package/lib/module/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  168. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +33 -5
  169. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  170. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js +65 -0
  171. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  172. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js +65 -0
  173. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  174. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  175. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  176. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js +1 -4
  177. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js.map +1 -1
  178. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js +99 -0
  179. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js.map +1 -0
  180. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +38 -31
  181. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  182. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js +35 -0
  183. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js.map +1 -0
  184. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +72 -0
  185. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  186. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +40 -0
  187. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  188. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +85 -0
  189. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  190. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +25 -32
  191. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  192. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +18 -20
  193. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -1
  194. package/lib/module/modules/bt-management/services/record-cursor.js +66 -0
  195. package/lib/module/modules/bt-management/services/record-cursor.js.map +1 -0
  196. package/lib/module/modules/bt-management/testing/fake-ble-manager.js +8 -0
  197. package/lib/module/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  198. package/lib/module/modules/bt-management/types/custom-device-definition.js +4 -0
  199. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -1
  200. package/lib/module/modules/bt-management/types/glucose-record-details.js +2 -0
  201. package/lib/module/modules/bt-management/types/glucose-record-details.js.map +1 -0
  202. package/lib/module/modules/bt-management/utils/bluetooth-permission-list.js +14 -0
  203. package/lib/module/modules/bt-management/utils/bluetooth-permission-list.js.map +1 -0
  204. package/lib/module/modules/bt-management/utils/device-user.js +17 -0
  205. package/lib/module/modules/bt-management/utils/device-user.js.map +1 -0
  206. package/lib/module/modules/bt-management/utils/kpa-to-mmhg.js +6 -0
  207. package/lib/module/modules/bt-management/utils/kpa-to-mmhg.js.map +1 -0
  208. package/lib/module/modules/bt-management/utils/result-identity.js +23 -33
  209. package/lib/module/modules/bt-management/utils/result-identity.js.map +1 -1
  210. package/lib/module/modules/bt-management/utils/rr-interval.js +12 -0
  211. package/lib/module/modules/bt-management/utils/rr-interval.js.map +1 -0
  212. package/lib/module/modules/bt-management/utils/temperature-type.js +11 -0
  213. package/lib/module/modules/bt-management/utils/temperature-type.js.map +1 -0
  214. package/lib/module/modules/bt-management/utils/wait.js +5 -0
  215. package/lib/module/modules/bt-management/utils/wait.js.map +1 -0
  216. package/lib/module/modules/next/background-sync/index.js +12 -0
  217. package/lib/module/modules/next/background-sync/index.js.map +1 -0
  218. package/lib/module/modules/next/background-sync/offline-measurement-background-sync.js +55 -0
  219. package/lib/module/modules/next/background-sync/offline-measurement-background-sync.js.map +1 -0
  220. package/lib/module/modules/next/bluetooth/auto-connect.js +28 -0
  221. package/lib/module/modules/next/bluetooth/auto-connect.js.map +1 -0
  222. package/lib/module/modules/next/bluetooth/ble-plx/ble-errors.js +28 -0
  223. package/lib/module/modules/next/bluetooth/ble-plx/ble-errors.js.map +1 -0
  224. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js +159 -0
  225. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -0
  226. package/lib/module/modules/next/bluetooth/ble-plx/ble-scanner.js +69 -0
  227. package/lib/module/modules/next/bluetooth/ble-plx/ble-scanner.js.map +1 -0
  228. package/lib/module/modules/next/bluetooth/ble-plx/built-in-devices.js +31 -0
  229. package/lib/module/modules/next/bluetooth/ble-plx/built-in-devices.js.map +1 -0
  230. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js +63 -0
  231. package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -0
  232. package/lib/module/modules/next/bluetooth/connections.js +110 -0
  233. package/lib/module/modules/next/bluetooth/connections.js.map +1 -0
  234. package/lib/module/modules/next/bluetooth/daily-total-day.js.map +1 -0
  235. package/lib/module/modules/next/bluetooth/devices.js +37 -0
  236. package/lib/module/modules/next/bluetooth/devices.js.map +1 -0
  237. package/lib/module/modules/next/bluetooth/driver.js +29 -20
  238. package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
  239. package/lib/module/modules/next/bluetooth/errors.js +21 -0
  240. package/lib/module/modules/next/bluetooth/errors.js.map +1 -0
  241. package/lib/module/modules/next/bluetooth/index.js +22 -4
  242. package/lib/module/modules/next/bluetooth/index.js.map +1 -1
  243. package/lib/module/modules/next/bluetooth/link.js +0 -101
  244. package/lib/module/modules/next/bluetooth/link.js.map +1 -1
  245. package/lib/module/modules/next/bluetooth/paired.js +46 -0
  246. package/lib/module/modules/next/bluetooth/paired.js.map +1 -0
  247. package/lib/module/modules/next/bluetooth/permissions.js +2 -0
  248. package/lib/module/modules/next/bluetooth/permissions.js.map +1 -0
  249. package/lib/module/modules/next/bluetooth/react/bluetooth-device-picker.js +39 -0
  250. package/lib/module/modules/next/bluetooth/react/bluetooth-device-picker.js.map +1 -0
  251. package/lib/module/modules/next/bluetooth/react/context.js +48 -0
  252. package/lib/module/modules/next/bluetooth/react/context.js.map +1 -0
  253. package/lib/module/modules/next/bluetooth/react/hooks.js +76 -0
  254. package/lib/module/modules/next/bluetooth/react/hooks.js.map +1 -0
  255. package/lib/module/modules/next/bluetooth/react-native/create-bluetooth-runtime.js +25 -0
  256. package/lib/module/modules/next/bluetooth/react-native/create-bluetooth-runtime.js.map +1 -0
  257. package/lib/module/modules/next/bluetooth/react-native/os-permissions.js +28 -0
  258. package/lib/module/modules/next/bluetooth/react-native/os-permissions.js.map +1 -0
  259. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js +39 -0
  260. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -0
  261. package/lib/module/modules/next/bluetooth/readings.js +89 -0
  262. package/lib/module/modules/next/bluetooth/readings.js.map +1 -0
  263. package/lib/module/modules/next/bluetooth/result-policy.js +14 -2
  264. package/lib/module/modules/next/bluetooth/result-policy.js.map +1 -1
  265. package/lib/module/modules/next/bluetooth/runtime.js +220 -0
  266. package/lib/module/modules/next/bluetooth/runtime.js.map +1 -0
  267. package/lib/module/modules/next/bluetooth/scan-loop.js +78 -0
  268. package/lib/module/modules/next/bluetooth/scan-loop.js.map +1 -0
  269. package/lib/module/modules/next/bluetooth/sig-profiles.js +44 -11
  270. package/lib/module/modules/next/bluetooth/sig-profiles.js.map +1 -1
  271. package/lib/module/modules/next/bluetooth/sink.js +4 -0
  272. package/lib/module/modules/next/bluetooth/sink.js.map +1 -0
  273. package/lib/module/modules/next/bluetooth/snapshot.js +4 -0
  274. package/lib/module/modules/next/bluetooth/snapshot.js.map +1 -0
  275. package/lib/module/modules/next/bluetooth/stable-hash.js +37 -0
  276. package/lib/module/modules/next/bluetooth/stable-hash.js.map +1 -0
  277. package/lib/module/modules/next/bluetooth/store.js +57 -0
  278. package/lib/module/modules/next/bluetooth/store.js.map +1 -0
  279. package/lib/module/modules/next/bluetooth/transport.js +4 -0
  280. package/lib/module/modules/next/bluetooth/transport.js.map +1 -0
  281. package/lib/module/modules/next/data-sync/index.js +11 -0
  282. package/lib/module/modules/next/data-sync/index.js.map +1 -0
  283. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  284. package/lib/typescript/commonjs/src/modules/bt-management/components/android-bluetooth-foreground-service.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/src/modules/bt-management/components/bluetooth-device-picker.d.ts +1 -1
  286. package/lib/typescript/commonjs/src/modules/bt-management/components/bluetooth-device-picker.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/src/modules/bt-management/components/device-picker-sheet.d.ts +25 -0
  289. package/lib/typescript/commonjs/src/modules/bt-management/components/device-picker-sheet.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  291. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  292. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
  294. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
  295. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  296. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  297. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  298. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  299. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  300. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  301. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  302. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  303. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  304. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  305. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  307. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  308. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +11 -1
  309. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  311. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  313. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  315. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  316. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts +11 -0
  318. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +5 -2
  320. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  321. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts +10 -0
  322. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  324. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  326. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  327. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  328. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  330. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +2 -0
  331. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -1
  332. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  333. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  335. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  336. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  337. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  338. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  339. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  340. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  342. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -0
  344. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +6 -0
  346. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/src/modules/bt-management/utils/bluetooth-permission-list.d.ts +4 -0
  348. package/lib/typescript/commonjs/src/modules/bt-management/utils/bluetooth-permission-list.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/modules/bt-management/utils/device-user.d.ts +6 -0
  350. package/lib/typescript/commonjs/src/modules/bt-management/utils/device-user.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/src/modules/bt-management/utils/kpa-to-mmhg.d.ts +4 -0
  352. package/lib/typescript/commonjs/src/modules/bt-management/utils/kpa-to-mmhg.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  354. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  355. package/lib/typescript/commonjs/src/modules/bt-management/utils/rr-interval.d.ts +4 -0
  356. package/lib/typescript/commonjs/src/modules/bt-management/utils/rr-interval.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/src/modules/bt-management/utils/temperature-type.d.ts +7 -0
  358. package/lib/typescript/commonjs/src/modules/bt-management/utils/temperature-type.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts +3 -0
  360. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  362. package/lib/typescript/commonjs/src/modules/next/background-sync/index.d.ts +10 -0
  363. package/lib/typescript/commonjs/src/modules/next/background-sync/index.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/src/modules/next/background-sync/offline-measurement-background-sync.d.ts +22 -0
  365. package/lib/typescript/commonjs/src/modules/next/background-sync/offline-measurement-background-sync.d.ts.map +1 -0
  366. package/lib/typescript/commonjs/src/modules/next/bluetooth/auto-connect.d.ts +10 -0
  367. package/lib/typescript/commonjs/src/modules/next/bluetooth/auto-connect.d.ts.map +1 -0
  368. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-errors.d.ts +4 -0
  369. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-errors.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +6 -0
  371. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -0
  372. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-scanner.d.ts +10 -0
  373. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-scanner.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/built-in-devices.d.ts +6 -0
  375. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/built-in-devices.d.ts.map +1 -0
  376. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts +8 -0
  377. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -0
  378. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts +25 -0
  379. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/src/modules/next/bluetooth/daily-total-day.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/src/modules/next/bluetooth/devices.d.ts +30 -0
  382. package/lib/typescript/commonjs/src/modules/next/bluetooth/devices.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +27 -20
  384. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  385. package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts +17 -0
  386. package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +34 -5
  388. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  389. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts +14 -5
  390. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts.map +1 -1
  391. package/lib/typescript/commonjs/src/modules/next/bluetooth/paired.d.ts +18 -0
  392. package/lib/typescript/commonjs/src/modules/next/bluetooth/paired.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/src/modules/next/bluetooth/permissions.d.ts +13 -0
  394. package/lib/typescript/commonjs/src/modules/next/bluetooth/permissions.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/bluetooth-device-picker.d.ts +35 -0
  396. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/bluetooth-device-picker.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/context.d.ts +30 -0
  398. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/context.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/hooks.d.ts +47 -0
  400. package/lib/typescript/commonjs/src/modules/next/bluetooth/react/hooks.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/create-bluetooth-runtime.d.ts +21 -0
  402. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/create-bluetooth-runtime.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/os-permissions.d.ts +5 -0
  404. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/os-permissions.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/ovok-sink.d.ts +6 -0
  406. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/src/modules/next/bluetooth/readings.d.ts +21 -0
  408. package/lib/typescript/commonjs/src/modules/next/bluetooth/readings.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/src/modules/next/bluetooth/result-policy.d.ts +9 -1
  410. package/lib/typescript/commonjs/src/modules/next/bluetooth/result-policy.d.ts.map +1 -1
  411. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts +87 -0
  412. package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/src/modules/next/bluetooth/scan-loop.d.ts +23 -0
  414. package/lib/typescript/commonjs/src/modules/next/bluetooth/scan-loop.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/src/modules/next/bluetooth/sig-profiles.d.ts.map +1 -1
  416. package/lib/typescript/commonjs/src/modules/next/bluetooth/sink.d.ts +20 -0
  417. package/lib/typescript/commonjs/src/modules/next/bluetooth/sink.d.ts.map +1 -0
  418. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +72 -0
  419. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -0
  420. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts +6 -0
  421. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -0
  422. package/lib/typescript/commonjs/src/modules/next/bluetooth/store.d.ts +16 -0
  423. package/lib/typescript/commonjs/src/modules/next/bluetooth/store.d.ts.map +1 -0
  424. package/lib/typescript/commonjs/src/modules/next/bluetooth/transport.d.ts +31 -0
  425. package/lib/typescript/commonjs/src/modules/next/bluetooth/transport.d.ts.map +1 -0
  426. package/lib/typescript/commonjs/src/modules/next/data-sync/index.d.ts +9 -0
  427. package/lib/typescript/commonjs/src/modules/next/data-sync/index.d.ts.map +1 -0
  428. package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  429. package/lib/typescript/module/src/modules/bt-management/components/android-bluetooth-foreground-service.d.ts.map +1 -1
  430. package/lib/typescript/module/src/modules/bt-management/components/bluetooth-device-picker.d.ts +1 -1
  431. package/lib/typescript/module/src/modules/bt-management/components/bluetooth-device-picker.d.ts.map +1 -1
  432. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  433. package/lib/typescript/module/src/modules/bt-management/components/device-picker-sheet.d.ts +25 -0
  434. package/lib/typescript/module/src/modules/bt-management/components/device-picker-sheet.d.ts.map +1 -0
  435. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  436. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  437. package/lib/typescript/module/src/modules/bt-management/hooks/use-bluetooth-permission.d.ts.map +1 -1
  438. package/lib/typescript/module/src/modules/bt-management/hooks/use-measurements.d.ts.map +1 -1
  439. package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
  440. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  441. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  442. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  443. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  444. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  445. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  446. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  447. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  448. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  449. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  450. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  451. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  452. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  453. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +11 -1
  454. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  455. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  456. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  457. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  458. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  459. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  460. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  461. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.d.ts.map +1 -1
  462. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts +11 -0
  463. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts.map +1 -0
  464. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +5 -2
  465. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  466. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts +10 -0
  467. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts.map +1 -0
  468. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  469. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  470. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  471. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  472. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  473. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  474. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  475. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +2 -0
  476. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -1
  477. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  478. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  479. package/lib/typescript/module/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  480. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  481. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  482. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  483. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  484. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  485. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  486. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  487. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  488. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -0
  489. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  490. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +6 -0
  491. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  492. package/lib/typescript/module/src/modules/bt-management/utils/bluetooth-permission-list.d.ts +4 -0
  493. package/lib/typescript/module/src/modules/bt-management/utils/bluetooth-permission-list.d.ts.map +1 -0
  494. package/lib/typescript/module/src/modules/bt-management/utils/device-user.d.ts +6 -0
  495. package/lib/typescript/module/src/modules/bt-management/utils/device-user.d.ts.map +1 -0
  496. package/lib/typescript/module/src/modules/bt-management/utils/kpa-to-mmhg.d.ts +4 -0
  497. package/lib/typescript/module/src/modules/bt-management/utils/kpa-to-mmhg.d.ts.map +1 -0
  498. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  499. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  500. package/lib/typescript/module/src/modules/bt-management/utils/rr-interval.d.ts +4 -0
  501. package/lib/typescript/module/src/modules/bt-management/utils/rr-interval.d.ts.map +1 -0
  502. package/lib/typescript/module/src/modules/bt-management/utils/temperature-type.d.ts +7 -0
  503. package/lib/typescript/module/src/modules/bt-management/utils/temperature-type.d.ts.map +1 -0
  504. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts +3 -0
  505. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  506. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  507. package/lib/typescript/module/src/modules/next/background-sync/index.d.ts +10 -0
  508. package/lib/typescript/module/src/modules/next/background-sync/index.d.ts.map +1 -0
  509. package/lib/typescript/module/src/modules/next/background-sync/offline-measurement-background-sync.d.ts +22 -0
  510. package/lib/typescript/module/src/modules/next/background-sync/offline-measurement-background-sync.d.ts.map +1 -0
  511. package/lib/typescript/module/src/modules/next/bluetooth/auto-connect.d.ts +10 -0
  512. package/lib/typescript/module/src/modules/next/bluetooth/auto-connect.d.ts.map +1 -0
  513. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-errors.d.ts +4 -0
  514. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-errors.d.ts.map +1 -0
  515. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +6 -0
  516. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -0
  517. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-scanner.d.ts +10 -0
  518. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-scanner.d.ts.map +1 -0
  519. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/built-in-devices.d.ts +6 -0
  520. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/built-in-devices.d.ts.map +1 -0
  521. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts +8 -0
  522. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -0
  523. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts +25 -0
  524. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -0
  525. package/lib/typescript/module/src/modules/next/bluetooth/daily-total-day.d.ts.map +1 -0
  526. package/lib/typescript/module/src/modules/next/bluetooth/devices.d.ts +30 -0
  527. package/lib/typescript/module/src/modules/next/bluetooth/devices.d.ts.map +1 -0
  528. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +27 -20
  529. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  530. package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts +17 -0
  531. package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts.map +1 -0
  532. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +34 -5
  533. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  534. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts +14 -5
  535. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts.map +1 -1
  536. package/lib/typescript/module/src/modules/next/bluetooth/paired.d.ts +18 -0
  537. package/lib/typescript/module/src/modules/next/bluetooth/paired.d.ts.map +1 -0
  538. package/lib/typescript/module/src/modules/next/bluetooth/permissions.d.ts +13 -0
  539. package/lib/typescript/module/src/modules/next/bluetooth/permissions.d.ts.map +1 -0
  540. package/lib/typescript/module/src/modules/next/bluetooth/react/bluetooth-device-picker.d.ts +35 -0
  541. package/lib/typescript/module/src/modules/next/bluetooth/react/bluetooth-device-picker.d.ts.map +1 -0
  542. package/lib/typescript/module/src/modules/next/bluetooth/react/context.d.ts +30 -0
  543. package/lib/typescript/module/src/modules/next/bluetooth/react/context.d.ts.map +1 -0
  544. package/lib/typescript/module/src/modules/next/bluetooth/react/hooks.d.ts +47 -0
  545. package/lib/typescript/module/src/modules/next/bluetooth/react/hooks.d.ts.map +1 -0
  546. package/lib/typescript/module/src/modules/next/bluetooth/react-native/create-bluetooth-runtime.d.ts +21 -0
  547. package/lib/typescript/module/src/modules/next/bluetooth/react-native/create-bluetooth-runtime.d.ts.map +1 -0
  548. package/lib/typescript/module/src/modules/next/bluetooth/react-native/os-permissions.d.ts +5 -0
  549. package/lib/typescript/module/src/modules/next/bluetooth/react-native/os-permissions.d.ts.map +1 -0
  550. package/lib/typescript/module/src/modules/next/bluetooth/react-native/ovok-sink.d.ts +6 -0
  551. package/lib/typescript/module/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -0
  552. package/lib/typescript/module/src/modules/next/bluetooth/readings.d.ts +21 -0
  553. package/lib/typescript/module/src/modules/next/bluetooth/readings.d.ts.map +1 -0
  554. package/lib/typescript/module/src/modules/next/bluetooth/result-policy.d.ts +9 -1
  555. package/lib/typescript/module/src/modules/next/bluetooth/result-policy.d.ts.map +1 -1
  556. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts +87 -0
  557. package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts.map +1 -0
  558. package/lib/typescript/module/src/modules/next/bluetooth/scan-loop.d.ts +23 -0
  559. package/lib/typescript/module/src/modules/next/bluetooth/scan-loop.d.ts.map +1 -0
  560. package/lib/typescript/module/src/modules/next/bluetooth/sig-profiles.d.ts.map +1 -1
  561. package/lib/typescript/module/src/modules/next/bluetooth/sink.d.ts +20 -0
  562. package/lib/typescript/module/src/modules/next/bluetooth/sink.d.ts.map +1 -0
  563. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +72 -0
  564. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -0
  565. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts +6 -0
  566. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -0
  567. package/lib/typescript/module/src/modules/next/bluetooth/store.d.ts +16 -0
  568. package/lib/typescript/module/src/modules/next/bluetooth/store.d.ts.map +1 -0
  569. package/lib/typescript/module/src/modules/next/bluetooth/transport.d.ts +31 -0
  570. package/lib/typescript/module/src/modules/next/bluetooth/transport.d.ts.map +1 -0
  571. package/lib/typescript/module/src/modules/next/data-sync/index.d.ts +9 -0
  572. package/lib/typescript/module/src/modules/next/data-sync/index.d.ts.map +1 -0
  573. package/package.json +12 -2
  574. package/lib/commonjs/modules/bt-management/utils/daily-total-day.js.map +0 -1
  575. package/lib/commonjs/modules/next/bluetooth/drivers.js +0 -20
  576. package/lib/commonjs/modules/next/bluetooth/drivers.js.map +0 -1
  577. package/lib/commonjs/modules/next/bluetooth/legacy-driver.js +0 -55
  578. package/lib/commonjs/modules/next/bluetooth/legacy-driver.js.map +0 -1
  579. package/lib/module/modules/bt-management/utils/daily-total-day.js.map +0 -1
  580. package/lib/module/modules/next/bluetooth/drivers.js +0 -17
  581. package/lib/module/modules/next/bluetooth/drivers.js.map +0 -1
  582. package/lib/module/modules/next/bluetooth/legacy-driver.js +0 -51
  583. package/lib/module/modules/next/bluetooth/legacy-driver.js.map +0 -1
  584. package/lib/typescript/commonjs/src/modules/bt-management/utils/daily-total-day.d.ts.map +0 -1
  585. package/lib/typescript/commonjs/src/modules/next/bluetooth/drivers.d.ts +0 -7
  586. package/lib/typescript/commonjs/src/modules/next/bluetooth/drivers.d.ts.map +0 -1
  587. package/lib/typescript/commonjs/src/modules/next/bluetooth/legacy-driver.d.ts +0 -8
  588. package/lib/typescript/commonjs/src/modules/next/bluetooth/legacy-driver.d.ts.map +0 -1
  589. package/lib/typescript/module/src/modules/bt-management/utils/daily-total-day.d.ts.map +0 -1
  590. package/lib/typescript/module/src/modules/next/bluetooth/drivers.d.ts +0 -7
  591. package/lib/typescript/module/src/modules/next/bluetooth/drivers.d.ts.map +0 -1
  592. package/lib/typescript/module/src/modules/next/bluetooth/legacy-driver.d.ts +0 -8
  593. package/lib/typescript/module/src/modules/next/bluetooth/legacy-driver.d.ts.map +0 -1
  594. /package/lib/commonjs/modules/{bt-management/utils → next/bluetooth}/daily-total-day.js +0 -0
  595. /package/lib/module/modules/{bt-management/utils → next/bluetooth}/daily-total-day.js +0 -0
  596. /package/lib/typescript/commonjs/src/modules/{bt-management/utils → next/bluetooth}/daily-total-day.d.ts +0 -0
  597. /package/lib/typescript/module/src/modules/{bt-management/utils → next/bluetooth}/daily-total-day.d.ts +0 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.awaitNotificationsEnabled = void 0;
7
+ var _sentryLogger = require("../../../helpers/utils/sentry-logger.js");
8
+ var _bluetoothError = require("../../types/bluetooth-error.js");
9
+ var _base64ToHex = require("../../utils/base-64-to-hex.js");
10
+ var _wait = require("../../utils/wait.js");
11
+ /** Client Characteristic Configuration descriptor, where a device keeps whether notifications are on. */
12
+ const CCCD_UUID = "00002902-0000-1000-8000-00805f9b34fb";
13
+
14
+ /** Bit 0 enables notifications and bit 1 indications. */
15
+ const NOTIFICATIONS_OR_INDICATIONS = 0x03;
16
+ const CCCD_POLL_ATTEMPTS = 10;
17
+ const CCCD_POLL_INTERVAL_MS = 100;
18
+
19
+ /** For platforms that cannot read the descriptor, which is how long the write usually takes. */
20
+ const UNREADABLE_CCCD_SETTLE_MS = 300;
21
+
22
+ /** A characteristic whose notifications were just requested. */
23
+
24
+ const isEnabled = cccdValue => {
25
+ const [firstByte] = cccdValue ? (0, _base64ToHex.base64ToHex)(cccdValue) : [];
26
+ return (Number.parseInt(firstByte ?? "", 16) & NOTIFICATIONS_OR_INDICATIONS) !== 0;
27
+ };
28
+ const isNotificationsEnabled = async (device, {
29
+ serviceUuid,
30
+ characteristicUuid
31
+ }) => {
32
+ for (let attempt = 1;; attempt += 1) {
33
+ const descriptor = await device.readDescriptorForService(serviceUuid, characteristicUuid, CCCD_UUID);
34
+ if (isEnabled(descriptor.value)) {
35
+ return true;
36
+ }
37
+ if (attempt === CCCD_POLL_ATTEMPTS) {
38
+ return false;
39
+ }
40
+ await (0, _wait.wait)(CCCD_POLL_INTERVAL_MS);
41
+ }
42
+ };
43
+
44
+ /**
45
+ * Resolves once the device reports notifications on for every characteristic, because
46
+ * `monitorCharacteristicForService` returns before its descriptor write completes.
47
+ * A platform that cannot read the descriptor gets a fixed settle time instead.
48
+ */
49
+ const awaitNotificationsEnabled = async (device, characteristics) => {
50
+ if (characteristics.length === 0 || typeof device.readDescriptorForService !== "function") {
51
+ return;
52
+ }
53
+ try {
54
+ const enabled = await Promise.all(characteristics.map(characteristic => isNotificationsEnabled(device, characteristic)));
55
+ if (!enabled.every(Boolean)) {
56
+ (0, _sentryLogger.sentryLogger)("info", "DEVICE: Notifications not confirmed before the first command", {
57
+ characteristics: characteristics.length
58
+ });
59
+ }
60
+ } catch (error) {
61
+ (0, _sentryLogger.sentryLogger)("info", "DEVICE: Notification state unreadable, waiting a fixed time", {
62
+ errorCode: (0, _bluetoothError.toBluetoothError)(error).code
63
+ });
64
+ await (0, _wait.wait)(UNREADABLE_CCCD_SETTLE_MS);
65
+ }
66
+ };
67
+ exports.awaitNotificationsEnabled = awaitNotificationsEnabled;
68
+ //# sourceMappingURL=bt-notification-readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sentryLogger","require","_bluetoothError","_base64ToHex","_wait","CCCD_UUID","NOTIFICATIONS_OR_INDICATIONS","CCCD_POLL_ATTEMPTS","CCCD_POLL_INTERVAL_MS","UNREADABLE_CCCD_SETTLE_MS","isEnabled","cccdValue","firstByte","base64ToHex","Number","parseInt","isNotificationsEnabled","device","serviceUuid","characteristicUuid","attempt","descriptor","readDescriptorForService","value","wait","awaitNotificationsEnabled","characteristics","length","enabled","Promise","all","map","characteristic","every","Boolean","sentryLogger","error","errorCode","toBluetoothError","code","exports"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-notification-readiness.ts"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA;AACA,MAAMI,SAAS,GAAG,sCAAsC;;AAExD;AACA,MAAMC,4BAA4B,GAAG,IAAI;AAEzC,MAAMC,kBAAkB,GAAG,EAAE;AAC7B,MAAMC,qBAAqB,GAAG,GAAG;;AAEjC;AACA,MAAMC,yBAAyB,GAAG,GAAG;;AAErC;;AAMA,MAAMC,SAAS,GAAIC,SAAoC,IAAc;EACnE,MAAM,CAACC,SAAS,CAAC,GAAGD,SAAS,GAAG,IAAAE,wBAAW,EAACF,SAAS,CAAC,GAAG,EAAE;EAE3D,OAAO,CAACG,MAAM,CAACC,QAAQ,CAACH,SAAS,IAAI,EAAE,EAAE,EAAE,CAAC,GAAGN,4BAA4B,MAAM,CAAC;AACpF,CAAC;AAED,MAAMU,sBAAsB,GAAG,MAAAA,CAC7BC,MAAc,EACd;EAAEC,WAAW;EAAEC;AAA4C,CAAC,KACvC;EACrB,KAAK,IAAIC,OAAO,GAAG,CAAC,GAAIA,OAAO,IAAI,CAAC,EAAE;IACpC,MAAMC,UAAU,GAAG,MAAMJ,MAAM,CAACK,wBAAwB,CACtDJ,WAAW,EACXC,kBAAkB,EAClBd,SACF,CAAC;IAED,IAAIK,SAAS,CAACW,UAAU,CAACE,KAAK,CAAC,EAAE;MAC/B,OAAO,IAAI;IACb;IAEA,IAAIH,OAAO,KAAKb,kBAAkB,EAAE;MAClC,OAAO,KAAK;IACd;IAEA,MAAM,IAAAiB,UAAI,EAAChB,qBAAqB,CAAC;EACnC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMiB,yBAAyB,GAAG,MAAAA,CAChCR,MAAc,EACdS,eAAmD,KACjC;EAClB,IAAIA,eAAe,CAACC,MAAM,KAAK,CAAC,IAAI,OAAOV,MAAM,CAACK,wBAAwB,KAAK,UAAU,EAAE;IACzF;EACF;EAEA,IAAI;IACF,MAAMM,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC/BJ,eAAe,CAACK,GAAG,CAAEC,cAAc,IAAKhB,sBAAsB,CAACC,MAAM,EAAEe,cAAc,CAAC,CACxF,CAAC;IAED,IAAI,CAACJ,OAAO,CAACK,KAAK,CAACC,OAAO,CAAC,EAAE;MAC3B,IAAAC,0BAAY,EAAC,MAAM,EAAE,8DAA8D,EAAE;QACnFT,eAAe,EAAEA,eAAe,CAACC;MACnC,CAAC,CAAC;IACJ;EACF,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd,IAAAD,0BAAY,EAAC,MAAM,EAAE,6DAA6D,EAAE;MAClFE,SAAS,EAAE,IAAAC,gCAAgB,EAACF,KAAK,CAAC,CAACG;IACrC,CAAC,CAAC;IACF,MAAM,IAAAf,UAAI,EAACf,yBAAyB,CAAC;EACvC;AACF,CAAC;AAAC+B,OAAA,CAAAf,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.runOnce = exports.isPairingRequired = exports.BTPairingRetry = void 0;
7
+ var _sentryLogger = require("../../../helpers/utils/sentry-logger.js");
8
+ var _bluetoothError = require("../../types/bluetooth-error.js");
9
+ var _wait = require("../../utils/wait.js");
10
+ /** How long the user has to finish the system pairing before the step is given up. */
11
+ const PAIRING_WINDOW_MS = 30_000;
12
+
13
+ /** ble-plx cannot report the bond state, so the step itself is tried again at this interval. */
14
+ const PAIRING_RETRY_INTERVAL_MS = 3_000;
15
+
16
+ /** Runs `operation`; when the device needs pairing for it, runs it again once the user has paired. */
17
+
18
+ const isPairingRequired = error => (0, _bluetoothError.toBluetoothError)(error).code === _bluetoothError.BluetoothErrorCode.PAIRING_REQUIRED;
19
+ exports.isPairingRequired = isPairingRequired;
20
+ const runOnce = operation => operation();
21
+
22
+ /**
23
+ * Keeps the link while the system pairing (raised by the encrypted access itself) runs,
24
+ * then retries the step that needed it. After a wait ran out, later steps fail at once.
25
+ */
26
+ exports.runOnce = runOnce;
27
+ class BTPairingRetry {
28
+ abandoned = false;
29
+ constructor(device, onPairingRequired) {
30
+ this.device = device;
31
+ this.onPairingRequired = onPairingRequired;
32
+ }
33
+ run = async operation => {
34
+ try {
35
+ return await operation();
36
+ } catch (error) {
37
+ if (this.abandoned || !isPairingRequired(error)) {
38
+ throw error;
39
+ }
40
+ this.onPairingRequired();
41
+ return this.retryUntilPaired(operation, error);
42
+ }
43
+ };
44
+ retryUntilPaired = async (operation, firstError) => {
45
+ const deadline = Date.now() + PAIRING_WINDOW_MS;
46
+ let lastError = firstError;
47
+ while (Date.now() < deadline) {
48
+ await (0, _wait.wait)(PAIRING_RETRY_INTERVAL_MS);
49
+ if (!(await this.stillConnected())) {
50
+ break;
51
+ }
52
+ try {
53
+ return await operation();
54
+ } catch (error) {
55
+ if (!isPairingRequired(error)) {
56
+ throw error;
57
+ }
58
+ lastError = error;
59
+ }
60
+ }
61
+ this.abandoned = true;
62
+ (0, _sentryLogger.sentryLogger)("info", "DEVICE: Pairing did not finish, giving up the step", {
63
+ errorCode: _bluetoothError.BluetoothErrorCode.PAIRING_REQUIRED
64
+ });
65
+ throw lastError;
66
+ };
67
+ stillConnected = () => this.device.isConnected().catch(() => false);
68
+ }
69
+ exports.BTPairingRetry = BTPairingRetry;
70
+ //# sourceMappingURL=bt-pairing-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sentryLogger","require","_bluetoothError","_wait","PAIRING_WINDOW_MS","PAIRING_RETRY_INTERVAL_MS","isPairingRequired","error","toBluetoothError","code","BluetoothErrorCode","PAIRING_REQUIRED","exports","runOnce","operation","BTPairingRetry","abandoned","constructor","device","onPairingRequired","run","retryUntilPaired","firstError","deadline","Date","now","lastError","wait","stillConnected","sentryLogger","errorCode","isConnected","catch"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-pairing-retry.ts"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA;AACA,MAAMG,iBAAiB,GAAG,MAAM;;AAEhC;AACA,MAAMC,yBAAyB,GAAG,KAAK;;AAEvC;;AAGA,MAAMC,iBAAiB,GAAIC,KAAc,IACvC,IAAAC,gCAAgB,EAACD,KAAK,CAAC,CAACE,IAAI,KAAKC,kCAAkB,CAACC,gBAAgB;AAACC,OAAA,CAAAN,iBAAA,GAAAA,iBAAA;AAEvE,MAAMO,OAAqB,GAAIC,SAAS,IAAKA,SAAS,CAAC,CAAC;;AAExD;AACA;AACA;AACA;AAHAF,OAAA,CAAAC,OAAA,GAAAA,OAAA;AAIA,MAAME,cAAc,CAAC;EACXC,SAAS,GAAG,KAAK;EAElBC,WAAWA,CACCC,MAAc,EACdC,iBAA6B,EAC9C;IAAA,KAFiBD,MAAc,GAAdA,MAAc;IAAA,KACdC,iBAA6B,GAA7BA,iBAA6B;EAC7C;EAEIC,GAAG,GAAiB,MAAON,SAAS,IAAK;IAC9C,IAAI;MACF,OAAO,MAAMA,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC,OAAOP,KAAK,EAAE;MACd,IAAI,IAAI,CAACS,SAAS,IAAI,CAACV,iBAAiB,CAACC,KAAK,CAAC,EAAE;QAC/C,MAAMA,KAAK;MACb;MAEA,IAAI,CAACY,iBAAiB,CAAC,CAAC;MAExB,OAAO,IAAI,CAACE,gBAAgB,CAACP,SAAS,EAAEP,KAAK,CAAC;IAChD;EACF,CAAC;EAEOc,gBAAgB,GAAG,MAAAA,CACzBP,SAA2B,EAC3BQ,UAAmB,KACJ;IACf,MAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGrB,iBAAiB;IAC/C,IAAIsB,SAAS,GAAGJ,UAAU;IAE1B,OAAOE,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,QAAQ,EAAE;MAC5B,MAAM,IAAAI,UAAI,EAACtB,yBAAyB,CAAC;MAErC,IAAI,EAAE,MAAM,IAAI,CAACuB,cAAc,CAAC,CAAC,CAAC,EAAE;QAClC;MACF;MAEA,IAAI;QACF,OAAO,MAAMd,SAAS,CAAC,CAAC;MAC1B,CAAC,CAAC,OAAOP,KAAK,EAAE;QACd,IAAI,CAACD,iBAAiB,CAACC,KAAK,CAAC,EAAE;UAC7B,MAAMA,KAAK;QACb;QAEAmB,SAAS,GAAGnB,KAAK;MACnB;IACF;IAEA,IAAI,CAACS,SAAS,GAAG,IAAI;IACrB,IAAAa,0BAAY,EAAC,MAAM,EAAE,oDAAoD,EAAE;MACzEC,SAAS,EAAEpB,kCAAkB,CAACC;IAChC,CAAC,CAAC;IAEF,MAAMe,SAAS;EACjB,CAAC;EAEOE,cAAc,GAAGA,CAAA,KACvB,IAAI,CAACV,MAAM,CAACa,WAAW,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,KAAK,CAAC;AAChD;AAACpB,OAAA,CAAAG,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -49,16 +49,30 @@ class CustomDevice extends _btManagedDevice.BTManagedDevice {
49
49
  this.frameReader = definition.frameReader;
50
50
  this.stuckDataTimeout = definition.stuckDataTimeout;
51
51
  this.reportsBondedEvent = definition.reportsBondedEvent === true;
52
+ this.syncsCurrentTime = definition.clockSync === "unknown";
52
53
  if (definition.preferredMtu !== undefined) {
53
54
  this.preferredMtu = definition.preferredMtu;
54
55
  }
55
56
  this.declareLepuProtocol(definition, params.clockSync);
56
57
  this.declareTmbProtocol(definition, params.clockSync);
58
+ this.declareSequencerFactory(definition, params);
57
59
  definition.frames.forEach((frame, uuid) => {
58
60
  this.validators.set(uuid, (0, _createFrameValidator.createFrameValidator)(frame));
59
61
  });
60
62
  }
61
63
 
64
+ /** Gives a declaration that computes its commands at connect time the context it needs to do so. */
65
+ declareSequencerFactory(definition, params) {
66
+ const create = definition.createCommandSequencer;
67
+ if (!create) {
68
+ return;
69
+ }
70
+ this.createCommandSequencer = () => create({
71
+ deviceId: this.device.id,
72
+ recordCursorStorage: params.recordCursorStorage
73
+ });
74
+ }
75
+
62
76
  /** Gives a TMB declaration its length-prefixed reader and history command sequence. */
63
77
  declareTmbProtocol(definition, clockSync) {
64
78
  const tmb = definition.tmb;
@@ -1 +1 @@
1
- {"version":3,"names":["_next","require","_caseType","_createFrameValidator","_parseMeasurement","_rejectCustomReading","_bp2Files","_btManagedDevice","_lepuCommandBuilder","_lepuEcgTransfer","_lepuFrameReader","_tmbCommandSequencer","_tmbFrameReader","_viatomBp3Files","_viatomEcgFiles","_customLepuSequencer","CustomDevice","BTManagedDevice","reportedHistoryIds","Set","validators","Map","sessionAggregates","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","selectLepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","preferredMtu","declareLepuProtocol","declareTmbProtocol","frames","forEach","frame","set","createFrameValidator","tmb","TmbFrameReader","createCommandSequencer","TmbCommandSequencer","protocol","LepuFrameReader","startBytes","fileTransfer","clear","LepuEcgTransferSequencer","characteristicUuid","builder","LepuCommandBuilder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","afterTransfer","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","createLepuSequencer","file","decoded","decodeViatomEcgRecording","content","samples","length","onResult","measurementTypeKey","MeasurementTypeKey","ecg","caseType","CaseType","RESULT","diagramPoints","duration","recordedAt","recordedAtFromViatomFileName","recordingId","decodeBP2File","reportHistoryOnce","decodeViatomBp3File","has","add","info","recordLepuIdentity","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","policyFor","key","existing","readingFields","fieldNames","recordOffset","decorate","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","parseMeasurement","discard","reportMeasurement","discardedReadingError","parsedFields","rejectCustomReading","find","message","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_next","require","_caseType","_createFrameValidator","_parseMeasurement","_rejectCustomReading","_bp2Files","_btManagedDevice","_lepuCommandBuilder","_lepuEcgTransfer","_lepuFrameReader","_tmbCommandSequencer","_tmbFrameReader","_viatomBp3Files","_viatomEcgFiles","_customLepuSequencer","CustomDevice","BTManagedDevice","reportedHistoryIds","Set","validators","Map","sessionAggregates","constructor","device","params","definition","oneReadingPerConnection","frameHandler","createFrameHandler","sessionPolicy","deviceData","clockSync","deliveredFileNames","deliveredEcgFileNames","selectedLepu","lepu","selectLepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","frameReader","stuckDataTimeout","reportsBondedEvent","syncsCurrentTime","preferredMtu","declareLepuProtocol","declareTmbProtocol","declareSequencerFactory","frames","forEach","frame","set","createFrameValidator","create","createCommandSequencer","deviceId","id","recordCursorStorage","tmb","TmbFrameReader","TmbCommandSequencer","protocol","LepuFrameReader","startBytes","fileTransfer","clear","LepuEcgTransferSequencer","characteristicUuid","builder","LepuCommandBuilder","rejectEncryptionAtBytes","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","reportViatomBp2File","reportViatomBp3File","skipFiles","acceptFile","name","ecgFileDecoder","test","pollCommand","pollIntervalMs","afterTransfer","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","createLepuSequencer","file","decoded","decodeViatomEcgRecording","content","samples","length","onResult","measurementTypeKey","MeasurementTypeKey","ecg","caseType","CaseType","RESULT","diagramPoints","duration","recordedAt","recordedAtFromViatomFileName","recordingId","decodeBP2File","reportHistoryOnce","decodeViatomBp3File","has","add","info","recordLepuIdentity","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","parsingCase","requiresStream","isMeasuring","OTHER","handleFrame","parsedData","handlerOnly","captureSessionSample","STREAM","shouldReportDependentResult","reportFrame","error","_data","handleSuccessResult","successResult","collectedValues","emit","reading","handleMeasurementEnd","policy","aggregates","values","sessionStartedAt","aggregate","count","minSamples","summary","sample","Object","fromEntries","sums","entries","map","sessionAverage","decorateReading","value","decimals","fields","Math","trunc","Number","toFixed","measurements","frameRecordedAt","Date","measurement","createMeasurement","rejection","measurementRejection","policyFor","key","existing","readingFields","fieldNames","recordOffset","decorate","repeated","repeatedRecords","report","records","floor","from","recordBytes","record","parseMeasurement","discard","reportMeasurement","discardedReadingError","parsedFields","rejectCustomReading","find","message","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.bloodPressureStatusFromFrame = void 0;
7
- const byteAt = (frame, index, offset) => {
8
- const value = Number.parseInt(frame[index + offset] ?? "", 16);
9
- return Number.isInteger(value) && value >= 0 && value <= 0xff ? value : undefined;
10
- };
7
+ var _standardGattFrame = require("./standard-gatt.frame.js");
11
8
  const bloodPressureStatusFromFrame = (frame, recordOffset = 0) => {
12
- const flags = byteAt(frame, 0, recordOffset);
9
+ const flags = (0, _standardGattFrame.byteAt)(frame, 0, recordOffset);
13
10
  if (flags === undefined || (flags & 0x10) === 0) {
14
11
  return undefined;
15
12
  }
@@ -23,8 +20,8 @@ const bloodPressureStatusFromFrame = (frame, recordOffset = 0) => {
23
20
  if ((flags & 0x08) !== 0) {
24
21
  cursor += 1;
25
22
  }
26
- const statusLow = byteAt(frame, cursor, recordOffset);
27
- const statusHigh = byteAt(frame, cursor + 1, recordOffset);
23
+ const statusLow = (0, _standardGattFrame.byteAt)(frame, cursor, recordOffset);
24
+ const statusHigh = (0, _standardGattFrame.byteAt)(frame, cursor + 1, recordOffset);
28
25
  return statusLow !== undefined && statusHigh !== undefined ? statusLow | statusHigh << 8 : undefined;
29
26
  };
30
27
  exports.bloodPressureStatusFromFrame = bloodPressureStatusFromFrame;
@@ -1 +1 @@
1
- {"version":3,"names":["byteAt","frame","index","offset","value","Number","parseInt","isInteger","undefined","bloodPressureStatusFromFrame","recordOffset","flags","cursor","statusLow","statusHigh","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.ts"],"mappings":";;;;;;AAAA,MAAMA,MAAM,GAAGA,CACbC,KAAwB,EACxBC,KAAa,EACbC,MAAc,KACS;EACvB,MAAMC,KAAK,GAAGC,MAAM,CAACC,QAAQ,CAACL,KAAK,CAACC,KAAK,GAAGC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EAE9D,OAAOE,MAAM,CAACE,SAAS,CAACH,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,IAAI,GACzDA,KAAK,GACLI,SAAS;AACf,CAAC;AAED,MAAMC,4BAA4B,GAAGA,CACnCR,KAAwB,EACxBS,YAAY,GAAG,CAAC,KACO;EACvB,MAAMC,KAAK,GAAGX,MAAM,CAACC,KAAK,EAAE,CAAC,EAAES,YAAY,CAAC;EAE5C,IAAIC,KAAK,KAAKH,SAAS,IAAI,CAACG,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IAC/C,OAAOH,SAAS;EAClB;EAEA,IAAII,MAAM,GAAG,CAAC;EAEd,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,MAAMC,SAAS,GAAGb,MAAM,CAACC,KAAK,EAAEW,MAAM,EAAEF,YAAY,CAAC;EACrD,MAAMI,UAAU,GAAGd,MAAM,CAACC,KAAK,EAAEW,MAAM,GAAG,CAAC,EAAEF,YAAY,CAAC;EAE1D,OAAOG,SAAS,KAAKL,SAAS,IAAIM,UAAU,KAAKN,SAAS,GACtDK,SAAS,GAAIC,UAAU,IAAI,CAAE,GAC7BN,SAAS;AACf,CAAC;AAACO,OAAA,CAAAN,4BAAA,GAAAA,4BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_standardGattFrame","require","bloodPressureStatusFromFrame","frame","recordOffset","flags","byteAt","undefined","cursor","statusLow","statusHigh","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.ts"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,MAAMC,4BAA4B,GAAGA,CACnCC,KAAwB,EACxBC,YAAY,GAAG,CAAC,KACO;EACvB,MAAMC,KAAK,GAAG,IAAAC,yBAAM,EAACH,KAAK,EAAE,CAAC,EAAEC,YAAY,CAAC;EAE5C,IAAIC,KAAK,KAAKE,SAAS,IAAI,CAACF,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IAC/C,OAAOE,SAAS;EAClB;EAEA,IAAIC,MAAM,GAAG,CAAC;EAEd,IAAI,CAACH,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBG,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACH,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBG,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACH,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBG,MAAM,IAAI,CAAC;EACb;EAEA,MAAMC,SAAS,GAAG,IAAAH,yBAAM,EAACH,KAAK,EAAEK,MAAM,EAAEJ,YAAY,CAAC;EACrD,MAAMM,UAAU,GAAG,IAAAJ,yBAAM,EAACH,KAAK,EAAEK,MAAM,GAAG,CAAC,EAAEJ,YAAY,CAAC;EAE1D,OAAOK,SAAS,KAAKF,SAAS,IAAIG,UAAU,KAAKH,SAAS,GACtDE,SAAS,GAAIC,UAAU,IAAI,CAAE,GAC7BH,SAAS;AACf,CAAC;AAACI,OAAA,CAAAT,4BAAA,GAAAA,4BAAA","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.decorateWeightReading = exports.decorateThermometerReading = exports.decoratePulseOximeterReading = exports.decorateHeartRateReading = void 0;
7
+ var _deviceUser = require("../../../utils/device-user.js");
8
+ var _rrInterval = require("../../../utils/rr-interval.js");
9
+ var _temperatureType = require("../../../utils/temperature-type.js");
10
+ var _standardGattFrame = require("./standard-gatt.frame.js");
11
+ const TEMPERATURE_TIMESTAMP = 0x02;
12
+ const TEMPERATURE_TYPE = 0x04;
13
+ const TEMPERATURE_FIELDS_INDEX = 5;
14
+ const WEIGHT_TIMESTAMP = 0x02;
15
+ const WEIGHT_USER = 0x04;
16
+ const WEIGHT_FIELDS_INDEX = 3;
17
+
18
+ /** The weight a scale sends when the measurement failed. */
19
+ const WEIGHT_UNSUCCESSFUL = 0xffff;
20
+ const PULSE_OXIMETER_TIMESTAMP = 0x01;
21
+ const PULSE_OXIMETER_FIELDS_INDEX = 5;
22
+ const HEART_RATE_UINT16 = 0x01;
23
+ const HEART_RATE_ENERGY_EXPENDED = 0x08;
24
+ const HEART_RATE_RR_INTERVALS = 0x10;
25
+ const HEART_RATE_FLAGS_BYTES = 1;
26
+ const UINT8_BYTES = 1;
27
+ const UINT16_BYTES = 2;
28
+
29
+ /** Where the optional fields start once the fixed ones and the timestamp are accounted for. */
30
+ const afterTimestamp = (flags, timestampFlag, fieldsIndex) => flags & timestampFlag ? fieldsIndex + _standardGattFrame.DATE_TIME_BYTES : fieldsIndex;
31
+ const littleEndian16 = (frame, index, offset) => {
32
+ const low = (0, _standardGattFrame.byteAt)(frame, index, offset);
33
+ const high = (0, _standardGattFrame.byteAt)(frame, index + 1, offset);
34
+ return low === undefined || high === undefined ? undefined : low | high << 8;
35
+ };
36
+
37
+ /** Temperature Measurement 0x2A1C: the device's own timestamp and where on the body it measured. */
38
+ const decorateThermometerReading = (reading, frame, recordOffset = 0) => {
39
+ const flags = frame && (0, _standardGattFrame.byteAt)(frame, 0, recordOffset);
40
+ if (!frame || flags === undefined) {
41
+ return reading;
42
+ }
43
+ const typeCode = flags & TEMPERATURE_TYPE ? (0, _standardGattFrame.byteAt)(frame, afterTimestamp(flags, TEMPERATURE_TIMESTAMP, TEMPERATURE_FIELDS_INDEX), recordOffset) : undefined;
44
+ return (0, _standardGattFrame.withDefinedMetadata)(reading, {
45
+ recordedAt: flags & TEMPERATURE_TIMESTAMP ? (0, _standardGattFrame.dateTimeAt)(frame, TEMPERATURE_FIELDS_INDEX, recordOffset) : undefined,
46
+ temperatureType: typeCode === undefined ? undefined : (0, _temperatureType.temperatureTypeFromCode)(typeCode)
47
+ });
48
+ };
49
+
50
+ /** Weight Measurement 0x2A9D: withholds an unsuccessful weight, adds the timestamp and the device user. */
51
+ exports.decorateThermometerReading = decorateThermometerReading;
52
+ const decorateWeightReading = (reading, frame, recordOffset = 0) => {
53
+ const flags = frame && (0, _standardGattFrame.byteAt)(frame, 0, recordOffset);
54
+ if (!frame || flags === undefined) {
55
+ return reading;
56
+ }
57
+ if (littleEndian16(frame, 1, recordOffset) === WEIGHT_UNSUCCESSFUL) {
58
+ return null;
59
+ }
60
+ const userId = flags & WEIGHT_USER ? (0, _standardGattFrame.byteAt)(frame, afterTimestamp(flags, WEIGHT_TIMESTAMP, WEIGHT_FIELDS_INDEX), recordOffset) : undefined;
61
+ return (0, _standardGattFrame.withDefinedMetadata)(reading, {
62
+ recordedAt: flags & WEIGHT_TIMESTAMP ? (0, _standardGattFrame.dateTimeAt)(frame, WEIGHT_FIELDS_INDEX, recordOffset) : undefined,
63
+ memorySlot: userId === undefined ? undefined : (0, _deviceUser.memorySlotForDeviceUser)(userId)
64
+ });
65
+ };
66
+
67
+ /** PLX Spot-Check Measurement 0x2A5E: the device's own timestamp. */
68
+ exports.decorateWeightReading = decorateWeightReading;
69
+ const decoratePulseOximeterReading = (reading, frame, recordOffset = 0) => {
70
+ const flags = frame && (0, _standardGattFrame.byteAt)(frame, 0, recordOffset);
71
+ if (!frame || flags === undefined || !(flags & PULSE_OXIMETER_TIMESTAMP)) {
72
+ return reading;
73
+ }
74
+ return (0, _standardGattFrame.withDefinedMetadata)(reading, {
75
+ recordedAt: (0, _standardGattFrame.dateTimeAt)(frame, PULSE_OXIMETER_FIELDS_INDEX, recordOffset)
76
+ });
77
+ };
78
+
79
+ /** The RR intervals a Heart Rate Measurement carries, in milliseconds and in the order sent. */
80
+ exports.decoratePulseOximeterReading = decoratePulseOximeterReading;
81
+ const rrIntervalsFromHeartRateFrame = (frame, flags, recordOffset) => {
82
+ const rrIntervals = [];
83
+ let index = HEART_RATE_FLAGS_BYTES + (flags & HEART_RATE_UINT16 ? UINT16_BYTES : UINT8_BYTES) + (flags & HEART_RATE_ENERGY_EXPENDED ? UINT16_BYTES : 0);
84
+ let counts = littleEndian16(frame, index, recordOffset);
85
+ while (counts !== undefined) {
86
+ rrIntervals.push((0, _rrInterval.rrIntervalMilliseconds)(counts));
87
+ index += UINT16_BYTES;
88
+ counts = littleEndian16(frame, index, recordOffset);
89
+ }
90
+ return rrIntervals;
91
+ };
92
+
93
+ /** Heart Rate Measurement 0x2A37: the RR intervals, when the strap sends them. */
94
+ const decorateHeartRateReading = (reading, frame, recordOffset = 0) => {
95
+ const flags = frame && (0, _standardGattFrame.byteAt)(frame, 0, recordOffset);
96
+ if (!frame || flags === undefined || !(flags & HEART_RATE_RR_INTERVALS)) {
97
+ return reading;
98
+ }
99
+ const rrIntervals = rrIntervalsFromHeartRateFrame(frame, flags, recordOffset);
100
+ return rrIntervals.length > 0 ? {
101
+ ...reading,
102
+ rrIntervals
103
+ } : reading;
104
+ };
105
+ exports.decorateHeartRateReading = decorateHeartRateReading;
106
+ //# sourceMappingURL=standard-gatt.decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_deviceUser","require","_rrInterval","_temperatureType","_standardGattFrame","TEMPERATURE_TIMESTAMP","TEMPERATURE_TYPE","TEMPERATURE_FIELDS_INDEX","WEIGHT_TIMESTAMP","WEIGHT_USER","WEIGHT_FIELDS_INDEX","WEIGHT_UNSUCCESSFUL","PULSE_OXIMETER_TIMESTAMP","PULSE_OXIMETER_FIELDS_INDEX","HEART_RATE_UINT16","HEART_RATE_ENERGY_EXPENDED","HEART_RATE_RR_INTERVALS","HEART_RATE_FLAGS_BYTES","UINT8_BYTES","UINT16_BYTES","afterTimestamp","flags","timestampFlag","fieldsIndex","DATE_TIME_BYTES","littleEndian16","frame","index","offset","low","byteAt","high","undefined","decorateThermometerReading","reading","recordOffset","typeCode","withDefinedMetadata","recordedAt","dateTimeAt","temperatureType","temperatureTypeFromCode","exports","decorateWeightReading","userId","memorySlot","memorySlotForDeviceUser","decoratePulseOximeterReading","rrIntervalsFromHeartRateFrame","rrIntervals","counts","push","rrIntervalMilliseconds","decorateHeartRateReading","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.ts"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,8 @@ Object.defineProperty(exports, "standardGlucoseDevice", {
13
13
  exports.standardWeightScaleDevice = exports.standardThermometerDevice = exports.standardPulseOximeterDevice = exports.standardHeartRateDevice = void 0;
14
14
  var _next = require("@ovok/core/next");
15
15
  var _bytesToHex = require("../../../utils/bytes-to-hex.js");
16
+ var _kpaToMmhg = require("../../../utils/kpa-to-mmhg.js");
17
+ var _standardGattDecorators = require("./standard-gatt.decorators.js");
16
18
  var _standardGattGlucose = require("./standard-gatt.glucose.js");
17
19
  var _standardGattProfile = require("./standard-gatt.profile.js");
18
20
  /* eslint-disable max-lines */
@@ -28,12 +30,20 @@ var _standardGattProfile = require("./standard-gatt.profile.js");
28
30
  * every vendor names its hardware differently. A product declares the profile and supplies
29
31
  * the name its own hardware advertises.
30
32
  *
31
- * Values are little-endian, as the specification requires. Only the layouts using each
32
- * catalog's canonical unit are declared: a device reporting kPa, Fahrenheit or pounds needs
33
- * a conversion a declaration cannot express, and leaving those flag values undeclared means
34
- * such a device yields no reading rather than one that is quietly wrong.
33
+ * Values are little-endian, as the specification requires. A device may report in kPa,
34
+ * Fahrenheit or pounds; each field is then declared with the scale and offset that convert
35
+ * it to the catalog's canonical unit.
35
36
  */
36
37
 
38
+ const BLOOD_PRESSURE_KPA = 0x01;
39
+ const BLOOD_PRESSURE_TIMESTAMP = 0x02;
40
+ const BLOOD_PRESSURE_PULSE = 0x04;
41
+
42
+ /** Bits 0-4 are defined: kPa, timestamp, pulse, user id and measurement status. */
43
+ const BLOOD_PRESSURE_FLAGS = Array.from({
44
+ length: 32
45
+ }, (_, flags) => flags);
46
+
37
47
  /**
38
48
  * Blood Pressure Service 0x1810, Blood Pressure Measurement 0x2A35.
39
49
  *
@@ -43,8 +53,8 @@ var _standardGattProfile = require("./standard-gatt.profile.js");
43
53
  * declares the length it needs. A device that reports no pulse still decodes, because the
44
54
  * flags value it sends selects a case that never looks for one.
45
55
  *
46
- * Bit 3 (user id, 0x08) and bit 4 (measurement status, 0x10) follow the pulse, so neither
47
- * moves it. Each shape is declared again with those bits set. Bit 0 (kPa) stays undeclared.
56
+ * Bit 3 (user id) and bit 4 (measurement status) follow the pulse, so neither moves it.
57
+ * Bit 0 says the pressures are in kPa, which is converted to whole mmHg.
48
58
  */
49
59
  /** Bit 2 set, bit 1 clear: the pulse follows the mean pressure. */
50
60
  const pulseAfterMeanPressure = {
@@ -57,35 +67,25 @@ const pulseAfterTimestamp = {
57
67
  fields: [(0, _standardGattProfile.littleEndian)("heartRate", [14, 15], "bpm", "sfloat")],
58
68
  minLengthBytes: 16
59
69
  };
70
+ const pressureInKpa = (name, byteIndexes) => ({
71
+ ...(0, _standardGattProfile.littleEndian)(name, byteIndexes, "mmHg", "sfloat"),
72
+ scale: _kpaToMmhg.KPA_TO_MMHG,
73
+ decimals: 0
74
+ });
75
+ const pressuresInKpa = [pressureInKpa("systolic", [1, 2]), pressureInKpa("diastolic", [3, 4])];
60
76
 
61
77
  /** Declares a Bluetooth SIG blood pressure profile device. */
62
- const standardBloodPressureDevice = params => (0, _standardGattProfile.declareProfile)({
63
- ...params,
64
- decorateReading: (reading, frame, recordOffset) => {
65
- const decorated = (0, _standardGattProfile.decorateBloodPressureReading)(reading, frame, recordOffset);
66
- if (!decorated) {
67
- return null;
68
- }
69
- return params.decorateReading ? params.decorateReading(decorated, frame, recordOffset) : decorated;
70
- }
71
- }, {
78
+ const standardBloodPressureDevice = params => (0, _standardGattProfile.declareProfile)(params, {
72
79
  service: "1810",
73
80
  characteristic: "2a35",
74
81
  minLengthBytes: 7,
75
82
  measurementTypeKey: _next.MeasurementTypeKey.bloodPressure,
76
- /** mmHg. 0x08, 0x10 and 0x18 repeat each shape with bit 3, bit 4, or both. */
77
- selectors: ["00", "08", "10", "18", "02", "0a", "12", "1a", "04", "0c", "14", "1c", "06", "0e", "16", "1e"],
83
+ decorateReading: _standardGattProfile.decorateBloodPressureReading,
84
+ selectors: BLOOD_PRESSURE_FLAGS.map(_bytesToHex.byteToHex),
85
+ /** mmHg; the kPa shapes override it in `fieldsBySelector`. */
78
86
  fields: [(0, _standardGattProfile.littleEndian)("systolic", [1, 2], "mmHg", "sfloat"), (0, _standardGattProfile.littleEndian)("diastolic", [3, 4], "mmHg", "sfloat")],
79
- optionalFields: {
80
- "04": pulseAfterMeanPressure,
81
- "0c": pulseAfterMeanPressure,
82
- "14": pulseAfterMeanPressure,
83
- "1c": pulseAfterMeanPressure,
84
- "06": pulseAfterTimestamp,
85
- "0e": pulseAfterTimestamp,
86
- "16": pulseAfterTimestamp,
87
- "1e": pulseAfterTimestamp
88
- }
87
+ fieldsBySelector: Object.fromEntries(BLOOD_PRESSURE_FLAGS.filter(flags => flags & BLOOD_PRESSURE_KPA).map(flags => [(0, _bytesToHex.byteToHex)(flags), pressuresInKpa])),
88
+ optionalFields: Object.fromEntries(BLOOD_PRESSURE_FLAGS.filter(flags => flags & BLOOD_PRESSURE_PULSE).map(flags => [(0, _bytesToHex.byteToHex)(flags), flags & BLOOD_PRESSURE_TIMESTAMP ? pulseAfterTimestamp : pulseAfterMeanPressure]))
89
89
  });
90
90
 
91
91
  /** Health Thermometer Service 0x1809, Temperature Measurement 0x2A1C. */
@@ -95,6 +95,7 @@ const standardThermometerDevice = params => (0, _standardGattProfile.declareProf
95
95
  characteristic: "2a1c",
96
96
  minLengthBytes: 5,
97
97
  measurementTypeKey: _next.MeasurementTypeKey.temperature,
98
+ decorateReading: _standardGattDecorators.decorateThermometerReading,
98
99
  /** All combinations of Fahrenheit, timestamp and temperature type flags. */
99
100
  selectors: ["00", "02", "04", "06", "01", "03", "05", "07"],
100
101
  fields: [(0, _standardGattProfile.littleEndian)("bodyTemp", [1, 2, 3, 4], "Cel", "float")],
@@ -134,12 +135,14 @@ const WEIGHT_KG_PER_COUNT = 0.005;
134
135
  * Weight Scale Service 0x181D, Weight Measurement 0x2A9D.
135
136
  *
136
137
  * The reading is a scaled integer rather than a float, so the resolution is applied here.
138
+ * A weight of 0xFFFF means the measurement failed, so it yields no reading.
137
139
  */
138
140
  const standardWeightScaleDevice = params => (0, _standardGattProfile.declareProfile)(params, {
139
141
  service: "181d",
140
142
  characteristic: "2a9d",
141
143
  minLengthBytes: 3,
142
144
  measurementTypeKey: _next.MeasurementTypeKey.bodyWeight,
145
+ decorateReading: _standardGattDecorators.decorateWeightReading,
143
146
  /** Unit, timestamp, user-id and BMI/height flags may all follow the value. */
144
147
  selectors: Array.from({
145
148
  length: 16
@@ -165,7 +168,8 @@ const standardWeightScaleDevice = params => (0, _standardGattProfile.declareProf
165
168
  * Pulse Oximeter Service 0x1822, PLX Spot-Check Measurement 0x2A5E.
166
169
  *
167
170
  * Saturation and pulse rate are both required by the catalog, which matches the
168
- * specification: a spot-check measurement always carries both.
171
+ * specification: a spot-check measurement always carries both, at bytes 1-4 whatever the
172
+ * flags say, so every flags value selects the same fields. The optional ones follow them.
169
173
  */
170
174
  exports.standardWeightScaleDevice = standardWeightScaleDevice;
171
175
  const standardPulseOximeterDevice = params => (0, _standardGattProfile.declareProfile)(params, {
@@ -173,7 +177,8 @@ const standardPulseOximeterDevice = params => (0, _standardGattProfile.declarePr
173
177
  characteristic: "2a5e",
174
178
  minLengthBytes: 5,
175
179
  measurementTypeKey: _next.MeasurementTypeKey.bloodOxygenPulseRate,
176
- selectors: ["00"],
180
+ decorateReading: _standardGattDecorators.decoratePulseOximeterReading,
181
+ selectors: ["*"],
177
182
  fields: [(0, _standardGattProfile.littleEndian)("bloodOxygen", [1, 2], "%", "sfloat"), (0, _standardGattProfile.littleEndian)("pulseRate", [3, 4], "bpm", "sfloat")]
178
183
  });
179
184
 
@@ -190,13 +195,15 @@ const UINT16_HEART_RATE_FLAGS = HEART_RATE_FLAGS.filter(flags => (flags & 0x01)
190
195
  * Heart Rate Service 0x180D, Heart Rate Measurement 0x2A37.
191
196
  *
192
197
  * Both heart-rate layouts are declared. A contact-not-detected frame is idle, so it cannot
193
- * become a false reading while the strap is off the body.
198
+ * become a false reading while the strap is off the body. RR intervals, a list of any
199
+ * length, are read from the frame by the decorator and reported as `rrIntervals`.
194
200
  */
195
201
  const standardHeartRateDevice = params => (0, _standardGattProfile.declareProfile)(params, {
196
202
  service: "180d",
197
203
  characteristic: "2a37",
198
204
  minLengthBytes: 2,
199
205
  measurementTypeKey: _next.MeasurementTypeKey.heartRate,
206
+ decorateReading: _standardGattDecorators.decorateHeartRateReading,
200
207
  selectors: HEART_RATE_FLAGS.map(_bytesToHex.byteToHex),
201
208
  fields: [{
202
209
  name: "heartRate",