@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,202 @@
1
+ package com.mentra.bluetoothsdk.sgcs
2
+
3
+ import com.mentra.bluetoothsdk.DeviceStore
4
+ import com.mentra.bluetoothsdk.utils.ConnTypes
5
+
6
+ abstract class SGCManager {
7
+ // Hard coded device properties:
8
+ @JvmField var type: String = ""
9
+ @JvmField var hasMic: Boolean = false
10
+
11
+ // Audio Control
12
+ abstract fun setMicEnabled(enabled: Boolean)
13
+ abstract fun sortMicRanking(list: MutableList<String>): MutableList<String>
14
+
15
+ // Camera & Media
16
+ abstract fun requestPhoto(
17
+ requestId: String,
18
+ appId: String,
19
+ size: String,
20
+ webhookUrl: String?,
21
+ authToken: String?,
22
+ compress: String?,
23
+ flash: Boolean,
24
+ sound: Boolean
25
+ )
26
+ abstract fun startStream(message: MutableMap<String, Any>)
27
+ abstract fun stopStream()
28
+ abstract fun sendStreamKeepAlive(message: MutableMap<String, Any>)
29
+ abstract fun startVideoRecording(requestId: String, save: Boolean, flash: Boolean, sound: Boolean)
30
+ abstract fun stopVideoRecording(requestId: String)
31
+
32
+ // Button Settings
33
+ abstract fun sendButtonPhotoSettings()
34
+ abstract fun sendButtonVideoRecordingSettings()
35
+ abstract fun sendButtonMaxRecordingTime()
36
+ abstract fun sendButtonCameraLedSetting()
37
+ abstract fun sendCameraFovSetting()
38
+
39
+ // Display Control
40
+ abstract fun setBrightness(level: Int, autoMode: Boolean)
41
+ abstract fun clearDisplay()
42
+ abstract fun sendTextWall(text: String)
43
+ abstract fun sendDoubleTextWall(top: String, bottom: String)
44
+ abstract fun displayBitmap(base64ImageData: String): Boolean
45
+ abstract fun showDashboard()
46
+ abstract fun setDashboardPosition(height: Int, depth: Int)
47
+
48
+ /** Default: full [setDashboardPosition] (e.g. G1 single command). Nex overrides to height protobuf only. */
49
+ open fun setDashboardHeightOnly(height: Int) {
50
+ val depth = (DeviceStore.store.get("bluetooth", "dashboard_depth") as? Number)?.toInt() ?: 2
51
+ setDashboardPosition(height, depth)
52
+ }
53
+
54
+ /** Default: full [setDashboardPosition]. Nex overrides to display_distance only. */
55
+ open fun setDashboardDepthOnly(depth: Int) {
56
+ val height = (DeviceStore.store.get("bluetooth", "dashboard_height") as? Number)?.toInt() ?: 4
57
+ setDashboardPosition(height, depth)
58
+ }
59
+
60
+ // Dashboard Menu (default no-op — only G2 supports this)
61
+ open fun setDashboardMenu(items: List<Map<String, Any>>) {}
62
+
63
+ // Controller bridging (default no-op — only G2 supports pairing with a ring controller)
64
+ open fun connectController() {}
65
+ open fun disconnectController() {}
66
+
67
+ // Device Control
68
+ abstract fun setHeadUpAngle(angle: Int)
69
+ abstract fun getBatteryStatus()
70
+ abstract fun setSilentMode(enabled: Boolean)
71
+ abstract fun exit()
72
+ abstract fun sendShutdown()
73
+ abstract fun sendReboot()
74
+ abstract fun sendRgbLedControl(
75
+ requestId: String,
76
+ packageName: String?,
77
+ action: String,
78
+ color: String?,
79
+ ontime: Int,
80
+ offtime: Int,
81
+ count: Int
82
+ )
83
+
84
+ // Connection Management
85
+ abstract fun disconnect()
86
+ abstract fun forget()
87
+ abstract fun findCompatibleDevices()
88
+ abstract fun stopScan()
89
+ abstract fun connectById(id: String)
90
+ abstract fun getConnectedBluetoothName(): String
91
+ abstract fun cleanup()
92
+ abstract fun ping()
93
+ abstract fun dbg1()
94
+ abstract fun dbg2()
95
+
96
+ // Network Management
97
+ abstract fun requestWifiScan()
98
+ abstract fun sendWifiCredentials(ssid: String, password: String)
99
+ abstract fun forgetWifiNetwork(ssid: String)
100
+ abstract fun sendHotspotState(enabled: Boolean)
101
+
102
+ // User Context (for crash reporting)
103
+ abstract fun sendUserEmailToGlasses(email: String)
104
+
105
+ // Incident Reporting
106
+ abstract fun sendIncidentId(incidentId: String, apiBaseUrl: String? = null)
107
+
108
+ // Gallery
109
+ abstract fun queryGalleryStatus()
110
+ abstract fun sendGalleryMode()
111
+
112
+ // Version info
113
+ abstract fun requestVersionInfo()
114
+
115
+ // DeviceStore-backed read-only getters for convenience
116
+ val fullyBooted: Boolean
117
+ get() = DeviceStore.get("glasses", "fullyBooted") as? Boolean ?: false
118
+
119
+ val connected: Boolean
120
+ get() = DeviceStore.get("glasses", "connected") as? Boolean ?: false
121
+
122
+ val connectionState: String
123
+ get() = DeviceStore.get("glasses", "connectionState") as? String ?: ConnTypes.DISCONNECTED
124
+
125
+ val appVersion: String
126
+ get() = DeviceStore.get("glasses", "appVersion") as? String ?: ""
127
+
128
+ val buildNumber: String
129
+ get() = DeviceStore.get("glasses", "buildNumber") as? String ?: ""
130
+
131
+ val deviceModel: String
132
+ get() = DeviceStore.get("glasses", "deviceModel") as? String ?: ""
133
+
134
+ val androidVersion: String
135
+ get() = DeviceStore.get("glasses", "androidVersion") as? String ?: ""
136
+
137
+ val otaVersionUrl: String
138
+ get() = DeviceStore.get("glasses", "otaVersionUrl") as? String ?: ""
139
+
140
+ val firmwareVersion: String
141
+ get() = DeviceStore.get("glasses", "firmwareVersion") as? String ?: ""
142
+
143
+ val btMacAddress: String
144
+ get() = DeviceStore.get("glasses", "btMacAddress") as? String ?: ""
145
+
146
+ val serialNumber: String
147
+ get() = DeviceStore.get("glasses", "serialNumber") as? String ?: ""
148
+
149
+ val style: String
150
+ get() = DeviceStore.get("glasses", "style") as? String ?: ""
151
+
152
+ val color: String
153
+ get() = DeviceStore.get("glasses", "color") as? String ?: ""
154
+
155
+ val micEnabled: Boolean
156
+ get() = DeviceStore.get("glasses", "micEnabled") as? Boolean ?: false
157
+
158
+ val vadEnabled: Boolean
159
+ get() = DeviceStore.get("glasses", "vadEnabled") as? Boolean ?: false
160
+
161
+ val batteryLevel: Int
162
+ get() = DeviceStore.get("glasses", "batteryLevel") as? Int ?: -1
163
+
164
+ val headUp: Boolean
165
+ get() = DeviceStore.get("glasses", "headUp") as? Boolean ?: false
166
+
167
+ val charging: Boolean
168
+ get() = DeviceStore.get("glasses", "charging") as? Boolean ?: false
169
+
170
+ val caseOpen: Boolean
171
+ get() = DeviceStore.get("glasses", "caseOpen") as? Boolean ?: true
172
+
173
+ val caseRemoved: Boolean
174
+ get() = DeviceStore.get("glasses", "caseRemoved") as? Boolean ?: true
175
+
176
+ val caseCharging: Boolean
177
+ get() = DeviceStore.get("glasses", "caseCharging") as? Boolean ?: false
178
+
179
+ val caseBatteryLevel: Int
180
+ get() = DeviceStore.get("glasses", "caseBatteryLevel") as? Int ?: -1
181
+
182
+ val wifiSsid: String
183
+ get() = DeviceStore.get("glasses", "wifiSsid") as? String ?: ""
184
+
185
+ val wifiConnected: Boolean
186
+ get() = DeviceStore.get("glasses", "wifiConnected") as? Boolean ?: false
187
+
188
+ val wifiLocalIp: String
189
+ get() = DeviceStore.get("glasses", "wifiLocalIp") as? String ?: ""
190
+
191
+ val hotspotEnabled: Boolean
192
+ get() = DeviceStore.get("glasses", "hotspotEnabled") as? Boolean ?: false
193
+
194
+ val hotspotSsid: String
195
+ get() = DeviceStore.get("glasses", "hotspotSsid") as? String ?: ""
196
+
197
+ val hotspotPassword: String
198
+ get() = DeviceStore.get("glasses", "hotspotPassword") as? String ?: ""
199
+
200
+ val hotspotGatewayIp: String
201
+ get() = DeviceStore.get("glasses", "hotspotGatewayIp") as? String ?: ""
202
+ }
@@ -0,0 +1,224 @@
1
+ package com.mentra.bluetoothsdk.sgcs
2
+
3
+ import com.mentra.bluetoothsdk.Bridge
4
+ import com.mentra.bluetoothsdk.DeviceManager
5
+ import com.mentra.bluetoothsdk.utils.ConnTypes
6
+ import com.mentra.bluetoothsdk.utils.DeviceTypes
7
+ import com.mentra.bluetoothsdk.DeviceStore
8
+
9
+ class Simulated : SGCManager() {
10
+
11
+ init {
12
+ type = DeviceTypes.SIMULATED
13
+ DeviceStore.apply("glasses", "fullyBooted", true)
14
+ DeviceStore.apply("glasses", "connected", true)
15
+ DeviceStore.apply("glasses", "connectionState", ConnTypes.CONNECTED)
16
+ DeviceStore.apply("glasses", "micEnabled", false)
17
+ }
18
+
19
+ // Audio Control
20
+ override fun setMicEnabled(enabled: Boolean) {
21
+ Bridge.log("setMicEnabled")
22
+ }
23
+
24
+ override fun sortMicRanking(list: MutableList<String>): MutableList<String> {
25
+ return list
26
+ }
27
+
28
+ // Camera & Media
29
+ override fun requestPhoto(
30
+ requestId: String,
31
+ appId: String,
32
+ size: String,
33
+ webhookUrl: String?,
34
+ authToken: String?,
35
+ compress: String?,
36
+ flash: Boolean,
37
+ sound: Boolean
38
+ ) {
39
+ Bridge.log("requestPhoto flash=$flash, sound=$sound")
40
+ }
41
+
42
+ override fun startStream(message: MutableMap<String, Any>) {
43
+ Bridge.log("startStream")
44
+ }
45
+
46
+ override fun stopStream() {
47
+ Bridge.log("stopStream")
48
+ }
49
+
50
+ override fun sendStreamKeepAlive(message: MutableMap<String, Any>) {
51
+ Bridge.log("sendStreamKeepAlive")
52
+ }
53
+
54
+ override fun startVideoRecording(requestId: String, save: Boolean, flash: Boolean, sound: Boolean) {
55
+ Bridge.log("startVideoRecording flash=$flash, sound=$sound")
56
+ }
57
+
58
+ override fun stopVideoRecording(requestId: String) {
59
+ Bridge.log("stopVideoRecording")
60
+ }
61
+
62
+ // Button Settings
63
+ override fun sendButtonPhotoSettings() {
64
+ Bridge.log("sendButtonPhotoSettings")
65
+ }
66
+
67
+ override fun sendButtonVideoRecordingSettings() {
68
+ Bridge.log("sendButtonVideoRecordingSettings")
69
+ }
70
+
71
+ override fun sendButtonMaxRecordingTime() {
72
+ Bridge.log("sendButtonMaxRecordingTime")
73
+ }
74
+
75
+ override fun sendButtonCameraLedSetting() {
76
+ Bridge.log("sendButtonCameraLedSetting")
77
+ }
78
+
79
+ override fun sendCameraFovSetting() {
80
+ Bridge.log("sendCameraFovSetting")
81
+ }
82
+
83
+ // Display Control
84
+ override fun setBrightness(level: Int, autoMode: Boolean) {
85
+ Bridge.log("setBrightness")
86
+ }
87
+
88
+ override fun clearDisplay() {
89
+ Bridge.log("clearDisplay")
90
+ }
91
+
92
+ override fun sendTextWall(text: String) {
93
+ Bridge.log("sendTextWall")
94
+ }
95
+
96
+ override fun sendDoubleTextWall(top: String, bottom: String) {
97
+ Bridge.log("sendDoubleTextWall")
98
+ }
99
+
100
+ override fun displayBitmap(base64ImageData: String): Boolean {
101
+ Bridge.log("displayBitmap")
102
+ return false
103
+ }
104
+
105
+ override fun showDashboard() {
106
+ Bridge.log("showDashboard")
107
+ }
108
+
109
+ override fun setDashboardPosition(height: Int, depth: Int) {
110
+ Bridge.log("setDashboardPosition")
111
+ }
112
+
113
+ // Device Control
114
+ override fun setHeadUpAngle(angle: Int) {
115
+ Bridge.log("setHeadUpAngle")
116
+ }
117
+
118
+ override fun getBatteryStatus() {
119
+ Bridge.log("getBatteryStatus")
120
+ }
121
+
122
+ override fun setSilentMode(enabled: Boolean) {
123
+ Bridge.log("setSilentMode")
124
+ }
125
+
126
+ override fun exit() {
127
+ Bridge.log("exit")
128
+ }
129
+
130
+ override fun sendShutdown() {
131
+ Bridge.log("sendShutdown - not supported on Simulated")
132
+ }
133
+
134
+ override fun sendReboot() {
135
+ Bridge.log("sendReboot - not supported on Simulated")
136
+ }
137
+
138
+ override fun sendRgbLedControl(
139
+ requestId: String,
140
+ packageName: String?,
141
+ action: String,
142
+ color: String?,
143
+ ontime: Int,
144
+ offtime: Int,
145
+ count: Int
146
+ ) {
147
+ Bridge.log("sendRgbLedControl - not supported on Simulated")
148
+ Bridge.sendRgbLedControlResponse(requestId, false, "device_not_supported")
149
+ }
150
+
151
+ // Connection Management
152
+ override fun disconnect() {
153
+ Bridge.log("disconnect")
154
+ }
155
+
156
+ override fun forget() {
157
+ Bridge.log("forget")
158
+ }
159
+
160
+ override fun findCompatibleDevices() {
161
+ Bridge.log("findCompatibleDevices")
162
+ }
163
+
164
+ override fun stopScan() {
165
+ Bridge.log("stopScan")
166
+ }
167
+
168
+ override fun connectById(id: String) {
169
+ }
170
+
171
+ override fun getConnectedBluetoothName(): String {
172
+ return ""
173
+ }
174
+
175
+ override fun cleanup() {
176
+ Bridge.log("cleanup")
177
+ }
178
+
179
+ override fun ping() {
180
+ Bridge.log("ping")
181
+ }
182
+
183
+ override fun dbg1() {}
184
+ override fun dbg2() {}
185
+
186
+ // Network Management
187
+ override fun requestWifiScan() {
188
+ Bridge.log("requestWifiScan")
189
+ }
190
+
191
+ override fun sendWifiCredentials(ssid: String, password: String) {
192
+ Bridge.log("sendWifiCredentials")
193
+ }
194
+
195
+ override fun forgetWifiNetwork(ssid: String) {
196
+ Bridge.log("forgetWifiNetwork: $ssid")
197
+ }
198
+
199
+ override fun sendHotspotState(enabled: Boolean) {
200
+ Bridge.log("sendHotspotState")
201
+ }
202
+
203
+ override fun sendUserEmailToGlasses(email: String) {
204
+ Bridge.log("sendUserEmailToGlasses: $email")
205
+ }
206
+
207
+ override fun sendIncidentId(incidentId: String, apiBaseUrl: String?) {
208
+ Bridge.log("sendIncidentId: $incidentId")
209
+ }
210
+
211
+ // Gallery
212
+ override fun queryGalleryStatus() {
213
+ Bridge.log("queryGalleryStatus")
214
+ }
215
+
216
+ override fun sendGalleryMode() {
217
+ Bridge.log("SIMULATED: 📸 Received gallery mode")
218
+ }
219
+
220
+ // Version info
221
+ override fun requestVersionInfo() {
222
+ Bridge.log("SIMULATED: 📱 Requesting version info (no-op)")
223
+ }
224
+ }