@mentra/bluetooth-sdk 0.1.0

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 (278) hide show
  1. package/README.md +278 -0
  2. package/android/build.gradle +167 -0
  3. package/android/lc3Lib/CMakeLists.txt +6 -0
  4. package/android/lc3Lib/build.gradle +109 -0
  5. package/android/lc3Lib/proguard-rules.pro +33 -0
  6. package/android/lc3Lib/src/main/AndroidManifest.xml +2 -0
  7. package/android/lc3Lib/src/main/cpp/CMakeLists.txt +8 -0
  8. package/android/lc3Lib/src/main/cpp/google_opus_stuff/CMakeLists.txt +30 -0
  9. package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/CMakeLists.txt +7 -0
  10. package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/ogg_opus_encoder.cc +96 -0
  11. package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/ogg_opus_encoder.h +53 -0
  12. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/Makefile.am +6 -0
  13. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/config_types.h +26 -0
  14. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/config_types.h.in +26 -0
  15. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/ogg.h +209 -0
  16. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/os_types.h +158 -0
  17. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus.h +981 -0
  18. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_custom.h +342 -0
  19. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_defines.h +799 -0
  20. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_multistream.h +660 -0
  21. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_projection.h +568 -0
  22. package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_types.h +166 -0
  23. package/android/lc3Lib/src/main/cpp/google_opus_stuff/ogg_opus_encoder.cc +268 -0
  24. package/android/lc3Lib/src/main/cpp/google_opus_stuff/ogg_opus_encoder.h +115 -0
  25. package/android/lc3Lib/src/main/cpp/google_opus_stuff/opus_tools/opus_header.h +59 -0
  26. package/android/lc3Lib/src/main/cpp/liblc3/CMakeLists.txt +38 -0
  27. package/android/lc3Lib/src/main/cpp/liblc3/include/lc3.h +309 -0
  28. package/android/lc3Lib/src/main/cpp/liblc3/include/lc3_private.h +162 -0
  29. package/android/lc3Lib/src/main/cpp/liblc3/include/rnnoise.h +114 -0
  30. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/CMakeLists.txt +19 -0
  31. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/attdet.c +92 -0
  32. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/attdet.h +44 -0
  33. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bits.c +375 -0
  34. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bits.h +315 -0
  35. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bwdet.c +129 -0
  36. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bwdet.h +69 -0
  37. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/common.h +148 -0
  38. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/energy.c +70 -0
  39. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/energy.h +43 -0
  40. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/fastmath.h +158 -0
  41. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/lc3.c +702 -0
  42. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf.c +893 -0
  43. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf.h +111 -0
  44. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf_arm.h +506 -0
  45. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf_neon.h +281 -0
  46. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/makefile.mk +35 -0
  47. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct.c +452 -0
  48. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct.h +57 -0
  49. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct_neon.h +296 -0
  50. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/meson.build +46 -0
  51. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/plc.c +61 -0
  52. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/plc.h +57 -0
  53. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/sns.c +880 -0
  54. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/sns.h +103 -0
  55. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/spec.c +904 -0
  56. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/spec.h +119 -0
  57. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tables.c +3457 -0
  58. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tables.h +94 -0
  59. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tns.c +457 -0
  60. package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tns.h +99 -0
  61. package/android/lc3Lib/src/main/cpp/liblc3/liblc3.cpp +159 -0
  62. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/_kiss_fft_guts.h +182 -0
  63. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/arch.h +261 -0
  64. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/celt_lpc.c +279 -0
  65. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/celt_lpc.h +59 -0
  66. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/common.h +48 -0
  67. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/compile.sh +3 -0
  68. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/denoise.c +646 -0
  69. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/kiss_fft.c +601 -0
  70. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/kiss_fft.h +203 -0
  71. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/opus_types.h +159 -0
  72. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/pitch.c +526 -0
  73. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/pitch.h +149 -0
  74. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn.c +178 -0
  75. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn.h +69 -0
  76. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_data.c +11051 -0
  77. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_data.h +34 -0
  78. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_reader.c +168 -0
  79. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_train.py +66 -0
  80. package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/tansig_table.h +45 -0
  81. package/android/lc3Lib/src/main/java/com/mentra/lc3Lib/Lc3Cpp.java +38 -0
  82. package/android/lc3Lib/third_party/CMakeLists.txt +23 -0
  83. package/android/lc3Lib/third_party/CMakeLists_libogg.txt +18 -0
  84. package/android/lc3Lib/third_party/CMakeLists_libopus.txt +18 -0
  85. package/android/lc3Lib/third_party/CMakeLists_opus-tools.txt +23 -0
  86. package/android/lc3Lib/third_party/opus_tools/src/AUTHORS +5 -0
  87. package/android/lc3Lib/third_party/opus_tools/src/CMakeLists.txt +4 -0
  88. package/android/lc3Lib/third_party/opus_tools/src/COPYING +371 -0
  89. package/android/lc3Lib/third_party/opus_tools/src/ChangeLog +3 -0
  90. package/android/lc3Lib/third_party/opus_tools/src/Makefile.am +42 -0
  91. package/android/lc3Lib/third_party/opus_tools/src/Makefile.unix +23 -0
  92. package/android/lc3Lib/third_party/opus_tools/src/NEWS +0 -0
  93. package/android/lc3Lib/third_party/opus_tools/src/README +0 -0
  94. package/android/lc3Lib/third_party/opus_tools/src/autogen.sh +115 -0
  95. package/android/lc3Lib/third_party/opus_tools/src/configure.ac +293 -0
  96. package/android/lc3Lib/third_party/opus_tools/src/src/arch.h +239 -0
  97. package/android/lc3Lib/third_party/opus_tools/src/src/audio-in.c +1046 -0
  98. package/android/lc3Lib/third_party/opus_tools/src/src/diag_range.c +245 -0
  99. package/android/lc3Lib/third_party/opus_tools/src/src/diag_range.h +28 -0
  100. package/android/lc3Lib/third_party/opus_tools/src/src/info_opus.c +320 -0
  101. package/android/lc3Lib/third_party/opus_tools/src/src/info_opus.h +51 -0
  102. package/android/lc3Lib/third_party/opus_tools/src/src/lpc.c +157 -0
  103. package/android/lc3Lib/third_party/opus_tools/src/src/lpc.h +27 -0
  104. package/android/lc3Lib/third_party/opus_tools/src/src/opus_header.c +286 -0
  105. package/android/lc3Lib/third_party/opus_tools/src/src/opus_header.h +59 -0
  106. package/android/lc3Lib/third_party/opus_tools/src/src/opusdec.c +884 -0
  107. package/android/lc3Lib/third_party/opus_tools/src/src/opusenc.c +1021 -0
  108. package/android/lc3Lib/third_party/opus_tools/src/src/opusenc.h +101 -0
  109. package/android/lc3Lib/third_party/opus_tools/src/src/opusinfo.c +639 -0
  110. package/android/lc3Lib/third_party/opus_tools/src/src/opusinfo.h +51 -0
  111. package/android/lc3Lib/third_party/opus_tools/src/src/os_support.h +167 -0
  112. package/android/lc3Lib/third_party/opus_tools/src/src/resample.c +1137 -0
  113. package/android/lc3Lib/third_party/opus_tools/src/src/speex_resampler.h +344 -0
  114. package/android/lc3Lib/third_party/opus_tools/src/src/stack_alloc.h +115 -0
  115. package/android/lc3Lib/third_party/opus_tools/src/src/wav_io.c +125 -0
  116. package/android/lc3Lib/third_party/opus_tools/src/src/wav_io.h +62 -0
  117. package/android/lc3Lib/third_party/opus_tools/src/src/wave_out.c +223 -0
  118. package/android/lc3Lib/third_party/opus_tools/src/src/wave_out.h +60 -0
  119. package/android/settings.gradle +1 -0
  120. package/android/src/main/AndroidManifest.xml +40 -0
  121. package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +528 -0
  122. package/android/src/main/java/com/mentra/bluetoothsdk/Bridge.kt +610 -0
  123. package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +1616 -0
  124. package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +314 -0
  125. package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothModels.kt +1710 -0
  126. package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +554 -0
  127. package/android/src/main/java/com/mentra/bluetoothsdk/ObservableStore.kt +68 -0
  128. package/android/src/main/java/com/mentra/bluetoothsdk/controllers/ControllerManager.kt +158 -0
  129. package/android/src/main/java/com/mentra/bluetoothsdk/controllers/R1.kt +934 -0
  130. package/android/src/main/java/com/mentra/bluetoothsdk/services/Foreground.kt +175 -0
  131. package/android/src/main/java/com/mentra/bluetoothsdk/services/PhoneMic.kt +1109 -0
  132. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.java +3974 -0
  133. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +3551 -0
  134. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Mach1.java +1327 -0
  135. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.java +6959 -0
  136. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +1655 -0
  137. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraosBle.java +53675 -0
  138. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +202 -0
  139. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Simulated.kt +224 -0
  140. package/android/src/main/java/com/mentra/bluetoothsdk/stt/STTTools.kt +340 -0
  141. package/android/src/main/java/com/mentra/bluetoothsdk/stt/SherpaOnnxTranscriber.kt +465 -0
  142. package/android/src/main/java/com/mentra/bluetoothsdk/stt/VadGateSpeechPolicy.kt +221 -0
  143. package/android/src/main/java/com/mentra/bluetoothsdk/utils/AES.java +106 -0
  144. package/android/src/main/java/com/mentra/bluetoothsdk/utils/AudioSessionMonitor.kt +189 -0
  145. package/android/src/main/java/com/mentra/bluetoothsdk/utils/BitmapJavaUtils.java +169 -0
  146. package/android/src/main/java/com/mentra/bluetoothsdk/utils/BlePhotoUploadService.java +179 -0
  147. package/android/src/main/java/com/mentra/bluetoothsdk/utils/Constants.kt +44 -0
  148. package/android/src/main/java/com/mentra/bluetoothsdk/utils/G1Text.kt +436 -0
  149. package/android/src/main/java/com/mentra/bluetoothsdk/utils/IncidentLogBleRelayNaming.java +29 -0
  150. package/android/src/main/java/com/mentra/bluetoothsdk/utils/IncidentLogBleUploadService.java +76 -0
  151. package/android/src/main/java/com/mentra/bluetoothsdk/utils/K900ProtocolUtils.java +791 -0
  152. package/android/src/main/java/com/mentra/bluetoothsdk/utils/MessageChunker.java +186 -0
  153. package/android/src/main/java/com/mentra/bluetoothsdk/utils/NexSGCUtils.kt +589 -0
  154. package/android/src/main/java/com/mentra/bluetoothsdk/utils/PhoneAudioMonitor.kt +303 -0
  155. package/android/src/main/java/com/mentra/bluetoothsdk/utils/SmartGlassesConnectionState.java +9 -0
  156. package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/ByteUtilAudioPlayer.java +655 -0
  157. package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/Lc3Player.java +441 -0
  158. package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/PCMAudioPlayer.java +431 -0
  159. package/android/src/main/res/values/strings.xml +4 -0
  160. package/app.plugin.js +1 -0
  161. package/build/BluetoothSdk.types.d.ts +498 -0
  162. package/build/BluetoothSdk.types.d.ts.map +1 -0
  163. package/build/BluetoothSdk.types.js +23 -0
  164. package/build/BluetoothSdk.types.js.map +1 -0
  165. package/build/BluetoothSdkModule.d.ts +71 -0
  166. package/build/BluetoothSdkModule.d.ts.map +1 -0
  167. package/build/BluetoothSdkModule.js +106 -0
  168. package/build/BluetoothSdkModule.js.map +1 -0
  169. package/build/index.d.ts +3 -0
  170. package/build/index.d.ts.map +1 -0
  171. package/build/index.js +5 -0
  172. package/build/index.js.map +1 -0
  173. package/expo-module.config.json +9 -0
  174. package/ios/BluetoothSdkModule.swift +665 -0
  175. package/ios/MentraBluetoothSDK.podspec +77 -0
  176. package/ios/Packages/CoreObjC/CoreObjC.xcodeproj/project.pbxproj +213 -0
  177. package/ios/Packages/CoreObjC/PcmConverter.h +22 -0
  178. package/ios/Packages/CoreObjC/PcmConverter.m +266 -0
  179. package/ios/Packages/CoreObjC/attdet.c +92 -0
  180. package/ios/Packages/CoreObjC/attdet.h +44 -0
  181. package/ios/Packages/CoreObjC/bits.c +375 -0
  182. package/ios/Packages/CoreObjC/bits.h +315 -0
  183. package/ios/Packages/CoreObjC/bwdet.c +129 -0
  184. package/ios/Packages/CoreObjC/bwdet.h +69 -0
  185. package/ios/Packages/CoreObjC/common.h +151 -0
  186. package/ios/Packages/CoreObjC/energy.c +70 -0
  187. package/ios/Packages/CoreObjC/energy.h +43 -0
  188. package/ios/Packages/CoreObjC/fastmath.h +158 -0
  189. package/ios/Packages/CoreObjC/lc3.c +704 -0
  190. package/ios/Packages/CoreObjC/lc3.h +313 -0
  191. package/ios/Packages/CoreObjC/lc3_cpp.h +283 -0
  192. package/ios/Packages/CoreObjC/lc3_private.h +163 -0
  193. package/ios/Packages/CoreObjC/ltpf.c +905 -0
  194. package/ios/Packages/CoreObjC/ltpf.h +111 -0
  195. package/ios/Packages/CoreObjC/ltpf_arm.h +506 -0
  196. package/ios/Packages/CoreObjC/ltpf_neon.h +281 -0
  197. package/ios/Packages/CoreObjC/makefile.mk +35 -0
  198. package/ios/Packages/CoreObjC/mdct.c +469 -0
  199. package/ios/Packages/CoreObjC/mdct.h +57 -0
  200. package/ios/Packages/CoreObjC/mdct_neon.h +296 -0
  201. package/ios/Packages/CoreObjC/meson.build +61 -0
  202. package/ios/Packages/CoreObjC/plc.c +61 -0
  203. package/ios/Packages/CoreObjC/plc.h +57 -0
  204. package/ios/Packages/CoreObjC/rnnoise.h +114 -0
  205. package/ios/Packages/CoreObjC/sns.c +880 -0
  206. package/ios/Packages/CoreObjC/sns.h +103 -0
  207. package/ios/Packages/CoreObjC/spec.c +907 -0
  208. package/ios/Packages/CoreObjC/spec.h +119 -0
  209. package/ios/Packages/CoreObjC/tables.c +3457 -0
  210. package/ios/Packages/CoreObjC/tables.h +94 -0
  211. package/ios/Packages/CoreObjC/tns.c +457 -0
  212. package/ios/Packages/CoreObjC/tns.h +99 -0
  213. package/ios/Packages/SherpaOnnx/Model/joiner.onnx +0 -0
  214. package/ios/Packages/SherpaOnnx/Model/tokens.txt +502 -0
  215. package/ios/Packages/SherpaOnnx/SherpaOnnx.swift +1659 -0
  216. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/cargs.h +162 -0
  217. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/sherpa-onnx/c-api/c-api.h +1852 -0
  218. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/sherpa-onnx/c-api/cxx-api.h +674 -0
  219. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Info.plist +44 -0
  220. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64/libsherpa-onnx.a +0 -0
  221. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64/sherpa-onnx.a +0 -0
  222. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/libsherpa-onnx.a +0 -0
  223. package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/sherpa-onnx.a +0 -0
  224. package/ios/Packages/VAD/Common/VAD/VADQuality.swift +41 -0
  225. package/ios/Packages/VAD/Common/VAD/VADState.swift +26 -0
  226. package/ios/Packages/VAD/Common/VAD/VADStrategy.swift +29 -0
  227. package/ios/Packages/VAD/Common/VAD/VADType.swift +14 -0
  228. package/ios/Packages/VAD/Data/Configuration.swift +68 -0
  229. package/ios/Packages/VAD/Data/FrameSize.swift +39 -0
  230. package/ios/Packages/VAD/Data/Record.swift +13 -0
  231. package/ios/Packages/VAD/Data/Result.swift +22 -0
  232. package/ios/Packages/VAD/Data/SampleRate.swift +48 -0
  233. package/ios/Packages/VAD/Silero/Model/silero_vad.onnx +0 -0
  234. package/ios/Packages/VAD/Silero/SileroVAD.swift +284 -0
  235. package/ios/Packages/VAD/Silero/SileroVADStrategy.swift +64 -0
  236. package/ios/Packages/libbz2/module.modulemap +5 -0
  237. package/ios/Packages/libbz2/shim.h +1 -0
  238. package/ios/Source/Bridge.swift +353 -0
  239. package/ios/Source/Bridging-Header.h +16 -0
  240. package/ios/Source/DeviceManager.swift +1478 -0
  241. package/ios/Source/DeviceStore.swift +295 -0
  242. package/ios/Source/MentraBluetoothSDK.swift +2439 -0
  243. package/ios/Source/ObservableStore.swift +88 -0
  244. package/ios/Source/PrivacyInfo.xcprivacy +23 -0
  245. package/ios/Source/controllers/ControllerManager.swift +187 -0
  246. package/ios/Source/controllers/R1.swift +827 -0
  247. package/ios/Source/services/PhoneMic.swift +662 -0
  248. package/ios/Source/sgcs/Frame.swift +651 -0
  249. package/ios/Source/sgcs/G1.swift +2505 -0
  250. package/ios/Source/sgcs/G2.swift +3730 -0
  251. package/ios/Source/sgcs/Mach1.swift +543 -0
  252. package/ios/Source/sgcs/MentraLive.swift +4708 -0
  253. package/ios/Source/sgcs/MentraNex.swift +2479 -0
  254. package/ios/Source/sgcs/SGCManager.swift +243 -0
  255. package/ios/Source/sgcs/Simulated.swift +270 -0
  256. package/ios/Source/sgcs/mentraos_ble.pb.swift +3811 -0
  257. package/ios/Source/stt/STTTools.swift +154 -0
  258. package/ios/Source/stt/SherpaOnnxTranscriber.swift +401 -0
  259. package/ios/Source/utils/AudioSessionMonitor.swift +283 -0
  260. package/ios/Source/utils/Constants.swift +74 -0
  261. package/ios/Source/utils/Enums.swift +95 -0
  262. package/ios/Source/utils/G1Text.swift +2067 -0
  263. package/ios/Source/utils/JSCExperiment.swift +241 -0
  264. package/ios/Source/utils/MemoryMonitor.swift +44 -0
  265. package/ios/Source/utils/MessageChunker.swift +164 -0
  266. package/ios/Source/utils/Models.swift +135 -0
  267. package/ios/Source/utils/PhoneAudioMonitor.swift +226 -0
  268. package/ios/Source/utils/TarBz2Extractor.swift +206 -0
  269. package/package.json +78 -0
  270. package/plugin/build/index.d.ts +6 -0
  271. package/plugin/build/index.js +12 -0
  272. package/plugin/build/withAndroid.d.ts +4 -0
  273. package/plugin/build/withAndroid.js +80 -0
  274. package/plugin/build/withIos.d.ts +4 -0
  275. package/plugin/build/withIos.js +64 -0
  276. package/src/BluetoothSdk.types.ts +581 -0
  277. package/src/BluetoothSdkModule.ts +259 -0
  278. package/src/index.ts +4 -0
@@ -0,0 +1,655 @@
1
+ package com.mentra.bluetoothsdk.utils.audio;
2
+
3
+ import android.util.Log;
4
+
5
+ import java.io.ByteArrayInputStream;
6
+ import java.io.ByteArrayOutputStream;
7
+ import java.io.ObjectInputStream;
8
+ import java.io.ObjectOutputStream;
9
+ import java.io.UnsupportedEncodingException;
10
+ import java.util.Calendar;
11
+
12
+ public class ByteUtilAudioPlayer {
13
+
14
+ //"0123" -> byte{1,23}
15
+ public static byte[] digitString2DigitByte(String str) {
16
+ if(str == null)
17
+ return null;
18
+ boolean bOdd = false;
19
+ int len = str.length();
20
+ if(len %2 == 1)
21
+ {
22
+ bOdd = true;
23
+ len ++;
24
+ }
25
+ byte [] bts = new byte[len/2];
26
+ if(bOdd)
27
+ {
28
+ bts[0] = (byte)(str.charAt(0) - '0');
29
+ }
30
+ int i = bOdd ? 1 : 0;
31
+ int n = 0;
32
+
33
+ for(;i < len ;i+=2)
34
+ {
35
+ n = (str.charAt(i) - '0') *10 + (str.charAt(i+1) - '0');
36
+ bts[(i+1)/2] = (byte)n;
37
+ }
38
+ return bts;
39
+ }
40
+
41
+ //"01230A" -> byte{0x01,0x23,0x0A}
42
+ public static byte[] digitString2HexByte(String str2) {
43
+ if(str2 == null)
44
+ return null;
45
+ String str = str2.toUpperCase();
46
+ //String str = str2.toLowerCase();
47
+ boolean bOdd = false;
48
+ int len = str.length();
49
+ if(len %2 == 1)
50
+ {
51
+ bOdd = true;
52
+ len ++;
53
+ }
54
+ byte [] bts = new byte[len/2];
55
+ if(bOdd)
56
+ {
57
+ bts[0] = (byte)(str.charAt(0) - '0');
58
+ }
59
+ int i = bOdd ? 1 : 0;
60
+ int n = 0,low , high;
61
+
62
+ for(;i < len ;i+=2)
63
+ {
64
+ low = str.charAt(i+1);
65
+ high = str.charAt(i);
66
+ if(low >= 'A')
67
+ {
68
+ low = low - 'A' + 10;
69
+ }
70
+ else
71
+ {
72
+ low -= '0';
73
+ }
74
+
75
+ if(high >= 'A')
76
+ {
77
+ high = high - 'A' + 10;
78
+ }
79
+ else
80
+ {
81
+ high -= '0';
82
+ }
83
+ n = high *16 + low;
84
+ bts[(i+1)/2] = (byte)n;
85
+ }
86
+ return bts;
87
+ }
88
+
89
+ public static byte regByte(byte ss) {
90
+ return (ss < 0) ? (byte)(ss & 0xFF) :ss;
91
+ }
92
+
93
+ public static String bytetoHexString(byte ss) {
94
+ int is = (ss < 0) ? (ss &0xFF) :ss;
95
+ return String.format("%02x", is).toUpperCase();
96
+ }
97
+
98
+ public static String intToHexString(int num,int bit) {
99
+ //return Integer.toHexString(num).toUpperCase();
100
+ return String.format("%0"+bit+"x", num).toUpperCase();
101
+ }
102
+
103
+ public static String intToString(int num,int bit) {
104
+ //return Integer.toHexString(num).toUpperCase();
105
+ return String.format("%0"+bit+"d", num).toUpperCase();
106
+ }
107
+
108
+ public static int hexStringToint(String str) {
109
+ int num = 0;
110
+ String content = str.toUpperCase();
111
+ char [] chs = content.toCharArray();
112
+ for(int i = 0;i< content.length();i++)
113
+ {
114
+ num *= 16;
115
+ if(chs[i] >= '0' && chs[i] <= '9')
116
+ num += chs[i] - '0';
117
+ else
118
+ num += chs[i] -'A' + 10;
119
+ }
120
+ return num;
121
+ }
122
+ public static String outputHexString(byte [] flags, int startpos, int length)
123
+ {
124
+ return getHexString_by_Bytes_dot(flags,startpos, length);
125
+ }
126
+ public static boolean string2Bytes(String str , byte[] dest, int destoffset)
127
+ {
128
+ if(str == null || dest == null || str.length() < 1)
129
+ {
130
+ return false;
131
+ }
132
+
133
+ if(str.length() + destoffset > dest.length)
134
+ {
135
+ Log.v("ByteUtilAudioPlayer","error string2Bytes src.length="+str.length()+",dest.length="+dest.length+",destoffset="+destoffset);
136
+ return false;
137
+ }
138
+
139
+ for(int i = 0; i < str.length(); i++)
140
+ {
141
+ dest[destoffset + i] = (byte)(str.charAt(i));
142
+ }
143
+
144
+ return true;
145
+ }
146
+
147
+
148
+ public static byte[] String2bytes(String str,int len)
149
+ {
150
+ if(str == null || str.length() < len)
151
+ return null;
152
+ byte [] res = new byte[len];
153
+ int n = 0;
154
+ for(int i = 0; i < len ;i++)
155
+ {
156
+ res[i] = (byte)(str.charAt(i));
157
+ }
158
+ return res;
159
+ }
160
+
161
+ public static byte[] String2bytes(String str)
162
+ {
163
+ if(str == null || str.length() < 1)
164
+ return null;
165
+ return str.getBytes();
166
+ }
167
+
168
+ public static String bytes2String(byte [] bytes)
169
+ {
170
+ if(bytes == null)
171
+ return null;
172
+ return new String(bytes);
173
+ }
174
+
175
+ public static String bytes2String(byte [] bytes, int offset, int len)
176
+ {
177
+ if(bytes == null)
178
+ return null;
179
+ return new String(bytes,offset, len);
180
+ }
181
+
182
+ public static String bytes2String(byte [] bytes, int offset, int len,String encode)
183
+ {
184
+ if(bytes == null)
185
+ return null;
186
+
187
+ String body = null;
188
+ try {
189
+ body = new String(bytes,offset, len,encode);
190
+ body = body.trim();
191
+ } catch (UnsupportedEncodingException e) {
192
+ e.printStackTrace();
193
+ }
194
+ return body;
195
+ }
196
+
197
+ public static boolean copyBytes(byte []src, int offset, int len , byte[] dest, int destoffset)
198
+ {
199
+ //BLog.v(CTConst.TAG,"copyBytes src="+src+",dest="+dest+",offset="+offset+",len="+len+",destoffset="+destoffset);
200
+ if(src == null || dest == null)
201
+ {
202
+ return false;
203
+ }
204
+
205
+ if(src.length < offset + len || dest.length < destoffset +len)
206
+ {
207
+ Log.v("ByteUtilAudioPlayer","error copyBytes src.length="+src.length+",dest.length="+dest.length);
208
+ return false;
209
+ }
210
+ for(int i = 0; i<len; i++)
211
+ {
212
+ dest[destoffset + i] = src[offset + i];
213
+ }
214
+ return true;
215
+ }
216
+
217
+ public static boolean resetBytes(byte []data, int offset, int len)
218
+ {
219
+ if(data == null || data.length < 1)
220
+ {
221
+ return false;
222
+ }
223
+
224
+ int end = (data.length <= offset + len) ? data.length : len;
225
+
226
+ for(int i = offset; i < end; i++)
227
+ {
228
+ data[i] = 0x0;
229
+ }
230
+
231
+ return true;
232
+ }
233
+ public static boolean resetBytes(byte []data, int offset, int len,byte defaultValue)
234
+ {
235
+ if(data == null || data.length < 1)
236
+ {
237
+ return false;
238
+ }
239
+
240
+ int end = (data.length <= offset + len) ? data.length : len;
241
+
242
+ for(int i = offset; i < end; i++)
243
+ {
244
+ data[i] = defaultValue;
245
+ }
246
+
247
+ return true;
248
+ }
249
+ public static boolean compareBytes(byte []src, int offset, int len , byte[] dest, int destoffset,int destlen)
250
+ {
251
+ //BLog.v(CTConst.TAG,"copyBytes src="+src+",dest="+dest+",offset="+offset+",len="+len+",destoffset="+destoffset);
252
+ if(src == null || dest == null)
253
+ {
254
+ Log.v("ByteUtilAudioPlayer","compareBytes error");
255
+ return false;
256
+ }
257
+ if(len != destlen)
258
+ {
259
+ Log.v("ByteUtilAudioPlayer","error compareBytes len="+len+",destlen="+destlen);
260
+ return false;
261
+ }
262
+ if(src.length < offset + len || dest.length < destoffset +destlen)
263
+ {
264
+ Log.v("ByteUtilAudioPlayer","error compareBytes src.length="+src.length+",dest.length="+dest.length);
265
+ return false;
266
+ }
267
+ for(int i = 0; i<len; i++)
268
+ {
269
+ //Log.v("dest["+(destoffset + i)+"]="+ByteUtilAudioPlayer.bytetoHexString(dest[destoffset + i])+",src["+(offset + i)+"]="+ByteUtilAudioPlayer.bytetoHexString(src[offset + i]));
270
+ if(dest[destoffset + i] != src[offset + i])
271
+ {
272
+ return false;
273
+ }
274
+ }
275
+ return true;
276
+ }
277
+
278
+ public static String byte2String_2Chars1Byte(byte[] buf, int offset, int len) {
279
+
280
+ if (buf == null || buf.length < offset + len)
281
+ return null;
282
+
283
+ StringBuffer sb = new StringBuffer();
284
+ int yu = 0;
285
+ int shi = 0;
286
+ int n1 = 0;
287
+ for (int i = 0; i < len; i++) {
288
+ n1 = (buf[offset + i] < 0) ? (256+buf[offset + i]):buf[offset + i];
289
+ yu = n1 % 10 + 0x30;
290
+ shi = n1 /10;
291
+ if(shi > 9)
292
+ {
293
+ shi = shi % 10;
294
+ }
295
+ shi += 0x30;
296
+
297
+ sb.append((char)shi);
298
+ sb.append((char)yu);
299
+ }
300
+ return sb.toString();
301
+ }
302
+
303
+ public static byte[] String2byte_2Chars1Byte(String str,int byteLen) {
304
+
305
+ if(str == null || str.length() != byteLen * 2)
306
+ return null;
307
+ byte[] res = new byte[byteLen];
308
+ for(int i = 0; i < byteLen; i++)
309
+ {
310
+ char c = str.charAt(i*2);
311
+ char c2 = str.charAt(i*2+1);
312
+ res[i] = (byte)((c - 0x30) *10 + (c2 - 0x30));
313
+ }
314
+ return res;
315
+ }
316
+
317
+
318
+ public static byte[] getBytes_by_HexString_dot2(String str,int byteLen) {
319
+
320
+ if(str == null || str.length() != byteLen * 2)
321
+ return null;
322
+ byte[] res = new byte[byteLen];
323
+ for(int i = 0; i < byteLen; i++)
324
+ {
325
+ char c = str.charAt(i*2);
326
+ char c2 = str.charAt(i*2+1);
327
+ int ac = c;
328
+ int ac2 = c2;
329
+ if(c >= 'A' && c <= 'F')
330
+ {
331
+ ac -= 'A' + 10;
332
+ }
333
+ else if(c >= 'a' && c <= 'f')
334
+ {
335
+ ac -= 'a' + 10;
336
+ }
337
+ else
338
+ {
339
+ ac -= 0x30;
340
+ }
341
+
342
+ if(c2 >= 'A' && c2 <= 'F')
343
+ {
344
+ ac2 -= 'A' + 10;
345
+ }
346
+ else if(c2 >= 'a' && c2 <= 'f')
347
+ {
348
+ ac2 -= 'a' + 10;
349
+ }
350
+ else
351
+ {
352
+ ac2 -= 0x30;
353
+ }
354
+ res[i] = (byte)(ac*16 +ac2);
355
+ }
356
+ return res;
357
+ }
358
+
359
+ public static byte[] getBytes_by_HexString_dot(String str) {
360
+ if(str == null)
361
+ return null;
362
+ String [] sts = str.split(",");
363
+ if(sts == null || sts.length < 1)
364
+ {
365
+ return null;
366
+ }
367
+ byte [] bts = new byte[sts.length];
368
+ char c1, c2;
369
+ int v1, v2;
370
+ for(int i = 0;i < sts.length;i++)
371
+ {
372
+ if(sts[i].length() == 2)
373
+ {
374
+ c1 = sts[i].charAt(0);
375
+ c2 = sts[i].charAt(1);
376
+ v1 = c1;
377
+ v2 = c2;
378
+ if(c1 >= 'A' && c1 <= 'F')
379
+ {
380
+ v1 -= 'A' +10;
381
+ }
382
+ else
383
+ {
384
+ v1 -= 0x30;
385
+ }
386
+
387
+ if(c2 >= 'A' && c2 <= 'F')
388
+ {
389
+ v2 -= 'A' +10;
390
+ }
391
+ else
392
+ {
393
+ v2 -= 0x30;
394
+ }
395
+ bts[i] = (byte)(v1 *16 + v2);
396
+ }
397
+ }
398
+ return bts;
399
+ }
400
+ public static String getHexString_by_Bytes_dot(byte[] bts)
401
+ {
402
+ if(bts == null)
403
+ {
404
+ return null;
405
+ }
406
+ StringBuffer sb = new StringBuffer();
407
+ for(int i = 0;i< bts.length;i++)
408
+ {
409
+ sb.append(ByteUtilAudioPlayer.bytetoHexString(bts[i]));
410
+ if(i != bts.length - 1)
411
+ sb.append(",");
412
+ }
413
+ return sb.toString();
414
+ }
415
+
416
+ public static String getHexString_by_Bytes_dot(byte[] bts, int offset, int length)
417
+ {
418
+ if(bts == null)
419
+ {
420
+ return null;
421
+ }
422
+ int len = length > bts.length ? bts.length : length;
423
+ StringBuffer sb = new StringBuffer();
424
+ for(int i = 0;i< len;i++)
425
+ {
426
+ sb.append(ByteUtilAudioPlayer.bytetoHexString(bts[offset + i]));
427
+ if(i != len - 1)
428
+ sb.append(",");
429
+ }
430
+ return sb.toString();
431
+ }
432
+
433
+ public static void int2Bytes(int value, int toByteLen,byte[]dest,int offset) {
434
+ if(dest == null || offset + toByteLen > dest.length)
435
+ return;
436
+ int v = value;
437
+ for(int i = toByteLen - 1; i >= 0; i--)
438
+ {
439
+ dest[offset + i] = (byte)(v & 0xFF);
440
+ v = (v >> 8);
441
+ }
442
+ }
443
+
444
+ public static int bytes2Int(byte []src, int offset, int len)
445
+ {
446
+ if(src == null || offset + len > src.length)
447
+ {
448
+ return 0;
449
+ }
450
+ int v = 0;
451
+ for(int i = offset ;i < offset + len; i++)
452
+ {
453
+ v = (v <<8);
454
+ v += (src[i] < 0) ? (256 + src[i]) : src[i];
455
+ }
456
+
457
+ return v;
458
+ }
459
+
460
+ public static int byte2Int(byte ss) {
461
+ int is = (ss < 0) ? (ss &0xFF) :ss;
462
+ return is;
463
+ }
464
+
465
+ public static int byte2Int(byte hightbyte,byte lowbyte)
466
+ {
467
+ int n1 = (lowbyte < 0) ? (256+lowbyte):lowbyte;
468
+ int n2 = (hightbyte < 0) ? (256+hightbyte):hightbyte;
469
+ //Log.v(CTConst.TAG,"lowbyte="+n1);
470
+ //Log.v(CTConst.TAG,"highbyte="+n2);
471
+ return n1 +(n2 << 8);
472
+ }
473
+
474
+ public static byte[] long2Byte(long milltime)
475
+ {
476
+ byte [] bys = new byte[8];
477
+ long lnvalue = milltime;
478
+ for (int i = 7; i >= 0; i--) {
479
+ bys[i] = (byte) (lnvalue & 0xFF);
480
+ lnvalue = lnvalue >> 8;
481
+ }
482
+ return bys;
483
+ }
484
+
485
+ public static int BCD_2_Decimal(byte ss)//param ss is hex
486
+ {
487
+ int is = (ss < 0) ? (ss &0xFF) :ss;
488
+ return BCD_2_Decimal(is);
489
+ }
490
+
491
+ public static int BCD_2_Decimal(int ss) //param ss is hex,should return decimal
492
+ {
493
+ return ss - (ss >> 4) *6;
494
+ }
495
+
496
+ public static int Decimal_2_BCD(byte ss)
497
+ {
498
+ int is = (ss < 0) ? (ss &0xFF) :ss;
499
+ return Decimal_2_BCD(is);
500
+ }
501
+
502
+ public static int Decimal_2_BCD(int ss)// param ss is decimal, should return hex ,ss should be less than 0xFF
503
+ {
504
+ return (ss+(ss / 10)*6);
505
+ }
506
+
507
+ public static int DecimalBig_2_BCD(int ss)// param ss is decimal, should return hex
508
+ {
509
+ int t = ss;
510
+ int h4 = ss % 1000000;
511
+ t = h4 *1000000;
512
+ int h3 = (ss - t) % 10000;
513
+ t += h3 * 10000;
514
+ int h2 = (ss - t) % 100;
515
+ t += h2 * 100;
516
+ int h1 = ss - t;
517
+ return (Decimal_2_BCD(h4) << 24) + (Decimal_2_BCD(h3) << 16) + (Decimal_2_BCD(h2) << 8) + Decimal_2_BCD(h1);
518
+ }
519
+
520
+ public static String BCD_2_String(byte [] data, int offset, int len)
521
+ {
522
+ if(data == null || data.length < offset + len)
523
+ {
524
+ return null;
525
+ }
526
+ StringBuffer sb = new StringBuffer();
527
+ int v = 0;
528
+ for(int i = offset;i < offset + len;i++)
529
+ {
530
+ v = BCD_2_Decimal(data[i]);
531
+ sb.append(intToString(v,2));
532
+ }
533
+ return sb.toString();
534
+ }
535
+
536
+ public static int BCD_2_Int(byte [] data, int offset, int len)
537
+ {
538
+ if(data == null || data.length < offset + len)
539
+ {
540
+ return 0;
541
+ }
542
+ StringBuffer sb = new StringBuffer();
543
+ int v = 0;
544
+ for(int i = offset;i < offset + len;i++)
545
+ {
546
+ v = BCD_2_Decimal(data[i]);
547
+ sb.append(intToString(v,2));
548
+ }
549
+ return Integer.parseInt(sb.toString());
550
+ }
551
+
552
+ public static byte[] subBytes(byte [] data, int offset, int len)
553
+ {
554
+ if(data == null || data.length < offset + len)
555
+ {
556
+ return null;
557
+ }
558
+ byte [] bs = new byte[len];
559
+ copyBytes(data, offset, len, bs, 0);
560
+ return bs;
561
+ }
562
+
563
+ public static String packBytes2String(byte [] flags, int startpos, int endpos)
564
+ {
565
+ if(flags == null)
566
+ return null;
567
+ StringBuffer sb = new StringBuffer();
568
+ int n = 0;
569
+ for(int i = startpos; i < endpos; i++)
570
+ {
571
+ n = flags[i]<0?(256+flags[i]):flags[i];
572
+ sb.append(n);
573
+ if(i != endpos-1)
574
+ {
575
+ sb.append(",");
576
+ }
577
+ }
578
+ return sb.toString();
579
+ }
580
+
581
+ public static byte[] decodeString2bytes(String msgflag,int bytelength)
582
+ {
583
+ byte [] res = new byte[bytelength];
584
+ int n = 0;
585
+ boolean bValidMsgFlag = false;
586
+ if(msgflag != null && !msgflag.equals(""))
587
+ {
588
+ String [] flags = msgflag.split(",");
589
+ if(flags != null && flags.length == bytelength)
590
+ {
591
+ bValidMsgFlag = true;
592
+ for(int i=0;i<bytelength;i++)
593
+ {
594
+ res[i] = (byte)(Integer.parseInt(flags[i]));
595
+ }
596
+ }
597
+ }
598
+ if(bValidMsgFlag == false)
599
+ {
600
+ res = null;
601
+ }
602
+ return res;
603
+ }
604
+ public static long YYMMDDHHmmssStringToMills(String str) {
605
+ //Log.v(CTConst.TAG,"settime from server str="+str);
606
+ if(str == null || str.length() != 14)
607
+ {
608
+ return 0L;
609
+ }
610
+ String yearstr = str.substring(0,4);
611
+ String monthstr = str.substring(4,6);
612
+ String daystr = str.substring(6,8);
613
+ String hourstr = str.substring(8,10);
614
+ String minstr = str.substring(10,12);
615
+ String secondstr = str.substring(12,14);
616
+
617
+ Calendar c = Calendar.getInstance();
618
+ c.set(Calendar.YEAR, Integer.parseInt(yearstr));
619
+ c.set(Calendar.MONTH, Integer.parseInt(monthstr)-1);
620
+ c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(daystr));
621
+ c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hourstr));
622
+ c.set(Calendar.MINUTE, Integer.parseInt(minstr));
623
+ c.set(Calendar.SECOND, Integer.parseInt(secondstr));
624
+ return c.getTimeInMillis();
625
+ }
626
+
627
+ public static byte[] objectToByte(Object obj) throws Exception {
628
+ ObjectOutputStream oos = null;
629
+ try {
630
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
631
+ oos = new ObjectOutputStream(bos);
632
+ oos.writeObject(obj);
633
+ oos.writeObject(null);//to skip read error
634
+ return bos.toByteArray();
635
+ } finally {
636
+ if (oos != null)
637
+ oos.close();
638
+ }
639
+ }
640
+
641
+ public static Object byteToObject(byte[] data) throws Exception {
642
+ ObjectInputStream ois = null;
643
+ try {
644
+ ByteArrayInputStream bis = new ByteArrayInputStream(data);
645
+ ois = new ObjectInputStream(bis);
646
+ bis.close();
647
+ return ois.readObject();
648
+ } finally {
649
+ if (ois != null)
650
+ {
651
+ ois.close();
652
+ }
653
+ }
654
+ }
655
+ }