@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.
Files changed (69) hide show
  1. package/README.md +30 -11
  2. package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +47 -12
  3. package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +75 -29
  4. package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +1 -5
  5. package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +208 -45
  6. package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdkDebug.kt +14 -0
  7. package/android/src/main/java/com/mentra/bluetoothsdk/ObservableStore.kt +20 -0
  8. package/android/src/main/java/com/mentra/bluetoothsdk/OtaManifest.kt +153 -0
  9. package/android/src/main/java/com/mentra/bluetoothsdk/camera/CameraModels.kt +80 -14
  10. package/android/src/main/java/com/mentra/bluetoothsdk/controllers/ControllerManager.kt +4 -16
  11. package/android/src/main/java/com/mentra/bluetoothsdk/controllers/R1.kt +4 -8
  12. package/android/src/main/java/com/mentra/bluetoothsdk/services/PhoneMic.kt +90 -4
  13. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.kt +3831 -0
  14. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +20 -28
  15. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/{Mach1.java → Mach1.kt} +514 -561
  16. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.kt +8674 -0
  17. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +12 -3
  18. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +5 -17
  19. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Simulated.kt +9 -20
  20. package/android/src/main/java/com/mentra/bluetoothsdk/status/DeviceStatus.kt +0 -6
  21. package/android/src/main/java/com/mentra/bluetoothsdk/streaming/StreamModels.kt +16 -33
  22. package/build/BluetoothSdk.types.d.ts +48 -17
  23. package/build/BluetoothSdk.types.d.ts.map +1 -1
  24. package/build/BluetoothSdk.types.js.map +1 -1
  25. package/build/_private/BluetoothSdkModule.d.ts +9 -9
  26. package/build/_private/BluetoothSdkModule.d.ts.map +1 -1
  27. package/build/_private/BluetoothSdkModule.js +0 -6
  28. package/build/_private/BluetoothSdkModule.js.map +1 -1
  29. package/build/_private/photoRequestPayload.d.ts +3 -1
  30. package/build/_private/photoRequestPayload.d.ts.map +1 -1
  31. package/build/_private/photoRequestPayload.js +46 -2
  32. package/build/_private/photoRequestPayload.js.map +1 -1
  33. package/build/debug.d.ts +3 -0
  34. package/build/debug.d.ts.map +1 -0
  35. package/build/debug.js +8 -0
  36. package/build/debug.js.map +1 -0
  37. package/build/index.d.ts +1 -1
  38. package/build/index.d.ts.map +1 -1
  39. package/build/index.js +8 -8
  40. package/build/index.js.map +1 -1
  41. package/ios/BluetoothSdkModule.swift +44 -68
  42. package/ios/Source/BluetoothSdkDefaults.swift +23 -3
  43. package/ios/Source/DeviceManager.swift +38 -33
  44. package/ios/Source/DeviceStore.swift +5 -5
  45. package/ios/Source/MentraBluetoothSDK.swift +217 -50
  46. package/ios/Source/MentraBluetoothSDKDebug.swift +12 -0
  47. package/ios/Source/ObservableStore.swift +11 -0
  48. package/ios/Source/OtaManifest.swift +170 -0
  49. package/ios/Source/camera/CameraModels.swift +219 -13
  50. package/ios/Source/controllers/ControllerManager.swift +3 -7
  51. package/ios/Source/controllers/R1.swift +3 -7
  52. package/ios/Source/sgcs/Frame.swift +0 -2
  53. package/ios/Source/sgcs/G1.swift +7 -8
  54. package/ios/Source/sgcs/G2.swift +21 -20
  55. package/ios/Source/sgcs/Mach1.swift +7 -8
  56. package/ios/Source/sgcs/MentraLive.swift +132 -63
  57. package/ios/Source/sgcs/MentraNex.swift +7 -8
  58. package/ios/Source/sgcs/SGCManager.swift +7 -10
  59. package/ios/Source/sgcs/Simulated.swift +8 -8
  60. package/ios/Source/status/DeviceStatus.swift +1 -9
  61. package/ios/Source/streaming/StreamModels.swift +7 -32
  62. package/package.json +6 -1
  63. package/src/BluetoothSdk.types.ts +49 -17
  64. package/src/_private/BluetoothSdkModule.ts +9 -17
  65. package/src/_private/photoRequestPayload.ts +48 -3
  66. package/src/debug.ts +9 -0
  67. package/src/index.ts +19 -10
  68. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.java +0 -3974
  69. package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.java +0 -7434
@@ -248,6 +248,13 @@ export type PhotoCaptureMetadata = {
248
248
  sensorTimestampNs?: number
249
249
  totalLightProxy?: number
250
250
  mfnrLikely?: boolean
251
+ mfnrApplied?: boolean
252
+ width?: number
253
+ height?: number
254
+ noiseReductionWarning?: "not_implemented" | string
255
+ ispDigitalGainWarning?: "not_implemented" | string
256
+ ispAnalogGainWarning?: "not_implemented" | string
257
+ [key: string]: unknown
251
258
  }
252
259
 
253
260
  export type PhotoStatusEvent = {
@@ -389,7 +396,6 @@ export type SettingsAckSetting =
389
396
  | "gallery_mode"
390
397
  | "button_photo"
391
398
  | "button_video_recording"
392
- | "button_camera_led"
393
399
  | "button_max_recording_time"
394
400
  | "camera_fov"
395
401
 
@@ -421,13 +427,35 @@ export type SettingsAckSuccessEvent = Omit<SettingsAckEvent, "status"> & {
421
427
 
422
428
  export type RgbLedAction = "on" | "off"
423
429
  export type RgbLedColor = "red" | "green" | "blue" | "orange" | "white"
424
- export type PhotoSize = "small" | "medium" | "large" | "full"
425
- export type ButtonPhotoSize = "small" | "medium" | "large" | "max"
430
+ export type PhotoSize = "low" | "medium" | "high" | "max"
431
+ export type ButtonPhotoSize = "low" | "medium" | "high" | "max"
432
+
433
+ export type PhotoCaptureDefaults = {
434
+ size?: PhotoSize
435
+ mfnr?: boolean
436
+ zsl?: boolean
437
+ noiseReduction?: boolean
438
+ edgeEnhancement?: boolean
439
+ ispDigitalGain?: number
440
+ ispAnalogGain?: string
441
+ aeExposureDivisor?: number
442
+ isoCap?: number
443
+ compress?: PhotoCompression
444
+ sound?: boolean
445
+ /** When true, clears stored NR/edge/ISP presets on the glasses before applying other fields. */
446
+ resetCaptureTuning?: boolean
447
+ }
426
448
  export type PhotoCompression = "none" | "medium" | "heavy"
427
449
 
450
+ export type VideoRecordingDefaults = {
451
+ width: number
452
+ height: number
453
+ fps: number
454
+ }
455
+
428
456
  /**
429
457
  * Optional per-recording video settings for {@link startVideoRecording}. When
430
- * omitted, the glasses fall back to their saved button-video settings. Any
458
+ * omitted, the glasses fall back to their saved video recording defaults. Any
431
459
  * field left undefined is omitted from the BLE command (glasses default applies).
432
460
  */
433
461
  export interface VideoRecordingSettings {
@@ -511,6 +539,17 @@ export type PhotoRequestParams = {
511
539
  exposureTimeNs?: number | null
512
540
  /** Sensor ISO for this capture only. Only used when exposureTimeNs enables manual exposure. */
513
541
  iso?: number | null
542
+ /** After AE convergence, divide metered exposure by this factor (scan mode). */
543
+ aeExposureDivisor?: number
544
+ /** Cap ISO after AE metering (scan mode). */
545
+ isoCap?: number
546
+ /** Requested on wire; glasses may log not_implemented. */
547
+ noiseReduction?: boolean
548
+ edgeEnhancement?: boolean
549
+ mfnr?: boolean
550
+ zsl?: boolean
551
+ ispDigitalGain?: number
552
+ ispAnalogGain?: string
514
553
  }
515
554
 
516
555
  export type StreamVideoConfig = {
@@ -531,8 +570,6 @@ export type StreamStartRequest = {
531
570
  type?: "start_stream"
532
571
  streamUrl: string
533
572
  streamId?: string
534
- keepAlive?: boolean
535
- keepAliveIntervalSeconds?: number
536
573
  sound?: boolean
537
574
  video?: StreamVideoConfig
538
575
  audio?: StreamAudioConfig
@@ -859,7 +896,6 @@ export type BluetoothSdkEventMap = {
859
896
  mic_pcm: MicPcmEvent
860
897
  mic_lc3: MicLc3Event
861
898
  stream_status: StreamStatusEvent
862
- ota_update_available: OtaUpdateAvailableEvent
863
899
  ota_start_ack: OtaStartAckEvent
864
900
  ota_status: OtaStatusEvent
865
901
  version_info: VersionInfoEvent
@@ -913,10 +949,9 @@ export interface BluetoothSdkPublicModule {
913
949
 
914
950
  setGalleryModeEnabled(enabled: boolean): Promise<SettingsAckSuccessEvent>
915
951
  setVoiceActivityDetectionEnabled(enabled: boolean): Promise<void>
916
- setButtonPhotoSettings(size: ButtonPhotoSize): Promise<SettingsAckSuccessEvent>
917
- setButtonVideoRecordingSettings(width: number, height: number, fps: number): Promise<SettingsAckSuccessEvent>
918
- setButtonCameraLed(enabled: boolean): Promise<SettingsAckSuccessEvent>
919
- setButtonMaxRecordingTime(minutes: number): Promise<SettingsAckSuccessEvent>
952
+ setPhotoCaptureDefaults(settings: PhotoCaptureDefaults): Promise<SettingsAckSuccessEvent>
953
+ setVideoRecordingDefaults(settings: VideoRecordingDefaults): Promise<SettingsAckSuccessEvent>
954
+ setMaxVideoRecordingDuration(minutes: number): Promise<SettingsAckSuccessEvent>
920
955
  setCameraFov(request: CameraFovRequest): Promise<CameraFovResult>
921
956
  queryGalleryStatus(): Promise<GalleryStatusEvent>
922
957
  requestPhoto(params: PhotoRequestParams): Promise<PhotoSuccessResponseEvent>
@@ -959,12 +994,10 @@ export interface BluetoothSdkPublicModule {
959
994
  ): Promise<RgbLedControlSuccessResponseEvent>
960
995
 
961
996
  requestVersionInfo(): Promise<VersionInfoResult>
962
- /** Ask connected Mentra Live glasses to check/report OTA availability and status. */
963
- checkForOtaUpdate(): Promise<OtaQueryResult>
964
- /** Start the OTA flow after your app has presented the available update to the user. */
997
+ /** Fetch the configured OTA manifest and return whether any ASG/BES/MTK update is available. */
998
+ checkForOtaUpdate(): Promise<boolean>
999
+ /** Start the OTA flow with the same configured manifest URL used by checkForOtaUpdate(). */
965
1000
  startOtaUpdate(): Promise<OtaStartAckEvent>
966
- /** Re-run the glasses-side OTA version check, mainly after correcting clock skew/TLS failures. */
967
- retryOtaVersionCheck(): Promise<OtaQueryResult>
968
1001
 
969
1002
  // // stt commands (MOVE TO CRUST)
970
1003
  // setSttModelDetails(path: string, languageCode: string): Promise<void>
@@ -1206,7 +1239,6 @@ export type BluetoothSettingsUpdate = Partial<{
1206
1239
  button_video_width: number
1207
1240
  button_video_height: number
1208
1241
  button_video_fps: number
1209
- button_camera_led: boolean
1210
1242
  button_max_recording_time: number
1211
1243
  camera_fov: NativeCameraFovSetting
1212
1244
  should_send_pcm: boolean
@@ -2,10 +2,9 @@ import {NativeModule, requireNativeModule} from "expo"
2
2
 
3
3
  import {
4
4
  BluetoothSettingsUpdate,
5
- BluetoothSdkPublicModule,
6
5
  BluetoothSdkModuleEvents,
7
6
  BluetoothStatus,
8
- ButtonPhotoSize,
7
+ PhotoCaptureDefaults,
9
8
  CalendarEvent,
10
9
  CAMERA_FOV_DEFAULT,
11
10
  CAMERA_FOV_MAX,
@@ -122,21 +121,21 @@ declare class BluetoothSdkNativeModule extends NativeModule<BluetoothSdkModuleEv
122
121
  // Gallery Commands
123
122
  setGalleryModeEnabled(enabled: boolean): Promise<SettingsAckSuccessEvent>
124
123
  setVoiceActivityDetectionEnabled(enabled: boolean): Promise<void>
125
- setButtonPhotoSettings(size: ButtonPhotoSize): Promise<SettingsAckSuccessEvent>
126
- setButtonVideoRecordingSettings(width: number, height: number, fps: number): Promise<SettingsAckSuccessEvent>
127
- setButtonCameraLed(enabled: boolean): Promise<SettingsAckSuccessEvent>
128
- setButtonMaxRecordingTime(minutes: number): Promise<SettingsAckSuccessEvent>
124
+ setPhotoCaptureDefaults(settings: PhotoCaptureDefaults): Promise<SettingsAckSuccessEvent>
125
+ setVideoRecordingDefaults(width: number, height: number, fps: number): Promise<SettingsAckSuccessEvent>
126
+ setMaxVideoRecordingDuration(minutes: number): Promise<SettingsAckSuccessEvent>
129
127
  setCameraFov(request: CameraFovRequest): Promise<CameraFovResult>
130
128
  queryGalleryStatus(): Promise<GalleryStatusEvent>
131
129
  requestPhoto(params: PhotoRequestParams): Promise<PhotoSuccessResponseEvent>
132
130
 
133
131
  // OTA Commands
134
- sendOtaStart(): Promise<OtaStartAckEvent>
132
+ setOtaVersionUrl(otaVersionUrl: string): void
133
+ getOtaVersionUrl(): string
134
+ checkForOtaUpdate(): Promise<boolean>
135
+ startOtaUpdate(otaVersionUrl?: string | null): Promise<OtaStartAckEvent>
135
136
  sendOtaQueryStatus(): Promise<OtaQueryResult>
136
137
  /** Re-run glasses-side OTA version check (called after a clock fix invalidates a TLS failure). */
137
138
  retryOtaVersionCheck(): Promise<OtaQueryResult>
138
- checkForOtaUpdate(): Promise<OtaQueryResult>
139
- startOtaUpdate(): Promise<OtaStartAckEvent>
140
139
 
141
140
  // Version Info Commands
142
141
  requestVersionInfo(): Promise<VersionInfoResult>
@@ -567,12 +566,5 @@ NativeBluetoothSdkModule.requestPhoto = function (params: PhotoRequestParams) {
567
566
  return nativeRequestPhoto(photoRequestParamsForNative(params) as unknown as PhotoRequestParams)
568
567
  }
569
568
 
570
- const nativeStartStream = NativeBluetoothSdkModule.startStream.bind(NativeBluetoothSdkModule)
571
- NativeBluetoothSdkModule.startExternallyManagedStream = function (params: StreamStartRequest) {
572
- return nativeStartStream({...params, keepAliveMode: "external"} as StreamStartRequest)
573
- }
574
- NativeBluetoothSdkModule.checkForOtaUpdate = NativeBluetoothSdkModule.sendOtaQueryStatus.bind(NativeBluetoothSdkModule)
575
- NativeBluetoothSdkModule.startOtaUpdate = NativeBluetoothSdkModule.sendOtaStart.bind(NativeBluetoothSdkModule)
576
-
577
569
  export default NativeBluetoothSdkModule
578
- export const BluetoothSdk = NativeBluetoothSdkModule as BluetoothSdkPublicModule
570
+ export const BluetoothSdk = NativeBluetoothSdkModule as BluetoothSdkInternalModule
@@ -1,4 +1,23 @@
1
- import type {PhotoRequestParams} from "../BluetoothSdk.types"
1
+ import type {PhotoRequestParams, PhotoSize} from "../BluetoothSdk.types"
2
+
3
+ /** Maps unknown/legacy size strings to the current wire format. */
4
+ export function normalizePhotoSizeTier(size: string | undefined): PhotoSize {
5
+ switch (size) {
6
+ case "small":
7
+ return "low"
8
+ case "large":
9
+ return "high"
10
+ case "full":
11
+ return "max"
12
+ case "low":
13
+ case "medium":
14
+ case "high":
15
+ case "max":
16
+ return size
17
+ default:
18
+ return "medium"
19
+ }
20
+ }
2
21
 
3
22
  /** Expo Android bridge rejects null values in Map<String, Any> — omit optional nullish fields. */
4
23
  export function photoRequestParamsForNative(
@@ -7,12 +26,14 @@ export function photoRequestParamsForNative(
7
26
  const payload: Record<string, string | number | boolean> = {
8
27
  requestId: params.requestId,
9
28
  appId: params.appId,
10
- size: params.size,
29
+ size: normalizePhotoSizeTier(params.size),
11
30
  webhookUrl: params.webhookUrl ?? "",
12
31
  compress: params.compress,
13
- flash: true,
14
32
  sound: params.sound,
15
33
  }
34
+ if (params.save != null) {
35
+ payload.save = params.save
36
+ }
16
37
  if (params.authToken != null && params.authToken.length > 0) {
17
38
  payload.authToken = params.authToken
18
39
  }
@@ -24,5 +45,29 @@ export function photoRequestParamsForNative(
24
45
  if (hasManualExposure && params.iso != null && Number.isFinite(params.iso) && params.iso > 0) {
25
46
  payload.iso = Math.round(params.iso)
26
47
  }
48
+ if (params.aeExposureDivisor != null && params.aeExposureDivisor > 1) {
49
+ payload.aeExposureDivisor = Math.round(params.aeExposureDivisor)
50
+ }
51
+ if (params.isoCap != null && params.isoCap > 0) {
52
+ payload.isoCap = Math.round(params.isoCap)
53
+ }
54
+ if (params.noiseReduction != null) {
55
+ payload.noiseReduction = params.noiseReduction
56
+ }
57
+ if (params.edgeEnhancement != null) {
58
+ payload.edgeEnhancement = params.edgeEnhancement
59
+ }
60
+ if (params.mfnr != null) {
61
+ payload.mfnr = params.mfnr
62
+ }
63
+ if (params.zsl != null) {
64
+ payload.zsl = params.zsl
65
+ }
66
+ if (params.ispDigitalGain != null) {
67
+ payload.ispDigitalGain = Math.round(params.ispDigitalGain)
68
+ }
69
+ if (params.ispAnalogGain != null && params.ispAnalogGain.length > 0) {
70
+ payload.ispAnalogGain = params.ispAnalogGain
71
+ }
27
72
  return payload
28
73
  }
package/src/debug.ts ADDED
@@ -0,0 +1,9 @@
1
+ import PrivateBluetoothSdkModule from "./_private/BluetoothSdkModule"
2
+
3
+ export function setOtaVersionUrl(otaVersionUrl: string): void {
4
+ PrivateBluetoothSdkModule.setOtaVersionUrl(otaVersionUrl)
5
+ }
6
+
7
+ export function getOtaVersionUrl(): string {
8
+ return PrivateBluetoothSdkModule.getOtaVersionUrl()
9
+ }
package/src/index.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import PrivateBluetoothSdkModule from "./_private/BluetoothSdkModule"
2
- import type {BluetoothSdkEventListener, BluetoothSdkEventName, BluetoothSdkPublicModule} from "./BluetoothSdk.types"
2
+ import type {
3
+ BluetoothSdkEventListener,
4
+ BluetoothSdkEventName,
5
+ BluetoothSdkPublicModule,
6
+ VideoRecordingDefaults,
7
+ } from "./BluetoothSdk.types"
3
8
 
4
9
  const PUBLIC_EVENT_NAMES = new Set<BluetoothSdkEventName>([
5
10
  "log",
@@ -36,7 +41,6 @@ const PUBLIC_EVENT_NAMES = new Set<BluetoothSdkEventName>([
36
41
  "mic_pcm",
37
42
  "mic_lc3",
38
43
  "stream_status",
39
- "ota_update_available",
40
44
  "ota_start_ack",
41
45
  "ota_status",
42
46
  "version_info",
@@ -50,6 +54,10 @@ const addListener: BluetoothSdkPublicModule["addListener"] = (eventName, listene
50
54
  return PrivateBluetoothSdkModule.addListener(eventName, listener as BluetoothSdkEventListener<BluetoothSdkEventName>)
51
55
  }
52
56
 
57
+ const startOtaUpdate: BluetoothSdkPublicModule["startOtaUpdate"] = () => {
58
+ return PrivateBluetoothSdkModule.startOtaUpdate()
59
+ }
60
+
53
61
  export const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({
54
62
  addListener,
55
63
  getDefaultDevice: PrivateBluetoothSdkModule.getDefaultDevice.bind(PrivateBluetoothSdkModule),
@@ -77,11 +85,10 @@ export const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({
77
85
  setGalleryModeEnabled: PrivateBluetoothSdkModule.setGalleryModeEnabled.bind(PrivateBluetoothSdkModule),
78
86
  setVoiceActivityDetectionEnabled:
79
87
  PrivateBluetoothSdkModule.setVoiceActivityDetectionEnabled.bind(PrivateBluetoothSdkModule),
80
- setButtonPhotoSettings: PrivateBluetoothSdkModule.setButtonPhotoSettings.bind(PrivateBluetoothSdkModule),
81
- setButtonVideoRecordingSettings:
82
- PrivateBluetoothSdkModule.setButtonVideoRecordingSettings.bind(PrivateBluetoothSdkModule),
83
- setButtonCameraLed: PrivateBluetoothSdkModule.setButtonCameraLed.bind(PrivateBluetoothSdkModule),
84
- setButtonMaxRecordingTime: PrivateBluetoothSdkModule.setButtonMaxRecordingTime.bind(PrivateBluetoothSdkModule),
88
+ setPhotoCaptureDefaults: PrivateBluetoothSdkModule.setPhotoCaptureDefaults.bind(PrivateBluetoothSdkModule),
89
+ setVideoRecordingDefaults: ({width, height, fps}: VideoRecordingDefaults) =>
90
+ PrivateBluetoothSdkModule.setVideoRecordingDefaults(width, height, fps),
91
+ setMaxVideoRecordingDuration: PrivateBluetoothSdkModule.setMaxVideoRecordingDuration.bind(PrivateBluetoothSdkModule),
85
92
  setCameraFov: PrivateBluetoothSdkModule.setCameraFov.bind(PrivateBluetoothSdkModule),
86
93
  queryGalleryStatus: PrivateBluetoothSdkModule.queryGalleryStatus.bind(PrivateBluetoothSdkModule),
87
94
  requestPhoto: PrivateBluetoothSdkModule.requestPhoto.bind(PrivateBluetoothSdkModule),
@@ -96,9 +103,8 @@ export const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({
96
103
  setGlassesMediaVolume: PrivateBluetoothSdkModule.setGlassesMediaVolume.bind(PrivateBluetoothSdkModule),
97
104
  rgbLedControl: PrivateBluetoothSdkModule.rgbLedControl.bind(PrivateBluetoothSdkModule),
98
105
  requestVersionInfo: PrivateBluetoothSdkModule.requestVersionInfo.bind(PrivateBluetoothSdkModule),
99
- checkForOtaUpdate: PrivateBluetoothSdkModule.sendOtaQueryStatus.bind(PrivateBluetoothSdkModule),
100
- startOtaUpdate: PrivateBluetoothSdkModule.sendOtaStart.bind(PrivateBluetoothSdkModule),
101
- retryOtaVersionCheck: PrivateBluetoothSdkModule.retryOtaVersionCheck.bind(PrivateBluetoothSdkModule),
106
+ checkForOtaUpdate: PrivateBluetoothSdkModule.checkForOtaUpdate.bind(PrivateBluetoothSdkModule),
107
+ startOtaUpdate,
102
108
  setSttModelDetails: PrivateBluetoothSdkModule.setSttModelDetails.bind(PrivateBluetoothSdkModule),
103
109
  getSttModelPath: PrivateBluetoothSdkModule.getSttModelPath.bind(PrivateBluetoothSdkModule),
104
110
  checkSttModelAvailable: PrivateBluetoothSdkModule.checkSttModelAvailable.bind(PrivateBluetoothSdkModule),
@@ -140,6 +146,7 @@ export type {
140
146
  BluetoothSdkPublicModule as BluetoothSdkModule,
141
147
  BluetoothSdkSubscription,
142
148
  ButtonPhotoSize,
149
+ PhotoCaptureDefaults,
143
150
  ButtonPressEvent,
144
151
  CameraFovPreset,
145
152
  CameraFovRequest,
@@ -181,6 +188,7 @@ export type {
181
188
  PhotoMeteredPreview,
182
189
  PhotoResponseEvent,
183
190
  PhotoRequestedCaptureConfig,
191
+ PhotoRequestParams,
184
192
  PhotoSize,
185
193
  PhotoStatusEvent,
186
194
  PhotoStatusState,
@@ -209,6 +217,7 @@ export type {
209
217
  SwipeVolumeStatusEvent,
210
218
  SwitchStatusEvent,
211
219
  TouchEvent,
220
+ VideoRecordingDefaults,
212
221
  VideoRecordingStartedStatusEvent,
213
222
  VideoRecordingStatusEvent,
214
223
  VideoRecordingStatusState,