@ovok/native 1.16.1-dev.2135 → 1.16.1-dev.2141

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 (239) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
  4. package/lib/commonjs/modules/bt-management/index.js +12 -0
  5. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/services/bt-manager.js +50 -0
  7. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js +3 -0
  9. package/lib/commonjs/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  10. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  11. package/lib/commonjs/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  12. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  13. package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  14. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js +59 -0
  15. package/lib/commonjs/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  16. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js +18 -37
  17. package/lib/commonjs/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  18. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +12 -1
  19. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  20. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js +68 -0
  21. package/lib/commonjs/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  22. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js +70 -0
  23. package/lib/commonjs/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  24. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  25. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  26. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +77 -0
  27. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  28. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +49 -0
  29. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  30. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +89 -0
  31. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  32. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +35 -42
  33. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  34. package/lib/commonjs/modules/bt-management/services/record-cursor.js +70 -0
  35. package/lib/commonjs/modules/bt-management/services/record-cursor.js.map +1 -0
  36. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js +8 -0
  37. package/lib/commonjs/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  38. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js +2 -0
  39. package/lib/commonjs/modules/bt-management/types/glucose-record-details.js.map +1 -0
  40. package/lib/commonjs/modules/bt-management/utils/wait.js +10 -0
  41. package/lib/commonjs/modules/bt-management/utils/wait.js.map +1 -0
  42. package/lib/commonjs/modules/next/background-sync/index.js +17 -0
  43. package/lib/commonjs/modules/next/background-sync/index.js.map +1 -0
  44. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js +41 -4
  45. package/lib/commonjs/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -1
  46. package/lib/commonjs/modules/next/bluetooth/connections.js +4 -0
  47. package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
  48. package/lib/commonjs/modules/next/bluetooth/driver.js +6 -0
  49. package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
  50. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js +12 -1
  51. package/lib/commonjs/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -1
  52. package/lib/commonjs/modules/next/bluetooth/readings.js +2 -1
  53. package/lib/commonjs/modules/next/bluetooth/readings.js.map +1 -1
  54. package/lib/commonjs/modules/next/data-sync/index.js +17 -0
  55. package/lib/commonjs/modules/next/data-sync/index.js.map +1 -0
  56. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +1 -0
  57. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  58. package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
  59. package/lib/module/modules/bt-management/index.js +1 -0
  60. package/lib/module/modules/bt-management/index.js.map +1 -1
  61. package/lib/module/modules/bt-management/services/bt-manager.js +50 -0
  62. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  63. package/lib/module/modules/bt-management/services/custom/define-custom-device.js +3 -0
  64. package/lib/module/modules/bt-management/services/custom/define-custom-device.js.map +1 -1
  65. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js +4 -2
  66. package/lib/module/modules/bt-management/services/devices/bt-command-writer.js.map +1 -1
  67. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +97 -28
  68. package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
  69. package/lib/module/modules/bt-management/services/devices/bt-current-time.js +55 -0
  70. package/lib/module/modules/bt-management/services/devices/bt-current-time.js.map +1 -0
  71. package/lib/module/modules/bt-management/services/devices/bt-device-information.js +18 -37
  72. package/lib/module/modules/bt-management/services/devices/bt-device-information.js.map +1 -1
  73. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +13 -2
  74. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  75. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js +65 -0
  76. package/lib/module/modules/bt-management/services/devices/bt-notification-readiness.js.map +1 -0
  77. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js +65 -0
  78. package/lib/module/modules/bt-management/services/devices/bt-pairing-retry.js.map +1 -0
  79. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +14 -0
  80. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  81. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js +72 -0
  82. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.js.map +1 -0
  83. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js +40 -0
  84. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.js.map +1 -0
  85. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js +85 -0
  86. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.js.map +1 -0
  87. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js +25 -32
  88. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.js.map +1 -1
  89. package/lib/module/modules/bt-management/services/record-cursor.js +66 -0
  90. package/lib/module/modules/bt-management/services/record-cursor.js.map +1 -0
  91. package/lib/module/modules/bt-management/testing/fake-ble-manager.js +8 -0
  92. package/lib/module/modules/bt-management/testing/fake-ble-manager.js.map +1 -1
  93. package/lib/module/modules/bt-management/types/custom-device-definition.js +4 -0
  94. package/lib/module/modules/bt-management/types/custom-device-definition.js.map +1 -1
  95. package/lib/module/modules/bt-management/types/glucose-record-details.js +2 -0
  96. package/lib/module/modules/bt-management/types/glucose-record-details.js.map +1 -0
  97. package/lib/module/modules/bt-management/utils/wait.js +5 -0
  98. package/lib/module/modules/bt-management/utils/wait.js.map +1 -0
  99. package/lib/module/modules/next/background-sync/index.js +11 -0
  100. package/lib/module/modules/next/background-sync/index.js.map +1 -0
  101. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js +41 -4
  102. package/lib/module/modules/next/bluetooth/ble-plx/ble-link.js.map +1 -1
  103. package/lib/module/modules/next/bluetooth/connections.js +4 -0
  104. package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
  105. package/lib/module/modules/next/bluetooth/driver.js +6 -0
  106. package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
  107. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js +12 -1
  108. package/lib/module/modules/next/bluetooth/react-native/ovok-sink.js.map +1 -1
  109. package/lib/module/modules/next/bluetooth/readings.js +2 -1
  110. package/lib/module/modules/next/bluetooth/readings.js.map +1 -1
  111. package/lib/module/modules/next/data-sync/index.js +11 -0
  112. package/lib/module/modules/next/data-sync/index.js.map +1 -0
  113. package/lib/typescript/commonjs/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  114. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  116. package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +1 -0
  118. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  120. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  122. package/lib/typescript/commonjs/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  124. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  126. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  128. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  130. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
  132. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  134. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  136. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  138. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  140. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  142. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  144. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  147. package/lib/typescript/commonjs/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  150. package/lib/typescript/commonjs/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  152. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  154. package/lib/typescript/commonjs/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  156. package/lib/typescript/commonjs/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts +3 -0
  158. package/lib/typescript/commonjs/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  160. package/lib/typescript/commonjs/src/modules/next/background-sync/index.d.ts +9 -0
  161. package/lib/typescript/commonjs/src/modules/next/background-sync/index.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +1 -1
  163. package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +6 -1
  166. package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  167. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
  168. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts +12 -1
  170. package/lib/typescript/commonjs/src/modules/next/bluetooth/link.d.ts.map +1 -1
  171. package/lib/typescript/commonjs/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -1
  172. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +4 -1
  173. package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/src/modules/next/data-sync/index.d.ts +9 -0
  175. package/lib/typescript/commonjs/src/modules/next/data-sync/index.d.ts.map +1 -0
  176. package/lib/typescript/module/src/modules/auth/hooks/use-sign-in.d.ts +1 -1
  177. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  178. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
  179. package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
  180. package/lib/typescript/module/src/modules/bt-management/index.d.ts +1 -0
  181. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  182. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +20 -0
  183. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  184. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts +2 -1
  185. package/lib/typescript/module/src/modules/bt-management/services/custom/define-custom-device.d.ts.map +1 -1
  186. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts +3 -1
  187. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-command-writer.d.ts.map +1 -1
  188. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +14 -1
  189. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
  190. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts +11 -0
  191. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-current-time.d.ts.map +1 -0
  192. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts +2 -1
  193. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-device-information.d.ts.map +1 -1
  194. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +9 -1
  195. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  196. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts +15 -0
  197. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-notification-readiness.d.ts.map +1 -0
  198. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts +21 -0
  199. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-pairing-retry.d.ts.map +1 -0
  200. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +2 -0
  201. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  202. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts +7 -0
  203. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-details.d.ts.map +1 -0
  204. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts +16 -0
  205. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-frame.d.ts.map +1 -0
  206. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts +8 -0
  207. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose-racp.d.ts.map +1 -0
  208. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.d.ts.map +1 -1
  209. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts +21 -0
  210. package/lib/typescript/module/src/modules/bt-management/services/record-cursor.d.ts.map +1 -0
  211. package/lib/typescript/module/src/modules/bt-management/testing/fake-ble-manager.d.ts.map +1 -1
  212. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts +6 -2
  213. package/lib/typescript/module/src/modules/bt-management/types/command-sequencer.d.ts.map +1 -1
  214. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +3 -0
  215. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  216. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts +14 -1
  217. package/lib/typescript/module/src/modules/bt-management/types/custom-device-definition.d.ts.map +1 -1
  218. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts +33 -0
  219. package/lib/typescript/module/src/modules/bt-management/types/glucose-record-details.d.ts.map +1 -0
  220. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts +3 -0
  221. package/lib/typescript/module/src/modules/bt-management/utils/wait.d.ts.map +1 -0
  222. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +1 -1
  223. package/lib/typescript/module/src/modules/next/background-sync/index.d.ts +9 -0
  224. package/lib/typescript/module/src/modules/next/background-sync/index.d.ts.map +1 -0
  225. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts +1 -1
  226. package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/ble-link.d.ts.map +1 -1
  227. package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
  228. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +6 -1
  229. package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
  230. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
  231. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  232. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts +12 -1
  233. package/lib/typescript/module/src/modules/next/bluetooth/link.d.ts.map +1 -1
  234. package/lib/typescript/module/src/modules/next/bluetooth/react-native/ovok-sink.d.ts.map +1 -1
  235. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +4 -1
  236. package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
  237. package/lib/typescript/module/src/modules/next/data-sync/index.d.ts +9 -0
  238. package/lib/typescript/module/src/modules/next/data-sync/index.d.ts.map +1 -0
  239. package/package.json +1 -1
@@ -6,18 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.standardGlucoseDevice = exports.recordedAtFromGlucoseFrame = void 0;
7
7
  var _next = require("@ovok/core/next");
8
8
  var _bytesToHex = require("../../../utils/bytes-to-hex.js");
9
- var _sigUuid = require("../../../utils/sig-uuid.js");
10
9
  var _defineCustomDevice = require("../../custom/define-custom-device.js");
10
+ var _standardGattGlucoseDetails = require("./standard-gatt.glucose-details.js");
11
+ var _standardGattGlucoseFrame = require("./standard-gatt.glucose-frame.js");
12
+ var _standardGattGlucoseRacp = require("./standard-gatt.glucose-racp.js");
11
13
  var _standardGattProfile = require("./standard-gatt.profile.js");
12
14
  /**
13
15
  * Glucose Service 0x1808: Glucose Measurement 0x2A18 and the Record Access Control Point
14
16
  * 0x2A52.
15
17
  *
16
18
  * A glucose meter does not push its readings. The collector enables indications on the
17
- * control point, writes "report all stored records" (`01 01`) once, and the meter answers
18
- * with one Glucose Measurement per stored record followed by a control-point response
19
- * (`06 00 01 xx`). Every record is reported; the SDK's stable result identity keeps a
20
- * record seen on an earlier connection from becoming a second reading.
19
+ * control point and writes a request for the stored records: those after the newest one it
20
+ * has read (`01 03 01 nn nn`) when the manager has a `recordCursorStorage`, otherwise all of
21
+ * them (`01 01`). The meter answers with one Glucose Measurement per record followed by a
22
+ * control-point response (`06 00 01 xx`). The SDK's stable result identity, which covers the
23
+ * record's sequence number, keeps a record seen twice from becoming a second reading.
21
24
  *
22
25
  * Glucose Measurement layout: flags, sequence number (2), base time (7), time offset (2,
23
26
  * flag bit 0), concentration SFLOAT (2) and type/sample-location (1) (bit 1), sensor status
@@ -27,41 +30,33 @@ const MG_PER_DL_PER_KG_PER_L = 100_000;
27
30
 
28
31
  /** One mol/L of glucose (180.16 g/mol) is 18,016 mg/dL. */
29
32
  const MG_PER_DL_PER_MOL_PER_L = 18_016;
30
- const FLAG_TIME_OFFSET = 0x01;
31
- const FLAG_CONCENTRATION = 0x02;
32
- const FLAG_MOL_PER_L = 0x04;
33
- const BASE_TIME_INDEX = 3;
34
- const TIME_OFFSET_INDEX = 10;
33
+
34
+ /** One decimal reads a mmol/L result (0.1 mmol/L is 1.8 mg/dL) back as the meter showed it. */
35
+ const MG_PER_DL_DECIMALS = 1;
35
36
 
36
37
  /** Type 0xA and sample location 0x4 both mean a control-solution test, not a patient sample. */
37
38
  const CONTROL_SOLUTION_TYPE = 0x0a;
38
39
  const CONTROL_SOLUTION_LOCATION = 0x04;
39
- const REPORT_ALL_STORED_RECORDS = "0101";
40
- const concentrationIndex = flags => flags & FLAG_TIME_OFFSET ? TIME_OFFSET_INDEX + 2 : TIME_OFFSET_INDEX;
41
40
 
42
41
  /** Bits 5-7 are reserved; a meter that sets one still sends a readable record. */
43
42
  const ALL_FLAGS = Array.from({
44
43
  length: 256
45
44
  }, (_, flags) => flags);
46
45
  const glucoseField = flags => {
47
- const index = concentrationIndex(flags);
46
+ const index = (0, _standardGattGlucoseFrame.concentrationIndex)(flags);
48
47
  return {
49
48
  ...(0, _standardGattProfile.littleEndian)("bloodGlucose", [index, index + 1], "mg/dL", "sfloat"),
50
- scale: flags & FLAG_MOL_PER_L ? MG_PER_DL_PER_MOL_PER_L : MG_PER_DL_PER_KG_PER_L,
51
- decimals: 0
49
+ scale: flags & _standardGattGlucoseFrame.FLAG_MOL_PER_L ? MG_PER_DL_PER_MOL_PER_L : MG_PER_DL_PER_KG_PER_L,
50
+ decimals: MG_PER_DL_DECIMALS
52
51
  };
53
52
  };
54
- const byte = (frame, index) => {
55
- const value = Number.parseInt(frame[index] ?? "", 16);
56
- return Number.isInteger(value) ? value : undefined;
57
- };
58
53
 
59
54
  /** The record's own time: the base time plus its offset in minutes, read as phone-local. */
60
55
  const recordedAtFromGlucoseFrame = frame => {
61
56
  const parts = Array.from({
62
57
  length: 7
63
- }, (_, i) => byte(frame, BASE_TIME_INDEX + i));
64
- const flags = byte(frame, 0);
58
+ }, (_, i) => (0, _standardGattGlucoseFrame.byte)(frame, _standardGattGlucoseFrame.BASE_TIME_INDEX + i));
59
+ const flags = (0, _standardGattGlucoseFrame.byte)(frame, 0);
65
60
  if (flags === undefined || parts.some(part => part === undefined)) {
66
61
  return undefined;
67
62
  }
@@ -73,9 +68,9 @@ const recordedAtFromGlucoseFrame = frame => {
73
68
  if (recordedAt.getFullYear() !== year || recordedAt.getMonth() !== month - 1 || recordedAt.getDate() !== day || recordedAt.getHours() !== hour || recordedAt.getMinutes() !== minute || recordedAt.getSeconds() !== second) {
74
69
  return undefined;
75
70
  }
76
- if (flags & FLAG_TIME_OFFSET) {
77
- const low = byte(frame, TIME_OFFSET_INDEX);
78
- const high = byte(frame, TIME_OFFSET_INDEX + 1);
71
+ if (flags & _standardGattGlucoseFrame.FLAG_TIME_OFFSET) {
72
+ const low = (0, _standardGattGlucoseFrame.byte)(frame, _standardGattGlucoseFrame.TIME_OFFSET_INDEX);
73
+ const high = (0, _standardGattGlucoseFrame.byte)(frame, _standardGattGlucoseFrame.TIME_OFFSET_INDEX + 1);
79
74
  if (low === undefined || high === undefined) {
80
75
  return undefined;
81
76
  }
@@ -86,8 +81,7 @@ const recordedAtFromGlucoseFrame = frame => {
86
81
  };
87
82
  exports.recordedAtFromGlucoseFrame = recordedAtFromGlucoseFrame;
88
83
  const isControlSolution = frame => {
89
- const flags = byte(frame, 0) ?? 0;
90
- const typeAndLocation = byte(frame, concentrationIndex(flags) + 2);
84
+ const typeAndLocation = (0, _standardGattGlucoseFrame.typeAndLocationFromGlucoseFrame)(frame);
91
85
  return typeAndLocation !== undefined && ((typeAndLocation & 0x0f) === CONTROL_SOLUTION_TYPE || typeAndLocation >> 4 === CONTROL_SOLUTION_LOCATION);
92
86
  };
93
87
 
@@ -99,26 +93,26 @@ const standardGlucoseDevice = params => (0, _defineCustomDevice.defineCustomDevi
99
93
  oneReadingPerConnection: params.oneReadingPerConnection,
100
94
  stuckDataTimeoutMs: params.stuckDataTimeoutMs ?? 60_000,
101
95
  services: [{
102
- uuid: (0, _sigUuid.sigUuid)("1808"),
96
+ uuid: _standardGattGlucoseRacp.GLUCOSE_SERVICE_UUID,
103
97
  monitor: [{
104
- uuid: (0, _sigUuid.sigUuid)("2a18"),
98
+ uuid: _standardGattGlucoseRacp.GLUCOSE_MEASUREMENT_UUID,
105
99
  frame: {
106
- minLengthBytes: TIME_OFFSET_INDEX
100
+ minLengthBytes: _standardGattGlucoseFrame.TIME_OFFSET_INDEX
107
101
  },
108
102
  caseSelectorBytes: [0],
109
- cases: ALL_FLAGS.map(flags => flags & FLAG_CONCENTRATION ? {
103
+ cases: ALL_FLAGS.map(flags => flags & _standardGattGlucoseFrame.FLAG_CONCENTRATION ? {
110
104
  selector: (0, _bytesToHex.byteToHex)(flags),
111
105
  kind: "result",
112
106
  measurementTypeKey: _next.MeasurementTypeKey.bloodGlucose,
113
107
  fields: [glucoseField(flags)],
114
- minLengthBytes: concentrationIndex(flags) + 3
108
+ minLengthBytes: (0, _standardGattGlucoseFrame.concentrationIndex)(flags) + 3
115
109
  } : {
116
110
  selector: (0, _bytesToHex.byteToHex)(flags),
117
111
  kind: "idle",
118
112
  description: "A record without a concentration"
119
113
  })
120
114
  }, {
121
- uuid: (0, _sigUuid.sigUuid)("2a52"),
115
+ uuid: _standardGattGlucoseRacp.RECORD_ACCESS_CONTROL_POINT_UUID,
122
116
  frame: {
123
117
  minLengthBytes: 2
124
118
  },
@@ -132,23 +126,22 @@ const standardGlucoseDevice = params => (0, _defineCustomDevice.defineCustomDevi
132
126
  kind: "idle",
133
127
  description: "Record access response"
134
128
  }]
135
- }],
136
- write: {
137
- uuid: (0, _sigUuid.sigUuid)("2a52"),
138
- commandHex: REPORT_ALL_STORED_RECORDS,
139
- when: "connect"
140
- }
129
+ }]
141
130
  }]
142
131
  }, {
132
+ createCommandSequencer: _standardGattGlucoseRacp.createGlucoseSequencer,
143
133
  decorateReading: (reading, frame, recordOffset) => {
144
- if (frame && isControlSolution(frame)) {
134
+ if (frame && (isControlSolution(frame) || (0, _standardGattGlucoseDetails.hasUnusableSensorStatus)(frame))) {
145
135
  return null;
146
136
  }
147
137
  const recordedAt = frame ? recordedAtFromGlucoseFrame(frame) : undefined;
148
- const decorated = recordedAt ? {
138
+ const decorated = {
149
139
  ...reading,
150
- recordedAt
151
- } : reading;
140
+ ...(frame && (0, _standardGattGlucoseDetails.glucoseRecordDetails)(frame)),
141
+ ...(recordedAt && {
142
+ recordedAt
143
+ })
144
+ };
152
145
  return params.decorateReading ? params.decorateReading(decorated, frame, recordOffset) : decorated;
153
146
  }
154
147
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_next","require","_bytesToHex","_sigUuid","_defineCustomDevice","_standardGattProfile","MG_PER_DL_PER_KG_PER_L","MG_PER_DL_PER_MOL_PER_L","FLAG_TIME_OFFSET","FLAG_CONCENTRATION","FLAG_MOL_PER_L","BASE_TIME_INDEX","TIME_OFFSET_INDEX","CONTROL_SOLUTION_TYPE","CONTROL_SOLUTION_LOCATION","REPORT_ALL_STORED_RECORDS","concentrationIndex","flags","ALL_FLAGS","Array","from","length","_","glucoseField","index","littleEndian","scale","decimals","byte","frame","value","Number","parseInt","isInteger","undefined","recordedAtFromGlucoseFrame","parts","i","some","part","yearLow","yearHigh","month","day","hour","minute","second","year","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","low","high","offsetMinutes","setMinutes","exports","isControlSolution","typeAndLocation","standardGlucoseDevice","params","defineCustomDevice","id","MeasurementTypeKey","bloodGlucose","nameMatch","matchByService","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","sigUuid","monitor","minLengthBytes","caseSelectorBytes","cases","map","selector","byteToHex","kind","measurementTypeKey","fields","description","write","commandHex","when","decorateReading","reading","recordOffset","decorated"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_next","require","_bytesToHex","_defineCustomDevice","_standardGattGlucoseDetails","_standardGattGlucoseFrame","_standardGattGlucoseRacp","_standardGattProfile","MG_PER_DL_PER_KG_PER_L","MG_PER_DL_PER_MOL_PER_L","MG_PER_DL_DECIMALS","CONTROL_SOLUTION_TYPE","CONTROL_SOLUTION_LOCATION","ALL_FLAGS","Array","from","length","_","flags","glucoseField","index","concentrationIndex","littleEndian","scale","FLAG_MOL_PER_L","decimals","recordedAtFromGlucoseFrame","frame","parts","i","byte","BASE_TIME_INDEX","undefined","some","part","yearLow","yearHigh","month","day","hour","minute","second","year","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","FLAG_TIME_OFFSET","low","TIME_OFFSET_INDEX","high","offsetMinutes","setMinutes","exports","isControlSolution","typeAndLocation","typeAndLocationFromGlucoseFrame","standardGlucoseDevice","params","defineCustomDevice","id","MeasurementTypeKey","bloodGlucose","nameMatch","matchByService","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","GLUCOSE_SERVICE_UUID","monitor","GLUCOSE_MEASUREMENT_UUID","minLengthBytes","caseSelectorBytes","cases","map","FLAG_CONCENTRATION","selector","byteToHex","kind","measurementTypeKey","fields","description","RECORD_ACCESS_CONTROL_POINT_UUID","createCommandSequencer","createGlucoseSequencer","decorateReading","reading","recordOffset","hasUnusableSensorStatus","decorated","glucoseRecordDetails"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.glucose.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RecordCursor = void 0;
7
+ var _sentryLogger = require("../../helpers/utils/sentry-logger.js");
8
+ var _bluetoothError = require("../types/bluetooth-error.js");
9
+ const parseCursor = stored => {
10
+ const parsed = Number.parseInt(stored ?? "", 10);
11
+ return Number.isSafeInteger(parsed) && parsed >= 0 ? parsed : undefined;
12
+ };
13
+
14
+ /**
15
+ * The number of the newest stored record read from one device, kept in `storage` so the next
16
+ * connection asks the device for newer records only. Without storage it forgets on disconnect.
17
+ */
18
+ class RecordCursor {
19
+ writing = false;
20
+ changedWhileWriting = false;
21
+ constructor(storage, key) {
22
+ this.storage = storage;
23
+ this.key = key;
24
+ }
25
+
26
+ /** What an earlier connection stored; nothing, an unreadable value or a failing store gives `undefined`. */
27
+ load = async () => {
28
+ try {
29
+ this.newest = parseCursor(await this.storage?.getItem(this.key));
30
+ } catch (error) {
31
+ (0, _sentryLogger.sentryLogger)("error", "RECORD_CURSOR: Could not read the stored cursor", {
32
+ errorCode: (0, _bluetoothError.toBluetoothError)(error).code
33
+ });
34
+ this.newest = undefined;
35
+ }
36
+ return this.newest;
37
+ };
38
+
39
+ /** Remembers a record number that is newer than any seen; writes to the store are coalesced. */
40
+ advance = recordNumber => {
41
+ if (this.newest !== undefined && recordNumber <= this.newest) {
42
+ return;
43
+ }
44
+ this.newest = recordNumber;
45
+ void this.persist();
46
+ };
47
+ persist = async () => {
48
+ if (this.writing) {
49
+ this.changedWhileWriting = true;
50
+ return;
51
+ }
52
+ this.writing = true;
53
+ do {
54
+ this.changedWhileWriting = false;
55
+ await this.store();
56
+ } while (this.changedWhileWriting);
57
+ this.writing = false;
58
+ };
59
+ store = async () => {
60
+ try {
61
+ await this.storage?.setItem(this.key, String(this.newest));
62
+ } catch (error) {
63
+ (0, _sentryLogger.sentryLogger)("error", "RECORD_CURSOR: Could not store the cursor", {
64
+ errorCode: (0, _bluetoothError.toBluetoothError)(error).code
65
+ });
66
+ }
67
+ };
68
+ }
69
+ exports.RecordCursor = RecordCursor;
70
+ //# sourceMappingURL=record-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sentryLogger","require","_bluetoothError","parseCursor","stored","parsed","Number","parseInt","isSafeInteger","undefined","RecordCursor","writing","changedWhileWriting","constructor","storage","key","load","newest","getItem","error","sentryLogger","errorCode","toBluetoothError","code","advance","recordNumber","persist","store","setItem","String","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/record-cursor.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAEA,MAAME,WAAW,GAAIC,MAAiC,IAAyB;EAC7E,MAAMC,MAAM,GAAGC,MAAM,CAACC,QAAQ,CAACH,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;EAEhD,OAAOE,MAAM,CAACE,aAAa,CAACH,MAAM,CAAC,IAAIA,MAAM,IAAI,CAAC,GAAGA,MAAM,GAAGI,SAAS;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,YAAY,CAAC;EAETC,OAAO,GAAG,KAAK;EACfC,mBAAmB,GAAG,KAAK;EAE5BC,WAAWA,CACCC,OAA0C,EAC1CC,GAAW,EAC5B;IAAA,KAFiBD,OAA0C,GAA1CA,OAA0C;IAAA,KAC1CC,GAAW,GAAXA,GAAW;EAC3B;;EAEH;EACOC,IAAI,GAAG,MAAAA,CAAA,KAAyC;IACrD,IAAI;MACF,IAAI,CAACC,MAAM,GAAGd,WAAW,CAAC,MAAM,IAAI,CAACW,OAAO,EAAEI,OAAO,CAAC,IAAI,CAACH,GAAG,CAAC,CAAC;IAClE,CAAC,CAAC,OAAOI,KAAK,EAAE;MACd,IAAAC,0BAAY,EAAC,OAAO,EAAE,iDAAiD,EAAE;QACvEC,SAAS,EAAE,IAAAC,gCAAgB,EAACH,KAAK,CAAC,CAACI;MACrC,CAAC,CAAC;MACF,IAAI,CAACN,MAAM,GAAGR,SAAS;IACzB;IAEA,OAAO,IAAI,CAACQ,MAAM;EACpB,CAAC;;EAED;EACOO,OAAO,GAAIC,YAAoB,IAAW;IAC/C,IAAI,IAAI,CAACR,MAAM,KAAKR,SAAS,IAAIgB,YAAY,IAAI,IAAI,CAACR,MAAM,EAAE;MAC5D;IACF;IAEA,IAAI,CAACA,MAAM,GAAGQ,YAAY;IAC1B,KAAK,IAAI,CAACC,OAAO,CAAC,CAAC;EACrB,CAAC;EAEOA,OAAO,GAAG,MAAAA,CAAA,KAA2B;IAC3C,IAAI,IAAI,CAACf,OAAO,EAAE;MAChB,IAAI,CAACC,mBAAmB,GAAG,IAAI;MAE/B;IACF;IAEA,IAAI,CAACD,OAAO,GAAG,IAAI;IAEnB,GAAG;MACD,IAAI,CAACC,mBAAmB,GAAG,KAAK;MAChC,MAAM,IAAI,CAACe,KAAK,CAAC,CAAC;IACpB,CAAC,QAAQ,IAAI,CAACf,mBAAmB;IAEjC,IAAI,CAACD,OAAO,GAAG,KAAK;EACtB,CAAC;EAEOgB,KAAK,GAAG,MAAAA,CAAA,KAA2B;IACzC,IAAI;MACF,MAAM,IAAI,CAACb,OAAO,EAAEc,OAAO,CAAC,IAAI,CAACb,GAAG,EAAEc,MAAM,CAAC,IAAI,CAACZ,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAOE,KAAK,EAAE;MACd,IAAAC,0BAAY,EAAC,OAAO,EAAE,2CAA2C,EAAE;QACjEC,SAAS,EAAE,IAAAC,gCAAgB,EAACH,KAAK,CAAC,CAACI;MACrC,CAAC,CAAC;IACJ;EACF,CAAC;AACH;AAACO,OAAA,CAAApB,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFakeBleManager = exports.createFakeBleDevice = void 0;
7
+ var _buffer = require("buffer");
7
8
  var _reactNativeBlePlx = require("react-native-ble-plx");
8
9
  /* eslint-disable import/group-exports */
9
10
 
@@ -16,6 +17,8 @@ var _reactNativeBlePlx = require("react-native-ble-plx");
16
17
  /** A deterministic BLE manager for hook and scan integration tests. No hardware is used. */
17
18
 
18
19
  const characteristicKey = (serviceUuid, characteristicUuid) => `${serviceUuid}/${characteristicUuid}`;
20
+ const NOTIFICATIONS_ENABLED = _buffer.Buffer.from([0x01, 0x00]).toString("base64");
21
+ const NOTIFICATIONS_DISABLED = _buffer.Buffer.from([0x00, 0x00]).toString("base64");
19
22
 
20
23
  /** Creates a GATT-capable fake device for connection and notification tests. */
21
24
  const createFakeBleDevice = ({
@@ -30,6 +33,7 @@ const createFakeBleDevice = ({
30
33
  let connected = false;
31
34
  let currentMtu = mtu;
32
35
  const values = new Map(Object.entries(characteristics));
36
+ const monitoredKeys = new Set();
33
37
  const disconnectedCallbacks = new Set();
34
38
  const notificationCallbacks = new Map();
35
39
  const fake = {
@@ -65,8 +69,12 @@ const createFakeBleDevice = ({
65
69
  readCharacteristicForService: async (serviceUuid, characteristicUuid) => ({
66
70
  value: values.get(characteristicKey(serviceUuid, characteristicUuid)) ?? null
67
71
  }),
72
+ readDescriptorForService: async (serviceUuid, characteristicUuid) => ({
73
+ value: monitoredKeys.has(characteristicKey(serviceUuid, characteristicUuid)) ? NOTIFICATIONS_ENABLED : NOTIFICATIONS_DISABLED
74
+ }),
68
75
  monitorCharacteristicForService: (serviceUuid, characteristicUuid, callback) => {
69
76
  const key = characteristicKey(serviceUuid, characteristicUuid);
77
+ monitoredKeys.add(key);
70
78
  const callbacks = notificationCallbacks.get(key) ?? new Set();
71
79
  callbacks.add(callback);
72
80
  notificationCallbacks.set(key, callbacks);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeBlePlx","require","characteristicKey","serviceUuid","characteristicUuid","createFakeBleDevice","id","name","localName","manufacturerData","serviceUUIDs","mtu","characteristics","connected","currentMtu","values","Map","Object","entries","disconnectedCallbacks","Set","notificationCallbacks","fake","isConnected","connect","cancelConnection","forEach","callback","discoverAllServicesAndCharacteristics","onDisconnected","add","remove","delete","requestMTU","requestedMtu","readCharacteristicForService","value","get","monitorCharacteristicForService","key","callbacks","set","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","device","emitCharacteristic","characteristic","uuid","disconnect","exports","createFakeBleManager","state","State","PoweredOn","devices","currentState","scanCallback","stateCallbacks","scannedServiceUUIDs","manager","onStateChange","emitCurrentState","startDeviceScan","_options","stopDeviceScan","undefined","createDevice","emitDevice","emitError","error","setState","nextState","getScannedServiceUUIDs"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/testing/fake-ble-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_buffer","require","_reactNativeBlePlx","characteristicKey","serviceUuid","characteristicUuid","NOTIFICATIONS_ENABLED","Buffer","from","toString","NOTIFICATIONS_DISABLED","createFakeBleDevice","id","name","localName","manufacturerData","serviceUUIDs","mtu","characteristics","connected","currentMtu","values","Map","Object","entries","monitoredKeys","Set","disconnectedCallbacks","notificationCallbacks","fake","isConnected","connect","cancelConnection","forEach","callback","discoverAllServicesAndCharacteristics","onDisconnected","add","remove","delete","requestMTU","requestedMtu","readCharacteristicForService","value","get","readDescriptorForService","has","monitorCharacteristicForService","key","callbacks","set","writeCharacteristicWithResponseForService","writeCharacteristicWithoutResponseForService","device","emitCharacteristic","characteristic","uuid","disconnect","exports","createFakeBleManager","state","State","PoweredOn","devices","currentState","scanCallback","stateCallbacks","scannedServiceUUIDs","manager","onStateChange","emitCurrentState","startDeviceScan","_options","stopDeviceScan","undefined","createDevice","emitDevice","emitError","error","setState","nextState","getScannedServiceUUIDs"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/testing/fake-ble-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=glucose-record-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/bt-management/types/glucose-record-details.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.wait = void 0;
7
+ /** Resolves after `milliseconds`. */
8
+ const wait = milliseconds => new Promise(resolve => setTimeout(resolve, milliseconds));
9
+ exports.wait = wait;
10
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["wait","milliseconds","Promise","resolve","setTimeout","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/wait.ts"],"mappings":";;;;;;AAAA;AACO,MAAMA,IAAI,GAAIC,YAAoB,IACvC,IAAIC,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,YAAY,CAAC,CAAC;AAACI,OAAA,CAAAL,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _index = require("../../background-sync/index.js");
7
+ Object.keys(_index).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _index[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _index[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_index","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sourceRoot":"../../../../../src","sources":["modules/next/background-sync/index.ts"],"mappings":";;;;;AAOA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.openBleLink = openBleLink;
7
+ var _btDeviceInformation = require("../../../bt-management/services/devices/bt-device-information.js");
8
+ var _btNotificationReadiness = require("../../../bt-management/services/devices/bt-notification-readiness.js");
9
+ var _btPairingRetry = require("../../../bt-management/services/devices/bt-pairing-retry.js");
7
10
  var _sentryLogger = require("../../../helpers/utils/sentry-logger.js");
8
11
  var _channel = require("../channel.js");
9
12
  var _bleErrors = require("./ble-errors.js");
@@ -54,13 +57,33 @@ async function connectWithRetries(device, signal) {
54
57
  }
55
58
  }
56
59
  }
60
+
61
+ /** Reads the standard Device Information strings; `undefined` when the device has none. */
62
+ async function readInformation(device, pairing) {
63
+ let information;
64
+ await (0, _btDeviceInformation.readDeviceInformation)(device, ({
65
+ manufacturerName,
66
+ model,
67
+ serialNumber
68
+ }) => {
69
+ information = {
70
+ manufacturerName,
71
+ model,
72
+ serialNumber
73
+ };
74
+ }, pairing.run);
75
+ return information;
76
+ }
57
77
  class BleLink {
58
78
  channels = new Set();
79
+ notificationsPending = new Set();
59
80
  ended = false;
60
81
  closeOnAbort = () => void this.close();
61
- constructor(device, signal) {
82
+ constructor(device, signal, pairing, deviceInformation) {
62
83
  this.device = device;
63
84
  this.signal = signal;
85
+ this.pairing = pairing;
86
+ this.deviceInformation = deviceInformation;
64
87
  this.disconnected = device.onDisconnected(() => this.endAll());
65
88
  signal.addEventListener("abort", this.closeOnAbort, {
66
89
  once: true
@@ -79,13 +102,15 @@ class BleLink {
79
102
  }
80
103
  });
81
104
  this.channels.add(channel);
105
+ this.awaitNotifications(service, characteristic);
82
106
  if (this.ended) {
83
107
  channel.end();
84
108
  }
85
109
  return channel;
86
110
  }
87
111
  async write(service, characteristic, bytes) {
88
- await this.device.writeCharacteristicWithResponseForService(service, characteristic, toBase64(bytes));
112
+ await Promise.all(this.notificationsPending);
113
+ await this.pairing.run(() => this.device.writeCharacteristicWithResponseForService(service, characteristic, toBase64(bytes)));
89
114
  }
90
115
  async close() {
91
116
  this.signal.removeEventListener("abort", this.closeOnAbort);
@@ -93,6 +118,15 @@ class BleLink {
93
118
  this.disconnected.remove();
94
119
  await this.device.cancelConnection().catch(() => undefined);
95
120
  }
121
+
122
+ /** A write waits for these, because a device may refuse a command until its notifications are on. */
123
+ awaitNotifications(serviceUuid, characteristicUuid) {
124
+ const enabled = (0, _btNotificationReadiness.awaitNotificationsEnabled)(this.device, [{
125
+ serviceUuid,
126
+ characteristicUuid
127
+ }]).finally(() => this.notificationsPending.delete(enabled));
128
+ this.notificationsPending.add(enabled);
129
+ }
96
130
  endOrFail(channel, error) {
97
131
  if (ENDS_THE_LINK.has(error.errorCode)) {
98
132
  channel.end();
@@ -106,13 +140,16 @@ class BleLink {
106
140
  }
107
141
  }
108
142
 
109
- /** Connects (retrying with backoff) and discovers services; aborting `signal` closes the link. */
143
+ /** Connects (retrying with backoff), discovers services and reads Device Information; aborting `signal` closes the link. */
110
144
  async function openBleLink(device, signal) {
111
145
  await connectWithRetries(device, signal).catch(error => {
112
146
  throw (0, _bleErrors.fromBleError)(error);
113
147
  });
148
+ const pairing = new _btPairingRetry.BTPairingRetry(device, () => (0, _sentryLogger.sentryLogger)("info", "BLUETOOTH: Waiting for the user to pair the device"));
149
+ let information;
114
150
  try {
115
151
  await device.discoverAllServicesAndCharacteristics();
152
+ information = await readInformation(device, pairing);
116
153
  if (signal.aborted) {
117
154
  throw abortReason(signal);
118
155
  }
@@ -120,6 +157,6 @@ async function openBleLink(device, signal) {
120
157
  await device.cancelConnection().catch(() => undefined);
121
158
  throw (0, _bleErrors.fromBleError)(error);
122
159
  }
123
- return new BleLink(device, signal);
160
+ return new BleLink(device, signal, pairing, information);
124
161
  }
125
162
  //# sourceMappingURL=ble-link.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_sentryLogger","require","_channel","_bleErrors","CONNECT_ATTEMPTS","FIRST_RETRY_DELAY_MS","MAX_RETRY_DELAY_MS","ENDS_THE_LINK","Set","toBytes","base64","Uint8Array","from","atob","char","charCodeAt","toBase64","bytes","btoa","String","fromCharCode","retryDelay","attempt","Math","min","abortReason","signal","reason","Error","wait","ms","Promise","resolve","reject","aborted","clearTimeout","timer","setTimeout","removeEventListener","addEventListener","once","connectWithRetries","device","isConnected","connect","error","sentryLogger","errorCode","fromBleError","code","attempts","BleLink","channels","ended","closeOnAbort","close","constructor","disconnected","onDisconnected","endAll","subscribe","service","characteristic","channel","Channel","subscription","remove","delete","monitorCharacteristicForService","value","endOrFail","push","add","end","write","writeCharacteristicWithResponseForService","cancelConnection","catch","undefined","has","fail","forEach","openBleLink","discoverAllServicesAndCharacteristics"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/ble-link.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_btDeviceInformation","require","_btNotificationReadiness","_btPairingRetry","_sentryLogger","_channel","_bleErrors","CONNECT_ATTEMPTS","FIRST_RETRY_DELAY_MS","MAX_RETRY_DELAY_MS","ENDS_THE_LINK","Set","toBytes","base64","Uint8Array","from","atob","char","charCodeAt","toBase64","bytes","btoa","String","fromCharCode","retryDelay","attempt","Math","min","abortReason","signal","reason","Error","wait","ms","Promise","resolve","reject","aborted","clearTimeout","timer","setTimeout","removeEventListener","addEventListener","once","connectWithRetries","device","isConnected","connect","error","sentryLogger","errorCode","fromBleError","code","attempts","readInformation","pairing","information","readDeviceInformation","manufacturerName","model","serialNumber","run","BleLink","channels","notificationsPending","ended","closeOnAbort","close","constructor","deviceInformation","disconnected","onDisconnected","endAll","subscribe","service","characteristic","channel","Channel","subscription","remove","delete","monitorCharacteristicForService","value","endOrFail","push","add","awaitNotifications","end","write","all","writeCharacteristicWithResponseForService","cancelConnection","catch","undefined","serviceUuid","characteristicUuid","enabled","awaitNotificationsEnabled","finally","has","fail","forEach","openBleLink","BTPairingRetry","discoverAllServicesAndCharacteristics"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/ble-link.ts"],"mappings":"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","ignoreList":[]}
@@ -94,6 +94,10 @@ class Connections {
94
94
  this.store.updateDevice(id, {
95
95
  connection: event.status
96
96
  });
97
+ } else if (event.kind === "information") {
98
+ this.store.updateDevice(id, {
99
+ information: event.information
100
+ });
97
101
  } else if (event.kind === "reading") {
98
102
  const device = this.store.device(id);
99
103
  if (device) {
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","error","run","then","catch","failure","asBluetoothError","finally","delete","set","event","keepReadings","apply","kind","status","device","receive","reading","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","error","run","then","catch","failure","asBluetoothError","finally","delete","set","event","keepReadings","apply","kind","status","information","device","receive","reading","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
@@ -33,6 +33,12 @@ const gattDriver = (key, protocol) => async function* (peripheral, signal) {
33
33
  kind: "status",
34
34
  status: "connected"
35
35
  };
36
+ if (link.deviceInformation) {
37
+ yield {
38
+ kind: "information",
39
+ information: link.deviceInformation
40
+ };
41
+ }
36
42
  for await (const reading of protocol(link)) {
37
43
  yield {
38
44
  kind: "reading",
@@ -1 +1 @@
1
- {"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AAGA;;AA8BA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AAAAC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AACA,MAAMU,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEX,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQ,IAAAY,sBAAU,EAAC;EAAEF,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACE,EAAE;EAAEb;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMc,UAAU,GAAGA,CAACJ,GAAW,EAAEK,QAAwB,KACvD,iBAAiBJ,UAAU,EAAEK,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAMN,UAAU,CAACO,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,WAAW,MAAMpB,OAAO,IAAIe,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEJ,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEX,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEmB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACI,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAACb,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AAGA;;AAsCA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AAAAC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AACA,MAAMU,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEX,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQ,IAAAY,sBAAU,EAAC;EAAEF,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACE,EAAE;EAAEb;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMc,UAAU,GAAGA,CAACJ,GAAW,EAAEK,QAAwB,KACvD,iBAAiBJ,UAAU,EAAEK,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAMN,UAAU,CAACO,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,IAAIH,IAAI,CAACI,iBAAiB,EAAE;MAC1B,MAAM;QAAEF,IAAI,EAAE,aAAa;QAAEG,WAAW,EAAEL,IAAI,CAACI;MAAkB,CAAC;IACpE;IACA,WAAW,MAAMrB,OAAO,IAAIe,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEJ,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEX,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEmB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACM,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAACf,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}