react-native-mytatva-rn-sdk 1.2.3 → 1.2.5

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 (751) hide show
  1. package/android/app/build.gradle +6 -0
  2. package/android/build.gradle +85 -5
  3. package/android/gradle.properties +1 -1
  4. package/android/libs/algorithm-release.aar +0 -0
  5. package/android/libs/library_zxing-release.aar +0 -0
  6. package/android/settings.gradle +1 -0
  7. package/android/src/main/AndroidManifest.xml +40 -2
  8. package/android/src/main/AndroidManifestNew.xml +127 -57
  9. package/android/src/main/java/cgmblelib/Enum/enumDevice.java +48 -0
  10. package/android/src/main/java/cgmblelib/Enum/enumError.java +102 -0
  11. package/android/src/main/java/cgmblelib/Enum/enumGlucoseStatus.java +99 -0
  12. package/android/src/main/java/cgmblelib/Enum/enumSound.java +54 -0
  13. package/android/src/main/java/cgmblelib/Enum/enumTrend.java +104 -0
  14. package/android/src/main/java/cgmblelib/Enum/enumUUID.java +134 -0
  15. package/android/src/main/java/cgmblelib/Enum/enumUnBind.java +52 -0
  16. package/android/src/main/java/cgmblelib/base/BApplication.java +86 -0
  17. package/android/src/main/java/cgmblelib/base/BSharedPreferences.java +110 -0
  18. package/android/src/main/java/cgmblelib/base/CActivity.java +128 -0
  19. package/android/src/main/java/cgmblelib/ble/BleService.java +231 -0
  20. package/android/src/main/java/cgmblelib/ble/entity/AlgorithmCallBack.java +67 -0
  21. package/android/src/main/java/cgmblelib/ble/gattcallback/BleGattCallback.java +410 -0
  22. package/android/src/main/java/cgmblelib/ble/gattcallback/EnumSynchronous.java +29 -0
  23. package/android/src/main/java/cgmblelib/ble/gattcallback/GattTool.java +359 -0
  24. package/android/src/main/java/cgmblelib/ble/gattcallback/LineUpTaskGlucoseProcess.java +168 -0
  25. package/android/src/main/java/cgmblelib/ble/gattcallback/ManageGattCallback.java +936 -0
  26. package/android/src/main/java/cgmblelib/ble/reconnectManagament/BaseReconnect.java +35 -0
  27. package/android/src/main/java/cgmblelib/ble/reconnectManagament/ReconnectManagement.java +298 -0
  28. package/android/src/main/java/cgmblelib/ble/scancallback/BleScanCallback.java +118 -0
  29. package/android/src/main/java/cgmblelib/ble/scancallback/ManageScanCallback.java +316 -0
  30. package/android/src/main/java/cgmblelib/custom/livedata/ManagementLiveData.java +216 -0
  31. package/android/src/main/java/cgmblelib/custom/livedata/connect/EnumConnect.java +30 -0
  32. package/android/src/main/java/cgmblelib/custom/livedata/connect/OperationConnectBean.java +51 -0
  33. package/android/src/main/java/cgmblelib/custom/livedata/connect/OperationConnectLiveData.java +66 -0
  34. package/android/src/main/java/cgmblelib/custom/livedata/scan/EnumScan.java +25 -0
  35. package/android/src/main/java/cgmblelib/custom/livedata/scan/OperationScanBean.java +60 -0
  36. package/android/src/main/java/cgmblelib/custom/livedata/scan/OperationScanLiveData.java +69 -0
  37. package/android/src/main/java/cgmblelib/custom/livedata/scan/PocDeviceAndRssi.java +57 -0
  38. package/android/src/main/java/cgmblelib/database/AppDatabase.java +82 -0
  39. package/android/src/main/java/cgmblelib/database/ArrayConverter.java +37 -0
  40. package/android/src/main/java/cgmblelib/database/ByteConverter.java +95 -0
  41. package/android/src/main/java/cgmblelib/database/DateConverter.java +40 -0
  42. package/android/src/main/java/cgmblelib/database/EnumConverter.java +76 -0
  43. package/android/src/main/java/cgmblelib/database/dao/DaoDevice.java +135 -0
  44. package/android/src/main/java/cgmblelib/database/dao/DaoGlucose.java +355 -0
  45. package/android/src/main/java/cgmblelib/database/entity/PocDevice.java +335 -0
  46. package/android/src/main/java/cgmblelib/database/entity/PocGlucose.java +393 -0
  47. package/android/src/main/java/cgmblelib/database/livedata/LatestDeviceLiveData.java +62 -0
  48. package/android/src/main/java/cgmblelib/database/repository/RepositoryDevice.java +206 -0
  49. package/android/src/main/java/cgmblelib/database/repository/RepositoryGlucose.java +195 -0
  50. package/android/src/main/java/cgmblelib/database/source/SourceBase.java +10 -0
  51. package/android/src/main/java/cgmblelib/database/source/SourceDevice.java +116 -0
  52. package/android/src/main/java/cgmblelib/database/source/SourceGlucose.java +232 -0
  53. package/android/src/main/java/cgmblelib/database/source/db/DBDataSource.java +29 -0
  54. package/android/src/main/java/cgmblelib/database/source/db/DeviceDBDataSource.java +194 -0
  55. package/android/src/main/java/cgmblelib/database/source/db/GlucoseDBDataSource.java +323 -0
  56. package/android/src/main/java/cgmblelib/qr/QRInformation.java +96 -0
  57. package/android/src/main/java/cgmblelib/receiver/BleServiceReceiver.java +129 -0
  58. package/android/src/main/java/cgmblelib/utils/AppExecutors.java +76 -0
  59. package/android/src/main/java/cgmblelib/utils/AxisYForGlucoseLevel.java +67 -0
  60. package/android/src/main/java/cgmblelib/utils/ConstantsLibrary.java +88 -0
  61. package/android/src/main/java/cgmblelib/utils/CrashHandler.java +39 -0
  62. package/android/src/main/java/cgmblelib/utils/DiskIOThreadExecutor.java +23 -0
  63. package/android/src/main/java/cgmblelib/utils/MyLog.java +606 -0
  64. package/android/src/main/java/cgmblelib/utils/NotificationTool.java +115 -0
  65. package/android/src/main/java/cgmblelib/utils/PermissionCheckTool.java +47 -0
  66. package/android/src/main/java/cgmblelib/utils/SharedPreferencesLibraryUtil.java +69 -0
  67. package/android/src/main/java/cgmblelib/utils/SyncMeta.kt +8 -0
  68. package/android/src/main/java/cgmblelib/utils/Tool.java +400 -0
  69. package/android/src/main/java/com/mytatvarnsdk/CgmTrackyLibModule.kt +885 -0
  70. package/android/src/main/java/com/mytatvarnsdk/CgmTrackyLibPackage.kt +16 -0
  71. package/android/src/main/java/com/mytatvarnsdk/MainActivity.kt +404 -0
  72. package/android/src/main/java/com/mytatvarnsdk/MainApplication.kt +52 -0
  73. package/android/src/main/java/com/mytatvarnsdk/MyTatvaRnSdkPackage.kt +2 -2
  74. package/android/src/main/java/com/mytatvarnsdk/MyTatvaRnSdkViewManager.kt +1 -1
  75. package/android/src/main/java/com/mytatvarnsdk/activity/BtManageActivity.java +427 -0
  76. package/android/src/main/java/com/mytatvarnsdk/activity/ConnectSensorActivity.kt +334 -0
  77. package/android/src/main/java/com/mytatvarnsdk/activity/ExitJourneyBottomSheet.kt +78 -0
  78. package/android/src/main/java/com/mytatvarnsdk/activity/HelpActivity.kt +70 -0
  79. package/android/src/main/java/com/mytatvarnsdk/activity/PermissionActivity.kt +367 -0
  80. package/android/src/main/java/com/mytatvarnsdk/activity/PlaceSensorActivity.kt +103 -0
  81. package/android/src/main/java/com/mytatvarnsdk/activity/PlaceTransmitterActivity.kt +145 -0
  82. package/android/src/main/java/com/mytatvarnsdk/activity/QRActivity.kt +119 -0
  83. package/android/src/main/java/com/mytatvarnsdk/activity/SearchTransmitterActivity.kt +554 -0
  84. package/android/src/main/java/com/mytatvarnsdk/activity/SensorConnectSuccessActivity.kt +156 -0
  85. package/android/src/main/java/com/mytatvarnsdk/activity/StartCGMActivity.kt +92 -0
  86. package/android/src/main/java/com/mytatvarnsdk/adapter/AdapterFragment.java +32 -0
  87. package/android/src/main/java/com/mytatvarnsdk/base/BaseBleActivity.java +223 -0
  88. package/android/src/main/java/com/mytatvarnsdk/base/BaseLiveDataEventsDistributeActivity.java +301 -0
  89. package/android/src/main/java/com/mytatvarnsdk/base/BasePermissionActivity.java +383 -0
  90. package/android/src/main/java/com/mytatvarnsdk/model/AllCGMLogRequest.kt +50 -0
  91. package/android/src/main/java/com/mytatvarnsdk/model/BaseViewModel.java +109 -0
  92. package/android/src/main/java/com/mytatvarnsdk/model/GlucoseLog.kt +41 -0
  93. package/android/src/main/java/com/mytatvarnsdk/model/GlucoseLogRequest.kt +3 -0
  94. package/android/src/main/java/com/mytatvarnsdk/model/MainActivityModel.java +18 -0
  95. package/android/src/main/java/com/mytatvarnsdk/myView/CircleImageView.java +110 -0
  96. package/android/src/main/java/com/mytatvarnsdk/myView/DragActionButton.java +96 -0
  97. package/android/src/main/java/com/mytatvarnsdk/myView/HistoryItem.java +45 -0
  98. package/android/src/main/java/com/mytatvarnsdk/myView/Media/CustomMediaPlayer.java +155 -0
  99. package/android/src/main/java/com/mytatvarnsdk/myView/PagerAdapterWrapper.java +117 -0
  100. package/android/src/main/java/com/mytatvarnsdk/myView/RtlViewPager.java +361 -0
  101. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/AlarmDialogManagement.java +115 -0
  102. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/DialogType.java +88 -0
  103. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/WarnDialog.java +328 -0
  104. package/android/src/main/java/com/mytatvarnsdk/myView/dialog/WarnDialogUtils.java +202 -0
  105. package/android/src/main/java/com/mytatvarnsdk/myView/horizonViewPager/HorizontalViewPage.java +20 -0
  106. package/android/src/main/java/com/mytatvarnsdk/myView/horizonViewPager/ScaleInTransformer.java +33 -0
  107. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/BPopupWindow.java +166 -0
  108. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/ErrorInfoPop.java +28 -0
  109. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PermissionRequestPopWindow.java +64 -0
  110. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopShowWay.java +16 -0
  111. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopupType.java +70 -0
  112. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/PopupWindowManagement.java +191 -0
  113. package/android/src/main/java/com/mytatvarnsdk/myView/popupwindow/TransmitterConnectPopWindow.java +88 -0
  114. package/android/src/main/java/com/mytatvarnsdk/myView/progress/BaseCustomProgress.java +55 -0
  115. package/android/src/main/java/com/mytatvarnsdk/myView/progress/CircularProgressView.java +238 -0
  116. package/android/src/main/java/com/mytatvarnsdk/myView/progress/ProgressManagement.java +100 -0
  117. package/android/src/main/java/com/mytatvarnsdk/myView/progress/ProgressType.java +41 -0
  118. package/android/src/main/java/com/mytatvarnsdk/myView/progress/WaitProgress.java +91 -0
  119. package/android/src/main/java/com/mytatvarnsdk/myView/widget/SensorGlucoseShow.java +219 -0
  120. package/android/src/main/java/com/mytatvarnsdk/myView/widget/TransmitterState.java +536 -0
  121. package/android/src/main/java/com/mytatvarnsdk/network/ApiServiceInterface.kt +22 -0
  122. package/android/src/main/java/com/mytatvarnsdk/network/AuthenticateSDKService.kt +168 -0
  123. package/android/src/main/java/com/mytatvarnsdk/receiver/BootCompleteReceiver.java +31 -0
  124. package/android/src/main/java/com/mytatvarnsdk/utils/CGMTool.java +59 -0
  125. package/android/src/main/java/com/mytatvarnsdk/utils/DeviceStatus.kt +35 -0
  126. package/android/src/main/java/com/mytatvarnsdk/utils/EncryptionUtil.kt +98 -0
  127. package/android/src/main/java/com/mytatvarnsdk/utils/RetrofitInstance.kt +20 -0
  128. package/android/src/main/java/com/mytatvarnsdk/utils/TatvaEncryptionConfig.kt +20 -0
  129. package/android/src/main/java/com/mytatvarnsdk/utils/Tatva_Environment.kt +6 -0
  130. package/android/src/main/res/anim/pop_down_out.xml +12 -0
  131. package/android/src/main/res/anim/pop_left_right.xml +8 -0
  132. package/android/src/main/res/anim/pop_right_left.xml +7 -0
  133. package/android/src/main/res/anim/pop_up_in.xml +11 -0
  134. package/android/src/main/res/anim/reverse_down_anim.xml +12 -0
  135. package/android/src/main/res/anim/reverse_up_anim.xml +11 -0
  136. package/android/src/main/res/color/radio_text_selector.xml +5 -0
  137. package/android/src/main/res/drawable/bg_blue.xml +6 -0
  138. package/android/src/main/res/drawable/bg_dark_black.xml +6 -0
  139. package/android/src/main/res/drawable/bg_darkgray_corner_16.xml +5 -0
  140. package/android/src/main/res/drawable/bg_design.png +0 -0
  141. package/android/src/main/res/drawable/bg_gray_corner10.xml +5 -0
  142. package/android/src/main/res/drawable/bg_green.xml +6 -0
  143. package/android/src/main/res/drawable/bg_green_border_20.xml +6 -0
  144. package/android/src/main/res/drawable/bg_light_blue.xml +6 -0
  145. package/android/src/main/res/drawable/bg_light_green_border_20.xml +7 -0
  146. package/android/src/main/res/drawable/bg_maincolor_corner5.xml +6 -0
  147. package/android/src/main/res/drawable/bg_offwhite.xml +6 -0
  148. package/android/src/main/res/drawable/bg_progressbar.xml +14 -0
  149. package/android/src/main/res/drawable/bg_red_border_20.xml +6 -0
  150. package/android/src/main/res/drawable/bg_rounded_gradient.xml +12 -0
  151. package/android/src/main/res/drawable/bg_transblack_corner_8.xml +5 -0
  152. package/android/src/main/res/drawable/bg_white_border_20.xml +10 -0
  153. package/android/src/main/res/drawable/bg_white_corner_10.xml +7 -0
  154. package/android/src/main/res/drawable/bg_white_corner_8.xml +7 -0
  155. package/android/src/main/res/drawable/bg_white_green_border_20.xml +7 -0
  156. package/android/src/main/res/drawable/bg_yellow_bottom.xml +10 -0
  157. package/android/src/main/res/drawable/bg_yellow_top.xml +10 -0
  158. package/android/src/main/res/drawable/bottom_sheet_background.xml +8 -0
  159. package/android/src/main/res/drawable/checked_arrow_up_down.xml +5 -0
  160. package/android/src/main/res/drawable/circle_black.xml +7 -0
  161. package/android/src/main/res/drawable/circle_shape.xml +35 -0
  162. package/android/src/main/res/drawable/custom_radio_icon_selector.xml +5 -0
  163. package/android/src/main/res/drawable/custom_thumb.xml +6 -0
  164. package/android/src/main/res/drawable/dialog_warn_button_cancel.xml +11 -0
  165. package/android/src/main/res/drawable/dialog_warn_button_ok.xml +11 -0
  166. package/android/src/main/res/drawable/gray_border_15.xml +9 -0
  167. package/android/src/main/res/drawable/guide_circle.xml +5 -0
  168. package/android/src/main/res/drawable/hr_button_select.xml +5 -0
  169. package/android/src/main/res/drawable/hr_normal.xml +13 -0
  170. package/android/src/main/res/drawable/hr_select.xml +10 -0
  171. package/android/src/main/res/drawable/ic_charging_case.png +0 -0
  172. package/android/src/main/res/drawable/ic_close.png +0 -0
  173. package/android/src/main/res/drawable/ic_close_gray.xml +9 -0
  174. package/android/src/main/res/drawable/ic_play.xml +9 -0
  175. package/android/src/main/res/drawable/ic_play_gif.gif +0 -0
  176. package/android/src/main/res/drawable/ic_rectangle_blue.xml +9 -0
  177. package/android/src/main/res/drawable/ic_right_arrow.xml +9 -0
  178. package/android/src/main/res/drawable/ic_sync.xml +9 -0
  179. package/android/src/main/res/drawable/ic_transmitter.png +0 -0
  180. package/android/src/main/res/drawable/ic_whatsapp.xml +31 -0
  181. package/android/src/main/res/drawable/ic_whatsapp_green.xml +28 -0
  182. package/android/src/main/res/drawable/icon_glucose_hyperglycemia.xml +5 -0
  183. package/android/src/main/res/drawable/img_box_cross.png +0 -0
  184. package/android/src/main/res/drawable/img_box_qr.png +0 -0
  185. package/android/src/main/res/drawable/img_case.png +0 -0
  186. package/android/src/main/res/drawable/img_cgm_device.png +0 -0
  187. package/android/src/main/res/drawable/img_cgm_shadow.png +0 -0
  188. package/android/src/main/res/drawable/img_charging_indicator.png +0 -0
  189. package/android/src/main/res/drawable/img_charging_pod_full.png +0 -0
  190. package/android/src/main/res/drawable/img_female.png +0 -0
  191. package/android/src/main/res/drawable/img_male.png +0 -0
  192. package/android/src/main/res/drawable/img_trans_shell.png +0 -0
  193. package/android/src/main/res/drawable/popup_button_confirm_enable.xml +11 -0
  194. package/android/src/main/res/drawable/popup_window_bg.xml +9 -0
  195. package/android/src/main/res/drawable/radio_button_background.xml +17 -0
  196. package/android/src/main/res/drawable/radio_checked.xml +9 -0
  197. package/android/src/main/res/drawable/radio_unchecked.xml +13 -0
  198. package/android/src/main/res/drawable/searching.gif +0 -0
  199. package/android/src/main/res/drawable/sensor_bg.xml +10 -0
  200. package/android/src/main/res/drawable/success_anim.gif +0 -0
  201. package/android/src/main/res/drawable/thumb_selector.xml +11 -0
  202. package/android/src/main/res/drawable/toggle_off.xml +16 -0
  203. package/android/src/main/res/drawable/toggle_on.xml +16 -0
  204. package/android/src/main/res/drawable/track_selector.xml +17 -0
  205. package/android/src/main/res/drawable/warning.gif +0 -0
  206. package/android/src/main/res/drawable-hdpi/alarm_sound_shake_white.png +0 -0
  207. package/android/src/main/res/drawable-hdpi/arrow_down.png +0 -0
  208. package/android/src/main/res/drawable-hdpi/arrow_up.png +0 -0
  209. package/android/src/main/res/drawable-hdpi/calibration_notice.png +0 -0
  210. package/android/src/main/res/drawable-hdpi/drop_rapidly.png +0 -0
  211. package/android/src/main/res/drawable-hdpi/drop_rapidly_low.png +0 -0
  212. package/android/src/main/res/drawable-hdpi/drop_steadily.png +0 -0
  213. package/android/src/main/res/drawable-hdpi/home_menu.png +0 -0
  214. package/android/src/main/res/drawable-hdpi/implentation_step3.png +0 -0
  215. package/android/src/main/res/drawable-hdpi/implentation_step4.png +0 -0
  216. package/android/src/main/res/drawable-hdpi/poput_request_permission_icon.png +0 -0
  217. package/android/src/main/res/drawable-hdpi/product_box.png +0 -0
  218. package/android/src/main/res/drawable-hdpi/progress_wait_other_icon.png +0 -0
  219. package/android/src/main/res/drawable-hdpi/rise_rapidly.png +0 -0
  220. package/android/src/main/res/drawable-hdpi/rise_steadily.png +0 -0
  221. package/android/src/main/res/drawable-hdpi/sound_close.png +0 -0
  222. package/android/src/main/res/drawable-hdpi/sound_open.png +0 -0
  223. package/android/src/main/res/drawable-hdpi/steady.png +0 -0
  224. package/android/src/main/res/drawable-hdpi/toast_success.png +0 -0
  225. package/android/src/main/res/drawable-hdpi/video_wait.png +0 -0
  226. package/android/src/main/res/drawable-xhdpi/alarm_sound_shake_white.png +0 -0
  227. package/android/src/main/res/drawable-xhdpi/arrow_down.png +0 -0
  228. package/android/src/main/res/drawable-xhdpi/arrow_up.png +0 -0
  229. package/android/src/main/res/drawable-xhdpi/arrows_down_white.png +0 -0
  230. package/android/src/main/res/drawable-xhdpi/bt_qr_img.png +0 -0
  231. package/android/src/main/res/drawable-xhdpi/calibration_notice.png +0 -0
  232. package/android/src/main/res/drawable-xhdpi/cgm_img.png +0 -0
  233. package/android/src/main/res/drawable-xhdpi/chart_point_hypoglycemia.png +0 -0
  234. package/android/src/main/res/drawable-xhdpi/chart_point_normal.png +0 -0
  235. package/android/src/main/res/drawable-xhdpi/count_down_icon.png +0 -0
  236. package/android/src/main/res/drawable-xhdpi/device_unbind.png +0 -0
  237. package/android/src/main/res/drawable-xhdpi/drop_rapidly.png +0 -0
  238. package/android/src/main/res/drawable-xhdpi/drop_rapidly_low.png +0 -0
  239. package/android/src/main/res/drawable-xhdpi/drop_steadily.png +0 -0
  240. package/android/src/main/res/drawable-xhdpi/friend_share.png +0 -0
  241. package/android/src/main/res/drawable-xhdpi/guide_step1.png +0 -0
  242. package/android/src/main/res/drawable-xhdpi/guide_step10.png +0 -0
  243. package/android/src/main/res/drawable-xhdpi/guide_step2_arm.png +0 -0
  244. package/android/src/main/res/drawable-xhdpi/guide_step2_fu.png +0 -0
  245. package/android/src/main/res/drawable-xhdpi/guide_step3.png +0 -0
  246. package/android/src/main/res/drawable-xhdpi/guide_step4.png +0 -0
  247. package/android/src/main/res/drawable-xhdpi/guide_step5.png +0 -0
  248. package/android/src/main/res/drawable-xhdpi/guide_step6.png +0 -0
  249. package/android/src/main/res/drawable-xhdpi/guide_step7.png +0 -0
  250. package/android/src/main/res/drawable-xhdpi/guide_step8.png +0 -0
  251. package/android/src/main/res/drawable-xhdpi/guide_step9.png +0 -0
  252. package/android/src/main/res/drawable-xhdpi/home_menu.png +0 -0
  253. package/android/src/main/res/drawable-xhdpi/home_question.png +0 -0
  254. package/android/src/main/res/drawable-xhdpi/icon_back.png +0 -0
  255. package/android/src/main/res/drawable-xhdpi/icon_ct3.png +0 -0
  256. package/android/src/main/res/drawable-xhdpi/icon_glucose_hyperglycemia.png +0 -0
  257. package/android/src/main/res/drawable-xhdpi/implement_close.png +0 -0
  258. package/android/src/main/res/drawable-xhdpi/implentation_step2_1.png +0 -0
  259. package/android/src/main/res/drawable-xhdpi/implentation_step2_2.png +0 -0
  260. package/android/src/main/res/drawable-xhdpi/implentation_step3.png +0 -0
  261. package/android/src/main/res/drawable-xhdpi/implentation_step4.png +0 -0
  262. package/android/src/main/res/drawable-xhdpi/loading_icon.png +0 -0
  263. package/android/src/main/res/drawable-xhdpi/login_loading.png +0 -0
  264. package/android/src/main/res/drawable-xhdpi/main_bg.png +0 -0
  265. package/android/src/main/res/drawable-xhdpi/mes_pop_box_icon.png +0 -0
  266. package/android/src/main/res/drawable-xhdpi/poput_request_permission_icon.png +0 -0
  267. package/android/src/main/res/drawable-xhdpi/prepare_box_video.png +0 -0
  268. package/android/src/main/res/drawable-xhdpi/prepare_products.png +0 -0
  269. package/android/src/main/res/drawable-xhdpi/product_box.png +0 -0
  270. package/android/src/main/res/drawable-xhdpi/progress_wait_center.png +0 -0
  271. package/android/src/main/res/drawable-xhdpi/progress_wait_other_icon.png +0 -0
  272. package/android/src/main/res/drawable-xhdpi/progress_wait_search.png +0 -0
  273. package/android/src/main/res/drawable-xhdpi/rise_rapidly.png +0 -0
  274. package/android/src/main/res/drawable-xhdpi/rise_steadily.png +0 -0
  275. package/android/src/main/res/drawable-xhdpi/sound_close.png +0 -0
  276. package/android/src/main/res/drawable-xhdpi/sound_implement.png +0 -0
  277. package/android/src/main/res/drawable-xhdpi/sound_open.png +0 -0
  278. package/android/src/main/res/drawable-xhdpi/star.png +0 -0
  279. package/android/src/main/res/drawable-xhdpi/steady.png +0 -0
  280. package/android/src/main/res/drawable-xhdpi/title_black.png +0 -0
  281. package/android/src/main/res/drawable-xhdpi/toast_success.png +0 -0
  282. package/android/src/main/res/drawable-xhdpi/trend_drop_rapidly.png +0 -0
  283. package/android/src/main/res/drawable-xhdpi/trend_drop_rapidly_low.png +0 -0
  284. package/android/src/main/res/drawable-xhdpi/trend_drop_steadily.png +0 -0
  285. package/android/src/main/res/drawable-xhdpi/trend_none.png +0 -0
  286. package/android/src/main/res/drawable-xhdpi/trend_rise_rapidly.png +0 -0
  287. package/android/src/main/res/drawable-xhdpi/trend_rise_steadily.png +0 -0
  288. package/android/src/main/res/drawable-xhdpi/trend_steady.png +0 -0
  289. package/android/src/main/res/drawable-xhdpi/triangle_red.png +0 -0
  290. package/android/src/main/res/drawable-xhdpi/triangle_yellow.png +0 -0
  291. package/android/src/main/res/drawable-xhdpi/video_wait.png +0 -0
  292. package/android/src/main/res/drawable-xhdpi/widget_drop_rapid.png +0 -0
  293. package/android/src/main/res/drawable-xhdpi/widget_drop_rapid_low.png +0 -0
  294. package/android/src/main/res/drawable-xhdpi/widget_drop_slow.png +0 -0
  295. package/android/src/main/res/drawable-xhdpi/widget_rise_rapid.png +0 -0
  296. package/android/src/main/res/drawable-xhdpi/widget_rise_slow.png +0 -0
  297. package/android/src/main/res/drawable-xhdpi/widget_steady.png +0 -0
  298. package/android/src/main/res/drawable-xhdpi/zoom_in.png +0 -0
  299. package/android/src/main/res/drawable-xhdpi/zoom_out_white.png +0 -0
  300. package/android/src/main/res/drawable-xxhdpi/alarm_sound_shake_white.png +0 -0
  301. package/android/src/main/res/drawable-xxhdpi/calibration_notice.png +0 -0
  302. package/android/src/main/res/drawable-xxhdpi/drop_rapidly.png +0 -0
  303. package/android/src/main/res/drawable-xxhdpi/drop_rapidly_low.png +0 -0
  304. package/android/src/main/res/drawable-xxhdpi/drop_steadily.png +0 -0
  305. package/android/src/main/res/drawable-xxhdpi/home_menu.png +0 -0
  306. package/android/src/main/res/drawable-xxhdpi/mes_pop_box_icon.png +0 -0
  307. package/android/src/main/res/drawable-xxhdpi/poput_request_permission_icon.png +0 -0
  308. package/android/src/main/res/drawable-xxhdpi/product_box.png +0 -0
  309. package/android/src/main/res/drawable-xxhdpi/progress_wait_center.png +0 -0
  310. package/android/src/main/res/drawable-xxhdpi/progress_wait_other_icon.png +0 -0
  311. package/android/src/main/res/drawable-xxhdpi/rise_rapidly.png +0 -0
  312. package/android/src/main/res/drawable-xxhdpi/rise_steadily.png +0 -0
  313. package/android/src/main/res/drawable-xxhdpi/sound_close.png +0 -0
  314. package/android/src/main/res/drawable-xxhdpi/sound_open.png +0 -0
  315. package/android/src/main/res/drawable-xxhdpi/steady.png +0 -0
  316. package/android/src/main/res/drawable-xxhdpi/title_black.png +0 -0
  317. package/android/src/main/res/drawable-xxhdpi/toast_success.png +0 -0
  318. package/android/src/main/res/drawable-xxhdpi/video_wait.png +0 -0
  319. package/android/src/main/res/drawable-xxxhdpi/mes_pop_box_icon.png +0 -0
  320. package/android/src/main/res/drawable-xxxhdpi/poput_request_permission_icon.png +0 -0
  321. package/android/src/main/res/drawable-xxxhdpi/progress_wait_other_icon.png +0 -0
  322. package/android/src/main/res/font/playfairdisplay_bold.ttf +0 -0
  323. package/android/src/main/res/font/playfairdisplay_medium.ttf +0 -0
  324. package/android/src/main/res/font/playfairdisplay_regular.ttf +0 -0
  325. package/android/src/main/res/font/roboto_bold.ttf +0 -0
  326. package/android/src/main/res/font/roboto_medium.ttf +0 -0
  327. package/android/src/main/res/font/roboto_regular.ttf +0 -0
  328. package/android/src/main/res/font/roboto_semibold.ttf +0 -0
  329. package/android/src/main/res/layout/activity_bt_manage.xml +107 -0
  330. package/android/src/main/res/layout/activity_cgmdevice.xml +99 -0
  331. package/android/src/main/res/layout/activity_connect_sensor.xml +415 -0
  332. package/android/src/main/res/layout/activity_count_down.xml +229 -0
  333. package/android/src/main/res/layout/activity_guide.xml +118 -0
  334. package/android/src/main/res/layout/activity_help.xml +188 -0
  335. package/android/src/main/res/layout/activity_main.xml +48 -0
  336. package/android/src/main/res/layout/activity_permission.xml +205 -0
  337. package/android/src/main/res/layout/activity_place_sensor.xml +156 -0
  338. package/android/src/main/res/layout/activity_place_transmitter.xml +124 -0
  339. package/android/src/main/res/layout/activity_prepare_step1.xml +191 -0
  340. package/android/src/main/res/layout/activity_qr.xml +16 -0
  341. package/android/src/main/res/layout/activity_qractivity.xml +10 -0
  342. package/android/src/main/res/layout/activity_search_transmitter.xml +667 -0
  343. package/android/src/main/res/layout/activity_sensor_connect_success.xml +101 -0
  344. package/android/src/main/res/layout/activity_start_cgmactivity.xml +175 -0
  345. package/android/src/main/res/layout/activity_transmitter_list.xml +38 -0
  346. package/android/src/main/res/layout/activity_transmitter_state.xml +74 -0
  347. package/android/src/main/res/layout/activity_trend_detail.xml +287 -0
  348. package/android/src/main/res/layout/activity_welcome.xml +11 -0
  349. package/android/src/main/res/layout/dialog_progress_wait.xml +49 -0
  350. package/android/src/main/res/layout/dialog_warn.xml +140 -0
  351. package/android/src/main/res/layout/exit_dialog_bottomsheet.xml +90 -0
  352. package/android/src/main/res/layout/fragment_count_down.xml +65 -0
  353. package/android/src/main/res/layout/fragment_prepare.xml +15 -0
  354. package/android/src/main/res/layout/fragment_sensor.xml +174 -0
  355. package/android/src/main/res/layout/fragment_sensor_glucose_show.xml +62 -0
  356. package/android/src/main/res/layout/history_item.xml +92 -0
  357. package/android/src/main/res/layout/layout_button.xml +56 -0
  358. package/android/src/main/res/layout/layout_green_border_button.xml +44 -0
  359. package/android/src/main/res/layout/layout_red_button.xml +43 -0
  360. package/android/src/main/res/layout/layout_toolbar.xml +61 -0
  361. package/android/src/main/res/layout/pop_error_info.xml +13 -0
  362. package/android/src/main/res/layout/popup_window_request_permisson.xml +54 -0
  363. package/android/src/main/res/layout/popup_window_transmitter_connect.xml +103 -0
  364. package/android/src/main/res/layout/top_menu_common.xml +95 -0
  365. package/android/src/main/res/layout/view_loading_button.xml +29 -0
  366. package/android/src/main/res/raw/high_alarm.mp3 +0 -0
  367. package/android/src/main/res/raw/medium_alarm.mp3 +0 -0
  368. package/android/src/main/res/values/colors.xml +44 -0
  369. package/android/src/main/res/values/dimens.xml +21 -0
  370. package/android/src/main/res/values/strings.xml +202 -0
  371. package/android/src/main/res/values/styles.xml +98 -0
  372. package/ios/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  373. package/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +35 -0
  374. package/ios/Assets.xcassets/CGM_with_Toggle.imageset/CGM_with_Toggle.png +0 -0
  375. package/ios/Assets.xcassets/CGM_with_Toggle.imageset/Contents.json +21 -0
  376. package/ios/Assets.xcassets/Contents.json +6 -0
  377. package/ios/Assets.xcassets/Take_out_transmitter.imageset/Contents.json +21 -0
  378. package/ios/Assets.xcassets/Take_out_transmitter.imageset/Take our transmitter.png +0 -0
  379. package/ios/Assets.xcassets/charging.imageset/Contents.json +21 -0
  380. package/ios/Assets.xcassets/charging.imageset/charging.png +0 -0
  381. package/ios/Assets.xcassets/charging_pod.imageset/Contents.json +21 -0
  382. package/ios/Assets.xcassets/charging_pod.imageset/charging_pod.png +0 -0
  383. package/ios/Assets.xcassets/close_pod.imageset/Contents.json +23 -0
  384. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563.png +0 -0
  385. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563@2x.png +0 -0
  386. package/ios/Assets.xcassets/close_pod.imageset/Group 1000005563@3x.png +0 -0
  387. package/ios/Assets.xcassets/do_not_place_inside.imageset/Contents.json +21 -0
  388. package/ios/Assets.xcassets/do_not_place_inside.imageset/do_not_place_inside.png +0 -0
  389. package/ios/Assets.xcassets/flip_the_reference.imageset/Contents.json +21 -0
  390. package/ios/Assets.xcassets/flip_the_reference.imageset/flip_the_reference.png +0 -0
  391. package/ios/Assets.xcassets/fully_charged.imageset/Contents.json +21 -0
  392. package/ios/Assets.xcassets/fully_charged.imageset/fully_charged.png +0 -0
  393. package/ios/Assets.xcassets/green.colorset/Contents.json +38 -0
  394. package/ios/Assets.xcassets/ic_arrow.imageset/7.png +0 -0
  395. package/ios/Assets.xcassets/ic_arrow.imageset/7@2x.png +0 -0
  396. package/ios/Assets.xcassets/ic_arrow.imageset/7@3x.png +0 -0
  397. package/ios/Assets.xcassets/ic_arrow.imageset/Contents.json +23 -0
  398. package/ios/Assets.xcassets/ic_back.imageset/7.png +0 -0
  399. package/ios/Assets.xcassets/ic_back.imageset/7@2x.png +0 -0
  400. package/ios/Assets.xcassets/ic_back.imageset/7@3x.png +0 -0
  401. package/ios/Assets.xcassets/ic_back.imageset/Contents.json +23 -0
  402. package/ios/Assets.xcassets/ic_back_arrow.imageset/Contents.json +23 -0
  403. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced).png +0 -0
  404. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced)@2x.png +0 -0
  405. package/ios/Assets.xcassets/ic_back_arrow.imageset/image 17 (Traced)@3x.png +0 -0
  406. package/ios/Assets.xcassets/ic_circle.imageset/Contents.json +23 -0
  407. package/ios/Assets.xcassets/ic_circle.imageset/circle.png +0 -0
  408. package/ios/Assets.xcassets/ic_circle.imageset/circle@2x.png +0 -0
  409. package/ios/Assets.xcassets/ic_circle.imageset/circle@3x.png +0 -0
  410. package/ios/Assets.xcassets/ic_close.imageset/Contents.json +23 -0
  411. package/ios/Assets.xcassets/ic_close.imageset/close button.png +0 -0
  412. package/ios/Assets.xcassets/ic_close.imageset/close button@2x.png +0 -0
  413. package/ios/Assets.xcassets/ic_close.imageset/close button@3x.png +0 -0
  414. package/ios/Assets.xcassets/ic_close_popup.imageset/Contents.json +23 -0
  415. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame.png +0 -0
  416. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame@2x.png +0 -0
  417. package/ios/Assets.xcassets/ic_close_popup.imageset/Frame@3x.png +0 -0
  418. package/ios/Assets.xcassets/ic_green_arrow.imageset/Contents.json +23 -0
  419. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced).png +0 -0
  420. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced)@2x.png +0 -0
  421. package/ios/Assets.xcassets/ic_green_arrow.imageset/image 17 (Traced)@3x.png +0 -0
  422. package/ios/Assets.xcassets/ic_play.imageset/Contents.json +26 -0
  423. package/ios/Assets.xcassets/ic_play.imageset/Play.png +0 -0
  424. package/ios/Assets.xcassets/ic_play.imageset/Play@2x.png +0 -0
  425. package/ios/Assets.xcassets/ic_play.imageset/Play@3x.png +0 -0
  426. package/ios/Assets.xcassets/ic_selected.imageset/Contents.json +23 -0
  427. package/ios/Assets.xcassets/ic_selected.imageset/Frame.png +0 -0
  428. package/ios/Assets.xcassets/ic_selected.imageset/Frame@2x.png +0 -0
  429. package/ios/Assets.xcassets/ic_selected.imageset/Frame@3x.png +0 -0
  430. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/Contents.json +23 -0
  431. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp.png +0 -0
  432. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp@2x.png +0 -0
  433. package/ios/Assets.xcassets/ic_whatsApp_only.imageset/WhatsApp@3x.png +0 -0
  434. package/ios/Assets.xcassets/ic_whatsapp.imageset/Contents.json +23 -0
  435. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343.png +0 -0
  436. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343@2x.png +0 -0
  437. package/ios/Assets.xcassets/ic_whatsapp.imageset/Frame 1000006343@3x.png +0 -0
  438. package/ios/Assets.xcassets/indigo.colorset/Contents.json +38 -0
  439. package/ios/Assets.xcassets/mandala.imageset/Contents.json +21 -0
  440. package/ios/Assets.xcassets/mandala.imageset/ending.png +0 -0
  441. package/ios/Assets.xcassets/open_pod.imageset/Contents.json +23 -0
  442. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1.png +0 -0
  443. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1@2x.png +0 -0
  444. package/ios/Assets.xcassets/open_pod.imageset/Screenshot 2025-04-22 at 8.07.34/342/200/257PM 1@3x.png +0 -0
  445. package/ios/Assets.xcassets/step4.imageset/Contents.json +21 -0
  446. package/ios/Assets.xcassets/step4.imageset/step4.png +0 -0
  447. package/ios/Assets.xcassets/step5.imageset/Contents.json +21 -0
  448. package/ios/Assets.xcassets/step5.imageset/step5.png +0 -0
  449. package/ios/Assets.xcassets/transmitter_image.imageset/Contents.json +21 -0
  450. package/ios/Assets.xcassets/transmitter_image.imageset/transmitter_image.png +0 -0
  451. package/ios/Assets.xcassets/transmitter_shadow.imageset/CGM Shadow.png +0 -0
  452. package/ios/Assets.xcassets/transmitter_shadow.imageset/Contents.json +21 -0
  453. package/ios/Assets.xcassets/unselectedGray.colorset/Contents.json +38 -0
  454. package/ios/Custom/CustomColor.swift +22 -0
  455. package/ios/Custom/CustomFont.swift +49 -0
  456. package/ios/Custom/CustomOverlayButton.swift +237 -0
  457. package/ios/Custom/CustomStepProgressBar.swift +167 -0
  458. package/ios/Custom/CustomTopUIView.swift +173 -0
  459. package/ios/Custom/CustomView.swift +60 -0
  460. package/ios/Database/Advertise+CoreDataClass.h +23 -0
  461. package/ios/Database/Advertise+CoreDataClass.m +14 -0
  462. package/ios/Database/Advertise+CoreDataProperties.h +28 -0
  463. package/ios/Database/Advertise+CoreDataProperties.m +25 -0
  464. package/ios/Database/Device+CoreDataClass.h +23 -0
  465. package/ios/Database/Device+CoreDataClass.m +14 -0
  466. package/ios/Database/Device+CoreDataProperties.h +47 -0
  467. package/ios/Database/Device+CoreDataProperties.m +30 -0
  468. package/ios/Database/GlucoseData+CoreDataClass.h +23 -0
  469. package/ios/Database/GlucoseData+CoreDataClass.m +14 -0
  470. package/ios/Database/GlucoseData+CoreDataProperties.h +37 -0
  471. package/ios/Database/GlucoseData+CoreDataProperties.m +34 -0
  472. package/ios/Database/KLTAppDelegate.h +24 -0
  473. package/ios/Database/KLTAppDelegate.m +109 -0
  474. package/ios/Database/KLTBluetoothManager.h +83 -0
  475. package/ios/Database/KLTBluetoothManager.m +723 -0
  476. package/ios/Database/KLTCommonDefine.h +52 -0
  477. package/ios/Database/KLTDatabaseHandler.h +59 -0
  478. package/ios/Database/KLTDatabaseHandler.m +437 -0
  479. package/ios/Database/KLTFormat.h +32 -0
  480. package/ios/Database/KLTFormat.m +270 -0
  481. package/ios/Database/KLTLaunchConfiguration.h +37 -0
  482. package/ios/Database/KLTLaunchConfiguration.m +96 -0
  483. package/ios/Database/KLTLocalSettingManager.h +38 -0
  484. package/ios/Database/KLTLocalSettingManager.m +138 -0
  485. package/ios/Database/KLTPrefixHeader.pch +123 -0
  486. package/ios/Database/KLTRunLog.h +36 -0
  487. package/ios/Database/KLTRunLog.m +156 -0
  488. package/ios/Database/KLTUserDefautKeyDefine.h +42 -0
  489. package/ios/Database/MyTatva.xcdatamodeld/MyTatva.xcdatamodel/contents +68 -0
  490. package/ios/Database/NSString+KLTDateString.h +36 -0
  491. package/ios/Database/NSString+KLTDateString.m +160 -0
  492. package/ios/Database/ReceiveData+CoreDataClass.h +23 -0
  493. package/ios/Database/ReceiveData+CoreDataClass.m +14 -0
  494. package/ios/Database/ReceiveData+CoreDataProperties.h +47 -0
  495. package/ios/Database/ReceiveData+CoreDataProperties.m +44 -0
  496. package/ios/Database/UIColor+KLTUI.h +36 -0
  497. package/ios/Database/UIColor+KLTUI.m +60 -0
  498. package/ios/Extension/UIColor+Extension.swift +23 -0
  499. package/ios/Extension/UIImageView+Extension.swift +59 -0
  500. package/ios/Extension/UITableView+Extension.swift +37 -0
  501. package/ios/Extension/UIViewController+Extension.swift +24 -0
  502. package/ios/LaunchScreen.storyboard +47 -0
  503. package/ios/MyReactNativeBridge.h +19 -0
  504. package/ios/MyReactNativeBridge.m +36 -0
  505. package/ios/MyTatvaCare-Bridging-Header.h +23 -0
  506. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  507. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  508. package/ios/MyTatvaRnSdk.xcodeproj/project.xcworkspace/xcuserdata/sonusharma.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  509. package/ios/MyTatvaRnSdk.xcodeproj/xcuserdata/sonusharma.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  510. package/ios/MyTatvaRnSdkViewManager.h +1 -1
  511. package/ios/MyTatvaRnSdkViewManager.m +1 -1
  512. package/ios/Storyboard/Base.lproj/LaunchScreen.storyboard +25 -0
  513. package/ios/Storyboard/Base.lproj/Main.storyboard +858 -0
  514. package/ios/Support/API.swift +325 -0
  515. package/ios/Support/BluetoothManager.swift +472 -0
  516. package/ios/Support/Converter/DataConverter.swift +34 -0
  517. package/ios/Support/Enum.swift +37 -0
  518. package/ios/Support/EnumDebouncer.swift +55 -0
  519. package/ios/Support/Font/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
  520. package/ios/Support/Font/PlayfairDisplay-VariableFont_wght.ttf +0 -0
  521. package/ios/Support/Global.swift +12 -0
  522. package/ios/Support/KLTFormat.swift +151 -0
  523. package/ios/Support/Library/SDK/include/AlgorithmTools.h +52 -0
  524. package/ios/Support/Library/SDK/include/CGMAlgo.h +224 -0
  525. package/ios/Support/Library/SDK/include/CGMCommonDefine.h +176 -0
  526. package/ios/Support/Library/SDK/include/CurrentGlucose.h +412 -0
  527. package/ios/Support/Library/SDK/include/EDevice.h +78 -0
  528. package/ios/Support/Library/SDK/include/KRDecodeData.h +45 -0
  529. package/ios/Support/Library/SDK/libCGMAlgo.a +0 -0
  530. package/ios/Support/gif/failure.gif +0 -0
  531. package/ios/Support/gif/play.gif +0 -0
  532. package/ios/Support/gif/searching.gif +0 -0
  533. package/ios/Support/gif/shrimmer.gif +0 -0
  534. package/ios/TableViewCell/ChargingIndicatorTVC/ChargingIndicatorTVC.swift +45 -0
  535. package/ios/TableViewCell/ChargingIndicatorTVC/ChargingIndicatorTVC.xib +136 -0
  536. package/ios/TableViewCell/ChatOptionTVC/ChatOptionTVC.swift +34 -0
  537. package/ios/TableViewCell/ChatOptionTVC/ChatOptionTVC.xib +85 -0
  538. package/ios/TableViewCell/ConnectDeviceTVC/ConnectDeviceTVC.swift +38 -0
  539. package/ios/TableViewCell/ConnectDeviceTVC/ConnectDeviceTVC.xib +94 -0
  540. package/ios/TableViewCell/ConnectSuccessTVC/ConnectSuccessTVC.swift +52 -0
  541. package/ios/TableViewCell/ConnectSuccessTVC/ConnectSuccessTVC.xib +113 -0
  542. package/ios/TableViewCell/ImageTVC/ImageTVC.swift +123 -0
  543. package/ios/TableViewCell/ImageTVC/ImageTVC.xib +115 -0
  544. package/ios/TableViewCell/LabelTVC/LabelTVC.swift +26 -0
  545. package/ios/TableViewCell/LabelTVC/LabelTVC.xib +41 -0
  546. package/ios/TableViewCell/NoteTVC/NoteTVC.swift +58 -0
  547. package/ios/TableViewCell/NoteTVC/NoteTVC.xib +98 -0
  548. package/ios/TableViewCell/PodDetailsTVC/PodDetailsTVC.swift +31 -0
  549. package/ios/TableViewCell/PodDetailsTVC/PodDetailsTVC.xib +104 -0
  550. package/ios/TableViewCell/SearchDeviceTVC/SearchDeviceTVC.swift +28 -0
  551. package/ios/TableViewCell/SearchDeviceTVC/SearchDeviceTVC.xib +67 -0
  552. package/ios/TableViewCell/SeparatorTVC/SeparatorTVC.swift +23 -0
  553. package/ios/TableViewCell/SeparatorTVC/SeparatorTVC.xib +39 -0
  554. package/ios/TableViewCell/SwitchTVC/SwitchTVC.swift +52 -0
  555. package/ios/TableViewCell/SwitchTVC/SwitchTVC.xib +139 -0
  556. package/ios/TableViewCell/VIdeoTVC/VideoTVC.swift +28 -0
  557. package/ios/TableViewCell/VIdeoTVC/VideoTVC.xib +79 -0
  558. package/ios/TableViewCell/VerticalLabelsTVC/VerticalLabelsTVC.swift +37 -0
  559. package/ios/TableViewCell/VerticalLabelsTVC/VerticalLabelsTVC.xib +60 -0
  560. package/ios/TableViewCell/WatchVideoTVC/WatchVideoTVC.swift +37 -0
  561. package/ios/TableViewCell/WatchVideoTVC/WatchVideoTVC.xib +115 -0
  562. package/ios/ViewControllers/AttachTransmitterViewController.swift +115 -0
  563. package/ios/ViewControllers/ChatWithExpertViewController.swift +113 -0
  564. package/ios/ViewControllers/ConnectToSensorViewController.swift +368 -0
  565. package/ios/ViewControllers/ConnectToTransmitterViewController.swift +300 -0
  566. package/ios/ViewControllers/ExitJourneyViewController.swift +62 -0
  567. package/ios/ViewControllers/ProvidePermissionViewController.swift +286 -0
  568. package/ios/ViewControllers/PutOnTheSensorViewController.swift +99 -0
  569. package/ios/ViewControllers/StartConnectionViewController.swift +117 -0
  570. package/ios/ViewModel/FinalViewModel.swift +395 -0
  571. package/lib/commonjs/BcaDeviceListSheet.js +7 -6
  572. package/lib/commonjs/BcaDeviceListSheet.js.map +1 -1
  573. package/lib/commonjs/CGMConnect.js +108 -0
  574. package/lib/commonjs/CGMConnect.js.map +1 -0
  575. package/lib/commonjs/MainWebView.js +9 -5
  576. package/lib/commonjs/MainWebView.js.map +1 -1
  577. package/lib/commonjs/{index.android.js → MyTatvaRnSdkView.android.js} +44 -5
  578. package/lib/commonjs/MyTatvaRnSdkView.android.js.map +1 -0
  579. package/lib/commonjs/{index.ios.js → MyTatvaRnSdkView.ios.js} +37 -8
  580. package/lib/commonjs/MyTatvaRnSdkView.ios.js.map +1 -0
  581. package/lib/commonjs/ProgressWebView.js +14 -13
  582. package/lib/commonjs/ProgressWebView.js.map +1 -1
  583. package/lib/commonjs/Services.js.map +1 -1
  584. package/lib/commonjs/Sheets.js.map +1 -1
  585. package/lib/commonjs/api/auth.js.map +1 -1
  586. package/lib/commonjs/api/base.js +6 -4
  587. package/lib/commonjs/api/base.js.map +1 -1
  588. package/lib/commonjs/api/index.js.map +1 -1
  589. package/lib/commonjs/constants/asyncstorage.js.map +1 -1
  590. package/lib/commonjs/constants/constants.js.map +1 -1
  591. package/lib/commonjs/constants.js.map +1 -1
  592. package/lib/commonjs/helpers/Matrics.js +1 -1
  593. package/lib/commonjs/helpers/Matrics.js.map +1 -1
  594. package/lib/commonjs/helpers/bluetoothPermissionHelper.js.map +1 -1
  595. package/lib/commonjs/helpers/colors.js.map +1 -1
  596. package/lib/commonjs/helpers/common.js.map +1 -1
  597. package/lib/commonjs/helpers/fonts.js.map +1 -1
  598. package/lib/commonjs/helpers/globalStyles.js +27 -27
  599. package/lib/commonjs/helpers/globalStyles.js.map +1 -1
  600. package/lib/commonjs/helpers/icons.js.map +1 -1
  601. package/lib/commonjs/index.js +67 -0
  602. package/lib/commonjs/index.js.map +1 -0
  603. package/lib/commonjs/redux/Store.js +17 -12
  604. package/lib/commonjs/redux/Store.js.map +1 -1
  605. package/lib/commonjs/redux/hooks.js +4 -6
  606. package/lib/commonjs/redux/hooks.js.map +1 -1
  607. package/lib/commonjs/redux/sagas/AuthSaga.js +11 -18
  608. package/lib/commonjs/redux/sagas/AuthSaga.js.map +1 -1
  609. package/lib/commonjs/redux/sagas/index.js.map +1 -1
  610. package/lib/commonjs/redux/slices/authSlice.js.map +1 -1
  611. package/lib/commonjs/redux/slices/index.js +1 -2
  612. package/lib/commonjs/redux/slices/index.js.map +1 -1
  613. package/lib/commonjs/types/action-sheet.d.js +2 -0
  614. package/lib/commonjs/types/action-sheet.d.js.map +1 -0
  615. package/lib/commonjs/types/auth.js.map +1 -1
  616. package/lib/commonjs/types/common.js.map +1 -1
  617. package/lib/commonjs/types/index.js +1 -2
  618. package/lib/commonjs/types/index.js.map +1 -1
  619. package/lib/commonjs/types/sheet-manager.d.js +2 -0
  620. package/lib/commonjs/types/sheet-manager.d.js.map +1 -0
  621. package/lib/commonjs/types/svg.d.js +2 -0
  622. package/lib/commonjs/types/svg.d.js.map +1 -0
  623. package/lib/module/BcaDeviceListSheet.js +6 -4
  624. package/lib/module/BcaDeviceListSheet.js.map +1 -1
  625. package/lib/module/CGMConnect.js +94 -0
  626. package/lib/module/CGMConnect.js.map +1 -0
  627. package/lib/module/MainWebView.js +9 -5
  628. package/lib/module/MainWebView.js.map +1 -1
  629. package/lib/module/{index.android.js → MyTatvaRnSdkView.android.js} +44 -4
  630. package/lib/module/MyTatvaRnSdkView.android.js.map +1 -0
  631. package/lib/module/{index.ios.js → MyTatvaRnSdkView.ios.js} +37 -7
  632. package/lib/module/MyTatvaRnSdkView.ios.js.map +1 -0
  633. package/lib/module/ProgressWebView.js +14 -9
  634. package/lib/module/ProgressWebView.js.map +1 -1
  635. package/lib/module/Services.js.map +1 -1
  636. package/lib/module/Sheets.js.map +1 -1
  637. package/lib/module/api/auth.js.map +1 -1
  638. package/lib/module/api/base.js +6 -4
  639. package/lib/module/api/base.js.map +1 -1
  640. package/lib/module/api/index.js.map +1 -1
  641. package/lib/module/constants/asyncstorage.js.map +1 -1
  642. package/lib/module/constants/constants.js.map +1 -1
  643. package/lib/module/constants.js.map +1 -1
  644. package/lib/module/helpers/Matrics.js +1 -1
  645. package/lib/module/helpers/Matrics.js.map +1 -1
  646. package/lib/module/helpers/bluetoothPermissionHelper.js.map +1 -1
  647. package/lib/module/helpers/colors.js.map +1 -1
  648. package/lib/module/helpers/common.js.map +1 -1
  649. package/lib/module/helpers/fonts.js.map +1 -1
  650. package/lib/module/helpers/globalStyles.js +1 -1
  651. package/lib/module/helpers/globalStyles.js.map +1 -1
  652. package/lib/module/helpers/icons.js.map +1 -1
  653. package/lib/module/index.js +28 -0
  654. package/lib/module/index.js.map +1 -0
  655. package/lib/module/redux/Store.js +17 -10
  656. package/lib/module/redux/Store.js.map +1 -1
  657. package/lib/module/redux/hooks.js +3 -1
  658. package/lib/module/redux/hooks.js.map +1 -1
  659. package/lib/module/redux/sagas/AuthSaga.js +9 -16
  660. package/lib/module/redux/sagas/AuthSaga.js.map +1 -1
  661. package/lib/module/redux/sagas/index.js.map +1 -1
  662. package/lib/module/redux/slices/authSlice.js.map +1 -1
  663. package/lib/module/redux/slices/index.js.map +1 -1
  664. package/lib/module/types/action-sheet.d.js +2 -0
  665. package/lib/module/types/action-sheet.d.js.map +1 -0
  666. package/lib/module/types/auth.js.map +1 -1
  667. package/lib/module/types/common.js.map +1 -1
  668. package/lib/module/types/index.js.map +1 -1
  669. package/lib/module/types/sheet-manager.d.js +2 -0
  670. package/lib/module/types/sheet-manager.d.js.map +1 -0
  671. package/lib/module/types/svg.d.js +2 -0
  672. package/lib/module/types/svg.d.js.map +1 -0
  673. package/lib/typescript/BcaDeviceListSheet.d.ts +8 -3
  674. package/lib/typescript/CGMConnect.d.ts +8 -0
  675. package/lib/typescript/MainWebView.d.ts +0 -1
  676. package/lib/typescript/ProgressWebView.d.ts +0 -1
  677. package/lib/typescript/api/auth.d.ts +0 -1
  678. package/lib/typescript/api/base.d.ts +0 -1
  679. package/lib/typescript/api/index.d.ts +0 -1
  680. package/lib/typescript/constants/asyncstorage.d.ts +0 -1
  681. package/lib/typescript/constants/constants.d.ts +0 -1
  682. package/lib/typescript/constants.d.ts +0 -1
  683. package/lib/typescript/helpers/Matrics.d.ts +0 -1
  684. package/lib/typescript/helpers/bluetoothPermissionHelper.d.ts +0 -1
  685. package/lib/typescript/helpers/colors.d.ts +0 -1
  686. package/lib/typescript/helpers/common.d.ts +0 -1
  687. package/lib/typescript/helpers/fonts.d.ts +0 -1
  688. package/lib/typescript/helpers/globalStyles.d.ts +26 -27
  689. package/lib/typescript/helpers/icons.d.ts +4 -4
  690. package/lib/typescript/redux/Store.d.ts +5 -7
  691. package/lib/typescript/redux/hooks.d.ts +1 -1
  692. package/lib/typescript/redux/sagas/AuthSaga.d.ts +2 -3
  693. package/lib/typescript/redux/sagas/index.d.ts +0 -1
  694. package/lib/typescript/redux/slices/authSlice.d.ts +0 -1
  695. package/lib/typescript/redux/slices/index.d.ts +0 -1
  696. package/lib/typescript/types/auth.d.ts +0 -1
  697. package/lib/typescript/types/common.d.ts +0 -1
  698. package/lib/typescript/types/index.d.ts +0 -1
  699. package/package.json +14 -11
  700. package/src/BcaDeviceListSheet.tsx +20 -9
  701. package/src/CGMConnect.ts +118 -0
  702. package/src/{index.android.js → MyTatvaRnSdkView.android.js} +95 -39
  703. package/src/{index.ios.js → MyTatvaRnSdkView.ios.js} +14 -1
  704. package/src/ProgressWebView.tsx +2 -1
  705. package/src/helpers/Matrics.ts +1 -1
  706. package/src/helpers/globalStyles.ts +1 -1
  707. package/src/index.js +33 -0
  708. package/src/redux/Store.ts +21 -12
  709. package/src/redux/hooks.ts +3 -1
  710. package/src/redux/sagas/AuthSaga.ts +30 -36
  711. package/src/types/action-sheet.d.ts +22 -0
  712. package/src/types/sheet-manager.d.ts +14 -0
  713. package/src/types/svg.d.ts +5 -0
  714. package/lib/commonjs/index.android.js.map +0 -1
  715. package/lib/commonjs/index.ios.js.map +0 -1
  716. package/lib/module/index.android.js.map +0 -1
  717. package/lib/module/index.ios.js.map +0 -1
  718. package/lib/typescript/BcaDeviceListSheet.d.ts.map +0 -1
  719. package/lib/typescript/MainWebView.d.ts.map +0 -1
  720. package/lib/typescript/ProgressWebView.d.ts.map +0 -1
  721. package/lib/typescript/Services.d.ts +0 -5
  722. package/lib/typescript/Services.d.ts.map +0 -1
  723. package/lib/typescript/Sheets.d.ts +0 -2
  724. package/lib/typescript/Sheets.d.ts.map +0 -1
  725. package/lib/typescript/api/auth.d.ts.map +0 -1
  726. package/lib/typescript/api/base.d.ts.map +0 -1
  727. package/lib/typescript/api/index.d.ts.map +0 -1
  728. package/lib/typescript/constants/asyncstorage.d.ts.map +0 -1
  729. package/lib/typescript/constants/constants.d.ts.map +0 -1
  730. package/lib/typescript/constants.d.ts.map +0 -1
  731. package/lib/typescript/helpers/Matrics.d.ts.map +0 -1
  732. package/lib/typescript/helpers/bluetoothPermissionHelper.d.ts.map +0 -1
  733. package/lib/typescript/helpers/colors.d.ts.map +0 -1
  734. package/lib/typescript/helpers/common.d.ts.map +0 -1
  735. package/lib/typescript/helpers/fonts.d.ts.map +0 -1
  736. package/lib/typescript/helpers/globalStyles.d.ts.map +0 -1
  737. package/lib/typescript/helpers/icons.d.ts.map +0 -1
  738. package/lib/typescript/index.android.d.ts +0 -30
  739. package/lib/typescript/index.android.d.ts.map +0 -1
  740. package/lib/typescript/index.ios.d.ts +0 -28
  741. package/lib/typescript/index.ios.d.ts.map +0 -1
  742. package/lib/typescript/redux/Store.d.ts.map +0 -1
  743. package/lib/typescript/redux/hooks.d.ts.map +0 -1
  744. package/lib/typescript/redux/sagas/AuthSaga.d.ts.map +0 -1
  745. package/lib/typescript/redux/sagas/index.d.ts.map +0 -1
  746. package/lib/typescript/redux/slices/authSlice.d.ts.map +0 -1
  747. package/lib/typescript/redux/slices/index.d.ts.map +0 -1
  748. package/lib/typescript/types/auth.d.ts.map +0 -1
  749. package/lib/typescript/types/common.d.ts.map +0 -1
  750. package/lib/typescript/types/index.d.ts.map +0 -1
  751. /package/ios/{MyTatvaRnSdk.xcodeproj → VisitRnSdk.xcodeproj}/project.pbxproj +0 -0
@@ -0,0 +1,723 @@
1
+ //
2
+ // KLTBluetoothManager.m
3
+ // KaiLiTe
4
+ //
5
+ // Created by boosal on 2016/9/8.
6
+ // Copyright © 2016年 boosal. All rights reserved.
7
+ //
8
+
9
+ #import "KLTBluetoothManager.h"
10
+ #import "KLTFormat.h"
11
+ #import "KLTDatabaseHandler.h"
12
+ #import "CGMAlgo.h"
13
+ #import "KLTUserDefautKeyDefine.h"
14
+ #import "KLTLaunchConfiguration.h"
15
+ #import "KLTCommonDefine.h"
16
+ #import "KLTPrefixHeader.pch"
17
+ @interface KLTBluetoothManager ()
18
+
19
+ @property (nonatomic, assign) BOOL isInResend;
20
+ @property (nonatomic, strong) EDevice *eDevice;
21
+ @property (nonatomic, strong) CBPeripheral *bgConnectPeripheral;
22
+
23
+ @property (nonatomic, assign) BOOL isBgForceConnectDevice;
24
+ @property (nonatomic, assign) BOOL isFromPrefix22;
25
+ @property (nonatomic, strong) NSTimer *connectWatchTimer;
26
+ // 最多连接三次即超时
27
+ @property (nonatomic, assign) NSInteger connectWatchMaxTimes;
28
+ // 蓝牙管理状态
29
+ @property (nonatomic, assign) CBManagerState centralManagerState;
30
+
31
+ @end
32
+
33
+ @implementation KLTBluetoothManager
34
+
35
+ #pragma mark - init method
36
+
37
+ - (void)dealloc {
38
+ if (_connectTimer) {
39
+ [_connectTimer invalidate];
40
+ _connectTimer = nil;
41
+ }
42
+
43
+ if (_bgConnectTimer) {
44
+ [_bgConnectTimer invalidate];
45
+ _bgConnectTimer = nil;
46
+ }
47
+
48
+ if (_rescanTimer) {
49
+ [_rescanTimer invalidate];
50
+ _rescanTimer = nil;
51
+ }
52
+
53
+ if (self.connectWatchTimer) {
54
+ [self.connectWatchTimer invalidate];
55
+ self.connectWatchTimer = nil;
56
+ }
57
+ }
58
+
59
+ - (instancetype)init {
60
+ self = [super init];
61
+ if (self) {
62
+ self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
63
+ self.peripherals = [NSMutableArray array];
64
+ self.status = BluetoothManagerStatusInitial;
65
+ self.isInResend = NO;
66
+ }
67
+
68
+ return self;
69
+ }
70
+
71
+ + (KLTBluetoothManager *)sharedManager {
72
+ static KLTBluetoothManager *bluetooth;
73
+ static dispatch_once_t onceToken;
74
+ dispatch_once(&onceToken, ^{
75
+ bluetooth = [[self alloc] init];
76
+ });
77
+
78
+ return bluetooth;
79
+ }
80
+
81
+
82
+ #pragma mark - cbcenteralmanager delegate
83
+
84
+ - (void)centralManagerDidUpdateState:(CBCentralManager *)central {
85
+ switch (central.state) {
86
+ case CBManagerStateUnknown:
87
+ case CBManagerStateResetting:
88
+ case CBManagerStateUnsupported:
89
+ KLTLog(@"该设备不支持蓝牙,请更换设备");
90
+ [Notification_Center postNotificationName:@"BluetoothEnable" object:@(NO)];
91
+ break;
92
+ case CBManagerStateUnauthorized:
93
+ KLTLog(@"Allen CBManagerStateUnauthorized");
94
+ break;
95
+ case CBManagerStatePoweredOff: {
96
+ KLTLog(@"蓝牙没有打开,请先打开蓝牙");
97
+ if (self.connectedPeripheral) {
98
+ self.connectedPeripheral = nil;
99
+ [self.peripherals removeAllObjects];
100
+ }
101
+ [Notification_Center postNotificationName:@"BluetoothEnable" object:@(NO)];
102
+ }
103
+ break;
104
+ case CBManagerStatePoweredOn: {
105
+ [Notification_Center postNotificationName:@"BluetoothEnable" object:@(YES)];
106
+ }
107
+ break;
108
+ default:
109
+ break;
110
+ }
111
+
112
+ self.centralManagerState = central.state;
113
+ }
114
+
115
+ - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI {
116
+ KLTLog(@" %@---%@-----\n%@ ",peripheral,advertisementData,RSSI);
117
+ Verify *verifyModel = [ProtocalTools verify:advertisementData];
118
+ if (verifyModel) {
119
+ if (![self.peripherals containsObject:peripheral] && peripheral.name.length != 0) {
120
+ Device *device = [[KLTDatabaseHandler shared] addDevice:peripheral];
121
+ Advertise *advertise = [[KLTDatabaseHandler shared] addAdvertisement:advertisementData];
122
+ device.advertise = advertise;
123
+ advertise.device = device;
124
+ [[KLTDatabaseHandler shared].appDelegate saveContext];
125
+ KLTLog(@"has useable %@---%@-----\n%@ ",peripheral,advertisementData,RSSI);
126
+
127
+ if (verifyModel.isBound) {
128
+ if (self.currentDevice && [peripheral.identifier.UUIDString isEqualToString:self.currentDevice.identifier]) {
129
+ // 一般属于已连接过的蓝牙设备触发场景(manufactureData最后一个字节为01 别的手机设备搜索蓝牙时根据判断为01时不展示)
130
+ // 已经扫描到上一次连接记录的发射器,停止扫描并尝试连接
131
+ [self.peripherals addObject:peripheral];
132
+ [self connectPeripheral:peripheral];
133
+ return;
134
+ }
135
+ } else {
136
+ // 未被连接的蓝牙设备manufactureData最后尾数00(已经连接01 不展示到搜索列表self.peripherals缓存中)才走此流程
137
+ [self.peripherals addObject:peripheral];
138
+ }
139
+ }
140
+
141
+ if ([self.bluetoothDelegate respondsToSelector:@selector(onFindDevices:connectedDevice:)]) {
142
+ [self.bluetoothDelegate onFindDevices:_peripherals connectedDevice:nil];
143
+ }
144
+ }
145
+ }
146
+
147
+ - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
148
+ KLTLog(@"%s", __FUNCTION__);
149
+ self.isBgForceConnectDevice = NO;
150
+ if (_bgConnectTimer) {
151
+ [_bgConnectTimer invalidate];
152
+ _bgConnectTimer = nil;
153
+ }
154
+ if (_rescanTimer) {
155
+ [_rescanTimer invalidate];
156
+ _rescanTimer = nil;
157
+ }
158
+
159
+ _currentDevice = nil;
160
+ self.connectedPeripheral = peripheral;
161
+ self.status = BluetoothManagerStatusConnected;
162
+ [[KLTDatabaseHandler shared] updateDeviceWithDeviceId:[self.connectedPeripheral.identifier UUIDString] scannedTime:nil connectTime:[NSString getWholeStringWithDate:NSDate.date] disConnectTime:nil];
163
+
164
+ Device *device = self.currentDevice;
165
+ self.eDevice = [EDevice getEnumDevice:device.advertise.localName];
166
+ [KLTLaunchConfiguration.sharedManager updateInitialPeriod:self.eDevice.initHour * 60 * 60];
167
+
168
+ if ([self.bluetoothDelegate respondsToSelector:@selector(onFindDevices:connectedDevice:)]) {
169
+ [self.bluetoothDelegate onFindDevices:self.peripherals connectedDevice:peripheral];
170
+ }
171
+
172
+ self.isInResend = YES;
173
+ peripheral.delegate = self;
174
+ [peripheral discoverServices:@[[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_SERVICE]]];
175
+ [self stopScan];
176
+ }
177
+
178
+ - (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
179
+ KLTLog(@"%s", __FUNCTION__);
180
+ [self terminateConnection];
181
+ }
182
+
183
+ - (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
184
+ KLTLog(@"%s", __FUNCTION__);
185
+ self.bgConnectPeripheral = peripheral;
186
+
187
+ [[KLTDatabaseHandler shared] updateDeviceWithDeviceId:[self.connectedPeripheral.identifier UUIDString] scannedTime:nil connectTime:nil disConnectTime:[NSString getWholeStringWithDate:NSDate.date]];
188
+ self.connectedPeripheral = nil;
189
+ self.status = BluetoothManagerStatusDisconnected;
190
+
191
+ if ([[User_Defaults objectForKey:@"bgmode"] intValue] == 1) {
192
+ if (!KLTLocalSettingManager.shareInstance.canConnectOtherDevice) {
193
+ /* 如果当前周期还没结束且处于后台,则强制连接发射器 */
194
+ if (!self.isBgForceConnectDevice) {
195
+ [self connectPeripheral:peripheral];
196
+ self.isBgForceConnectDevice = YES;
197
+ }
198
+
199
+ if (!_rescanTimer) {
200
+ [_rescanTimer invalidate];
201
+ _rescanTimer = nil;
202
+ _rescanTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(startScan) userInfo:nil repeats:YES];
203
+ }
204
+ }
205
+ } else {
206
+ self.isBgForceConnectDevice = NO;
207
+ if ([self.peripherals containsObject:peripheral]) {
208
+ [self.peripherals removeObject:peripheral];
209
+ }
210
+ if ([self.bluetoothDelegate respondsToSelector:@selector(onFindDevices:connectedDevice:)]) {
211
+ [self.bluetoothDelegate onFindDevices:_peripherals connectedDevice:nil];
212
+ }
213
+ }
214
+ }
215
+
216
+ #pragma mark - peripheral delgate
217
+
218
+ - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
219
+ KLTLog(@"%s", __FUNCTION__);
220
+ if (error) {
221
+ [self terminateConnection];
222
+ return;
223
+ }
224
+
225
+ for (CBService *service in peripheral.services) {
226
+ [peripheral discoverCharacteristics:@[[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_WRITE], [CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_READ]] forService:service];
227
+ }
228
+ }
229
+
230
+ - (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
231
+ if (![characteristic.UUID isEqual:[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_READ]]) {
232
+ return;
233
+ }
234
+ KLTLog(@"%s", __FUNCTION__);
235
+ if (!characteristic.isNotifying) {
236
+ [self.centralManager cancelPeripheralConnection:peripheral];
237
+ }
238
+ }
239
+
240
+ - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
241
+ KLTLog(@"%s", __FUNCTION__);
242
+ }
243
+
244
+ - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
245
+ KLTLog(@"%s", __FUNCTION__);
246
+ if (error) {
247
+ [self terminateConnection];
248
+ return;
249
+ }
250
+
251
+ for (CBCharacteristic *characteristic in service.characteristics) {
252
+ if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_WRITE]]) {
253
+ self.writeReadCharacteristic = characteristic;
254
+ if ([@"CT4" isEqualToString:self.eDevice.deviceType]) {
255
+ // CT3 CT4处理首次绑定流程和重连流程
256
+ [self requestResendCT3];
257
+ }
258
+ }
259
+
260
+ if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_READ]]) {
261
+ self.notifyCharacteristic = characteristic;
262
+ [peripheral setNotifyValue:YES forCharacteristic:characteristic];
263
+ }
264
+ }
265
+ }
266
+
267
+ // 获取外设发来的数据,不论是read还是notify,获取数据都是从这个方法中读取。
268
+ - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
269
+ if (error) {
270
+ return;
271
+ }
272
+ if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_READ]]) {
273
+ if (!characteristic.value || characteristic.value.length == 0) {
274
+ return;
275
+ }
276
+
277
+ NSString *hex = [KLTFormat dataToHexString:characteristic.value isReverse:NO];
278
+ NSString *command = [hex substringWithRange:NSMakeRange(0, 2)];
279
+ if ([command isEqualToString:@"05"]) {
280
+ // CT3、CT4的自检协议0x05响应(只检测电压>=3.9)
281
+ HW_CHECK_RET ret = [ProtocalTools check_response:characteristic.value andEDevice:self.eDevice];
282
+ if (HW_CHECK_SUCCESS == ret) {
283
+ [KLTDatabaseHandler.shared updateDevice:self.currentDevice initialBeginDate:nil endDate:nil];
284
+ // CT3设置时间协议0x03请求
285
+ NSData *value = [ProtocalTools setDate_request:self.eDevice];
286
+ [peripheral writeValue:value forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
287
+ } else if (HW_CHECK_FAIL_POWER == ret) {
288
+ // CT3通知扫码页面处理绑定失败操作后的流程 (断开连接,返回主界面提示电量不足,更换电池)
289
+ [Notification_Center postNotificationName:KLTAlertSelfCheckFailedNotify object:@(ret)];
290
+ [self resetBleSensorData];
291
+ } else if (HW_CHECK_FAIL == ret) {
292
+ // 通知扫码页面处理绑定失败操作后的流程 (断开连接,返回主界面)
293
+ self.status = BluetoothManagerStatusClosed;
294
+ [self resetBleSensorData];
295
+ }
296
+ }
297
+
298
+ if ([command isEqualToString:@"22"]) {
299
+ // CT4重传的数据,pullGlucose_series_request 0x22的返回
300
+ [self handleResendDataWithPrefix22:characteristic.value];
301
+ }
302
+
303
+ if ([command isEqualToString:@"03"]) {
304
+ // CT4的设置时间协议0x03响应
305
+ if ([ProtocalTools setDate_response:characteristic.value andEDevice:self.eDevice]) {
306
+ // CT3 CT4开始初始化协议0x06
307
+ NSData *data = [ProtocalTools start_init_request:self.eDevice];
308
+ [self.connectedPeripheral writeValue:data forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
309
+ } else {
310
+ // 发射器绑定失败
311
+ self.status = BluetoothManagerStatusClosed;
312
+ [self resetBleSensorData];
313
+ }
314
+ }
315
+
316
+ if ([command isEqualToString:@"06"]) {
317
+ // 06:CT3初始化协议响应后发射低功耗
318
+ if ([ProtocalTools init_response:characteristic.value andEDevice:self.eDevice]) {
319
+ KLTLocalSettingManager.shareInstance.canConnectOtherDevice = NO;
320
+
321
+ NSString *snLocalName = self.currentDevice.advertise.localName;
322
+ // 创建新的runLog CSV
323
+ KLTRunLog *runLog = [KLTAppDelegate getCurrentKLTRunLog];
324
+ [runLog createNewCSV:snLocalName];
325
+
326
+ // 开始初始化,倒计时3小时开始
327
+ self.status = BluetoothManagerStatusInitialStart;
328
+ self.isInResend = NO;
329
+
330
+ NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + 180 * self.eDevice.initNumber;
331
+ NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
332
+ [KLTDatabaseHandler.shared updateDevice:self.currentDevice initialBeginDate:[NSString getWholeStringWithDate:NSDate.date] endDate:[NSString getWholeStringWithDate:newDate]];
333
+ self.dataType = ReceiveDataBeforeSetUserReference;
334
+
335
+ // CT3 初始化协议后发射低功耗
336
+ [self.connectedPeripheral writeValue:[ProtocalTools lowPower_request:self.eDevice] forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
337
+
338
+ [User_Defaults setObject:[NSString stringWithFormat:@"%@_%ld", snLocalName, (long)[[NSDate date] timeIntervalSince1970]] forKey:@"wearingRecordId"];
339
+ [User_Defaults synchronize];
340
+ } else {
341
+ // 发射器绑定失败
342
+ self.status = BluetoothManagerStatusClosed;
343
+ [self resetBleSensorData];
344
+ }
345
+ }
346
+
347
+ if ([command isEqualToString:@"07"]) {
348
+ // CT3/CT4 每3分钟上来的数据
349
+ [self handleReceiveDataWithPrefix07:characteristic.value];
350
+ }
351
+
352
+ if ([command isEqualToString:@"0A"]) {
353
+ // CT3/CT4解绑协议0x0A响应
354
+ BOOL success = [ProtocalTools unBind_response:characteristic.value andEDevice:self.eDevice];
355
+ if (success) {
356
+ // 通知初始化页面或首页操作解绑后的流程
357
+ self.status = BluetoothManagerStatusClosed;
358
+ [self resetBleSensorData];
359
+ if ([self.bluetoothDelegate respondsToSelector:@selector(onFindDevices:connectedDevice:)]) {
360
+ [self.bluetoothDelegate onFindDevices:self.peripherals connectedDevice:nil];
361
+ }
362
+ }
363
+ }
364
+
365
+ if ([command isEqualToString:@"11"]) {
366
+ // CT3 CT4重传数据完毕调用重置协议(响应)
367
+ TransmitterReset *resetData = [ProtocalTools reset_response2:characteristic.value andEDevice:self.eDevice];
368
+ if (resetData.isBind) {
369
+ //重置成功-->CT3发射低功耗协议
370
+ [peripheral writeValue:[ProtocalTools lowPower_request:self.eDevice] forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
371
+ } else {
372
+ // CT3发射器解除绑定(如场景:发射器进行充电重启后再连接时发现为未绑定状态)
373
+ self.status = BluetoothManagerStatusSensorLostPower;
374
+ }
375
+ }
376
+ }
377
+ }
378
+
379
+
380
+ #pragma mark - 发射器通用接受数据处理、算法计算处理
381
+
382
+ // 发射器处理单条血糖数据的算法调用保存
383
+ - (void)handleCommonCT3GlucoseDataWithReceiveData:(ReceiveData *)receiveData {
384
+ int glucoseId = receiveData.glucoseId.intValue;
385
+ if (glucoseId >= self.eDevice.initNumber - 1) {
386
+ // CT3 id == 19 时就出值
387
+ self.dataType = ReceiveDataAfterSetUserReference;
388
+ self.resendType = ResendDataAfterSetUserBG;
389
+
390
+ Device *currentDevice = self.currentDevice;
391
+ GlucoseData *glucose = [[KLTDatabaseHandler shared] addCT3GlucoseDataWithReceiveData:receiveData];
392
+ KLTLog(@"计算glucose.gluADC = %@, glucose.errorCode = %@", glucose.gluADC, glucose.errorCode);
393
+ [currentDevice addGlucoseDatasObject:glucose];
394
+ if (!self.isInResend) {
395
+ [Notification_Center postNotificationName:@"latestGluData" object:glucose];
396
+ self.status = BluetoothManagerStatusGetGLU;
397
+ }
398
+ if (currentDevice.userBG) {
399
+ // 用来存取下一个血糖点需要调用校准算法,后续血糖点则正常调用非校准传参算法
400
+ currentDevice.userBG = nil;
401
+ }
402
+ } else {
403
+ self.dataType = ReceiveDataBeforeSetUserReference;
404
+ self.resendType = ResendDataBeforeSetUserBG;
405
+
406
+ //初始化期间接收到的数据存数据库的ReceiveData表中,不做处理
407
+ [[KLTDatabaseHandler shared] updatePOCAlgoBeforeRef:receiveData];
408
+ KLTLog(@"计算receive.gluADC = %@, receive.error = %@", receiveData.gluADC, receiveData.error);
409
+ if (!self.isInResend) {
410
+ // 初始化期间收到异常电流数据提醒 (判断18分钟开始才会提醒"Sensor signal error")
411
+ [Notification_Center postNotificationName:KLTAlertCurrentInInitialNotify object:receiveData];
412
+ }
413
+ }
414
+
415
+ receiveData.dataType = @(self.dataType);
416
+ [[KLTDatabaseHandler shared].appDelegate saveContext];
417
+ }
418
+
419
+ // 发射器处理单条血糖数据的通用解析
420
+ - (ReceiveData *)handleCommonReceiveGluData:(Glucose *)gluData commandText:(NSString *)commandText {
421
+ Device *currentDevice = self.currentDevice;
422
+ //接收到的数据先存放到ReceiveDataInfo表
423
+ ReceiveData *receive = [KLTDatabaseHandler.shared addReceiveCT3DataWithDevice:currentDevice];
424
+
425
+ NSDate *startInitDate = [KLTFormat getDateFromString:currentDevice.initialBeginDate];
426
+ NSDate *gluDate = [NSDate dateWithTimeInterval:(gluData.gluID + 1) * self.eDevice.initHour*60*60/self.eDevice.initNumber sinceDate:startInitDate];
427
+ NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute;
428
+ NSDateComponents *components = [[NSCalendar currentCalendar] components:unitFlags fromDate:gluDate];
429
+ receive.year = @(components.year);
430
+ receive.month = @(components.month);
431
+ receive.day = @(components.day);
432
+ receive.hour = @(components.hour);
433
+ receive.minute = @(components.minute);
434
+ receive.receiveDateTime = [NSString stringWithFormat:@"%@-%02d-%02d %02d:%02d",receive.year,[receive.month intValue],[receive.day intValue],[receive.hour intValue],[receive.minute intValue]];
435
+
436
+ receive.glucoseId = @(gluData.gluID);
437
+ receive.operatingCurrent = @(gluData.iw);
438
+ receive.blankCurrent = @(gluData.ib);
439
+ receive.temperature = @(gluData.T);
440
+ receive.dataType = @(self.resendType);
441
+ receive.commandStr = commandText;
442
+ receive.device = currentDevice;
443
+ [currentDevice addReceiveDatasObject:receive];
444
+ [[KLTDatabaseHandler shared].appDelegate saveContext];
445
+
446
+ return receive;
447
+ }
448
+
449
+ #pragma mark - CT3 绑定/重连流程、血糖拉取/每3分钟接收
450
+
451
+ // CT3连接、重连流程
452
+ - (void)requestResendCT3 {
453
+ Device *currentDevice = self.currentDevice;
454
+ if (KLTLocalSettingManager.shareInstance.canConnectOtherDevice) {
455
+ // 直接开始自检协议
456
+ [self.connectedPeripheral writeValue:[ProtocalTools check_request:self.eDevice] forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
457
+ } else {
458
+ // 二次重连 0x22快传批量数据
459
+ NSInteger maxGlucoseId = [[KLTDatabaseHandler shared] getLatestAndMaxGlucoseIdOfDevice:currentDevice];
460
+ [self pullGlucouseSeriesRequestWithGlucoseId:maxGlucoseId];
461
+ }
462
+ }
463
+
464
+ // CT3/CT4 每3分钟上来的数据
465
+ - (void)handleReceiveDataWithPrefix07:(NSData *)receiveData {
466
+ if (self.status == BluetoothManagerStatusResendStart || self.isInResend) {
467
+ // 重发数据期间不处理新收到的数据
468
+ return;
469
+ }
470
+
471
+ NSInteger maxGlucoseId = [[KLTDatabaseHandler shared] getLatestAndMaxGlucoseIdOfDevice:self.currentDevice];
472
+ Glucose *gluData = [ProtocalTools getGlucose:receiveData andEDevice:self.eDevice];
473
+ if (gluData.gluID == maxGlucoseId + 1) {
474
+ [self handleReceiveDataWithPrefix07Glucose:gluData];
475
+ } else if (gluData.gluID > maxGlucoseId + 1) {
476
+ // 如果拿到的数据大于下一条数据的gluID 证明需要重新拉取中间漏掉的数据(22拉取协议)
477
+ [self pullGlucouseSeriesRequestWithGlucoseId:maxGlucoseId];
478
+ }
479
+ }
480
+
481
+ - (void)pullGlucouseSeriesRequestWithGlucoseId:(NSInteger)glucoseId {
482
+ NSInteger remain_points = self.eDevice.endNumber - (glucoseId + 1);
483
+ if (remain_points <= 0) {
484
+ [self closeBleSensor];
485
+ } else {
486
+ // 数据没拉取完继续拉取蓝牙断开期间的数据(0x22拉取协议)
487
+ NSInteger pullNums = 20;
488
+ if (remain_points < pullNums) {
489
+ pullNums = remain_points;
490
+ }
491
+
492
+ NSData *data = [ProtocalTools pullGlucose_series_request:glucoseId + 1 andNumber:pullNums andEDevice:self.eDevice];
493
+ [self.connectedPeripheral writeValue:data forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
494
+ self.status = BluetoothManagerStatusResendStart;
495
+ self.isInResend = YES;
496
+ }
497
+ }
498
+
499
+ // CT3 CT4重传的数据,pullGlucose_series_request 22的返回
500
+ - (void)handleResendDataWithPrefix22:(NSData *)resendData {
501
+ NSArray<Glucose *> *glucoseList = [ProtocalTools getGlucose_series:resendData andEDevice:self.eDevice];
502
+ if (glucoseList.count == 0) {
503
+ // 重传数据完毕
504
+ self.isInResend = NO;
505
+ self.status = BluetoothManagerStatusResendEnd;
506
+ [Notification_Center postNotificationName:@"DidHandleResendData" object:nil];
507
+
508
+ // CT3/CT4发送重置协议这条命令0x11,结束重传状态
509
+ [self.connectedPeripheral writeValue:[ProtocalTools reset_request:self.eDevice] forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
510
+ } else {
511
+ for (Glucose *glucose in glucoseList) {
512
+ ReceiveData *receive = [self handleCommonReceiveGluData:glucose commandText:@"22"];
513
+ self.isFromPrefix22 = YES;
514
+ [self handleCommonCT3GlucoseDataWithReceiveData:receive];
515
+ }
516
+
517
+ [Notification_Center postNotificationName:KLTUpdateDataNotify object:NULL];
518
+
519
+ NSInteger maxGlucoseId = [KLTDatabaseHandler.shared getLatestAndMaxGlucoseIdOfDevice:self.currentDevice];
520
+ NSInteger remain_points = self.eDevice.endNumber - (maxGlucoseId + 1);
521
+ if (remain_points <= 0) {
522
+ [self closeBleSensor];
523
+ } else {
524
+ // 数据没拉取完继续拉取蓝牙断开期间的数据(0x22拉取协议)
525
+ NSInteger pullNums = 20;
526
+ if (remain_points < pullNums) {
527
+ pullNums = remain_points;
528
+ }
529
+ NSData *data = [ProtocalTools pullGlucose_series_request:maxGlucoseId + 1 andNumber:pullNums andEDevice:self.eDevice];
530
+ [self.connectedPeripheral writeValue:data forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
531
+ }
532
+ }
533
+ }
534
+
535
+ // CT3/CT4 正常3分钟一次接收的单条数据
536
+ - (void)handleReceiveDataWithPrefix07Glucose:(Glucose *)gluData {
537
+ ReceiveData *receive = [self handleCommonReceiveGluData:gluData commandText:@"07"];
538
+ [Notification_Center postNotificationName:@"didReceiveNewData" object:receive];
539
+ self.isFromPrefix22 = NO;
540
+ [self handleCommonCT3GlucoseDataWithReceiveData:receive];
541
+ [Notification_Center postNotificationName:@"DidHandleResendDataNoReload" object:nil];
542
+ [Notification_Center postNotificationName:KLTUpdateDataNotify object:NULL];
543
+ NSInteger remain_points = [KLTDatabaseHandler.shared numberOfLifeCycleSensorWithDevice:self.currentDevice endNumber:self.eDevice.endNumber];
544
+ if (remain_points <= 0) {
545
+ [self closeBleSensor];
546
+ }
547
+ }
548
+
549
+ #pragma mark - 断开连接后的本地数据重置处理
550
+
551
+ - (void)resetBleSensorData {
552
+ // 断开与外设的连接,取消对characteristic的监听
553
+ [self terminateConnection];
554
+
555
+ Device *currentDevice = self.currentDevice;
556
+ if (currentDevice) {
557
+ currentDevice.userBG = nil;
558
+ currentDevice.connectedDateTime = nil;
559
+ currentDevice.disconnectedDateTime = nil;
560
+ currentDevice.initialBeginDate = nil;
561
+ currentDevice.initialEndDate = nil;
562
+ [[KLTDatabaseHandler shared].appDelegate saveContext];
563
+ }
564
+ _currentDevice = nil;
565
+ self.dataType = ReceiveDataBeforeSetUserReference;
566
+ self.resendType = ResendDataBeforeSetUserBG;
567
+
568
+ [self.peripherals removeAllObjects];
569
+ self.connectedPeripheral = nil;
570
+
571
+ [_connectTimer invalidate];
572
+ _connectTimer = nil;
573
+ [_rescanTimer invalidate];
574
+ _rescanTimer = nil;
575
+
576
+ [User_Defaults removeObjectForKey:KLTLocalDeviceQRCodeInfoKey];
577
+ KLTLocalSettingManager.shareInstance.canConnectOtherDevice = YES;
578
+ [User_Defaults setObject:nil forKey:@"silenceStart"];
579
+ [User_Defaults setObject:nil forKey:@"alertKindOnSilence"];
580
+ [User_Defaults synchronize];
581
+ }
582
+
583
+ #pragma mark - other method
584
+
585
+ - (void)endScan {
586
+ // 20s后扫描设备超时未连上再次尝试连接
587
+ if (self.currentDevice && BluetoothManagerStatusScanStart == self.status) {
588
+ for (CBPeripheral *per in self.peripherals) {
589
+ if ([per.identifier.UUIDString isEqualToString:self.currentDevice.identifier]) {
590
+ KLTLog(@"endScan connectPeripheral...");
591
+ [self connectPeripheral:per];
592
+ return;
593
+ }
594
+ }
595
+ }
596
+
597
+ [self stopScan];
598
+ self.status = BluetoothManagerStatusTimeOut;
599
+ }
600
+
601
+ // 停止扫描
602
+ - (void)stopScan {
603
+ self.status = BluetoothManagerStatusScanStop;
604
+ [self.centralManager stopScan];
605
+
606
+ [_connectTimer invalidate];
607
+ _connectTimer = nil;
608
+ }
609
+
610
+ // 开始扫描
611
+ - (void)startScan {
612
+ self.connectedPeripheral = nil;
613
+ [self.peripherals removeAllObjects];
614
+
615
+ if (self.centralManager.state != CBManagerStatePoweredOn) {
616
+ return;
617
+ }
618
+ KLTLog(@"Allen manager start scan %d", __LINE__);
619
+
620
+ if ([[User_Defaults objectForKey:@"bgmode"] intValue] == 1) {
621
+ self.status = BluetoothManagerStatusDisconnected;
622
+
623
+ [[KLTDatabaseHandler shared] updateDeviceWithDeviceId:[self.bgConnectPeripheral.identifier UUIDString] scannedTime:nil connectTime:nil disConnectTime:[KLTFormat getDateString]];
624
+ self.connectedPeripheral = nil;
625
+
626
+ if (!KLTLocalSettingManager.shareInstance.canConnectOtherDevice) {
627
+ /* 如果当前周期还没结束且处于后台,则强制连接发射器 */
628
+ if (!self.isBgForceConnectDevice) {
629
+ [self connectPeripheral:self.bgConnectPeripheral];
630
+ self.isBgForceConnectDevice = YES;
631
+ }
632
+
633
+ if (!_rescanTimer) {
634
+ [_rescanTimer invalidate];
635
+ _rescanTimer = nil;
636
+ _rescanTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(startScan) userInfo:nil repeats:YES];
637
+ }
638
+ }
639
+ return;
640
+ }
641
+
642
+ self.isBgForceConnectDevice = NO;
643
+ self.status = BluetoothManagerStatusScanStart;
644
+ // 如果用特定的UUID传参可能找不到任何设备
645
+ // [self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:SERVICE_UUID]] options:nil];
646
+ // 扫描多台外设
647
+ NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
648
+ [self.centralManager scanForPeripheralsWithServices:nil options:scanOptions];
649
+ // 用定时器来监控扫描超时的情况、监控扫描时间的定时器
650
+ _connectTimer = [NSTimer scheduledTimerWithTimeInterval:20.f target:self selector:@selector(endScan) userInfo:nil repeats:NO];
651
+ }
652
+
653
+ // 断开与外设的连接,取消对characteristic的监听
654
+ - (void)terminateConnection {
655
+ for (CBPeripheral *peripheral in self.peripherals) {
656
+ if (peripheral.services != nil) {
657
+ for (CBService *service in peripheral.services) {
658
+ if (service.characteristics != nil) {
659
+ for (CBCharacteristic *characteristic in service.characteristics) {
660
+ if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:self.eDevice.eGattMessage.UUID_READ]]) {
661
+ if (characteristic.isNotifying) {
662
+ [peripheral setNotifyValue:NO forCharacteristic:characteristic];
663
+ return;
664
+ }
665
+ }
666
+ }
667
+ }
668
+ }
669
+ }
670
+ }
671
+
672
+ if (self.connectedPeripheral) {
673
+ [self.centralManager cancelPeripheralConnection:self.connectedPeripheral];
674
+ }
675
+ }
676
+
677
+ // 连接外设
678
+ - (void)connectPeripheral:(CBPeripheral *)peripheral {
679
+ self.status = BluetoothManagerStatusTryToConnect;
680
+
681
+ if (self.centralManager && peripheral) {
682
+ [self.centralManager connectPeripheral:peripheral options:nil];
683
+ }
684
+ }
685
+
686
+ // 解绑发射器BLE设备
687
+ - (void)closeBleSensor {
688
+ if (self.connectedPeripheral && self.writeReadCharacteristic) {
689
+ NSData *data = [ProtocalTools unBind_request:self.eDevice];
690
+ if ([self.eDevice.deviceType isEqualToString:@"CT4"]) {
691
+ [self.connectedPeripheral writeValue:data forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithoutResponse];
692
+ } else {
693
+ [self.connectedPeripheral writeValue:data forCharacteristic:self.writeReadCharacteristic type:CBCharacteristicWriteWithResponse];
694
+ }
695
+ }
696
+ }
697
+
698
+ // 未连接上发射器时强制解绑
699
+ - (void)forceEndBleSensor {
700
+ [self.centralManager stopScan];
701
+
702
+ // 通知初始化页面或首页操作解绑后的流程
703
+ self.status = BluetoothManagerStatusClosed;
704
+ [self resetBleSensorData];
705
+ if ([self.bluetoothDelegate respondsToSelector:@selector(onFindDevices:connectedDevice:)]) {
706
+ [self.bluetoothDelegate onFindDevices:_peripherals connectedDevice:nil];
707
+ }
708
+ }
709
+
710
+ - (Device *)currentDevice {
711
+ if (!_currentDevice) {
712
+ if (self.connectedPeripheral) {
713
+ // 已连接到发射器
714
+ _currentDevice = [[KLTDatabaseHandler shared] queryDeviceWithId:self.connectedPeripheral.identifier.UUIDString];
715
+ } else {
716
+ // 最近连接过的一个设备 之前连接过发射器,失联中
717
+ _currentDevice = [[KLTDatabaseHandler shared] isLatestDeviceDisconnected];
718
+ }
719
+ }
720
+ return _currentDevice;
721
+ }
722
+
723
+ @end