@mentra/bluetooth-sdk 3.2.1-dev.314 → 3.3.0-beta.942
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 +72 -10
- package/android/build.gradle +15 -0
- package/android/lc3Lib/build.gradle +6 -1
- package/android/src/debug/java/com/mentra/bluetoothsdk/sgcs/NimoDiagnostics.kt +368 -0
- package/android/src/debug/java/com/mentra/bluetoothsdk/sgcs/NimoFramebufferProtocol.kt +156 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkAnalytics.kt +63 -14
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkAnalyticsTracker.kt +55 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkDefaults.kt +4 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkInstallId.kt +23 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +8 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkUpdateCheck.kt +184 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkUsageTracker.kt +388 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/Bridge.kt +2 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +133 -26
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +37 -13
- package/android/src/main/java/com/mentra/bluetoothsdk/GeneratedChangelogCatalog.kt +3 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/GeneratedReleaseMetadata.kt +6 -6
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +227 -36
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraLocalNetworkModule.kt +24 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/NetworkDiagnostics.kt +25 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/VersionInfoResponseAccumulator.kt +13 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/debug/BleTraceLogger.kt +3 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/requests/DisplayRequests.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/services/Foreground.kt +33 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/services/G2ConnectionRecovery.kt +47 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ClassicAudioConnectionTracker.kt +4 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ClassicAudioServiceDiscovery.kt +70 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.kt +2 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1TextSanitizer.kt +11 -32
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +72 -21
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/LatinTextSanitizer.kt +39 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.kt +194 -40
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +12 -8
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Nimo.kt +314 -395
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasCodec.kt +247 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasCoordinator.kt +238 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasEncoder.kt +58 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasSession.kt +180 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +11 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SelectedDeviceAddress.kt +17 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SerializedGattCallback.kt +5 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/G2Text.kt +7 -0
- package/android/src/release/java/com/mentra/bluetoothsdk/sgcs/NimoDiagnostics.kt +20 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkAnalyticsTrackerTest.kt +58 -3
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkUpdateCheckTest.kt +124 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/BluetoothSdkUsageTrackerTest.kt +263 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/DashboardContentFormatterTest.kt +2 -2
- package/android/src/test/java/com/mentra/bluetoothsdk/DeviceIdentityPairingTest.kt +59 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/DeviceManagerSceneHandoffTest.kt +666 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/G2TextTest.kt +13 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/NetworkDiagnosticsTest.kt +55 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/ScanCompletionTest.kt +5 -1
- package/android/src/test/java/com/mentra/bluetoothsdk/VersionInfoResponseAccumulatorTest.kt +71 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/debug/BleTraceLoggerTest.kt +69 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/services/G2ConnectionRecoveryTest.kt +51 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/ClassicAudioServiceDiscoveryTest.kt +124 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/G1PairingTest.kt +105 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/G1TextSanitizerTest.kt +29 -4
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/G2DisplayThreadTest.kt +120 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/G2PairingTargetTest.kt +90 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLiveClassicDisconnectTest.kt +133 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLiveFileTransferSessionTest.kt +55 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLiveGattCallbackTest.kt +33 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLiveIncidentDispatchTest.kt +126 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLivePairingTargetTest.kt +65 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraLiveWifiCredentialLogTest.kt +55 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/MentraNexPairingTest.kt +151 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoBitmapAcceptanceTest.kt +105 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasCodecTest.kt +233 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasCoordinatorTest.kt +348 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoCanvasSessionTest.kt +339 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoMicReconnectTest.kt +93 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/NimoProtocolTest.kt +11 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/SelectedDeviceAddressTest.kt +27 -0
- package/android/src/testDebug/java/com/mentra/bluetoothsdk/sgcs/NimoDiagnosticsTest.kt +287 -0
- package/android/src/testDebug/java/com/mentra/bluetoothsdk/sgcs/NimoFramebufferProtocolTest.kt +127 -0
- package/android/src/testDebug/java/com/mentra/bluetoothsdk/sgcs/NimoLifecycleTest.kt +288 -0
- package/android/src/testDebug/java/com/mentra/bluetoothsdk/sgcs/NimoReadinessDriverTest.kt +205 -0
- package/build/BluetoothSdk.types.d.ts +16 -0
- package/build/BluetoothSdk.types.d.ts.map +1 -1
- package/build/BluetoothSdk.types.js +1 -0
- package/build/BluetoothSdk.types.js.map +1 -1
- package/build/_private/BluetoothSdkModule.d.ts +4 -0
- package/build/_private/BluetoothSdkModule.d.ts.map +1 -1
- package/build/_private/BluetoothSdkModule.js +5 -1
- package/build/_private/BluetoothSdkModule.js.map +1 -1
- package/build/_private/MentraLocalNetworkModule.d.ts +23 -0
- package/build/_private/MentraLocalNetworkModule.d.ts.map +1 -1
- package/build/_private/MentraLocalNetworkModule.js.map +1 -1
- package/build/_private/nativeLogConsole.d.ts +19 -0
- package/build/_private/nativeLogConsole.d.ts.map +1 -1
- package/build/_private/nativeLogConsole.js +12 -0
- package/build/_private/nativeLogConsole.js.map +1 -1
- package/build/generated/changelogCatalog.d.ts +5 -2
- package/build/generated/changelogCatalog.d.ts.map +1 -1
- package/build/generated/changelogCatalog.js +6 -2
- package/build/generated/changelogCatalog.js.map +1 -1
- package/build/generated/releaseMetadata.js +6 -6
- package/build/generated/releaseMetadata.js.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/ota-transport/index.d.ts +4 -0
- package/build/ota-transport/index.d.ts.map +1 -1
- package/build/ota-transport/index.js +2 -0
- package/build/ota-transport/index.js.map +1 -1
- package/ios/BluetoothSdkModule.swift +17 -4
- package/ios/MentraBluetoothSDK.podspec +3 -2
- package/ios/Source/BluetoothBackgroundMode.swift +32 -0
- package/ios/Source/BluetoothSdkDefaults.swift +7 -2
- package/ios/Source/Bridge.swift +15 -2
- package/ios/Source/DeviceManager.swift +102 -66
- package/ios/Source/DeviceStore.swift +26 -7
- package/ios/Source/GeneratedChangelogCatalog.swift +3 -2
- package/ios/Source/GeneratedReleaseMetadata.swift +6 -6
- package/ios/Source/MentraBluetoothSDK.swift +313 -54
- package/ios/Source/audio/GlassesMicWatchdog.swift +33 -0
- package/ios/Source/internal/BluetoothAvailability.swift +6 -0
- package/ios/Source/internal/BluetoothSdkAnalytics.swift +87 -13
- package/ios/Source/internal/BluetoothSdkAnalyticsTracker.swift +54 -1
- package/ios/Source/internal/BluetoothSdkInstallId.swift +21 -0
- package/ios/Source/internal/BluetoothSdkUpdateCheck.swift +223 -0
- package/ios/Source/internal/BluetoothSdkUsageTracker.swift +428 -0
- package/ios/Source/requests/DisplayRequests.swift +1 -1
- package/ios/Source/requests/VersionInfoResponseAccumulator.swift +11 -1
- package/ios/Source/sgcs/Ar99.swift +1 -2
- package/ios/Source/sgcs/G1.swift +68 -38
- package/ios/Source/sgcs/G1ConnectionTarget.swift +13 -0
- package/ios/Source/sgcs/G2.swift +261 -247
- package/ios/Source/sgcs/G2ConnectionSession.swift +101 -0
- package/ios/Source/sgcs/Mach1.swift +19 -7
- package/ios/Source/sgcs/MentraLive.swift +272 -197
- package/ios/Source/sgcs/MentraLiveFileTransferSession.swift +137 -0
- package/ios/Source/sgcs/MentraLivePairingAdvertisement.swift +47 -0
- package/ios/Source/sgcs/MentraNex.swift +8 -31
- package/ios/Source/sgcs/NexConnectionTarget.swift +15 -0
- package/ios/Source/sgcs/Nimo.swift +280 -408
- package/ios/Source/sgcs/NimoCanvasCodec.swift +272 -0
- package/ios/Source/sgcs/NimoCanvasCoordinator.swift +233 -0
- package/ios/Source/sgcs/NimoCanvasImage.swift +53 -0
- package/ios/Source/sgcs/NimoCanvasSession.swift +166 -0
- package/ios/Source/sgcs/NimoDiscovery.swift +49 -0
- package/ios/Source/sgcs/SGCManager.swift +25 -1
- package/ios/Source/sgcs/VuzixConnectionTarget.swift +15 -0
- package/ios/Source/status/DeviceStatus.swift +1 -0
- package/ios/Source/stt/SherpaOnnxTranscriber.swift +49 -189
- package/ios/Source/utils/AudioSessionMonitor.swift +44 -8
- package/ios/Source/utils/DemandDrivenAudioWorker.swift +150 -0
- package/ios/Source/utils/G1Text.swift +2 -24
- package/ios/Source/utils/G1TextSanitizer.swift +27 -0
- package/ios/Source/utils/G2Text.swift +11 -0
- package/ios/Source/utils/LatinTextSanitizer.swift +48 -0
- package/ios/Tests/BluetoothAudioRouteTests.swift +26 -0
- package/ios/Tests/BluetoothBackgroundModeTests.swift +32 -0
- package/ios/Tests/BluetoothSdkAnalyticsTrackerTests.swift +54 -3
- package/ios/Tests/BluetoothSdkUpdateCheckTests.swift +153 -0
- package/ios/Tests/BluetoothSdkUsageTrackerTests.swift +296 -0
- package/ios/Tests/DashboardContentFormatterTests.swift +2 -2
- package/ios/Tests/DashboardRenderingTests.swift +31 -0
- package/ios/Tests/DemandDrivenAudioWorkerTests.swift +157 -0
- package/ios/Tests/DeviceIdentityPairingTests.swift +49 -0
- package/ios/Tests/DeviceManagerReconnectTests.swift +362 -0
- package/ios/Tests/G1PairingTests.swift +162 -0
- package/ios/Tests/G1TextSanitizerTests.swift +32 -0
- package/ios/Tests/G2ConnectionSessionTests.swift +172 -0
- package/ios/Tests/G2TextTests.swift +10 -0
- package/ios/Tests/IncidentLogDispatchTests.swift +111 -0
- package/ios/Tests/MentraLiveFileTransferSessionTests.swift +47 -0
- package/ios/Tests/MentraLiveReconnectPolicyTests.swift +58 -0
- package/ios/Tests/MentraLiveSessionReadinessTests.swift +163 -0
- package/ios/Tests/NimoCanvasCodecTests.swift +217 -0
- package/ios/Tests/NimoCanvasSessionTests.swift +181 -0
- package/ios/Tests/NimoCanvasTransportTests.swift +186 -0
- package/ios/Tests/NimoDeviceCommandsTests.swift +16 -0
- package/ios/Tests/NimoDiscoveryTests.swift +79 -0
- package/ios/Tests/SGCConnectionTargetTests.swift +48 -0
- package/ios/Tests/VersionInfoCommandTests.swift +194 -0
- package/ios/Tests/VersionInfoResponseAccumulatorTests.swift +65 -0
- package/ios/Tests/VideoRecordingCommandTests.swift +81 -0
- package/ios/Tests/WifiCredentialLoggingTests.swift +42 -0
- package/package.json +2 -2
- package/plugin/build/withIos.d.ts +2 -0
- package/plugin/build/withIos.js +12 -1
- package/src/BluetoothSdk.types.ts +15 -0
- package/src/_private/BluetoothSdkModule.ts +10 -1
- package/src/_private/MentraLocalNetworkModule.ts +28 -0
- package/src/_private/nativeLogConsole.ts +19 -0
- package/src/generated/changelogCatalog.ts +6 -2
- package/src/generated/releaseMetadata.ts +6 -6
- package/src/index.ts +1 -0
- package/src/ota-transport/index.ts +10 -1
|
@@ -2,7 +2,7 @@ import {createScanSession} from "./scanSession"
|
|
|
2
2
|
import {NativeModule, requireNativeModule} from "expo"
|
|
3
3
|
import {Platform} from "react-native"
|
|
4
4
|
|
|
5
|
-
import {installNativeLogConsole} from "./nativeLogConsole"
|
|
5
|
+
import {installNativeLogConsole, installSdkUpdateNotice} from "./nativeLogConsole"
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
BluetoothSettingsUpdate,
|
|
@@ -109,6 +109,8 @@ declare class BluetoothSdkNativeModule extends NativeModule<BluetoothSdkModuleEv
|
|
|
109
109
|
connectSimulated(): Promise<void>
|
|
110
110
|
disconnect(): Promise<void>
|
|
111
111
|
forget(): Promise<void>
|
|
112
|
+
/** Explicit Unpair also resets connected NIMO glasses before forgetting. */
|
|
113
|
+
unpair(): Promise<void>
|
|
112
114
|
forgetController(): Promise<void>
|
|
113
115
|
showDashboard(): Promise<void>
|
|
114
116
|
setBrightness(level: number, autoMode?: boolean | null): Promise<void>
|
|
@@ -145,6 +147,8 @@ declare class BluetoothSdkNativeModule extends NativeModule<BluetoothSdkModuleEv
|
|
|
145
147
|
setVoiceActivityDetectionEnabled(enabled: boolean): Promise<void>
|
|
146
148
|
/** Mentra Live center-mic loudness / Barrier gate (cs_swit type 10). */
|
|
147
149
|
setLoudnessGateEnabled(enabled: boolean): Promise<void>
|
|
150
|
+
/** Mentra Live power-off after ~20 min unworn (cs_swit type 11). */
|
|
151
|
+
setAutoPowerOffEnabled(enabled: boolean): Promise<void>
|
|
148
152
|
/**
|
|
149
153
|
* Mentra Live mic tuning. `null` clears every override and returns the
|
|
150
154
|
* glasses to firmware defaults.
|
|
@@ -346,6 +350,7 @@ export type BluetoothSdkInternalModule = BluetoothSdkNativeModule
|
|
|
346
350
|
// NativeModule<BluetoothSdkModuleEvents> already extends EventEmitter<BluetoothSdkModuleEvents>
|
|
347
351
|
const NativeBluetoothSdkModule = requireNativeModule<BluetoothSdkNativeModule>("BluetoothSdk")
|
|
348
352
|
installNativeLogConsole(NativeBluetoothSdkModule, Platform.OS)
|
|
353
|
+
installSdkUpdateNotice(NativeBluetoothSdkModule)
|
|
349
354
|
|
|
350
355
|
const DEFAULT_CONNECT_OPTIONS: Required<ConnectOptions> = {
|
|
351
356
|
saveAsDefault: true,
|
|
@@ -578,6 +583,10 @@ NativeBluetoothSdkModule.setLoudnessGateEnabled = function (enabled: boolean) {
|
|
|
578
583
|
return this.updateBluetoothSettings({loudness_gate_enabled: enabled})
|
|
579
584
|
}
|
|
580
585
|
|
|
586
|
+
NativeBluetoothSdkModule.setAutoPowerOffEnabled = function (enabled: boolean) {
|
|
587
|
+
return this.updateBluetoothSettings({auto_power_off_enabled: enabled})
|
|
588
|
+
}
|
|
589
|
+
|
|
581
590
|
NativeBluetoothSdkModule.setMicTuning = function (tuning: MicTuning | null) {
|
|
582
591
|
// `{}` rather than null: the store drops null writes, and the native side
|
|
583
592
|
// reads an empty object as "no overrides" and sends an explicit reset.
|
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
import {NativeModule, requireOptionalNativeModule} from "expo"
|
|
2
2
|
|
|
3
|
+
export type NetworkCapabilitiesDiagnostic = {
|
|
4
|
+
wifi: boolean
|
|
5
|
+
cellular: boolean
|
|
6
|
+
ethernet: boolean
|
|
7
|
+
vpn: boolean
|
|
8
|
+
internet: boolean
|
|
9
|
+
validated: boolean
|
|
10
|
+
captivePortal: boolean
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type NetworkObservation = {
|
|
14
|
+
present: boolean
|
|
15
|
+
// A present network with null capabilities has disappeared or cannot be inspected.
|
|
16
|
+
capabilities: NetworkCapabilitiesDiagnostic | null
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type NetworkDiagnostics = {
|
|
20
|
+
sampledAtMs: number
|
|
21
|
+
processBound: NetworkObservation
|
|
22
|
+
// ConnectivityManager.activeNetwork is the caller's active default, not a privileged global read.
|
|
23
|
+
activeNetwork: NetworkObservation
|
|
24
|
+
glassesLocal: NetworkObservation
|
|
25
|
+
processBoundMatchesActive: boolean
|
|
26
|
+
processBoundMatchesGlassesLocal: boolean
|
|
27
|
+
activeNetworkMatchesGlassesLocal: boolean
|
|
28
|
+
}
|
|
29
|
+
|
|
3
30
|
export type LocalNetworkResponse = {
|
|
4
31
|
status: number
|
|
5
32
|
headers: Record<string, string>
|
|
@@ -26,6 +53,7 @@ type LocalNetworkEvents = {
|
|
|
26
53
|
}
|
|
27
54
|
|
|
28
55
|
declare class MentraLocalNetworkNativeModule extends NativeModule<LocalNetworkEvents> {
|
|
56
|
+
getNetworkDiagnostics(): NetworkDiagnostics
|
|
29
57
|
connect(ssid: string, password: string): Promise<{connected: boolean; ssid: string; localAddress?: string}>
|
|
30
58
|
request(
|
|
31
59
|
requestId: string,
|
|
@@ -22,3 +22,22 @@ export function installNativeLogConsole(source: SubscribedLogSource, platform: s
|
|
|
22
22
|
console.log(`[native:${platform}]`, nativeLogMessage(message))
|
|
23
23
|
})
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
type UpdateNoticeSource = {
|
|
27
|
+
addListener(event: "sdk_update_notice", listener: (event: {message: string}) => void): {remove(): void}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const updateNoticeKey = Symbol.for("mentra.bluetooth-sdk.update-notice")
|
|
31
|
+
type SubscribedUpdateNoticeSource = UpdateNoticeSource & {[updateNoticeKey]?: {remove(): void}}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The native SDK checks for a newer Mentra Bluetooth SDK at startup and emits
|
|
35
|
+
* its banner when this app is behind. A console warning reaches the developer
|
|
36
|
+
* in Metro and, in debug builds, as a LogBox warning; release builds show no UI.
|
|
37
|
+
*/
|
|
38
|
+
export function installSdkUpdateNotice(source: SubscribedUpdateNoticeSource): void {
|
|
39
|
+
source[updateNoticeKey]?.remove()
|
|
40
|
+
source[updateNoticeKey] = source.addListener("sdk_update_notice", ({message}) => {
|
|
41
|
+
console.warn(message)
|
|
42
|
+
})
|
|
43
|
+
}
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
export const GENERATED_RELEASE_CHANGELOGS = Object.freeze(
|
|
3
3
|
[
|
|
4
4
|
{
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.3.0",
|
|
6
6
|
"markdown": "This release is under active development. User-facing changes will be documented as they land."
|
|
7
7
|
},
|
|
8
|
+
{
|
|
9
|
+
"version": "3.2.1",
|
|
10
|
+
"markdown": "- **Livestreamer:** \"Stream Here\" now works without a Wi-Fi network. Improved stream startup and connection reliability.\n- **Photos and gallery:** More reliable photo capture and gallery syncing.\n- **Mentra AI:** Reliability improvements and bug fixes.\n- **Miniapps:** Smoother transitions, with back buttons and gestures that take you to the previous screen inside a miniapp.\n- **Pairing and connections:** Improved G1 pairing and G2 background reconnection.\n- **Glasses updates:** Fixed repeated update checks and improved recovery after interrupted updates.\n- **Mentra Maps:** Bug fixes.\n- **NIMO:** Improved text and map layouts.\n- **Self-hosting:** Connect the Mentra App to your own self-hosted Mentra backend."
|
|
11
|
+
},
|
|
8
12
|
{
|
|
9
13
|
"version": "3.2.0",
|
|
10
|
-
"markdown": "
|
|
14
|
+
"markdown": "- Improved glasses connectivity and Wi-Fi setup.\n\n- Breaking Bluetooth SDK change: `forgetWifiNetwork(ssid)` now returns `WifiForgetResult` instead of `WifiStatusChangeEvent`. Migrate status-only consumers to the semantic `outcome`; the requested network remains `ssid`, while optional post-command connectivity is reported by `connected`, `currentSsid`, and `localIp`."
|
|
11
15
|
},
|
|
12
16
|
{
|
|
13
17
|
"version": "3.1.1",
|
|
@@ -11,10 +11,10 @@ export interface BluetoothSdkReleaseMetadata {
|
|
|
11
11
|
|
|
12
12
|
export const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({
|
|
13
13
|
"schemaVersion": 1,
|
|
14
|
-
"familyBaseVersion": "3.
|
|
15
|
-
"releaseIdentity": "3.
|
|
16
|
-
"releaseSetId": "mentra-3.
|
|
17
|
-
"sourceCommit": "
|
|
18
|
-
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.
|
|
19
|
-
"otaManifestSha256": "
|
|
14
|
+
"familyBaseVersion": "3.3.0",
|
|
15
|
+
"releaseIdentity": "3.3.0-beta.942",
|
|
16
|
+
"releaseSetId": "mentra-3.3.0-beta.942",
|
|
17
|
+
"sourceCommit": "5c18d26dfc6feb9070d4705e36a38ae074e242b1",
|
|
18
|
+
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.3.0/mentra-live-ota-3.3.0-beta.942.json",
|
|
19
|
+
"otaManifestSha256": "94e1ba8266968b358748b30a6384882a6bc9df23aab38a01d786d448bdd044c9"
|
|
20
20
|
})
|
package/src/index.ts
CHANGED
|
@@ -131,6 +131,7 @@ export const BluetoothSdk: BluetoothSdkPublicModule = Object.freeze({
|
|
|
131
131
|
setGalleryModeEnabled: bindPublicMethod("setGalleryModeEnabled"),
|
|
132
132
|
setVoiceActivityDetectionEnabled: bindPublicMethod("setVoiceActivityDetectionEnabled"),
|
|
133
133
|
setLoudnessGateEnabled: bindPublicMethod("setLoudnessGateEnabled"),
|
|
134
|
+
setAutoPowerOffEnabled: bindPublicMethod("setAutoPowerOffEnabled"),
|
|
134
135
|
/**
|
|
135
136
|
* @deprecated Sticky action-button photo presets are deprecated. Prefer per-request
|
|
136
137
|
* `requestPhoto(...)` options (e.g. `mode: "text"` for text sensor size/crop, or explicit per-shot
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
// This public adapter is the package-owned boundary over its native implementation.
|
|
2
2
|
// eslint-disable-next-line no-restricted-imports
|
|
3
|
-
import MentraLocalNetwork from "../_private/MentraLocalNetworkModule"
|
|
3
|
+
import MentraLocalNetwork, {type NetworkDiagnostics} from "../_private/MentraLocalNetworkModule"
|
|
4
4
|
// eslint-disable-next-line no-restricted-imports
|
|
5
5
|
import MentraOtaServer from "../ota-server"
|
|
6
6
|
|
|
7
|
+
// eslint-disable-next-line no-restricted-imports
|
|
8
|
+
export type {
|
|
9
|
+
NetworkCapabilitiesDiagnostic,
|
|
10
|
+
NetworkDiagnostics,
|
|
11
|
+
NetworkObservation,
|
|
12
|
+
} from "../_private/MentraLocalNetworkModule"
|
|
13
|
+
|
|
7
14
|
export type OtaTransportSubscription = {remove(): void}
|
|
8
15
|
|
|
9
16
|
export type OtaLocalNetworkConnection = {
|
|
@@ -55,6 +62,8 @@ export type OtaServerResult = {
|
|
|
55
62
|
*/
|
|
56
63
|
export const otaLocalNetwork = Object.freeze({
|
|
57
64
|
isAvailable: (): boolean => MentraLocalNetwork != null,
|
|
65
|
+
/** Synchronous local observation; no network I/O, route changes or network identities. */
|
|
66
|
+
getNetworkDiagnostics: (): NetworkDiagnostics | null => MentraLocalNetwork?.getNetworkDiagnostics() ?? null,
|
|
58
67
|
connect: async (ssid: string, password: string): Promise<OtaLocalNetworkConnection> => {
|
|
59
68
|
if (!MentraLocalNetwork) throw new Error("Scoped local networking is not available in this native build")
|
|
60
69
|
return MentraLocalNetwork.connect(ssid, password)
|