@mentra/bluetooth-sdk 0.1.20 → 0.1.21-beta.1
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 +27 -12
- package/android/build.gradle +3 -0
- package/android/src/main/AndroidManifest.xml +3 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkAnalytics.kt +34 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkDefaults.kt +1 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/BluetoothSdkModule.kt +169 -26
- package/android/src/main/java/com/mentra/bluetoothsdk/Bridge.kt +72 -16
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceManager.kt +127 -8
- package/android/src/main/java/com/mentra/bluetoothsdk/DeviceStore.kt +4 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraBluetoothSdk.kt +400 -99
- package/android/src/main/java/com/mentra/bluetoothsdk/MentraLocalNetworkModule.kt +333 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/OtaManifest.kt +43 -3
- package/android/src/main/java/com/mentra/bluetoothsdk/camera/CameraModels.kt +18 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/debug/BleTraceLogger.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/services/Foreground.kt +53 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Ar99.java +2653 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G1.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/G2.kt +16 -9
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Mach1.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraLive.kt +342 -42
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/MentraNex.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Nimo.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/SGCManager.kt +7 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/Simulated.kt +1 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/Ar99OtaManager.java +566 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/OtaByteUtils.java +18 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/OtaCommandConstants.java +35 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/OtaCrc32Util.java +13 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/OtaGattTransport.java +11 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/sgcs/ar99/ota/OtaProtocol.java +92 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/status/WifiHotspotStatus.kt +19 -3
- package/android/src/main/java/com/mentra/bluetoothsdk/streaming/StreamModels.kt +52 -2
- package/android/src/main/java/com/mentra/bluetoothsdk/tts/TTSTools.kt +115 -47
- package/android/src/main/java/com/mentra/bluetoothsdk/types/DeviceModels.kt +7 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/BleJsonCompact.java +8 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/Constants.kt +2 -1
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/PhoneAudioMonitor.kt +45 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/Ar99OpusPcmDecoder.java +398 -0
- package/android/src/main/java/com/mentra/bluetoothsdk/utils/audio/PcmStreamPlayer.kt +328 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/OtaManifestDowngradeTest.kt +86 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/StreamStatusEventTest.kt +29 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/camera/PhotoRequestTest.kt +45 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/sgcs/Ar99AdvertisementMatcherTest.java +22 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/utils/BleJsonCompactTest.java +20 -0
- package/android/src/test/java/com/mentra/bluetoothsdk/utils/PhoneAudioMonitorTest.kt +45 -0
- package/build/BluetoothSdk.types.d.ts +100 -22
- package/build/BluetoothSdk.types.d.ts.map +1 -1
- package/build/BluetoothSdk.types.js +2 -1
- package/build/BluetoothSdk.types.js.map +1 -1
- package/build/_internal.d.ts +3 -0
- package/build/_internal.d.ts.map +1 -1
- package/build/_internal.js +3 -0
- package/build/_internal.js.map +1 -1
- package/build/_private/BluetoothSdkModule.d.ts +31 -4
- package/build/_private/BluetoothSdkModule.d.ts.map +1 -1
- package/build/_private/BluetoothSdkModule.js +26 -3
- package/build/_private/BluetoothSdkModule.js.map +1 -1
- package/build/_private/MentraLocalNetworkModule.d.ts +37 -0
- package/build/_private/MentraLocalNetworkModule.d.ts.map +1 -0
- package/build/_private/MentraLocalNetworkModule.js +3 -0
- package/build/_private/MentraLocalNetworkModule.js.map +1 -0
- package/build/_private/cameraRequestPayload.d.ts +1 -1
- package/build/_private/cameraRequestPayload.d.ts.map +1 -1
- package/build/_private/cameraRequestPayload.js +7 -0
- package/build/_private/cameraRequestPayload.js.map +1 -1
- package/build/_private/photoRequestPayload.d.ts.map +1 -1
- package/build/_private/photoRequestPayload.js +10 -0
- package/build/_private/photoRequestPayload.js.map +1 -1
- package/build/_private/sdkOtaManifest.d.ts +20 -0
- package/build/_private/sdkOtaManifest.d.ts.map +1 -0
- package/build/_private/sdkOtaManifest.js +28 -0
- package/build/_private/sdkOtaManifest.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +11 -1
- package/build/index.js.map +1 -1
- package/expo-module.config.json +1 -0
- package/ios/BluetoothSdkModule.swift +113 -2
- package/ios/Source/BluetoothSdkDefaults.swift +2 -1
- package/ios/Source/Bridge.swift +87 -21
- package/ios/Source/DeviceManager.swift +118 -20
- package/ios/Source/DeviceStore.swift +4 -0
- package/ios/Source/MentraBluetoothSDK.swift +326 -33
- package/ios/Source/OtaManifest.swift +47 -4
- package/ios/Source/audio/PcmStreamPlayer.swift +410 -0
- package/ios/Source/camera/CameraModels.swift +26 -6
- package/ios/Source/internal/BleTraceLogger.swift +1 -1
- package/ios/Source/internal/BluetoothSdkAnalytics.swift +39 -0
- package/ios/Source/sgcs/Ar99.swift +2451 -0
- package/ios/Source/sgcs/G1.swift +1 -1
- package/ios/Source/sgcs/G2.swift +19 -7
- package/ios/Source/sgcs/Mach1.swift +1 -1
- package/ios/Source/sgcs/MentraLive.swift +478 -61
- package/ios/Source/sgcs/MentraNex.swift +1 -1
- package/ios/Source/sgcs/Nimo.swift +1 -1
- package/ios/Source/sgcs/SGCManager.swift +13 -2
- package/ios/Source/sgcs/Simulated.swift +1 -1
- package/ios/Source/sgcs/ar99/ota/Ar99OtaManager.swift +637 -0
- package/ios/Source/status/WifiHotspotStatus.swift +21 -2
- package/ios/Source/streaming/StreamModels.swift +68 -2
- package/ios/Source/tts/TTSTools.swift +1 -1
- package/ios/Source/types/DeviceModels.swift +13 -0
- package/ios/Source/utils/BleJsonCompact.swift +8 -0
- package/ios/Source/utils/Constants.swift +2 -0
- package/ios/Source/utils/PhoneAudioMonitor.swift +4 -0
- package/package.json +1 -2
- package/src/BluetoothSdk.types.ts +106 -24
- package/src/_internal.ts +3 -0
- package/src/_private/BluetoothSdkModule.ts +83 -18
- package/src/_private/MentraLocalNetworkModule.ts +50 -0
- package/src/_private/cameraRequestPayload.ts +9 -2
- package/src/_private/photoRequestPayload.ts +13 -4
- package/src/_private/sdkOtaManifest.ts +31 -0
- package/src/index.ts +13 -1
|
@@ -575,16 +575,18 @@ private object DevSettingsProto {
|
|
|
575
575
|
/// TimeSync submessage: f1 = (Unix seconds + TZ offset seconds) as Int32, no TZ field.
|
|
576
576
|
/// Firmware appears to ignore the TZ field, so we pre-shift the timestamp itself
|
|
577
577
|
/// to make UTC interpretation read as local. Empirically confirmed via probe variants in dbg1().
|
|
578
|
-
fun timeSync(
|
|
578
|
+
fun timeSync(
|
|
579
|
+
magicRandom: Int,
|
|
580
|
+
timestampMs: Long = System.currentTimeMillis()
|
|
581
|
+
): ByteArray {
|
|
579
582
|
val w = ProtobufWriter()
|
|
580
583
|
w.writeInt32Field(1, DevCfgCommandId.TIME_SYNC.value)
|
|
581
584
|
w.writeInt32Field(2, magicRandom)
|
|
582
585
|
|
|
583
586
|
val tsW = ProtobufWriter()
|
|
584
|
-
val
|
|
585
|
-
val
|
|
586
|
-
|
|
587
|
-
tsW.writeInt32Field(1, (nowSec + tzSec).toInt())
|
|
587
|
+
val timestampSec = timestampMs / 1000
|
|
588
|
+
val tzSec = (TimeZone.getDefault().getOffset(timestampMs) / 1000).toLong()
|
|
589
|
+
tsW.writeInt32Field(1, (timestampSec + tzSec).toInt())
|
|
588
590
|
w.writeMessageField(128, tsW.toByteArray())
|
|
589
591
|
return w.toByteArray()
|
|
590
592
|
}
|
|
@@ -1707,7 +1709,7 @@ class G2 : SGCManager() {
|
|
|
1707
1709
|
payload = payload,
|
|
1708
1710
|
reserveFlag = true
|
|
1709
1711
|
)
|
|
1710
|
-
sendToGlasses(packets)
|
|
1712
|
+
sendToGlasses(packets, left = true, right = true)
|
|
1711
1713
|
}
|
|
1712
1714
|
|
|
1713
1715
|
// ---------- Authentication Sequence ----------
|
|
@@ -1732,7 +1734,7 @@ class G2 : SGCManager() {
|
|
|
1732
1734
|
|
|
1733
1735
|
delay(200)
|
|
1734
1736
|
val timeSync = DevSettingsProto.timeSync(sendManager.nextMagicRandom())
|
|
1735
|
-
sendDevSettingsCommand(timeSync)
|
|
1737
|
+
sendDevSettingsCommand(timeSync, left = true, right = true)
|
|
1736
1738
|
|
|
1737
1739
|
// Skip onboarding on connect
|
|
1738
1740
|
delay(200)
|
|
@@ -3763,7 +3765,12 @@ class G2 : SGCManager() {
|
|
|
3763
3765
|
/// time-zone travel, or a long sleep where the glasses' clock has drifted.
|
|
3764
3766
|
fun syncTime() {
|
|
3765
3767
|
Bridge.log("G2: syncTime()")
|
|
3766
|
-
|
|
3768
|
+
sendSetSystemTime(System.currentTimeMillis())
|
|
3769
|
+
}
|
|
3770
|
+
|
|
3771
|
+
override fun sendSetSystemTime(timestampMs: Long) {
|
|
3772
|
+
Bridge.log("G2: sendSetSystemTime()")
|
|
3773
|
+
val msg = DevSettingsProto.timeSync(sendManager.nextMagicRandom(), timestampMs)
|
|
3767
3774
|
sendDevSettingsCommand(msg, left = true, right = true)
|
|
3768
3775
|
}
|
|
3769
3776
|
|
|
@@ -3782,7 +3789,7 @@ class G2 : SGCManager() {
|
|
|
3782
3789
|
|
|
3783
3790
|
// ---------- SGCManager: Network (G2 has no WiFi) ----------
|
|
3784
3791
|
|
|
3785
|
-
override fun requestWifiScan() {}
|
|
3792
|
+
override fun requestWifiScan(scanId: String?) {}
|
|
3786
3793
|
override fun sendWifiCredentials(ssid: String, password: String) {}
|
|
3787
3794
|
override fun forgetWifiNetwork(ssid: String) {}
|
|
3788
3795
|
override fun sendHotspotState(enabled: Boolean) {}
|