@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.
- package/README.md +278 -0
- package/android/build.gradle +167 -0
- package/android/lc3Lib/CMakeLists.txt +6 -0
- package/android/lc3Lib/build.gradle +109 -0
- package/android/lc3Lib/proguard-rules.pro +33 -0
- package/android/lc3Lib/src/main/AndroidManifest.xml +2 -0
- package/android/lc3Lib/src/main/cpp/CMakeLists.txt +8 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/CMakeLists.txt +30 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/CMakeLists.txt +7 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/ogg_opus_encoder.cc +96 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/jni/ogg_opus_encoder.h +53 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/Makefile.am +6 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/config_types.h +26 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/config_types.h.in +26 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/ogg.h +209 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libogg/os_types.h +158 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus.h +981 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_custom.h +342 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_defines.h +799 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_multistream.h +660 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_projection.h +568 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/libopus/opus_types.h +166 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/ogg_opus_encoder.cc +268 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/ogg_opus_encoder.h +115 -0
- package/android/lc3Lib/src/main/cpp/google_opus_stuff/opus_tools/opus_header.h +59 -0
- package/android/lc3Lib/src/main/cpp/liblc3/CMakeLists.txt +38 -0
- package/android/lc3Lib/src/main/cpp/liblc3/include/lc3.h +309 -0
- package/android/lc3Lib/src/main/cpp/liblc3/include/lc3_private.h +162 -0
- package/android/lc3Lib/src/main/cpp/liblc3/include/rnnoise.h +114 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/CMakeLists.txt +19 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/attdet.c +92 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/attdet.h +44 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bits.c +375 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bits.h +315 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bwdet.c +129 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/bwdet.h +69 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/common.h +148 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/energy.c +70 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/energy.h +43 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/fastmath.h +158 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/lc3.c +702 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf.c +893 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf.h +111 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf_arm.h +506 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/ltpf_neon.h +281 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/makefile.mk +35 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct.c +452 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct.h +57 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/mdct_neon.h +296 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/meson.build +46 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/plc.c +61 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/plc.h +57 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/sns.c +880 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/sns.h +103 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/spec.c +904 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/spec.h +119 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tables.c +3457 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tables.h +94 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tns.c +457 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3/tns.h +99 -0
- package/android/lc3Lib/src/main/cpp/liblc3/liblc3.cpp +159 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/_kiss_fft_guts.h +182 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/arch.h +261 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/celt_lpc.c +279 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/celt_lpc.h +59 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/common.h +48 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/compile.sh +3 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/denoise.c +646 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/kiss_fft.c +601 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/kiss_fft.h +203 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/opus_types.h +159 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/pitch.c +526 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/pitch.h +149 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn.c +178 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn.h +69 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_data.c +11051 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_data.h +34 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_reader.c +168 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/rnn_train.py +66 -0
- package/android/lc3Lib/src/main/cpp/liblc3/rnnoise/tansig_table.h +45 -0
- package/android/lc3Lib/src/main/java/com/mentra/lc3Lib/Lc3Cpp.java +38 -0
- package/android/lc3Lib/third_party/CMakeLists.txt +23 -0
- package/android/lc3Lib/third_party/CMakeLists_libogg.txt +18 -0
- package/android/lc3Lib/third_party/CMakeLists_libopus.txt +18 -0
- package/android/lc3Lib/third_party/CMakeLists_opus-tools.txt +23 -0
- package/android/lc3Lib/third_party/opus_tools/src/AUTHORS +5 -0
- package/android/lc3Lib/third_party/opus_tools/src/CMakeLists.txt +4 -0
- package/android/lc3Lib/third_party/opus_tools/src/COPYING +371 -0
- package/android/lc3Lib/third_party/opus_tools/src/ChangeLog +3 -0
- package/android/lc3Lib/third_party/opus_tools/src/Makefile.am +42 -0
- package/android/lc3Lib/third_party/opus_tools/src/Makefile.unix +23 -0
- package/android/lc3Lib/third_party/opus_tools/src/NEWS +0 -0
- package/android/lc3Lib/third_party/opus_tools/src/README +0 -0
- package/android/lc3Lib/third_party/opus_tools/src/autogen.sh +115 -0
- package/android/lc3Lib/third_party/opus_tools/src/configure.ac +293 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/arch.h +239 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/audio-in.c +1046 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/diag_range.c +245 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/diag_range.h +28 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/info_opus.c +320 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/info_opus.h +51 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/lpc.c +157 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/lpc.h +27 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opus_header.c +286 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opus_header.h +59 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opusdec.c +884 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opusenc.c +1021 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opusenc.h +101 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opusinfo.c +639 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/opusinfo.h +51 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/os_support.h +167 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/resample.c +1137 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/speex_resampler.h +344 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/stack_alloc.h +115 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/wav_io.c +125 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/wav_io.h +62 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/wave_out.c +223 -0
- package/android/lc3Lib/third_party/opus_tools/src/src/wave_out.h +60 -0
- package/android/settings.gradle +1 -0
- package/android/src/main/AndroidManifest.xml +40 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +528 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/Bridge.kt +610 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +1616 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +314 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothModels.kt +1710 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +554 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/ObservableStore.kt +68 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/controllers/ControllerManager.kt +158 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/controllers/R1.kt +934 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/services/Foreground.kt +175 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/services/PhoneMic.kt +1109 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.java +3974 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +3551 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Mach1.java +1327 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.java +6959 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +1655 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraosBle.java +53675 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +202 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Simulated.kt +224 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/stt/STTTools.kt +340 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/stt/SherpaOnnxTranscriber.kt +465 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/stt/VadGateSpeechPolicy.kt +221 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/AES.java +106 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/AudioSessionMonitor.kt +189 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/BitmapJavaUtils.java +169 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/BlePhotoUploadService.java +179 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/Constants.kt +44 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/G1Text.kt +436 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/IncidentLogBleRelayNaming.java +29 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/IncidentLogBleUploadService.java +76 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/K900ProtocolUtils.java +791 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/MessageChunker.java +186 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/NexSGCUtils.kt +589 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/PhoneAudioMonitor.kt +303 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/SmartGlassesConnectionState.java +9 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/ByteUtilAudioPlayer.java +655 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/Lc3Player.java +441 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/PCMAudioPlayer.java +431 -0
- package/android/src/main/res/values/strings.xml +4 -0
- package/app.plugin.js +1 -0
- package/build/BluetoothSdk.types.d.ts +498 -0
- package/build/BluetoothSdk.types.d.ts.map +1 -0
- package/build/BluetoothSdk.types.js +23 -0
- package/build/BluetoothSdk.types.js.map +1 -0
- package/build/BluetoothSdkModule.d.ts +71 -0
- package/build/BluetoothSdkModule.d.ts.map +1 -0
- package/build/BluetoothSdkModule.js +106 -0
- package/build/BluetoothSdkModule.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +5 -0
- package/build/index.js.map +1 -0
- package/expo-module.config.json +9 -0
- package/ios/BluetoothSdkModule.swift +665 -0
- package/ios/MentraBluetoothSDK.podspec +77 -0
- package/ios/Packages/CoreObjC/CoreObjC.xcodeproj/project.pbxproj +213 -0
- package/ios/Packages/CoreObjC/PcmConverter.h +22 -0
- package/ios/Packages/CoreObjC/PcmConverter.m +266 -0
- package/ios/Packages/CoreObjC/attdet.c +92 -0
- package/ios/Packages/CoreObjC/attdet.h +44 -0
- package/ios/Packages/CoreObjC/bits.c +375 -0
- package/ios/Packages/CoreObjC/bits.h +315 -0
- package/ios/Packages/CoreObjC/bwdet.c +129 -0
- package/ios/Packages/CoreObjC/bwdet.h +69 -0
- package/ios/Packages/CoreObjC/common.h +151 -0
- package/ios/Packages/CoreObjC/energy.c +70 -0
- package/ios/Packages/CoreObjC/energy.h +43 -0
- package/ios/Packages/CoreObjC/fastmath.h +158 -0
- package/ios/Packages/CoreObjC/lc3.c +704 -0
- package/ios/Packages/CoreObjC/lc3.h +313 -0
- package/ios/Packages/CoreObjC/lc3_cpp.h +283 -0
- package/ios/Packages/CoreObjC/lc3_private.h +163 -0
- package/ios/Packages/CoreObjC/ltpf.c +905 -0
- package/ios/Packages/CoreObjC/ltpf.h +111 -0
- package/ios/Packages/CoreObjC/ltpf_arm.h +506 -0
- package/ios/Packages/CoreObjC/ltpf_neon.h +281 -0
- package/ios/Packages/CoreObjC/makefile.mk +35 -0
- package/ios/Packages/CoreObjC/mdct.c +469 -0
- package/ios/Packages/CoreObjC/mdct.h +57 -0
- package/ios/Packages/CoreObjC/mdct_neon.h +296 -0
- package/ios/Packages/CoreObjC/meson.build +61 -0
- package/ios/Packages/CoreObjC/plc.c +61 -0
- package/ios/Packages/CoreObjC/plc.h +57 -0
- package/ios/Packages/CoreObjC/rnnoise.h +114 -0
- package/ios/Packages/CoreObjC/sns.c +880 -0
- package/ios/Packages/CoreObjC/sns.h +103 -0
- package/ios/Packages/CoreObjC/spec.c +907 -0
- package/ios/Packages/CoreObjC/spec.h +119 -0
- package/ios/Packages/CoreObjC/tables.c +3457 -0
- package/ios/Packages/CoreObjC/tables.h +94 -0
- package/ios/Packages/CoreObjC/tns.c +457 -0
- package/ios/Packages/CoreObjC/tns.h +99 -0
- package/ios/Packages/SherpaOnnx/Model/joiner.onnx +0 -0
- package/ios/Packages/SherpaOnnx/Model/tokens.txt +502 -0
- package/ios/Packages/SherpaOnnx/SherpaOnnx.swift +1659 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/cargs.h +162 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/sherpa-onnx/c-api/c-api.h +1852 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Headers/sherpa-onnx/c-api/cxx-api.h +674 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/Info.plist +44 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64/libsherpa-onnx.a +0 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64/sherpa-onnx.a +0 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/libsherpa-onnx.a +0 -0
- package/ios/Packages/SherpaOnnx/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/sherpa-onnx.a +0 -0
- package/ios/Packages/VAD/Common/VAD/VADQuality.swift +41 -0
- package/ios/Packages/VAD/Common/VAD/VADState.swift +26 -0
- package/ios/Packages/VAD/Common/VAD/VADStrategy.swift +29 -0
- package/ios/Packages/VAD/Common/VAD/VADType.swift +14 -0
- package/ios/Packages/VAD/Data/Configuration.swift +68 -0
- package/ios/Packages/VAD/Data/FrameSize.swift +39 -0
- package/ios/Packages/VAD/Data/Record.swift +13 -0
- package/ios/Packages/VAD/Data/Result.swift +22 -0
- package/ios/Packages/VAD/Data/SampleRate.swift +48 -0
- package/ios/Packages/VAD/Silero/Model/silero_vad.onnx +0 -0
- package/ios/Packages/VAD/Silero/SileroVAD.swift +284 -0
- package/ios/Packages/VAD/Silero/SileroVADStrategy.swift +64 -0
- package/ios/Packages/libbz2/module.modulemap +5 -0
- package/ios/Packages/libbz2/shim.h +1 -0
- package/ios/Source/Bridge.swift +353 -0
- package/ios/Source/Bridging-Header.h +16 -0
- package/ios/Source/DeviceManager.swift +1478 -0
- package/ios/Source/DeviceStore.swift +295 -0
- package/ios/Source/MentraBluetoothSDK.swift +2439 -0
- package/ios/Source/ObservableStore.swift +88 -0
- package/ios/Source/PrivacyInfo.xcprivacy +23 -0
- package/ios/Source/controllers/ControllerManager.swift +187 -0
- package/ios/Source/controllers/R1.swift +827 -0
- package/ios/Source/services/PhoneMic.swift +662 -0
- package/ios/Source/sgcs/Frame.swift +651 -0
- package/ios/Source/sgcs/G1.swift +2505 -0
- package/ios/Source/sgcs/G2.swift +3730 -0
- package/ios/Source/sgcs/Mach1.swift +543 -0
- package/ios/Source/sgcs/MentraLive.swift +4708 -0
- package/ios/Source/sgcs/MentraNex.swift +2479 -0
- package/ios/Source/sgcs/SGCManager.swift +243 -0
- package/ios/Source/sgcs/Simulated.swift +270 -0
- package/ios/Source/sgcs/mentraos_ble.pb.swift +3811 -0
- package/ios/Source/stt/STTTools.swift +154 -0
- package/ios/Source/stt/SherpaOnnxTranscriber.swift +401 -0
- package/ios/Source/utils/AudioSessionMonitor.swift +283 -0
- package/ios/Source/utils/Constants.swift +74 -0
- package/ios/Source/utils/Enums.swift +95 -0
- package/ios/Source/utils/G1Text.swift +2067 -0
- package/ios/Source/utils/JSCExperiment.swift +241 -0
- package/ios/Source/utils/MemoryMonitor.swift +44 -0
- package/ios/Source/utils/MessageChunker.swift +164 -0
- package/ios/Source/utils/Models.swift +135 -0
- package/ios/Source/utils/PhoneAudioMonitor.swift +226 -0
- package/ios/Source/utils/TarBz2Extractor.swift +206 -0
- package/package.json +78 -0
- package/plugin/build/index.d.ts +6 -0
- package/plugin/build/index.js +12 -0
- package/plugin/build/withAndroid.d.ts +4 -0
- package/plugin/build/withAndroid.js +80 -0
- package/plugin/build/withIos.d.ts +4 -0
- package/plugin/build/withIos.js +64 -0
- package/src/BluetoothSdk.types.ts +581 -0
- package/src/BluetoothSdkModule.ts +259 -0
- 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
|
+
}
|