@mentra/bluetooth-sdk 3.2.1-beta.407 → 3.2.1-beta.429
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/android/src/main/java/com/mentra/bluetoothsdk/GeneratedReleaseMetadata.kt +5 -5
- package/build/generated/releaseMetadata.js +5 -5
- package/build/generated/releaseMetadata.js.map +1 -1
- package/ios/Source/BluetoothSdkDefaults.swift +1 -1
- package/ios/Source/GeneratedReleaseMetadata.swift +5 -5
- package/ios/Source/sgcs/MentraLive.swift +3 -3
- package/ios/Tests/VideoRecordingCommandTests.swift +81 -0
- package/package.json +2 -2
- package/src/generated/releaseMetadata.ts +5 -5
|
@@ -3,9 +3,9 @@ package com.mentra.bluetoothsdk
|
|
|
3
3
|
/** Generated by release CI. Do not edit in a release checkout. */
|
|
4
4
|
internal object GeneratedReleaseMetadata {
|
|
5
5
|
const val FAMILY_BASE_VERSION: String = "3.2.1"
|
|
6
|
-
const val RELEASE_IDENTITY: String = "3.2.1-beta.
|
|
7
|
-
const val RELEASE_SET_ID: String = "mentra-3.2.1-beta.
|
|
8
|
-
const val SOURCE_COMMIT: String = "
|
|
9
|
-
const val OTA_MANIFEST_URL: String = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.
|
|
10
|
-
const val OTA_MANIFEST_SHA256: String = "
|
|
6
|
+
const val RELEASE_IDENTITY: String = "3.2.1-beta.429"
|
|
7
|
+
const val RELEASE_SET_ID: String = "mentra-3.2.1-beta.429"
|
|
8
|
+
const val SOURCE_COMMIT: String = "054d132d3517aa802d98af9735334728224fe6f4"
|
|
9
|
+
const val OTA_MANIFEST_URL: String = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.429.json"
|
|
10
|
+
const val OTA_MANIFEST_SHA256: String = "42762b98a7d0ed69c52ab89915a947bfd3db7c6caabc37a0986bf31d963a5df3"
|
|
11
11
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export const BLUETOOTH_SDK_RELEASE_METADATA = Object.freeze({
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"familyBaseVersion": "3.2.1",
|
|
4
|
-
"releaseIdentity": "3.2.1-beta.
|
|
5
|
-
"releaseSetId": "mentra-3.2.1-beta.
|
|
6
|
-
"sourceCommit": "
|
|
7
|
-
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.
|
|
8
|
-
"otaManifestSha256": "
|
|
4
|
+
"releaseIdentity": "3.2.1-beta.429",
|
|
5
|
+
"releaseSetId": "mentra-3.2.1-beta.429",
|
|
6
|
+
"sourceCommit": "054d132d3517aa802d98af9735334728224fe6f4",
|
|
7
|
+
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.429.json",
|
|
8
|
+
"otaManifestSha256": "42762b98a7d0ed69c52ab89915a947bfd3db7c6caabc37a0986bf31d963a5df3"
|
|
9
9
|
});
|
|
10
10
|
//# sourceMappingURL=releaseMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,8BAA8B,GAA0C,MAAM,CAAC,MAAM,CAAC;IACjG,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,kIAAkI;IACpJ,mBAAmB,EAAE,kEAAkE;CACxF,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface BluetoothSdkReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"3.2.1\",\n \"releaseIdentity\": \"3.2.1-beta.
|
|
1
|
+
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,8BAA8B,GAA0C,MAAM,CAAC,MAAM,CAAC;IACjG,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,kIAAkI;IACpJ,mBAAmB,EAAE,kEAAkE;CACxF,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface BluetoothSdkReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"3.2.1\",\n \"releaseIdentity\": \"3.2.1-beta.429\",\n \"releaseSetId\": \"mentra-3.2.1-beta.429\",\n \"sourceCommit\": \"054d132d3517aa802d98af9735334728224fe6f4\",\n \"otaManifestUrl\": \"https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.429.json\",\n \"otaManifestSha256\": \"42762b98a7d0ed69c52ab89915a947bfd3db7c6caabc37a0986bf31d963a5df3\"\n})\n"]}
|
|
@@ -16,7 +16,7 @@ enum BluetoothSdkDefaults {
|
|
|
16
16
|
/// silently disable it on every pair the app touches.
|
|
17
17
|
static let autoPowerOffEnabled = false
|
|
18
18
|
private static let infoSdkVersionKey = "MentraBluetoothSdkVersion"
|
|
19
|
-
private static let swiftPackageSdkVersion = "3.2.1-beta.
|
|
19
|
+
private static let swiftPackageSdkVersion = "3.2.1-beta.429"
|
|
20
20
|
private static let swiftPackageSdkVersionPlaceholder = "__MENTRA" + "_BLUETOOTH_SDK_VERSION__"
|
|
21
21
|
|
|
22
22
|
private static func normalizedSdkVersion(_ value: String?) -> String? {
|
|
@@ -3,9 +3,9 @@ import Foundation
|
|
|
3
3
|
/// Generated by release CI. Do not edit in a release checkout.
|
|
4
4
|
enum GeneratedReleaseMetadata {
|
|
5
5
|
static let familyBaseVersion = "3.2.1"
|
|
6
|
-
static let releaseIdentity = "3.2.1-beta.
|
|
7
|
-
static let releaseSetId = "mentra-3.2.1-beta.
|
|
8
|
-
static let sourceCommit = "
|
|
9
|
-
static let otaManifestUrl = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.
|
|
10
|
-
static let otaManifestSha256 = "
|
|
6
|
+
static let releaseIdentity = "3.2.1-beta.429"
|
|
7
|
+
static let releaseSetId = "mentra-3.2.1-beta.429"
|
|
8
|
+
static let sourceCommit = "054d132d3517aa802d98af9735334728224fe6f4"
|
|
9
|
+
static let otaManifestUrl = "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.429.json"
|
|
10
|
+
static let otaManifestSha256 = "42762b98a7d0ed69c52ab89915a947bfd3db7c6caabc37a0986bf31d963a5df3"
|
|
11
11
|
}
|
|
@@ -7484,7 +7484,7 @@ extension MentraLive {
|
|
|
7484
7484
|
if fps > 0 { settings["fps"] = fps }
|
|
7485
7485
|
json["settings"] = settings
|
|
7486
7486
|
}
|
|
7487
|
-
sendJson(json)
|
|
7487
|
+
sendJson(json, wakeUp: true)
|
|
7488
7488
|
}
|
|
7489
7489
|
|
|
7490
7490
|
func stopVideoRecording(requestId: String) {
|
|
@@ -7499,7 +7499,7 @@ extension MentraLive {
|
|
|
7499
7499
|
sendJson([
|
|
7500
7500
|
"type": "get_video_recording_status",
|
|
7501
7501
|
"requestId": requestId,
|
|
7502
|
-
])
|
|
7502
|
+
], wakeUp: true)
|
|
7503
7503
|
}
|
|
7504
7504
|
|
|
7505
7505
|
func stopVideoRecording(requestId: String, webhookUrl: String?, authToken: String?) {
|
|
@@ -7524,7 +7524,7 @@ extension MentraLive {
|
|
|
7524
7524
|
if let authToken, !authToken.isEmpty {
|
|
7525
7525
|
json["authToken"] = authToken
|
|
7526
7526
|
}
|
|
7527
|
-
sendJson(json)
|
|
7527
|
+
sendJson(json, wakeUp: true)
|
|
7528
7528
|
}
|
|
7529
7529
|
}
|
|
7530
7530
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
@testable import MentraBluetoothSDK
|
|
2
|
+
import XCTest
|
|
3
|
+
|
|
4
|
+
/// Replace the radio handoff while retaining public SDK dispatch and response handling.
|
|
5
|
+
@MainActor
|
|
6
|
+
private final class VideoRecordingCommandTransport: MentraLive {
|
|
7
|
+
var commands: [[String: Any]] = []
|
|
8
|
+
|
|
9
|
+
override func sendJson(_ jsonOriginal: [String: Any], wakeUp: Bool, requireAck: Bool) {
|
|
10
|
+
do {
|
|
11
|
+
let bytes = try JSONSerialization.data(withJSONObject: jsonOriginal)
|
|
12
|
+
let command = try XCTUnwrap(JSONSerialization.jsonObject(with: bytes) as? [String: Any])
|
|
13
|
+
let type = try XCTUnwrap(command["type"] as? String)
|
|
14
|
+
let requestId = try XCTUnwrap(command["requestId"] as? String)
|
|
15
|
+
commands.append(command)
|
|
16
|
+
XCTAssertTrue(wakeUp, "\(type) must wake the glasses before ASG can handle it")
|
|
17
|
+
XCTAssertTrue(requireAck)
|
|
18
|
+
|
|
19
|
+
let statuses = [
|
|
20
|
+
"start_video_recording": "recording_started",
|
|
21
|
+
"get_video_recording_status": "recording_status",
|
|
22
|
+
"stop_video_recording": "recording_stopped",
|
|
23
|
+
]
|
|
24
|
+
let status = try XCTUnwrap(statuses[type])
|
|
25
|
+
let response: [String: Any] = [
|
|
26
|
+
"type": "video_recording_status", "requestId": requestId,
|
|
27
|
+
"status": status, "success": true,
|
|
28
|
+
]
|
|
29
|
+
try processReceivedData(JSONSerialization.data(withJSONObject: response))
|
|
30
|
+
} catch {
|
|
31
|
+
XCTFail("Could not replay video recording command: \(error)")
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@MainActor
|
|
37
|
+
final class VideoRecordingCommandTests: XCTestCase {
|
|
38
|
+
func testStartStatusAndStopWakeGlassesThroughPublicSDK() async throws {
|
|
39
|
+
let previous = DeviceManager.shared.sgc
|
|
40
|
+
let store = DeviceStore.shared.store
|
|
41
|
+
let savedConnected = store.getCategory("glasses")["connected"]
|
|
42
|
+
let transport = VideoRecordingCommandTransport()
|
|
43
|
+
transport.connectionState = ConnTypes.CONNECTED
|
|
44
|
+
DeviceManager.shared.sgc = transport
|
|
45
|
+
DeviceStore.shared.apply("glasses", "connected", true)
|
|
46
|
+
let sdk = MentraBluetoothSDK()
|
|
47
|
+
defer {
|
|
48
|
+
sdk.invalidate()
|
|
49
|
+
DeviceManager.shared.sgc = previous
|
|
50
|
+
if let savedConnected {
|
|
51
|
+
store.set("glasses", "connected", savedConnected)
|
|
52
|
+
} else {
|
|
53
|
+
store.remove("glasses", "connected")
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let requestId = "idle-recording"
|
|
58
|
+
let started = try await sdk.startVideoRecording(VideoRecordingRequest(
|
|
59
|
+
requestId: requestId, save: true, sound: false,
|
|
60
|
+
width: 1280, height: 720, fps: 30, maxRecordingTimeMinutes: 2
|
|
61
|
+
))
|
|
62
|
+
XCTAssertEqual(started.status, "recording_started")
|
|
63
|
+
XCTAssertEqual(started.requestId, requestId)
|
|
64
|
+
let start = try XCTUnwrap(transport.commands.last)
|
|
65
|
+
XCTAssertEqual(start["save"] as? Bool, true)
|
|
66
|
+
XCTAssertEqual(start["sound"] as? Bool, false)
|
|
67
|
+
XCTAssertEqual(start["settings"] as? [String: Int], ["width": 1280, "height": 720, "fps": 30])
|
|
68
|
+
XCTAssertEqual(start["maxRecordingTimeMinutes"] as? Int, 2)
|
|
69
|
+
|
|
70
|
+
let status = try await sdk.queryVideoRecordingStatus(requestId: requestId)
|
|
71
|
+
XCTAssertEqual(status.status, "recording_status")
|
|
72
|
+
XCTAssertEqual(status.requestId, requestId)
|
|
73
|
+
|
|
74
|
+
let stopped = try await sdk.stopVideoRecording(requestId: requestId)
|
|
75
|
+
XCTAssertEqual(stopped.status, "recording_stopped")
|
|
76
|
+
XCTAssertEqual(stopped.requestId, requestId)
|
|
77
|
+
XCTAssertEqual(transport.commands.compactMap { $0["type"] as? String }, [
|
|
78
|
+
"start_video_recording", "get_video_recording_status", "stop_video_recording",
|
|
79
|
+
])
|
|
80
|
+
}
|
|
81
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mentra/bluetooth-sdk",
|
|
3
|
-
"version": "3.2.1-beta.
|
|
3
|
+
"version": "3.2.1-beta.429",
|
|
4
4
|
"description": "SDK for communicating with smart glasses",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"react-native": "src/index.ts",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"registry": "https://registry.npmjs.org/"
|
|
115
115
|
},
|
|
116
116
|
"dependencies": {
|
|
117
|
-
"@mentra/cloud-protocol": "3.2.1-beta.
|
|
117
|
+
"@mentra/cloud-protocol": "3.2.1-beta.429"
|
|
118
118
|
},
|
|
119
119
|
"devDependencies": {
|
|
120
120
|
"@types/node": "^25.9.3",
|
|
@@ -12,9 +12,9 @@ export interface BluetoothSdkReleaseMetadata {
|
|
|
12
12
|
export const BLUETOOTH_SDK_RELEASE_METADATA: Readonly<BluetoothSdkReleaseMetadata> = Object.freeze({
|
|
13
13
|
"schemaVersion": 1,
|
|
14
14
|
"familyBaseVersion": "3.2.1",
|
|
15
|
-
"releaseIdentity": "3.2.1-beta.
|
|
16
|
-
"releaseSetId": "mentra-3.2.1-beta.
|
|
17
|
-
"sourceCommit": "
|
|
18
|
-
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.
|
|
19
|
-
"otaManifestSha256": "
|
|
15
|
+
"releaseIdentity": "3.2.1-beta.429",
|
|
16
|
+
"releaseSetId": "mentra-3.2.1-beta.429",
|
|
17
|
+
"sourceCommit": "054d132d3517aa802d98af9735334728224fe6f4",
|
|
18
|
+
"otaManifestUrl": "https://artifactscdn.mentraglass.com/Mentra-Community/MentraOS/releases/mentra-builds-v3.2.1/mentra-live-ota-3.2.1-beta.429.json",
|
|
19
|
+
"otaManifestSha256": "42762b98a7d0ed69c52ab89915a947bfd3db7c6caabc37a0986bf31d963a5df3"
|
|
20
20
|
})
|