@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,243 @@
1
+ import Foundation
2
+
3
+ @MainActor
4
+ protocol SGCManager {
5
+ // MARK: - hard coded device properties:
6
+
7
+ var type: String { get set }
8
+ var hasMic: Bool { get }
9
+
10
+ // MARK: - Audio Control
11
+
12
+ func setMicEnabled(_ enabled: Bool)
13
+ func sortMicRanking(list: [String]) -> [String]
14
+
15
+ // MARK: - Messaging
16
+
17
+ func sendJson(_ jsonOriginal: [String: Any], wakeUp: Bool, requireAck: Bool)
18
+
19
+ // MARK: - Camera & Media
20
+
21
+ func requestPhoto(
22
+ _ requestId: String, appId: String, size: String?, webhookUrl: String?, authToken: String?,
23
+ compress: String?, flash: Bool, sound: Bool
24
+ )
25
+ func startStream(_ message: [String: Any])
26
+ func stopStream()
27
+ func sendStreamKeepAlive(_ message: [String: Any])
28
+ func startVideoRecording(requestId: String, save: Bool, flash: Bool, sound: Bool)
29
+ func stopVideoRecording(requestId: String)
30
+
31
+ // MARK: - Button Settings
32
+
33
+ func sendButtonPhotoSettings()
34
+ func sendButtonVideoRecordingSettings()
35
+ func sendButtonMaxRecordingTime()
36
+ func sendButtonCameraLedSetting()
37
+ func sendCameraFovSetting()
38
+
39
+ // MARK: - Display Control
40
+
41
+ func setBrightness(_ level: Int, autoMode: Bool)
42
+ func clearDisplay()
43
+ func sendTextWall(_ text: String)
44
+ func sendDoubleTextWall(_ top: String, _ bottom: String)
45
+ func displayBitmap(base64ImageData: String) async -> Bool
46
+ func showDashboard()
47
+ func setDashboardPosition(_ height: Int, _ depth: Int)
48
+ /// Default implementation sends both via [setDashboardPosition]; Nex overrides to one protobuf.
49
+ func setDashboardHeightOnly(_ height: Int)
50
+ func setDashboardDepthOnly(_ depth: Int)
51
+
52
+ // MARK: - Dashboard Menu
53
+
54
+ func setDashboardMenu(_ items: [[String: Any]])
55
+
56
+ // MARK: - Device Control
57
+
58
+ func setHeadUpAngle(_ angle: Int)
59
+ func getBatteryStatus()
60
+ func setSilentMode(_ enabled: Bool)
61
+ func exit()
62
+ func sendShutdown()
63
+ func sendReboot()
64
+ func sendRgbLedControl(
65
+ requestId: String, packageName: String?, action: String, color: String?, ontime: Int,
66
+ offtime: Int, count: Int
67
+ )
68
+
69
+ // MARK: - Connection Management
70
+
71
+ func disconnect()
72
+ func forget()
73
+ func findCompatibleDevices()
74
+ func stopScan()
75
+ func connectById(_ id: String)
76
+ func getConnectedBluetoothName() -> String?
77
+ func connectController()
78
+ func disconnectController()
79
+ func cleanup()
80
+ func ping()
81
+ func dbg1()
82
+ func dbg2()
83
+
84
+ // MARK: - Network Management
85
+
86
+ func requestWifiScan()
87
+ func sendWifiCredentials(_ ssid: String, _ password: String)
88
+ func forgetWifiNetwork(_ ssid: String)
89
+ func sendHotspotState(_ enabled: Bool)
90
+ func sendOtaStart()
91
+ func sendOtaQueryStatus()
92
+
93
+ // MARK: - User Context (for crash reporting)
94
+
95
+ func sendUserEmailToGlasses(_ email: String)
96
+
97
+ // MARK: - Incident Reporting
98
+
99
+ func sendIncidentId(_ incidentId: String, apiBaseUrl: String?)
100
+
101
+ // MARK: - Gallery
102
+
103
+ func queryGalleryStatus()
104
+ func sendGalleryMode()
105
+
106
+ // MARK: - Version Info
107
+
108
+ func requestVersionInfo()
109
+ }
110
+
111
+ /// doesn't seem to work for concurrency reasons :(
112
+ /// we can make read-only getters for convienence though:
113
+ extension SGCManager {
114
+ // MARK: - Dashboard (default: combined wire format; Nex implements single-field)
115
+
116
+ func setDashboardHeightOnly(_ height: Int) {
117
+ let d = DeviceStore.shared.get("bluetooth", "dashboard_depth") as? Int ?? 2
118
+ setDashboardPosition(height, d)
119
+ }
120
+
121
+ func setDashboardDepthOnly(_ depth: Int) {
122
+ let h = DeviceStore.shared.get("bluetooth", "dashboard_height") as? Int ?? 4
123
+ setDashboardPosition(h, depth)
124
+ }
125
+
126
+ // MARK: - Dashboard Menu (default no-op — only G2 supports this)
127
+
128
+ func setDashboardMenu(_: [[String: Any]]) {}
129
+
130
+ // MARK: - Default DeviceStore-backed property implementations
131
+
132
+ var fullyBooted: Bool {
133
+ DeviceStore.shared.get("glasses", "fullyBooted") as? Bool ?? false
134
+ }
135
+
136
+ var connected: Bool {
137
+ DeviceStore.shared.get("glasses", "connected") as? Bool ?? false
138
+ }
139
+
140
+ var appVersion: String {
141
+ DeviceStore.shared.get("glasses", "appVersion") as? String ?? ""
142
+ }
143
+
144
+ var buildNumber: String {
145
+ DeviceStore.shared.get("glasses", "buildNumber") as? String ?? ""
146
+ }
147
+
148
+ var deviceModel: String {
149
+ DeviceStore.shared.get("glasses", "deviceModel") as? String ?? ""
150
+ }
151
+
152
+ var androidVersion: String {
153
+ DeviceStore.shared.get("glasses", "androidVersion") as? String ?? ""
154
+ }
155
+
156
+ var otaVersionUrl: String {
157
+ DeviceStore.shared.get("glasses", "otaVersionUrl") as? String ?? ""
158
+ }
159
+
160
+ var firmwareVersion: String {
161
+ DeviceStore.shared.get("glasses", "fwVersion") as? String ?? ""
162
+ }
163
+
164
+ var btMacAddress: String {
165
+ DeviceStore.shared.get("glasses", "btMacAddress") as? String ?? ""
166
+ }
167
+
168
+ var serialNumber: String {
169
+ DeviceStore.shared.get("glasses", "serialNumber") as? String ?? ""
170
+ }
171
+
172
+ var style: String {
173
+ DeviceStore.shared.get("glasses", "style") as? String ?? ""
174
+ }
175
+
176
+ var color: String {
177
+ DeviceStore.shared.get("glasses", "color") as? String ?? ""
178
+ }
179
+
180
+ var micEnabled: Bool {
181
+ DeviceStore.shared.get("glasses", "micEnabled") as? Bool ?? false
182
+ }
183
+
184
+ var vadEnabled: Bool {
185
+ DeviceStore.shared.get("glasses", "vadEnabled") as? Bool ?? false
186
+ }
187
+
188
+ var batteryLevel: Int {
189
+ DeviceStore.shared.get("glasses", "batteryLevel") as? Int ?? -1
190
+ }
191
+
192
+ var headUp: Bool {
193
+ DeviceStore.shared.get("glasses", "headUp") as? Bool ?? false
194
+ }
195
+
196
+ var charging: Bool {
197
+ DeviceStore.shared.get("glasses", "charging") as? Bool ?? false
198
+ }
199
+
200
+ var caseOpen: Bool {
201
+ DeviceStore.shared.get("glasses", "caseOpen") as? Bool ?? true
202
+ }
203
+
204
+ var caseRemoved: Bool {
205
+ DeviceStore.shared.get("glasses", "caseRemoved") as? Bool ?? true
206
+ }
207
+
208
+ var caseCharging: Bool {
209
+ DeviceStore.shared.get("glasses", "caseCharging") as? Bool ?? false
210
+ }
211
+
212
+ var caseBatteryLevel: Int {
213
+ DeviceStore.shared.get("glasses", "caseBatteryLevel") as? Int ?? -1
214
+ }
215
+
216
+ var wifiSsid: String {
217
+ DeviceStore.shared.get("glasses", "wifiSsid") as? String ?? ""
218
+ }
219
+
220
+ var wifiConnected: Bool {
221
+ DeviceStore.shared.get("glasses", "wifiConnected") as? Bool ?? false
222
+ }
223
+
224
+ var wifiLocalIp: String {
225
+ DeviceStore.shared.get("glasses", "wifiLocalIp") as? String ?? ""
226
+ }
227
+
228
+ var hotspotEnabled: Bool {
229
+ DeviceStore.shared.get("glasses", "hotspotEnabled") as? Bool ?? false
230
+ }
231
+
232
+ var hotspotSsid: String {
233
+ DeviceStore.shared.get("glasses", "hotspotSsid") as? String ?? ""
234
+ }
235
+
236
+ var hotspotPassword: String {
237
+ DeviceStore.shared.get("glasses", "hotspotPassword") as? String ?? ""
238
+ }
239
+
240
+ var hotspotGatewayIp: String {
241
+ DeviceStore.shared.get("glasses", "hotspotGatewayIp") as? String ?? ""
242
+ }
243
+ }
@@ -0,0 +1,270 @@
1
+ //
2
+ // Simulated.swift
3
+ // AOS
4
+ //
5
+ // Created by Matthew Fosse on 10/7/25.
6
+ //
7
+
8
+ @MainActor
9
+ class Simulated: SGCManager {
10
+ init() {
11
+ DeviceStore.shared.apply("glasses", "fullyBooted", true)
12
+ DeviceStore.shared.apply("glasses", "connected", true)
13
+ DeviceStore.shared.apply("glasses", "connectionState", ConnTypes.CONNECTED)
14
+ DeviceStore.shared.apply("glasses", "micEnabled", false)
15
+ DeviceStore.shared.apply("glasses", "vadEnabled", false)
16
+ DeviceStore.shared.apply("glasses", "btcConnected", false)
17
+ }
18
+
19
+ // MARK: - Device Information
20
+
21
+ var type: String = DeviceTypes.SIMULATED
22
+ var ready: Bool = true
23
+ var connectionState: String = ConnTypes.CONNECTED
24
+
25
+ var appVersion: String = ""
26
+ var buildNumber: String = ""
27
+ var deviceModel: String = ""
28
+ var androidVersion: String = ""
29
+ var otaVersionUrl: String = ""
30
+ var firmwareVersion: String = ""
31
+ var btMacAddress: String = ""
32
+ var serialNumber: String = ""
33
+ var style: String = ""
34
+ var color: String = ""
35
+
36
+ // MARK: - Hardware Status
37
+
38
+ var hasMic: Bool = false
39
+ var batteryLevel: Int = 100
40
+ var headUp: Bool = false
41
+ var micEnabled: Bool = false
42
+
43
+ // MARK: - Case Status
44
+
45
+ var caseOpen: Bool = false
46
+ var caseRemoved: Bool = false
47
+ var caseCharging: Bool = false
48
+ var caseBatteryLevel: Int = -1
49
+
50
+ // MARK: - Network Status
51
+
52
+ var wifiSsid: String = ""
53
+ var wifiConnected: Bool = false
54
+ var wifiLocalIp: String = ""
55
+ var hotspotEnabled: Bool = false
56
+ var hotspotSsid: String = ""
57
+ var hotspotPassword: String = ""
58
+ var hotspotGatewayIp: String = ""
59
+
60
+ // MARK: - Audio Control
61
+
62
+ func setMicEnabled(_: Bool) {
63
+ Bridge.log("setMicEnabled")
64
+ }
65
+
66
+ func sortMicRanking(list: [String]) -> [String] {
67
+ return list
68
+ }
69
+
70
+ // MARK: - Messaging
71
+
72
+ func sendJson(_: [String: Any], wakeUp _: Bool, requireAck _: Bool) {
73
+ Bridge.log("sendJson")
74
+ }
75
+
76
+ // MARK: - Camera & Media
77
+
78
+ func requestPhoto(_: String, appId _: String, size _: String?, webhookUrl _: String?, authToken _: String?, compress _: String?, flash _: Bool, sound _: Bool) {
79
+ Bridge.log("requestPhoto")
80
+ }
81
+
82
+ func startStream(_: [String: Any]) {
83
+ Bridge.log("startStream")
84
+ }
85
+
86
+ func stopStream() {
87
+ Bridge.log("stopStream")
88
+ }
89
+
90
+ func sendStreamKeepAlive(_: [String: Any]) {
91
+ Bridge.log("sendStreamKeepAlive")
92
+ }
93
+
94
+ func startVideoRecording(requestId _: String, save _: Bool, flash _: Bool, sound _: Bool) {
95
+ Bridge.log("startVideoRecording")
96
+ }
97
+
98
+ func stopVideoRecording(requestId _: String) {
99
+ Bridge.log("stopVideoRecording")
100
+ }
101
+
102
+ // MARK: - Button Settings
103
+
104
+ func sendButtonPhotoSettings() {
105
+ Bridge.log("sendButtonPhotoSettings")
106
+ }
107
+
108
+ func sendButtonVideoRecordingSettings() {
109
+ Bridge.log("sendButtonVideoRecordingSettings")
110
+ }
111
+
112
+ func sendButtonCameraLedSetting() {
113
+ Bridge.log("sendButtonCameraLedSetting")
114
+ }
115
+
116
+ func sendCameraFovSetting() {
117
+ Bridge.log("sendCameraFovSetting")
118
+ }
119
+
120
+ func sendButtonMaxRecordingTime() {}
121
+
122
+ // MARK: - Display Control
123
+
124
+ func setBrightness(_: Int, autoMode _: Bool) {
125
+ Bridge.log("setBrightness")
126
+ }
127
+
128
+ func clearDisplay() {
129
+ Bridge.log("clearDisplay")
130
+ }
131
+
132
+ func sendTextWall(_: String) {
133
+ Bridge.log("sendTextWall")
134
+ }
135
+
136
+ func sendDoubleTextWall(_: String, _: String) {
137
+ Bridge.log("sendDoubleTextWall")
138
+ }
139
+
140
+ func displayBitmap(base64ImageData _: String) async -> Bool {
141
+ Bridge.log("displayBitmap")
142
+ return false
143
+ }
144
+
145
+ func showDashboard() {
146
+ Bridge.log("showDashboard")
147
+ }
148
+
149
+ func setDashboardPosition(_: Int, _: Int) {
150
+ Bridge.log("setDashboardPosition")
151
+ }
152
+
153
+ // MARK: - Device Control
154
+
155
+ func setHeadUpAngle(_: Int) {
156
+ Bridge.log("setHeadUpAngle")
157
+ }
158
+
159
+ func getBatteryStatus() {
160
+ Bridge.log("getBatteryStatus")
161
+ }
162
+
163
+ func setSilentMode(_: Bool) {
164
+ Bridge.log("setSilentMode")
165
+ }
166
+
167
+ func exit() {
168
+ Bridge.log("exit")
169
+ }
170
+
171
+ func sendShutdown() {
172
+ Bridge.log("sendShutdown - not supported on Simulated")
173
+ }
174
+
175
+ func sendReboot() {
176
+ Bridge.log("sendReboot - not supported on Simulated")
177
+ }
178
+
179
+ func sendRgbLedControl(requestId: String, packageName _: String?, action _: String, color _: String?, ontime _: Int, offtime _: Int, count _: Int) {
180
+ Bridge.log("sendRgbLedControl - not supported on Simulated")
181
+ Bridge.sendRgbLedControlResponse(requestId: requestId, success: false, error: "device_not_supported")
182
+ }
183
+
184
+ // MARK: - Connection Management
185
+
186
+ func disconnect() {
187
+ Bridge.log("disconnect")
188
+ }
189
+
190
+ func forget() {
191
+ Bridge.log("forget")
192
+ }
193
+
194
+ func findCompatibleDevices() {
195
+ Bridge.log("findCompatibleDevices")
196
+ }
197
+
198
+ func stopScan() {
199
+ Bridge.log("stopScan")
200
+ }
201
+
202
+ func connectById(_: String) {
203
+ Bridge.log("connectById")
204
+ }
205
+
206
+ func getConnectedBluetoothName() -> String? {
207
+ return nil
208
+ }
209
+
210
+ func cleanup() {
211
+ Bridge.log("cleanup")
212
+ }
213
+
214
+ func ping() {
215
+ Bridge.log("ping")
216
+ }
217
+
218
+ func dbg1() {}
219
+ func dbg2() {}
220
+ func connectController() {}
221
+ func disconnectController() {}
222
+
223
+ // MARK: - Network Management
224
+
225
+ func requestWifiScan() {
226
+ Bridge.log("requestWifiScan")
227
+ }
228
+
229
+ func sendWifiCredentials(_: String, _: String) {
230
+ Bridge.log("sendWifiCredentials")
231
+ }
232
+
233
+ func forgetWifiNetwork(_ ssid: String) {
234
+ Bridge.log("forgetWifiNetwork: \(ssid)")
235
+ }
236
+
237
+ func sendHotspotState(_: Bool) {
238
+ Bridge.log("sendHotspotState")
239
+ }
240
+
241
+ func sendUserEmailToGlasses(_ email: String) {
242
+ Bridge.log("sendUserEmailToGlasses: \(email)")
243
+ }
244
+
245
+ func sendOtaStart() {
246
+ Bridge.log("sendOtaStart")
247
+ }
248
+
249
+ func sendOtaQueryStatus() {
250
+ Bridge.log("sendOtaQueryStatus")
251
+ }
252
+
253
+ // MARK: - Gallery
254
+
255
+ func queryGalleryStatus() {
256
+ Bridge.log("queryGalleryStatus")
257
+ }
258
+
259
+ func sendGalleryMode() {
260
+ Bridge.log("sendGalleryMode")
261
+ }
262
+
263
+ // MARK: - Version Info
264
+
265
+ func requestVersionInfo() {
266
+ Bridge.log("requestVersionInfo - not supported on Simulated")
267
+ }
268
+
269
+ func sendIncidentId(_: String, apiBaseUrl _: String?) {}
270
+ }