@mentra/bluetooth-sdk 0.1.12 → 0.1.14
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 +30 -11
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +47 -12
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +75 -29
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +1 -5
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +208 -45
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdkDebug.kt +14 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/ObservableStore.kt +20 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/OtaManifest.kt +153 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/camera/CameraModels.kt +80 -14
- package/android/src/main/java/com/mentra/bluetoothsdk/controllers/ControllerManager.kt +4 -16
- package/android/src/main/java/com/mentra/bluetoothsdk/controllers/R1.kt +4 -8
- package/android/src/main/java/com/mentra/bluetoothsdk/services/PhoneMic.kt +90 -4
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.kt +3831 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +20 -28
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/{Mach1.java → Mach1.kt} +514 -561
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.kt +8674 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +12 -3
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +5 -17
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Simulated.kt +9 -20
- package/android/src/main/java/com/mentra/bluetoothsdk/status/DeviceStatus.kt +0 -6
- package/android/src/main/java/com/mentra/bluetoothsdk/streaming/StreamModels.kt +16 -33
- package/build/BluetoothSdk.types.d.ts +48 -17
- package/build/BluetoothSdk.types.d.ts.map +1 -1
- package/build/BluetoothSdk.types.js.map +1 -1
- package/build/_private/BluetoothSdkModule.d.ts +9 -9
- package/build/_private/BluetoothSdkModule.d.ts.map +1 -1
- package/build/_private/BluetoothSdkModule.js +0 -6
- package/build/_private/BluetoothSdkModule.js.map +1 -1
- package/build/_private/photoRequestPayload.d.ts +3 -1
- package/build/_private/photoRequestPayload.d.ts.map +1 -1
- package/build/_private/photoRequestPayload.js +46 -2
- package/build/_private/photoRequestPayload.js.map +1 -1
- package/build/debug.d.ts +3 -0
- package/build/debug.d.ts.map +1 -0
- package/build/debug.js +8 -0
- package/build/debug.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +8 -8
- package/build/index.js.map +1 -1
- package/ios/BluetoothSdkModule.swift +44 -68
- package/ios/Source/BluetoothSdkDefaults.swift +23 -3
- package/ios/Source/DeviceManager.swift +38 -33
- package/ios/Source/DeviceStore.swift +5 -5
- package/ios/Source/MentraBluetoothSDK.swift +217 -50
- package/ios/Source/MentraBluetoothSDKDebug.swift +12 -0
- package/ios/Source/ObservableStore.swift +11 -0
- package/ios/Source/OtaManifest.swift +170 -0
- package/ios/Source/camera/CameraModels.swift +219 -13
- package/ios/Source/controllers/ControllerManager.swift +3 -7
- package/ios/Source/controllers/R1.swift +3 -7
- package/ios/Source/sgcs/Frame.swift +0 -2
- package/ios/Source/sgcs/G1.swift +7 -8
- package/ios/Source/sgcs/G2.swift +21 -20
- package/ios/Source/sgcs/Mach1.swift +7 -8
- package/ios/Source/sgcs/MentraLive.swift +132 -63
- package/ios/Source/sgcs/MentraNex.swift +7 -8
- package/ios/Source/sgcs/SGCManager.swift +7 -10
- package/ios/Source/sgcs/Simulated.swift +8 -8
- package/ios/Source/status/DeviceStatus.swift +1 -9
- package/ios/Source/streaming/StreamModels.swift +7 -32
- package/package.json +6 -1
- package/src/BluetoothSdk.types.ts +49 -17
- package/src/_private/BluetoothSdkModule.ts +9 -17
- package/src/_private/photoRequestPayload.ts +48 -3
- package/src/debug.ts +9 -0
- package/src/index.ts +19 -10
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.java +0 -3974
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.java +0 -7434
package/build/index.js
CHANGED
|
@@ -34,7 +34,6 @@ const PUBLIC_EVENT_NAMES = new Set([
|
|
|
34
34
|
"mic_pcm",
|
|
35
35
|
"mic_lc3",
|
|
36
36
|
"stream_status",
|
|
37
|
-
"ota_update_available",
|
|
38
37
|
"ota_start_ack",
|
|
39
38
|
"ota_status",
|
|
40
39
|
"version_info",
|
|
@@ -46,6 +45,9 @@ const addListener = (eventName, listener) => {
|
|
|
46
45
|
}
|
|
47
46
|
return PrivateBluetoothSdkModule.addListener(eventName, listener);
|
|
48
47
|
};
|
|
48
|
+
const startOtaUpdate = () => {
|
|
49
|
+
return PrivateBluetoothSdkModule.startOtaUpdate();
|
|
50
|
+
};
|
|
49
51
|
export const BluetoothSdk = Object.freeze({
|
|
50
52
|
addListener,
|
|
51
53
|
getDefaultDevice: PrivateBluetoothSdkModule.getDefaultDevice.bind(PrivateBluetoothSdkModule),
|
|
@@ -72,10 +74,9 @@ export const BluetoothSdk = Object.freeze({
|
|
|
72
74
|
setHotspotState: PrivateBluetoothSdkModule.setHotspotState.bind(PrivateBluetoothSdkModule),
|
|
73
75
|
setGalleryModeEnabled: PrivateBluetoothSdkModule.setGalleryModeEnabled.bind(PrivateBluetoothSdkModule),
|
|
74
76
|
setVoiceActivityDetectionEnabled: PrivateBluetoothSdkModule.setVoiceActivityDetectionEnabled.bind(PrivateBluetoothSdkModule),
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
setButtonMaxRecordingTime: PrivateBluetoothSdkModule.setButtonMaxRecordingTime.bind(PrivateBluetoothSdkModule),
|
|
77
|
+
setPhotoCaptureDefaults: PrivateBluetoothSdkModule.setPhotoCaptureDefaults.bind(PrivateBluetoothSdkModule),
|
|
78
|
+
setVideoRecordingDefaults: ({ width, height, fps }) => PrivateBluetoothSdkModule.setVideoRecordingDefaults(width, height, fps),
|
|
79
|
+
setMaxVideoRecordingDuration: PrivateBluetoothSdkModule.setMaxVideoRecordingDuration.bind(PrivateBluetoothSdkModule),
|
|
79
80
|
setCameraFov: PrivateBluetoothSdkModule.setCameraFov.bind(PrivateBluetoothSdkModule),
|
|
80
81
|
queryGalleryStatus: PrivateBluetoothSdkModule.queryGalleryStatus.bind(PrivateBluetoothSdkModule),
|
|
81
82
|
requestPhoto: PrivateBluetoothSdkModule.requestPhoto.bind(PrivateBluetoothSdkModule),
|
|
@@ -90,9 +91,8 @@ export const BluetoothSdk = Object.freeze({
|
|
|
90
91
|
setGlassesMediaVolume: PrivateBluetoothSdkModule.setGlassesMediaVolume.bind(PrivateBluetoothSdkModule),
|
|
91
92
|
rgbLedControl: PrivateBluetoothSdkModule.rgbLedControl.bind(PrivateBluetoothSdkModule),
|
|
92
93
|
requestVersionInfo: PrivateBluetoothSdkModule.requestVersionInfo.bind(PrivateBluetoothSdkModule),
|
|
93
|
-
checkForOtaUpdate: PrivateBluetoothSdkModule.
|
|
94
|
-
startOtaUpdate
|
|
95
|
-
retryOtaVersionCheck: PrivateBluetoothSdkModule.retryOtaVersionCheck.bind(PrivateBluetoothSdkModule),
|
|
94
|
+
checkForOtaUpdate: PrivateBluetoothSdkModule.checkForOtaUpdate.bind(PrivateBluetoothSdkModule),
|
|
95
|
+
startOtaUpdate,
|
|
96
96
|
setSttModelDetails: PrivateBluetoothSdkModule.setSttModelDetails.bind(PrivateBluetoothSdkModule),
|
|
97
97
|
getSttModelPath: PrivateBluetoothSdkModule.getSttModelPath.bind(PrivateBluetoothSdkModule),
|
|
98
98
|
checkSttModelAvailable: PrivateBluetoothSdkModule.checkSttModelAvailable.bind(PrivateBluetoothSdkModule),
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import PrivateBluetoothSdkModule from \"./_private/BluetoothSdkModule\"\nimport type {BluetoothSdkEventListener, BluetoothSdkEventName, BluetoothSdkPublicModule} from \"./BluetoothSdk.types\"\n\nconst PUBLIC_EVENT_NAMES = new Set<BluetoothSdkEventName>([\n \"log\",\n \"device_discovered\",\n \"default_device_changed\",\n \"glasses_not_ready\",\n \"button_press\",\n \"touch_event\",\n \"accel_event\",\n \"head_up\",\n \"voice_activity_detection_status\",\n \"speaking_status\",\n \"battery_status\",\n \"local_transcription\",\n \"wifi_status_change\",\n \"wifi_scan_result\",\n \"hotspot_status_change\",\n \"hotspot_error\",\n \"photo_response\",\n \"photo_status\",\n \"video_recording_status\",\n \"media_success\",\n \"media_error\",\n \"gallery_status\",\n \"compatible_glasses_search_stop\",\n \"swipe_volume_status\",\n \"switch_status\",\n \"rgb_led_control_response\",\n \"settings_ack\",\n \"pair_failure\",\n \"audio_pairing_needed\",\n \"audio_connected\",\n \"audio_disconnected\",\n \"mic_pcm\",\n \"mic_lc3\",\n \"stream_status\",\n \"ota_update_available\",\n \"ota_start_ack\",\n \"ota_status\",\n \"version_info\",\n \"extraction_progress\",\n])\n\nconst addListener: BluetoothSdkPublicModule[\"addListener\"] = (eventName, listener) => {\n if (!PUBLIC_EVENT_NAMES.has(eventName)) {\n throw new Error(`Unsupported BluetoothSdk event \"${eventName}\". Use @mentra/bluetooth-sdk/react for status state.`)\n }\n return PrivateBluetoothSdkModule.addListener(eventName, listener as BluetoothSdkEventListener<BluetoothSdkEventName>)\n}\n\nexport const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({\n addListener,\n getDefaultDevice: PrivateBluetoothSdkModule.getDefaultDevice.bind(PrivateBluetoothSdkModule),\n setDefaultDevice: PrivateBluetoothSdkModule.setDefaultDevice.bind(PrivateBluetoothSdkModule),\n clearDefaultDevice: PrivateBluetoothSdkModule.clearDefaultDevice.bind(PrivateBluetoothSdkModule),\n startScan: PrivateBluetoothSdkModule.startScan.bind(PrivateBluetoothSdkModule),\n stopScan: PrivateBluetoothSdkModule.stopScan.bind(PrivateBluetoothSdkModule),\n scan: PrivateBluetoothSdkModule.scan.bind(PrivateBluetoothSdkModule) as BluetoothSdkPublicModule[\"scan\"],\n connect: PrivateBluetoothSdkModule.connect.bind(PrivateBluetoothSdkModule),\n connectDefault: PrivateBluetoothSdkModule.connectDefault.bind(PrivateBluetoothSdkModule),\n cancelConnectionAttempt: PrivateBluetoothSdkModule.cancelConnectionAttempt.bind(PrivateBluetoothSdkModule),\n disconnect: PrivateBluetoothSdkModule.disconnect.bind(PrivateBluetoothSdkModule),\n forget: PrivateBluetoothSdkModule.forget.bind(PrivateBluetoothSdkModule),\n displayText: PrivateBluetoothSdkModule.displayText.bind(PrivateBluetoothSdkModule),\n clearDisplay: PrivateBluetoothSdkModule.clearDisplay.bind(PrivateBluetoothSdkModule),\n showDashboard: PrivateBluetoothSdkModule.showDashboard.bind(PrivateBluetoothSdkModule),\n setDashboardPosition: PrivateBluetoothSdkModule.setDashboardPosition.bind(PrivateBluetoothSdkModule),\n setHeadUpAngle: PrivateBluetoothSdkModule.setHeadUpAngle.bind(PrivateBluetoothSdkModule),\n setImuEnabled: PrivateBluetoothSdkModule.setImuEnabled.bind(PrivateBluetoothSdkModule),\n setScreenDisabled: PrivateBluetoothSdkModule.setScreenDisabled.bind(PrivateBluetoothSdkModule),\n requestWifiScan: PrivateBluetoothSdkModule.requestWifiScan.bind(PrivateBluetoothSdkModule),\n sendWifiCredentials: PrivateBluetoothSdkModule.sendWifiCredentials.bind(PrivateBluetoothSdkModule),\n forgetWifiNetwork: PrivateBluetoothSdkModule.forgetWifiNetwork.bind(PrivateBluetoothSdkModule),\n setHotspotState: PrivateBluetoothSdkModule.setHotspotState.bind(PrivateBluetoothSdkModule),\n setGalleryModeEnabled: PrivateBluetoothSdkModule.setGalleryModeEnabled.bind(PrivateBluetoothSdkModule),\n setVoiceActivityDetectionEnabled:\n PrivateBluetoothSdkModule.setVoiceActivityDetectionEnabled.bind(PrivateBluetoothSdkModule),\n setButtonPhotoSettings: PrivateBluetoothSdkModule.setButtonPhotoSettings.bind(PrivateBluetoothSdkModule),\n setButtonVideoRecordingSettings:\n PrivateBluetoothSdkModule.setButtonVideoRecordingSettings.bind(PrivateBluetoothSdkModule),\n setButtonCameraLed: PrivateBluetoothSdkModule.setButtonCameraLed.bind(PrivateBluetoothSdkModule),\n setButtonMaxRecordingTime: PrivateBluetoothSdkModule.setButtonMaxRecordingTime.bind(PrivateBluetoothSdkModule),\n setCameraFov: PrivateBluetoothSdkModule.setCameraFov.bind(PrivateBluetoothSdkModule),\n queryGalleryStatus: PrivateBluetoothSdkModule.queryGalleryStatus.bind(PrivateBluetoothSdkModule),\n requestPhoto: PrivateBluetoothSdkModule.requestPhoto.bind(PrivateBluetoothSdkModule),\n startVideoRecording: PrivateBluetoothSdkModule.startVideoRecording.bind(PrivateBluetoothSdkModule),\n stopVideoRecording: PrivateBluetoothSdkModule.stopVideoRecording.bind(PrivateBluetoothSdkModule),\n startStream: PrivateBluetoothSdkModule.startStream.bind(PrivateBluetoothSdkModule),\n stopStream: PrivateBluetoothSdkModule.stopStream.bind(PrivateBluetoothSdkModule),\n setMicState: PrivateBluetoothSdkModule.setMicState.bind(PrivateBluetoothSdkModule),\n setPreferredMic: PrivateBluetoothSdkModule.setPreferredMic.bind(PrivateBluetoothSdkModule),\n setOwnAppAudioPlaying: PrivateBluetoothSdkModule.setOwnAppAudioPlaying.bind(PrivateBluetoothSdkModule),\n getGlassesMediaVolume: PrivateBluetoothSdkModule.getGlassesMediaVolume.bind(PrivateBluetoothSdkModule),\n setGlassesMediaVolume: PrivateBluetoothSdkModule.setGlassesMediaVolume.bind(PrivateBluetoothSdkModule),\n rgbLedControl: PrivateBluetoothSdkModule.rgbLedControl.bind(PrivateBluetoothSdkModule),\n requestVersionInfo: PrivateBluetoothSdkModule.requestVersionInfo.bind(PrivateBluetoothSdkModule),\n checkForOtaUpdate: PrivateBluetoothSdkModule.sendOtaQueryStatus.bind(PrivateBluetoothSdkModule),\n startOtaUpdate: PrivateBluetoothSdkModule.sendOtaStart.bind(PrivateBluetoothSdkModule),\n retryOtaVersionCheck: PrivateBluetoothSdkModule.retryOtaVersionCheck.bind(PrivateBluetoothSdkModule),\n setSttModelDetails: PrivateBluetoothSdkModule.setSttModelDetails.bind(PrivateBluetoothSdkModule),\n getSttModelPath: PrivateBluetoothSdkModule.getSttModelPath.bind(PrivateBluetoothSdkModule),\n checkSttModelAvailable: PrivateBluetoothSdkModule.checkSttModelAvailable.bind(PrivateBluetoothSdkModule),\n validateSttModel: PrivateBluetoothSdkModule.validateSttModel.bind(PrivateBluetoothSdkModule),\n extractTarBz2: PrivateBluetoothSdkModule.extractTarBz2.bind(PrivateBluetoothSdkModule),\n restartTranscriber: PrivateBluetoothSdkModule.restartTranscriber.bind(PrivateBluetoothSdkModule),\n setTtsModelDetails: PrivateBluetoothSdkModule.setTtsModelDetails.bind(PrivateBluetoothSdkModule),\n getTtsModelPath: PrivateBluetoothSdkModule.getTtsModelPath.bind(PrivateBluetoothSdkModule),\n getTtsModelLanguage: PrivateBluetoothSdkModule.getTtsModelLanguage.bind(PrivateBluetoothSdkModule),\n checkTtsModelAvailable: PrivateBluetoothSdkModule.checkTtsModelAvailable.bind(PrivateBluetoothSdkModule),\n validateTtsModel: PrivateBluetoothSdkModule.validateTtsModel.bind(PrivateBluetoothSdkModule),\n generateTtsAudio: PrivateBluetoothSdkModule.generateTtsAudio.bind(PrivateBluetoothSdkModule),\n})\n\nexport default BluetoothSdk\n\nexport {\n CAMERA_FOV_DEFAULT,\n CAMERA_FOV_MAX,\n CAMERA_FOV_MIN,\n DeviceModels,\n isBusyGlassesConnectionStatus,\n isConnectedGlassesConnectionStatus,\n isConnectedWifiStatus,\n isEnabledHotspotStatus,\n isReadyGlassesConnectionStatus,\n} from \"./BluetoothSdk.types\"\n\nexport type {\n AccelEvent,\n AudioConnectedEvent,\n AudioDisconnectedEvent,\n AudioPairingNeededEvent,\n BatteryStatusEvent,\n BluetoothSdkEvent,\n BluetoothSdkEventListener,\n BluetoothSdkEventMap,\n BluetoothSdkEventName,\n BluetoothSdkPublicModule as BluetoothSdkModule,\n BluetoothSdkSubscription,\n ButtonPhotoSize,\n ButtonPressEvent,\n CameraFovPreset,\n CameraFovRequest,\n CameraFovResult,\n CameraRoiPosition,\n CompatibleGlassesSearchStopEvent,\n ConnectOptions,\n ConnectedGlassesConnectionStatus,\n ConnectedWifiStatus,\n Device,\n DeviceModel,\n EnabledHotspotStatus,\n GalleryStatusEvent,\n GlassesConnectionStatus,\n GlassesMediaVolumeGetResult,\n GlassesMediaVolumeSetResult,\n GlassesNotReadyEvent,\n HeadUpEvent,\n HotspotErrorEvent,\n HotspotStatus,\n HotspotStatusChangeEvent,\n LocalTranscriptionEvent,\n LogEvent,\n MicLc3Event,\n MicMode,\n MicPcmEvent,\n MicPreference,\n OtaStartAckEvent,\n OtaStatus,\n OtaStatusEvent,\n OtaQueryResult,\n OtaUpdateAvailableEvent,\n OtaUpdateInfo,\n PairFailureEvent,\n PhotoCaptureMetadata,\n PhotoResolvedConfig,\n PhotoCompression,\n PhotoFpsRange,\n PhotoMeteredPreview,\n PhotoResponseEvent,\n PhotoRequestedCaptureConfig,\n PhotoSize,\n PhotoStatusEvent,\n PhotoStatusState,\n PhotoSuccessResponseEvent,\n RgbLedAction,\n RgbLedColor,\n RgbLedControlResponseEvent,\n RgbLedControlSuccessResponseEvent,\n ScanModelOptions,\n ScanOptions,\n ScanResultsCallback,\n SpeakingStatusEvent,\n SettingsAckEvent,\n SettingsAckSetting,\n SettingsAckSuccessEvent,\n SettingsAckSuccessStatus,\n SettingsAckStatus,\n StreamAudioConfig,\n StreamResolvedConfig,\n StreamStartRequest,\n StreamStatusEvent,\n StreamStatusLifecycleState,\n StreamStatusReconnectState,\n StreamStatusState,\n StreamVideoConfig,\n SwipeVolumeStatusEvent,\n SwitchStatusEvent,\n TouchEvent,\n VideoRecordingStartedStatusEvent,\n VideoRecordingStatusEvent,\n VideoRecordingStatusState,\n VideoRecordingStoppedStatusEvent,\n VideoRecordingSuccessStatusEvent,\n VersionInfoEvent,\n VersionInfoResult,\n WifiScanResultEvent,\n VoiceActivityDetectionStatusEvent,\n WifiSearchResult,\n WifiStatus,\n WifiStatusChangeEvent,\n} from \"./BluetoothSdk.types\"\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import PrivateBluetoothSdkModule from \"./_private/BluetoothSdkModule\"\nimport type {\n BluetoothSdkEventListener,\n BluetoothSdkEventName,\n BluetoothSdkPublicModule,\n VideoRecordingDefaults,\n} from \"./BluetoothSdk.types\"\n\nconst PUBLIC_EVENT_NAMES = new Set<BluetoothSdkEventName>([\n \"log\",\n \"device_discovered\",\n \"default_device_changed\",\n \"glasses_not_ready\",\n \"button_press\",\n \"touch_event\",\n \"accel_event\",\n \"head_up\",\n \"voice_activity_detection_status\",\n \"speaking_status\",\n \"battery_status\",\n \"local_transcription\",\n \"wifi_status_change\",\n \"wifi_scan_result\",\n \"hotspot_status_change\",\n \"hotspot_error\",\n \"photo_response\",\n \"photo_status\",\n \"video_recording_status\",\n \"media_success\",\n \"media_error\",\n \"gallery_status\",\n \"compatible_glasses_search_stop\",\n \"swipe_volume_status\",\n \"switch_status\",\n \"rgb_led_control_response\",\n \"settings_ack\",\n \"pair_failure\",\n \"audio_pairing_needed\",\n \"audio_connected\",\n \"audio_disconnected\",\n \"mic_pcm\",\n \"mic_lc3\",\n \"stream_status\",\n \"ota_start_ack\",\n \"ota_status\",\n \"version_info\",\n \"extraction_progress\",\n])\n\nconst addListener: BluetoothSdkPublicModule[\"addListener\"] = (eventName, listener) => {\n if (!PUBLIC_EVENT_NAMES.has(eventName)) {\n throw new Error(`Unsupported BluetoothSdk event \"${eventName}\". Use @mentra/bluetooth-sdk/react for status state.`)\n }\n return PrivateBluetoothSdkModule.addListener(eventName, listener as BluetoothSdkEventListener<BluetoothSdkEventName>)\n}\n\nconst startOtaUpdate: BluetoothSdkPublicModule[\"startOtaUpdate\"] = () => {\n return PrivateBluetoothSdkModule.startOtaUpdate()\n}\n\nexport const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({\n addListener,\n getDefaultDevice: PrivateBluetoothSdkModule.getDefaultDevice.bind(PrivateBluetoothSdkModule),\n setDefaultDevice: PrivateBluetoothSdkModule.setDefaultDevice.bind(PrivateBluetoothSdkModule),\n clearDefaultDevice: PrivateBluetoothSdkModule.clearDefaultDevice.bind(PrivateBluetoothSdkModule),\n startScan: PrivateBluetoothSdkModule.startScan.bind(PrivateBluetoothSdkModule),\n stopScan: PrivateBluetoothSdkModule.stopScan.bind(PrivateBluetoothSdkModule),\n scan: PrivateBluetoothSdkModule.scan.bind(PrivateBluetoothSdkModule) as BluetoothSdkPublicModule[\"scan\"],\n connect: PrivateBluetoothSdkModule.connect.bind(PrivateBluetoothSdkModule),\n connectDefault: PrivateBluetoothSdkModule.connectDefault.bind(PrivateBluetoothSdkModule),\n cancelConnectionAttempt: PrivateBluetoothSdkModule.cancelConnectionAttempt.bind(PrivateBluetoothSdkModule),\n disconnect: PrivateBluetoothSdkModule.disconnect.bind(PrivateBluetoothSdkModule),\n forget: PrivateBluetoothSdkModule.forget.bind(PrivateBluetoothSdkModule),\n displayText: PrivateBluetoothSdkModule.displayText.bind(PrivateBluetoothSdkModule),\n clearDisplay: PrivateBluetoothSdkModule.clearDisplay.bind(PrivateBluetoothSdkModule),\n showDashboard: PrivateBluetoothSdkModule.showDashboard.bind(PrivateBluetoothSdkModule),\n setDashboardPosition: PrivateBluetoothSdkModule.setDashboardPosition.bind(PrivateBluetoothSdkModule),\n setHeadUpAngle: PrivateBluetoothSdkModule.setHeadUpAngle.bind(PrivateBluetoothSdkModule),\n setImuEnabled: PrivateBluetoothSdkModule.setImuEnabled.bind(PrivateBluetoothSdkModule),\n setScreenDisabled: PrivateBluetoothSdkModule.setScreenDisabled.bind(PrivateBluetoothSdkModule),\n requestWifiScan: PrivateBluetoothSdkModule.requestWifiScan.bind(PrivateBluetoothSdkModule),\n sendWifiCredentials: PrivateBluetoothSdkModule.sendWifiCredentials.bind(PrivateBluetoothSdkModule),\n forgetWifiNetwork: PrivateBluetoothSdkModule.forgetWifiNetwork.bind(PrivateBluetoothSdkModule),\n setHotspotState: PrivateBluetoothSdkModule.setHotspotState.bind(PrivateBluetoothSdkModule),\n setGalleryModeEnabled: PrivateBluetoothSdkModule.setGalleryModeEnabled.bind(PrivateBluetoothSdkModule),\n setVoiceActivityDetectionEnabled:\n PrivateBluetoothSdkModule.setVoiceActivityDetectionEnabled.bind(PrivateBluetoothSdkModule),\n setPhotoCaptureDefaults: PrivateBluetoothSdkModule.setPhotoCaptureDefaults.bind(PrivateBluetoothSdkModule),\n setVideoRecordingDefaults: ({width, height, fps}: VideoRecordingDefaults) =>\n PrivateBluetoothSdkModule.setVideoRecordingDefaults(width, height, fps),\n setMaxVideoRecordingDuration: PrivateBluetoothSdkModule.setMaxVideoRecordingDuration.bind(PrivateBluetoothSdkModule),\n setCameraFov: PrivateBluetoothSdkModule.setCameraFov.bind(PrivateBluetoothSdkModule),\n queryGalleryStatus: PrivateBluetoothSdkModule.queryGalleryStatus.bind(PrivateBluetoothSdkModule),\n requestPhoto: PrivateBluetoothSdkModule.requestPhoto.bind(PrivateBluetoothSdkModule),\n startVideoRecording: PrivateBluetoothSdkModule.startVideoRecording.bind(PrivateBluetoothSdkModule),\n stopVideoRecording: PrivateBluetoothSdkModule.stopVideoRecording.bind(PrivateBluetoothSdkModule),\n startStream: PrivateBluetoothSdkModule.startStream.bind(PrivateBluetoothSdkModule),\n stopStream: PrivateBluetoothSdkModule.stopStream.bind(PrivateBluetoothSdkModule),\n setMicState: PrivateBluetoothSdkModule.setMicState.bind(PrivateBluetoothSdkModule),\n setPreferredMic: PrivateBluetoothSdkModule.setPreferredMic.bind(PrivateBluetoothSdkModule),\n setOwnAppAudioPlaying: PrivateBluetoothSdkModule.setOwnAppAudioPlaying.bind(PrivateBluetoothSdkModule),\n getGlassesMediaVolume: PrivateBluetoothSdkModule.getGlassesMediaVolume.bind(PrivateBluetoothSdkModule),\n setGlassesMediaVolume: PrivateBluetoothSdkModule.setGlassesMediaVolume.bind(PrivateBluetoothSdkModule),\n rgbLedControl: PrivateBluetoothSdkModule.rgbLedControl.bind(PrivateBluetoothSdkModule),\n requestVersionInfo: PrivateBluetoothSdkModule.requestVersionInfo.bind(PrivateBluetoothSdkModule),\n checkForOtaUpdate: PrivateBluetoothSdkModule.checkForOtaUpdate.bind(PrivateBluetoothSdkModule),\n startOtaUpdate,\n setSttModelDetails: PrivateBluetoothSdkModule.setSttModelDetails.bind(PrivateBluetoothSdkModule),\n getSttModelPath: PrivateBluetoothSdkModule.getSttModelPath.bind(PrivateBluetoothSdkModule),\n checkSttModelAvailable: PrivateBluetoothSdkModule.checkSttModelAvailable.bind(PrivateBluetoothSdkModule),\n validateSttModel: PrivateBluetoothSdkModule.validateSttModel.bind(PrivateBluetoothSdkModule),\n extractTarBz2: PrivateBluetoothSdkModule.extractTarBz2.bind(PrivateBluetoothSdkModule),\n restartTranscriber: PrivateBluetoothSdkModule.restartTranscriber.bind(PrivateBluetoothSdkModule),\n setTtsModelDetails: PrivateBluetoothSdkModule.setTtsModelDetails.bind(PrivateBluetoothSdkModule),\n getTtsModelPath: PrivateBluetoothSdkModule.getTtsModelPath.bind(PrivateBluetoothSdkModule),\n getTtsModelLanguage: PrivateBluetoothSdkModule.getTtsModelLanguage.bind(PrivateBluetoothSdkModule),\n checkTtsModelAvailable: PrivateBluetoothSdkModule.checkTtsModelAvailable.bind(PrivateBluetoothSdkModule),\n validateTtsModel: PrivateBluetoothSdkModule.validateTtsModel.bind(PrivateBluetoothSdkModule),\n generateTtsAudio: PrivateBluetoothSdkModule.generateTtsAudio.bind(PrivateBluetoothSdkModule),\n})\n\nexport default BluetoothSdk\n\nexport {\n CAMERA_FOV_DEFAULT,\n CAMERA_FOV_MAX,\n CAMERA_FOV_MIN,\n DeviceModels,\n isBusyGlassesConnectionStatus,\n isConnectedGlassesConnectionStatus,\n isConnectedWifiStatus,\n isEnabledHotspotStatus,\n isReadyGlassesConnectionStatus,\n} from \"./BluetoothSdk.types\"\n\nexport type {\n AccelEvent,\n AudioConnectedEvent,\n AudioDisconnectedEvent,\n AudioPairingNeededEvent,\n BatteryStatusEvent,\n BluetoothSdkEvent,\n BluetoothSdkEventListener,\n BluetoothSdkEventMap,\n BluetoothSdkEventName,\n BluetoothSdkPublicModule as BluetoothSdkModule,\n BluetoothSdkSubscription,\n ButtonPhotoSize,\n PhotoCaptureDefaults,\n ButtonPressEvent,\n CameraFovPreset,\n CameraFovRequest,\n CameraFovResult,\n CameraRoiPosition,\n CompatibleGlassesSearchStopEvent,\n ConnectOptions,\n ConnectedGlassesConnectionStatus,\n ConnectedWifiStatus,\n Device,\n DeviceModel,\n EnabledHotspotStatus,\n GalleryStatusEvent,\n GlassesConnectionStatus,\n GlassesMediaVolumeGetResult,\n GlassesMediaVolumeSetResult,\n GlassesNotReadyEvent,\n HeadUpEvent,\n HotspotErrorEvent,\n HotspotStatus,\n HotspotStatusChangeEvent,\n LocalTranscriptionEvent,\n LogEvent,\n MicLc3Event,\n MicMode,\n MicPcmEvent,\n MicPreference,\n OtaStartAckEvent,\n OtaStatus,\n OtaStatusEvent,\n OtaQueryResult,\n OtaUpdateAvailableEvent,\n OtaUpdateInfo,\n PairFailureEvent,\n PhotoCaptureMetadata,\n PhotoResolvedConfig,\n PhotoCompression,\n PhotoFpsRange,\n PhotoMeteredPreview,\n PhotoResponseEvent,\n PhotoRequestedCaptureConfig,\n PhotoRequestParams,\n PhotoSize,\n PhotoStatusEvent,\n PhotoStatusState,\n PhotoSuccessResponseEvent,\n RgbLedAction,\n RgbLedColor,\n RgbLedControlResponseEvent,\n RgbLedControlSuccessResponseEvent,\n ScanModelOptions,\n ScanOptions,\n ScanResultsCallback,\n SpeakingStatusEvent,\n SettingsAckEvent,\n SettingsAckSetting,\n SettingsAckSuccessEvent,\n SettingsAckSuccessStatus,\n SettingsAckStatus,\n StreamAudioConfig,\n StreamResolvedConfig,\n StreamStartRequest,\n StreamStatusEvent,\n StreamStatusLifecycleState,\n StreamStatusReconnectState,\n StreamStatusState,\n StreamVideoConfig,\n SwipeVolumeStatusEvent,\n SwitchStatusEvent,\n TouchEvent,\n VideoRecordingDefaults,\n VideoRecordingStartedStatusEvent,\n VideoRecordingStatusEvent,\n VideoRecordingStatusState,\n VideoRecordingStoppedStatusEvent,\n VideoRecordingSuccessStatusEvent,\n VersionInfoEvent,\n VersionInfoResult,\n WifiScanResultEvent,\n VoiceActivityDetectionStatusEvent,\n WifiSearchResult,\n WifiStatus,\n WifiStatusChangeEvent,\n} from \"./BluetoothSdk.types\"\n"]}
|
|
@@ -326,24 +326,19 @@ public class BluetoothSdkModule: Module, MentraBluetoothSDKDelegate {
|
|
|
326
326
|
try await sdk.setVoiceActivityDetectionEnabled(enabled)
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
-
AsyncFunction("
|
|
329
|
+
AsyncFunction("setPhotoCaptureDefaults") { (params: [String: Any]) in
|
|
330
330
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
331
|
-
return try await sdk.
|
|
331
|
+
return try await sdk.setPhotoCaptureDefaults(PhotoCaptureDefaults.from(params: params)).values
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
-
AsyncFunction("
|
|
334
|
+
AsyncFunction("setVideoRecordingDefaults") { (width: Int, height: Int, fps: Int) in
|
|
335
335
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
336
|
-
return try await sdk.
|
|
336
|
+
return try await sdk.setVideoRecordingDefaults(VideoRecordingDefaults(width: width, height: height, fps: fps)).values
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
-
AsyncFunction("
|
|
339
|
+
AsyncFunction("setMaxVideoRecordingDuration") { (minutes: Int) in
|
|
340
340
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
341
|
-
return try await sdk.
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
AsyncFunction("setButtonMaxRecordingTime") { (minutes: Int) in
|
|
345
|
-
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
346
|
-
return try await sdk.setButtonMaxRecordingTime(minutes: minutes).values
|
|
341
|
+
return try await sdk.setMaxVideoRecordingDuration(minutes: minutes).values
|
|
347
342
|
}
|
|
348
343
|
|
|
349
344
|
AsyncFunction("setCameraFov") { (fov: [String: Any]) in
|
|
@@ -361,66 +356,42 @@ public class BluetoothSdkModule: Module, MentraBluetoothSDKDelegate {
|
|
|
361
356
|
}
|
|
362
357
|
|
|
363
358
|
AsyncFunction("requestPhoto") { (params: [String: Any]) in
|
|
364
|
-
let
|
|
365
|
-
let appId = params["appId"] as? String ?? ""
|
|
359
|
+
let req = PhotoRequest.from(params: params)
|
|
366
360
|
Bridge.log(
|
|
367
|
-
"NATIVE: PHOTO PIPELINE [3/6] BluetoothSdk.requestPhoto requestId=\(requestId) appId=\(appId)"
|
|
361
|
+
"NATIVE: PHOTO PIPELINE [3/6] BluetoothSdk.requestPhoto requestId=\(req.requestId) appId=\(req.appId) size=\(req.size.rawValue) compress=\(req.compress?.rawValue ?? "none") aeDivisor=\(req.aeExposureDivisor.map { String($0) } ?? "nil")"
|
|
368
362
|
)
|
|
369
|
-
let size = params["size"] as? String ?? "medium"
|
|
370
|
-
let webhookUrl = params["webhookUrl"] as? String ?? ""
|
|
371
|
-
let authToken = params["authToken"] as? String ?? ""
|
|
372
|
-
let compress = params["compress"] as? String ?? "none"
|
|
373
|
-
let flash = params["flash"] as? Bool ?? true
|
|
374
|
-
let save = params["save"] as? Bool ?? params["saveToGallery"] as? Bool ?? false
|
|
375
|
-
let sound = params["sound"] as? Bool ?? true
|
|
376
|
-
let exposureTimeNs: Double?
|
|
377
|
-
switch params["exposureTimeNs"] {
|
|
378
|
-
case let value as Double:
|
|
379
|
-
exposureTimeNs = value
|
|
380
|
-
case let value as Int:
|
|
381
|
-
exposureTimeNs = Double(value)
|
|
382
|
-
case let value as NSNumber:
|
|
383
|
-
exposureTimeNs = value.doubleValue
|
|
384
|
-
default:
|
|
385
|
-
exposureTimeNs = nil
|
|
386
|
-
}
|
|
387
|
-
let iso: Int?
|
|
388
|
-
switch params["iso"] {
|
|
389
|
-
case let value as Int:
|
|
390
|
-
iso = value > 0 ? value : nil
|
|
391
|
-
case let value as Double:
|
|
392
|
-
// Guard against Int(Double) trapping on out-of-range values.
|
|
393
|
-
iso = (value.isFinite && value > 0 && value < Double(Int.max)) ? Int(value) : nil
|
|
394
|
-
case let value as NSNumber:
|
|
395
|
-
let intValue = value.intValue
|
|
396
|
-
iso = intValue > 0 ? intValue : nil
|
|
397
|
-
default:
|
|
398
|
-
iso = nil
|
|
399
|
-
}
|
|
400
363
|
|
|
401
364
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
402
|
-
return try await sdk.requestPhoto(
|
|
403
|
-
PhotoRequest(
|
|
404
|
-
requestId: requestId,
|
|
405
|
-
appId: appId,
|
|
406
|
-
size: PhotoSize(rawValue: size) ?? .medium,
|
|
407
|
-
webhookUrl: webhookUrl,
|
|
408
|
-
authToken: authToken,
|
|
409
|
-
compress: PhotoCompression(rawValue: compress),
|
|
410
|
-
flash: flash,
|
|
411
|
-
save: save,
|
|
412
|
-
sound: sound,
|
|
413
|
-
exposureTimeNs: exposureTimeNs,
|
|
414
|
-
iso: iso
|
|
415
|
-
)
|
|
416
|
-
).values
|
|
365
|
+
return try await sdk.requestPhoto(req).values
|
|
417
366
|
}
|
|
418
367
|
|
|
419
368
|
// MARK: - OTA Commands
|
|
420
369
|
|
|
421
|
-
|
|
370
|
+
Function("setOtaVersionUrl") { (otaVersionUrl: String) in
|
|
371
|
+
try self.readOnMainActor {
|
|
372
|
+
let sdk = self.bluetoothSdk()
|
|
373
|
+
try sdk.setOtaVersionUrl(otaVersionUrl)
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
Function("getOtaVersionUrl") {
|
|
378
|
+
try self.readOnMainActor {
|
|
379
|
+
let sdk = self.bluetoothSdk()
|
|
380
|
+
return try sdk.getOtaVersionUrl()
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
AsyncFunction("checkForOtaUpdate") {
|
|
385
|
+
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
386
|
+
return try await sdk.checkForOtaUpdate()
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
AsyncFunction("startOtaUpdate") { (otaVersionUrl: String?) in
|
|
422
390
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
423
|
-
|
|
391
|
+
if let otaVersionUrl, !otaVersionUrl.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
|
392
|
+
return try await sdk.startOtaUpdate(otaVersionUrl: otaVersionUrl).values
|
|
393
|
+
}
|
|
394
|
+
return try await sdk.startOtaUpdate().values
|
|
424
395
|
}
|
|
425
396
|
|
|
426
397
|
AsyncFunction("sendOtaQueryStatus") {
|
|
@@ -491,6 +462,11 @@ public class BluetoothSdkModule: Module, MentraBluetoothSDKDelegate {
|
|
|
491
462
|
return try await sdk.startStream(StreamRequest(values: params)).values
|
|
492
463
|
}
|
|
493
464
|
|
|
465
|
+
AsyncFunction("startExternallyManagedStream") { (params: [String: Any]) in
|
|
466
|
+
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
467
|
+
return try await sdk.startExternallyManagedStream(StreamRequest(values: params)).values
|
|
468
|
+
}
|
|
469
|
+
|
|
494
470
|
AsyncFunction("stopStream") {
|
|
495
471
|
let sdk = await MainActor.run { self.bluetoothSdk() }
|
|
496
472
|
return try await sdk.stopStream().values
|
|
@@ -642,16 +618,16 @@ public class BluetoothSdkModule: Module, MentraBluetoothSDKDelegate {
|
|
|
642
618
|
return sdk
|
|
643
619
|
}
|
|
644
620
|
|
|
645
|
-
private func readOnMainActor<T>(_ body: @MainActor () -> T) -> T {
|
|
621
|
+
private func readOnMainActor<T>(_ body: @MainActor () throws -> T) rethrows -> T {
|
|
646
622
|
if Thread.isMainThread {
|
|
647
|
-
return MainActor.assumeIsolated {
|
|
648
|
-
body()
|
|
623
|
+
return try MainActor.assumeIsolated {
|
|
624
|
+
try body()
|
|
649
625
|
}
|
|
650
626
|
}
|
|
651
627
|
|
|
652
|
-
return DispatchQueue.main.sync {
|
|
653
|
-
MainActor.assumeIsolated {
|
|
654
|
-
body()
|
|
628
|
+
return try DispatchQueue.main.sync {
|
|
629
|
+
try MainActor.assumeIsolated {
|
|
630
|
+
try body()
|
|
655
631
|
}
|
|
656
632
|
}
|
|
657
633
|
}
|
|
@@ -3,10 +3,16 @@ import Foundation
|
|
|
3
3
|
/// Defaults for the public Bluetooth SDK surface.
|
|
4
4
|
enum BluetoothSdkDefaults {
|
|
5
5
|
static var sdkVersion: String? {
|
|
6
|
-
|
|
6
|
+
#if SWIFT_PACKAGE
|
|
7
|
+
normalizedSdkVersion(swiftPackageSdkVersion)
|
|
8
|
+
#else
|
|
9
|
+
packageVersion(from: sdkBundle)
|
|
10
|
+
#endif
|
|
7
11
|
}
|
|
8
12
|
|
|
9
13
|
static let voiceActivityDetectionEnabled = false
|
|
14
|
+
private static let swiftPackageSdkVersion = "__MENTRA_BLUETOOTH_SDK_VERSION__"
|
|
15
|
+
private static let swiftPackageSdkVersionPlaceholder = "__MENTRA" + "_BLUETOOTH_SDK_VERSION__"
|
|
10
16
|
|
|
11
17
|
private static var sdkBundle: Bundle {
|
|
12
18
|
#if SWIFT_PACKAGE
|
|
@@ -21,13 +27,27 @@ enum BluetoothSdkDefaults {
|
|
|
21
27
|
let build = bundle.object(forInfoDictionaryKey: "CFBundleVersion") as? String
|
|
22
28
|
|
|
23
29
|
for candidate in [version, build] {
|
|
24
|
-
if let
|
|
25
|
-
return
|
|
30
|
+
if let sdkVersion = normalizedSdkVersion(candidate) {
|
|
31
|
+
return sdkVersion
|
|
26
32
|
}
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
return nil
|
|
30
36
|
}
|
|
37
|
+
|
|
38
|
+
private static func normalizedSdkVersion(_ value: String?) -> String? {
|
|
39
|
+
guard let value else {
|
|
40
|
+
return nil
|
|
41
|
+
}
|
|
42
|
+
let trimmed = value.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
43
|
+
guard !trimmed.isEmpty,
|
|
44
|
+
trimmed != "1.0",
|
|
45
|
+
trimmed != swiftPackageSdkVersionPlaceholder
|
|
46
|
+
else {
|
|
47
|
+
return nil
|
|
48
|
+
}
|
|
49
|
+
return trimmed
|
|
50
|
+
}
|
|
31
51
|
}
|
|
32
52
|
|
|
33
53
|
private final class BluetoothSdkBundleToken {}
|
|
@@ -1115,7 +1115,6 @@ struct ViewState {
|
|
|
1115
1115
|
|
|
1116
1116
|
func startStream(_ message: [String: Any]) {
|
|
1117
1117
|
var message = message
|
|
1118
|
-
message["flash"] = true
|
|
1119
1118
|
Bridge.log("MAN: startStream: \(message)")
|
|
1120
1119
|
sgc?.startStream(message)
|
|
1121
1120
|
}
|
|
@@ -1169,9 +1168,9 @@ struct ViewState {
|
|
|
1169
1168
|
/// Send OTA start command to glasses.
|
|
1170
1169
|
/// Called when user approves an update (onboarding or background mode).
|
|
1171
1170
|
/// Triggers glasses to begin download and installation.
|
|
1172
|
-
func sendOtaStart() {
|
|
1171
|
+
func sendOtaStart(otaVersionUrl: String? = nil) {
|
|
1173
1172
|
Bridge.log("MAN: 📱 Sending OTA start command to glasses")
|
|
1174
|
-
sgc?.sendOtaStart()
|
|
1173
|
+
sgc?.sendOtaStart(otaVersionUrl: otaVersionUrl)
|
|
1175
1174
|
}
|
|
1176
1175
|
|
|
1177
1176
|
func sendOtaQueryStatus() {
|
|
@@ -1191,15 +1190,18 @@ struct ViewState {
|
|
|
1191
1190
|
}
|
|
1192
1191
|
|
|
1193
1192
|
func sendButtonPhotoSettings(requestId: String, size: String) throws {
|
|
1194
|
-
try
|
|
1193
|
+
try sendButtonPhotoSettings(
|
|
1194
|
+
requestId: requestId,
|
|
1195
|
+
settings: PhotoCaptureDefaults(size: PhotoSize(normalizedRawValue: size))
|
|
1196
|
+
)
|
|
1195
1197
|
}
|
|
1196
1198
|
|
|
1197
|
-
func
|
|
1198
|
-
try liveSgc().
|
|
1199
|
+
func sendButtonPhotoSettings(requestId: String, settings: PhotoCaptureDefaults) throws {
|
|
1200
|
+
try liveSgc().sendButtonPhotoSettings(requestId: requestId, settings: settings)
|
|
1199
1201
|
}
|
|
1200
1202
|
|
|
1201
|
-
func
|
|
1202
|
-
try liveSgc().
|
|
1203
|
+
func sendButtonVideoRecordingSettings(requestId: String, width: Int, height: Int, fps: Int) throws {
|
|
1204
|
+
try liveSgc().sendButtonVideoRecordingSettings(requestId: requestId, width: width, height: height, fps: fps)
|
|
1203
1205
|
}
|
|
1204
1206
|
|
|
1205
1207
|
func sendButtonMaxRecordingTime(requestId: String, minutes: Int) throws {
|
|
@@ -1241,10 +1243,10 @@ struct ViewState {
|
|
|
1241
1243
|
_ fps: Int = 0, _ maxRecordingTimeMinutes: Int = 0
|
|
1242
1244
|
) {
|
|
1243
1245
|
Bridge.log(
|
|
1244
|
-
"MAN: onStartVideoRecording: requestId=\(requestId), save=\(save),
|
|
1246
|
+
"MAN: onStartVideoRecording: requestId=\(requestId), save=\(save), sound=\(sound), resolution=\(width)x\(height)@\(fps)fps, maxRecordingTimeMinutes=\(maxRecordingTimeMinutes)"
|
|
1245
1247
|
)
|
|
1246
1248
|
sgc?.startVideoRecording(
|
|
1247
|
-
requestId: requestId, save: save,
|
|
1249
|
+
requestId: requestId, save: save, sound: sound, width: width, height: height,
|
|
1248
1250
|
fps: fps, maxRecordingTimeMinutes: maxRecordingTimeMinutes
|
|
1249
1251
|
)
|
|
1250
1252
|
}
|
|
@@ -1317,36 +1319,39 @@ struct ViewState {
|
|
|
1317
1319
|
}
|
|
1318
1320
|
}
|
|
1319
1321
|
|
|
1320
|
-
func requestPhoto(
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1322
|
+
func requestPhoto(_ request: PhotoRequest) {
|
|
1323
|
+
let manualExposureNs = request.exposureTimeNs.flatMap { $0.isFinite && $0 > 0 ? $0 : nil }
|
|
1324
|
+
let manualIso = manualExposureNs != nil ? request.iso.flatMap { $0 > 0 ? $0 : nil } : nil
|
|
1325
|
+
let routed = PhotoRequest(
|
|
1326
|
+
requestId: request.requestId,
|
|
1327
|
+
appId: request.appId,
|
|
1328
|
+
size: request.size,
|
|
1329
|
+
webhookUrl: request.webhookUrl,
|
|
1330
|
+
authToken: request.authToken,
|
|
1331
|
+
compress: request.compress,
|
|
1332
|
+
save: request.save,
|
|
1333
|
+
sound: request.sound,
|
|
1334
|
+
exposureTimeNs: manualExposureNs,
|
|
1335
|
+
iso: manualIso,
|
|
1336
|
+
aeExposureDivisor: request.aeExposureDivisor,
|
|
1337
|
+
isoCap: request.isoCap,
|
|
1338
|
+
noiseReduction: request.noiseReduction,
|
|
1339
|
+
edgeEnhancement: request.edgeEnhancement,
|
|
1340
|
+
mfnr: request.mfnr,
|
|
1341
|
+
zsl: request.zsl,
|
|
1342
|
+
ispDigitalGain: request.ispDigitalGain,
|
|
1343
|
+
ispAnalogGain: request.ispAnalogGain
|
|
1344
|
+
)
|
|
1337
1345
|
Bridge.log(
|
|
1338
|
-
"MAN: PHOTO PIPELINE [4/6] DeviceManager.requestPhoto requestId=\(requestId) appId=\(appId) webhookUrl=\(webhookUrl ?? "nil") size=\(size) compress=\(compress ?? "none")
|
|
1346
|
+
"MAN: PHOTO PIPELINE [4/6] DeviceManager.requestPhoto requestId=\(routed.requestId) appId=\(routed.appId) webhookUrl=\(routed.webhookUrl ?? "nil") size=\(routed.size.rawValue) compress=\(routed.compress?.rawValue ?? "none") save=\(routed.save) sound=\(routed.sound) exposureTimeNs=\(manualExposureNs.map { String($0) } ?? "nil") iso=\(manualIso.map { String($0) } ?? "auto") aeDivisor=\(routed.aeExposureDivisor.map { String($0) } ?? "nil") isoCap=\(routed.isoCap.map { String($0) } ?? "nil") sgc=\(sgc != nil ? String(describing: type(of: sgc!)) : "null")"
|
|
1339
1347
|
)
|
|
1340
1348
|
guard let sgc else {
|
|
1341
1349
|
Bridge.log(
|
|
1342
|
-
"MAN: PHOTO PIPELINE — sgc is null (glasses not connected); dropping requestId=\(requestId)"
|
|
1350
|
+
"MAN: PHOTO PIPELINE — sgc is null (glasses not connected); dropping requestId=\(routed.requestId)"
|
|
1343
1351
|
)
|
|
1344
1352
|
return
|
|
1345
1353
|
}
|
|
1346
|
-
sgc.requestPhoto(
|
|
1347
|
-
requestId, appId: appId, size: size, webhookUrl: webhookUrl, authToken: authToken,
|
|
1348
|
-
compress: compress, flash: flash, save: save, sound: sound, exposureTimeNs: manualExposureNs, iso: manualIso
|
|
1349
|
-
)
|
|
1354
|
+
sgc.requestPhoto(routed)
|
|
1350
1355
|
}
|
|
1351
1356
|
|
|
1352
1357
|
func connectDefault() {
|
|
@@ -91,8 +91,7 @@ class DeviceStore {
|
|
|
91
91
|
// Mentra Nex feature flag (off by default; toggled from Nex Developer Settings):
|
|
92
92
|
store.set("bluetooth", "nex_chinese_captions", false)
|
|
93
93
|
store.set("bluetooth", "screen_disabled", false)
|
|
94
|
-
store.set("bluetooth", "button_photo_size", "
|
|
95
|
-
store.set("bluetooth", "button_camera_led", true)
|
|
94
|
+
store.set("bluetooth", "button_photo_size", "max")
|
|
96
95
|
store.set("bluetooth", "button_max_recording_time", 10)
|
|
97
96
|
store.set("bluetooth", "camera_fov", ["fov": 118, "roi_position": 0])
|
|
98
97
|
store.set("bluetooth", "button_video_width", 1280)
|
|
@@ -116,6 +115,10 @@ class DeviceStore {
|
|
|
116
115
|
store.set(category, key, value)
|
|
117
116
|
}
|
|
118
117
|
|
|
118
|
+
func remove(_ category: String, _ key: String) {
|
|
119
|
+
store.remove(category, key)
|
|
120
|
+
}
|
|
121
|
+
|
|
119
122
|
private func scheduleDashboardHeightToGlasses() {
|
|
120
123
|
dashboardHeightDebounceTask?.cancel()
|
|
121
124
|
dashboardHeightDebounceTask = Task { @MainActor in
|
|
@@ -254,9 +257,6 @@ class DeviceStore {
|
|
|
254
257
|
case ("bluetooth", "button_photo_size"):
|
|
255
258
|
DeviceManager.shared.sgc?.sendButtonPhotoSettings()
|
|
256
259
|
|
|
257
|
-
case ("bluetooth", "button_camera_led"):
|
|
258
|
-
DeviceManager.shared.sgc?.sendButtonCameraLedSetting()
|
|
259
|
-
|
|
260
260
|
case ("bluetooth", "button_max_recording_time"):
|
|
261
261
|
DeviceManager.shared.sgc?.sendButtonMaxRecordingTime()
|
|
262
262
|
|