@mentra/engine 3.2.1-dev.293 → 3.2.1-dev.294

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.
@@ -76,6 +76,8 @@ export declare class ManagedWebRtcRelay implements ManagedRelay {
76
76
  private attemptError;
77
77
  private hotspotTouched;
78
78
  private nativeTouched;
79
+ private preparing;
80
+ private prepareStop;
79
81
  private glassesTouched;
80
82
  private release;
81
83
  private listener;
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedWebRtcRelay.d.ts","sourceRoot":"","sources":["../../src/services/ManagedWebRtcRelay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManagedWebRtcRelay.d.ts","sourceRoot":"","sources":["../../src/services/ManagedWebRtcRelay.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export class ManagedWebRtcRelay {
14
14
  attemptError = null;
15
15
  hotspotTouched = false;
16
16
  nativeTouched = false;
17
+ preparing = false;
18
+ prepareStop = null;
17
19
  glassesTouched = false;
18
20
  release = null;
19
21
  listener = null;
@@ -49,6 +51,13 @@ export class ManagedWebRtcRelay {
49
51
  }
50
52
  cancel() {
51
53
  this.cancelled = true;
54
+ if (this.preparing && this.attemptId && !this.prepareStop) {
55
+ // Local Network permission can wait indefinitely. Interrupt this owned prepare
56
+ // before the coordinator's transition lock can reach stop(). Native stop rejects
57
+ // prepare and resolves only after its peers and hotspot join have been released.
58
+ this.prepareStop = this.deps.native.stop(this.attemptId);
59
+ void this.prepareStop.catch(() => undefined); // stop() awaits and reports cleanup failure.
60
+ }
52
61
  }
53
62
  owns(streamId) {
54
63
  // Consume late status from all attempts without allowing it to affect the current attempt.
@@ -84,16 +93,23 @@ export class ManagedWebRtcRelay {
84
93
  await this.deps.sleep(3_000); // Same beacon/DHCP startup allowance as ACS.
85
94
  this.checkpoint();
86
95
  this.nativeTouched = true;
87
- const url = await this.deps.native.prepare({
88
- attemptId: this.attemptId,
89
- ingestUrl: this.options.ingestUrl,
90
- ssid: hotspot.ssid,
91
- password: hotspot.password,
92
- gatewayAddress: hotspot.localIp,
93
- captureAudio,
94
- audioTransport: lc3 ? "ble-lc3" : captureAudio ? "whip" : "none",
95
- bitrate: this.options.video?.bitrate ?? 2_000_000,
96
- });
96
+ this.preparing = true;
97
+ let url;
98
+ try {
99
+ url = await this.deps.native.prepare({
100
+ attemptId: this.attemptId,
101
+ ingestUrl: this.options.ingestUrl,
102
+ ssid: hotspot.ssid,
103
+ password: hotspot.password,
104
+ gatewayAddress: hotspot.localIp,
105
+ captureAudio,
106
+ audioTransport: lc3 ? "ble-lc3" : captureAudio ? "whip" : "none",
107
+ bitrate: this.options.video?.bitrate ?? 2_000_000,
108
+ });
109
+ }
110
+ finally {
111
+ this.preparing = false;
112
+ }
97
113
  this.checkpoint();
98
114
  if (lc3) {
99
115
  const id = this.attemptId;
@@ -197,14 +213,15 @@ export class ManagedWebRtcRelay {
197
213
  return this.stopping;
198
214
  this.listener?.remove();
199
215
  this.listener = null;
200
- this.stopping = this.operation
201
- .catch(() => undefined)
216
+ this.stopping = Promise.resolve(this.prepareStop)
217
+ .then(() => this.operation.catch(() => undefined))
202
218
  .then(async () => {
203
219
  await this.cleanupAttempt();
204
220
  this.release?.();
205
221
  this.release = null;
206
222
  })
207
223
  .finally(() => {
224
+ this.prepareStop = null;
208
225
  this.stopping = null;
209
226
  });
210
227
  return this.stopping;
@@ -238,7 +255,7 @@ export class ManagedWebRtcRelay {
238
255
  });
239
256
  if (this.nativeTouched && id)
240
257
  await step(async () => {
241
- await this.deps.native.stop(id);
258
+ await (this.prepareStop ?? this.deps.native.stop(id));
242
259
  this.nativeTouched = false;
243
260
  });
244
261
  if (this.hotspotTouched)
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedWebRtcRelay.js","sourceRoot":"","sources":["../../src/services/ManagedWebRtcRelay.ts"],"names":[],"mappings":"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","sourcesContent":["import BluetoothSdk from \"@mentra/bluetooth-sdk/internal\"\nimport type {StreamStartRequest, StreamStatusEvent} from \"@mentra/bluetooth-sdk/internal\"\nimport {acquireGlassesHotspot} from \"./GlassesHotspotLease\"\nimport {pcmToBase64} from \"../utils/pcmToBase64\"\n\nexport interface RelayOptions {\n streamId: string\n ingestUrl: string\n video?: StreamStartRequest[\"video\"]\n audio?: StreamStartRequest[\"audio\"]\n captureAudio?: boolean\n sound?: boolean\n}\n\ninterface NativeRelayEvent {\n attemptId: string\n state: string\n reason: string\n}\ninterface NativeRelay {\n prepare(options: {\n attemptId: string\n ingestUrl: string\n ssid: string\n password: string\n gatewayAddress?: string\n captureAudio: boolean\n audioTransport: \"whip\" | \"ble-lc3\" | \"none\"\n bitrate: number\n }): Promise<string>\n stop(attemptId: string): Promise<void>\n pushOutgoingPcm?(attemptId: string, base64: string, sampleRate: number, channels: number): boolean\n addListener(event: \"onRelayState\", listener: (event: NativeRelayEvent) => void): {remove(): void}\n}\n\nexport interface RelayDependencies {\n native: NativeRelay\n hotspot(enabled: boolean): Promise<{state: string; ssid?: string; password?: string; localIp?: string}>\n startGlasses(request: StreamStartRequest): Promise<StreamStatusEvent | undefined>\n stopGlasses(): Promise<unknown>\n deferredStop(): void\n connected(): boolean\n sleep(ms: number): Promise<void>\n now(): number\n acquire(): () => void\n /** Present only on hosts that can pin and decode the glasses' BLE microphone, as ACS does. */\n microphone?: {\n acquire(): () => void\n subscribe(listener: (event: {pcm?: ArrayBuffer; sampleRate?: number; source?: string}) => void): {remove(): void}\n }\n}\n\nexport interface ManagedRelay {\n start(): Promise<StreamStatusEvent | undefined>\n cancel(): void\n stop(): Promise<void>\n owns(streamId: string): boolean\n handleGlassesStatus(event: StreamStatusEvent): void\n}\n\n/** One attempt at a time; video stays native. All retries unwind both peers, mic and hotspot. */\nexport class ManagedWebRtcRelay implements ManagedRelay {\n private cancelled = false\n private started = false\n private attempt = 0\n private attemptId: string | null = null\n private attemptError: Error | null = null\n private hotspotTouched = false\n private nativeTouched = false\n private glassesTouched = false\n private release: (() => void) | null = null\n private listener: {remove(): void} | null = null\n private operation: Promise<unknown> = Promise.resolve()\n private restarting = false\n private retries = 0\n private readyAt: number | null = null\n private stopping: Promise<void> | null = null\n private releaseMic: (() => void) | null = null\n private micListener: {remove(): void} | null = null\n\n constructor(\n private readonly options: RelayOptions,\n private readonly onStatus: (status: string, reason: string) => void,\n private readonly onFailure: (error: Error) => void,\n private readonly deps: RelayDependencies,\n ) {}\n\n start(): Promise<StreamStatusEvent | undefined> {\n if (this.started) return Promise.reject(new Error(\"Relay already started\"))\n this.started = true\n this.release = this.deps.acquire()\n this.listener = this.deps.native.addListener(\"onRelayState\", (event) => {\n if (event.attemptId !== this.attemptId || this.cancelled) return\n if (event.state === \"failed\") this.failed(new Error(event.reason))\n else this.onStatus(event.state, event.reason)\n })\n const start = this.startAttempt()\n this.operation = start\n return start\n }\n\n cancel(): void {\n this.cancelled = true\n }\n\n owns(streamId: string): boolean {\n // Consume late status from all attempts without allowing it to affect the current attempt.\n return streamId.startsWith(`${this.options.streamId}-relay-`)\n }\n\n handleGlassesStatus(event: StreamStatusEvent): void {\n if (event.streamId !== this.attemptId || this.cancelled) return\n if (event.status === \"stopped\" || event.terminal) {\n this.failed(new Error(\"Glasses publisher stopped\"))\n }\n }\n\n private checkpoint(): void {\n if (this.cancelled) throw new Error(\"Relay cancelled\")\n if (this.attemptError) throw this.attemptError\n }\n\n private async startAttempt(): Promise<StreamStatusEvent | undefined> {\n this.attemptId = `${this.options.streamId}-relay-${++this.attempt}`\n this.attemptError = null\n this.checkpoint()\n const captureAudio = this.options.captureAudio !== false\n const lc3 = captureAudio && !!this.deps.microphone && typeof this.deps.native.pushOutgoingPcm === \"function\"\n // Claim through the same policy/ownership layer as ACS before turning off WHIP audio.\n if (lc3) this.releaseMic = this.deps.microphone!.acquire()\n this.hotspotTouched = true // A timed-out BLE command may still have enabled the AP.\n const hotspot = await this.deps.hotspot(true)\n this.checkpoint()\n if (hotspot.state !== \"enabled\" || !hotspot.ssid || !hotspot.password)\n throw new Error(\"Glasses hotspot did not start\")\n await this.deps.sleep(3_000) // Same beacon/DHCP startup allowance as ACS.\n this.checkpoint()\n this.nativeTouched = true\n const url = await this.deps.native.prepare({\n attemptId: this.attemptId,\n ingestUrl: this.options.ingestUrl,\n ssid: hotspot.ssid,\n password: hotspot.password,\n gatewayAddress: hotspot.localIp,\n captureAudio,\n audioTransport: lc3 ? \"ble-lc3\" : captureAudio ? \"whip\" : \"none\",\n bitrate: this.options.video?.bitrate ?? 2_000_000,\n })\n this.checkpoint()\n if (lc3) {\n const id = this.attemptId\n let received = false\n this.micListener = this.deps.microphone!.subscribe((event) => {\n if (this.cancelled || this.attemptId !== id || this.attemptError) return\n if (event.source !== \"glasses\") {\n this.failed(new Error(\"Managed stream lost the glasses microphone\"))\n return\n }\n if (!event.pcm?.byteLength) return\n try {\n const accepted = this.deps.native.pushOutgoingPcm!(id, pcmToBase64(event.pcm), event.sampleRate ?? 16000, 1)\n if (accepted && !received) {\n received = true\n console.log(\"[ManagedRelay] First BLE LC3 audio frame\", {\n attemptId: id,\n sampleRate: event.sampleRate ?? 16000,\n })\n }\n } catch (error) {\n this.failed(asError(error))\n }\n })\n }\n this.glassesTouched = true\n const result = await this.deps.startGlasses({\n type: \"start_stream\",\n streamId: this.attemptId,\n streamUrl: url,\n ice: {stun: \"\"},\n sound: this.options.sound ?? true,\n captureAudio: captureAudio && !lc3,\n ...(this.options.video !== undefined ? {video: this.options.video} : {}),\n ...(this.options.audio !== undefined ? {audio: this.options.audio} : {}),\n })\n this.checkpoint()\n this.readyAt = this.deps.now()\n return result\n }\n\n private failed(error: Error): void {\n if (this.cancelled || this.attemptError) return\n this.attemptError = error\n // Bound consecutive trouble, not the lifetime number of recoveries in a long stream.\n if (this.readyAt !== null && this.deps.now() - this.readyAt >= 60_000) this.retries = 0\n this.readyAt = null\n if (this.restarting) return\n this.restarting = true\n // Await startup before cleanup: late native/BLE success still belongs to this attempt.\n this.operation = this.operation\n .catch(() => undefined)\n .then(async () => {\n while (!this.cancelled) {\n try {\n await this.cleanupAttempt()\n if (this.cancelled) return\n if (this.retries >= 3) throw error\n this.onStatus(\"reconnecting\", error.message)\n await this.deps.sleep(1_000 * 2 ** this.retries++)\n if (this.cancelled) return\n await this.startAttempt()\n this.onStatus(\"reconnected\", \"Glasses relay restarted\")\n return\n } catch (failure) {\n // Cleanup failure retains ownership; never create another stream on uncertain state.\n if (this.hotspotTouched || this.nativeTouched || this.glassesTouched) {\n try {\n await this.cleanupAttempt()\n } catch (cleanupError) {\n if (!this.cancelled) this.onFailure(asError(cleanupError))\n return\n }\n }\n if (this.retries >= 3) {\n if (!this.cancelled) this.onFailure(asError(failure))\n return\n }\n }\n }\n })\n .finally(() => {\n this.restarting = false\n })\n }\n\n stop(): Promise<void> {\n this.cancel()\n if (this.stopping) return this.stopping\n this.listener?.remove()\n this.listener = null\n this.stopping = this.operation\n .catch(() => undefined)\n .then(async () => {\n await this.cleanupAttempt()\n this.release?.()\n this.release = null\n })\n .finally(() => {\n this.stopping = null\n })\n return this.stopping\n }\n\n private async cleanupAttempt(): Promise<void> {\n const failures: unknown[] = []\n const step = async (action: () => Promise<void>) => {\n try {\n await action()\n } catch (error) {\n failures.push(error)\n }\n }\n // Invalidate callbacks before intentionally stopping the glasses or dropping the network.\n const id = this.attemptId\n this.attemptId = null\n await step(async () => {\n this.micListener?.remove()\n this.micListener = null\n this.releaseMic?.()\n this.releaseMic = null\n })\n if (this.glassesTouched)\n await step(async () => {\n if (this.deps.connected()) await this.deps.stopGlasses()\n else this.deps.deferredStop()\n this.glassesTouched = false\n })\n if (this.nativeTouched && id)\n await step(async () => {\n await this.deps.native.stop(id)\n this.nativeTouched = false\n })\n if (this.hotspotTouched)\n await step(async () => {\n if (this.deps.connected()) {\n const result = await this.deps.hotspot(false)\n if (result.state !== \"disabled\") throw new Error(\"Glasses hotspot shutdown was not confirmed\")\n } else this.deps.deferredStop()\n this.hotspotTouched = false\n })\n if (failures.length) {\n this.attemptId = id // Retain the native attempt token for a subsequent cleanup retry.\n throw new Error(`Relay cleanup failed: ${failures.map((error) => asError(error).message).join(\"; \")}`)\n }\n }\n}\n\nfunction asError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error))\n}\n\nexport function createManagedWebRtcRelay(\n options: RelayOptions,\n onStatus: (status: string, reason: string) => void,\n onFailure: (error: Error) => void,\n connected: () => boolean,\n deferredStop: () => void,\n): ManagedRelay {\n // Load only for managed WHIP. Hosts using direct SRT/RTMP need no relay module.\n const {requireNativeModule} = require(\"expo-modules-core\") as typeof import(\"expo-modules-core\")\n const {BgTimer} = require(\"../utils/timers\") as typeof import(\"../utils/timers\")\n const native = requireNativeModule<NativeRelay>(\"MentraGlassesMediaRelay\")\n const {Platform} = require(\"react-native\") as typeof import(\"react-native\")\n const {default: micSessionManager} = require(\"./MicSessionManager\") as typeof import(\"./MicSessionManager\")\n return new ManagedWebRtcRelay(options, onStatus, onFailure, {\n native,\n hotspot: (enabled) => BluetoothSdk.setHotspotState(enabled),\n startGlasses: (request) => BluetoothSdk.startStream(request),\n stopGlasses: () => BluetoothSdk.stopStream(),\n connected,\n deferredStop,\n now: Date.now,\n sleep: (ms) => new Promise((resolve) => BgTimer.setTimeout(resolve, ms)),\n acquire: acquireGlassesHotspot,\n ...(Platform.OS === \"android\" && typeof BluetoothSdk.setMicSourcePin === \"function\"\n ? {\n microphone: {\n acquire: () =>\n micSessionManager.acquire({\n owner: `engine:managed-relay:${options.streamId}`,\n source: \"glasses\",\n useCase: \"livestream\",\n }).release,\n subscribe: (listener) => BluetoothSdk.addListener(\"mic_pcm\", listener),\n },\n }\n : {}),\n })\n}\n"]}
1
+ {"version":3,"file":"ManagedWebRtcRelay.js","sourceRoot":"","sources":["../../src/services/ManagedWebRtcRelay.ts"],"names":[],"mappings":"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","sourcesContent":["import BluetoothSdk from \"@mentra/bluetooth-sdk/internal\"\nimport type {StreamStartRequest, StreamStatusEvent} from \"@mentra/bluetooth-sdk/internal\"\nimport {acquireGlassesHotspot} from \"./GlassesHotspotLease\"\nimport {pcmToBase64} from \"../utils/pcmToBase64\"\n\nexport interface RelayOptions {\n streamId: string\n ingestUrl: string\n video?: StreamStartRequest[\"video\"]\n audio?: StreamStartRequest[\"audio\"]\n captureAudio?: boolean\n sound?: boolean\n}\n\ninterface NativeRelayEvent {\n attemptId: string\n state: string\n reason: string\n}\ninterface NativeRelay {\n prepare(options: {\n attemptId: string\n ingestUrl: string\n ssid: string\n password: string\n gatewayAddress?: string\n captureAudio: boolean\n audioTransport: \"whip\" | \"ble-lc3\" | \"none\"\n bitrate: number\n }): Promise<string>\n stop(attemptId: string): Promise<void>\n pushOutgoingPcm?(attemptId: string, base64: string, sampleRate: number, channels: number): boolean\n addListener(event: \"onRelayState\", listener: (event: NativeRelayEvent) => void): {remove(): void}\n}\n\nexport interface RelayDependencies {\n native: NativeRelay\n hotspot(enabled: boolean): Promise<{state: string; ssid?: string; password?: string; localIp?: string}>\n startGlasses(request: StreamStartRequest): Promise<StreamStatusEvent | undefined>\n stopGlasses(): Promise<unknown>\n deferredStop(): void\n connected(): boolean\n sleep(ms: number): Promise<void>\n now(): number\n acquire(): () => void\n /** Present only on hosts that can pin and decode the glasses' BLE microphone, as ACS does. */\n microphone?: {\n acquire(): () => void\n subscribe(listener: (event: {pcm?: ArrayBuffer; sampleRate?: number; source?: string}) => void): {remove(): void}\n }\n}\n\nexport interface ManagedRelay {\n start(): Promise<StreamStatusEvent | undefined>\n cancel(): void\n stop(): Promise<void>\n owns(streamId: string): boolean\n handleGlassesStatus(event: StreamStatusEvent): void\n}\n\n/** One attempt at a time; video stays native. All retries unwind both peers, mic and hotspot. */\nexport class ManagedWebRtcRelay implements ManagedRelay {\n private cancelled = false\n private started = false\n private attempt = 0\n private attemptId: string | null = null\n private attemptError: Error | null = null\n private hotspotTouched = false\n private nativeTouched = false\n private preparing = false\n private prepareStop: Promise<void> | null = null\n private glassesTouched = false\n private release: (() => void) | null = null\n private listener: {remove(): void} | null = null\n private operation: Promise<unknown> = Promise.resolve()\n private restarting = false\n private retries = 0\n private readyAt: number | null = null\n private stopping: Promise<void> | null = null\n private releaseMic: (() => void) | null = null\n private micListener: {remove(): void} | null = null\n\n constructor(\n private readonly options: RelayOptions,\n private readonly onStatus: (status: string, reason: string) => void,\n private readonly onFailure: (error: Error) => void,\n private readonly deps: RelayDependencies,\n ) {}\n\n start(): Promise<StreamStatusEvent | undefined> {\n if (this.started) return Promise.reject(new Error(\"Relay already started\"))\n this.started = true\n this.release = this.deps.acquire()\n this.listener = this.deps.native.addListener(\"onRelayState\", (event) => {\n if (event.attemptId !== this.attemptId || this.cancelled) return\n if (event.state === \"failed\") this.failed(new Error(event.reason))\n else this.onStatus(event.state, event.reason)\n })\n const start = this.startAttempt()\n this.operation = start\n return start\n }\n\n cancel(): void {\n this.cancelled = true\n if (this.preparing && this.attemptId && !this.prepareStop) {\n // Local Network permission can wait indefinitely. Interrupt this owned prepare\n // before the coordinator's transition lock can reach stop(). Native stop rejects\n // prepare and resolves only after its peers and hotspot join have been released.\n this.prepareStop = this.deps.native.stop(this.attemptId)\n void this.prepareStop.catch(() => undefined) // stop() awaits and reports cleanup failure.\n }\n }\n\n owns(streamId: string): boolean {\n // Consume late status from all attempts without allowing it to affect the current attempt.\n return streamId.startsWith(`${this.options.streamId}-relay-`)\n }\n\n handleGlassesStatus(event: StreamStatusEvent): void {\n if (event.streamId !== this.attemptId || this.cancelled) return\n if (event.status === \"stopped\" || event.terminal) {\n this.failed(new Error(\"Glasses publisher stopped\"))\n }\n }\n\n private checkpoint(): void {\n if (this.cancelled) throw new Error(\"Relay cancelled\")\n if (this.attemptError) throw this.attemptError\n }\n\n private async startAttempt(): Promise<StreamStatusEvent | undefined> {\n this.attemptId = `${this.options.streamId}-relay-${++this.attempt}`\n this.attemptError = null\n this.checkpoint()\n const captureAudio = this.options.captureAudio !== false\n const lc3 = captureAudio && !!this.deps.microphone && typeof this.deps.native.pushOutgoingPcm === \"function\"\n // Claim through the same policy/ownership layer as ACS before turning off WHIP audio.\n if (lc3) this.releaseMic = this.deps.microphone!.acquire()\n this.hotspotTouched = true // A timed-out BLE command may still have enabled the AP.\n const hotspot = await this.deps.hotspot(true)\n this.checkpoint()\n if (hotspot.state !== \"enabled\" || !hotspot.ssid || !hotspot.password)\n throw new Error(\"Glasses hotspot did not start\")\n await this.deps.sleep(3_000) // Same beacon/DHCP startup allowance as ACS.\n this.checkpoint()\n this.nativeTouched = true\n this.preparing = true\n let url: string\n try {\n url = await this.deps.native.prepare({\n attemptId: this.attemptId,\n ingestUrl: this.options.ingestUrl,\n ssid: hotspot.ssid,\n password: hotspot.password,\n gatewayAddress: hotspot.localIp,\n captureAudio,\n audioTransport: lc3 ? \"ble-lc3\" : captureAudio ? \"whip\" : \"none\",\n bitrate: this.options.video?.bitrate ?? 2_000_000,\n })\n } finally {\n this.preparing = false\n }\n this.checkpoint()\n if (lc3) {\n const id = this.attemptId\n let received = false\n this.micListener = this.deps.microphone!.subscribe((event) => {\n if (this.cancelled || this.attemptId !== id || this.attemptError) return\n if (event.source !== \"glasses\") {\n this.failed(new Error(\"Managed stream lost the glasses microphone\"))\n return\n }\n if (!event.pcm?.byteLength) return\n try {\n const accepted = this.deps.native.pushOutgoingPcm!(id, pcmToBase64(event.pcm), event.sampleRate ?? 16000, 1)\n if (accepted && !received) {\n received = true\n console.log(\"[ManagedRelay] First BLE LC3 audio frame\", {\n attemptId: id,\n sampleRate: event.sampleRate ?? 16000,\n })\n }\n } catch (error) {\n this.failed(asError(error))\n }\n })\n }\n this.glassesTouched = true\n const result = await this.deps.startGlasses({\n type: \"start_stream\",\n streamId: this.attemptId,\n streamUrl: url,\n ice: {stun: \"\"},\n sound: this.options.sound ?? true,\n captureAudio: captureAudio && !lc3,\n ...(this.options.video !== undefined ? {video: this.options.video} : {}),\n ...(this.options.audio !== undefined ? {audio: this.options.audio} : {}),\n })\n this.checkpoint()\n this.readyAt = this.deps.now()\n return result\n }\n\n private failed(error: Error): void {\n if (this.cancelled || this.attemptError) return\n this.attemptError = error\n // Bound consecutive trouble, not the lifetime number of recoveries in a long stream.\n if (this.readyAt !== null && this.deps.now() - this.readyAt >= 60_000) this.retries = 0\n this.readyAt = null\n if (this.restarting) return\n this.restarting = true\n // Await startup before cleanup: late native/BLE success still belongs to this attempt.\n this.operation = this.operation\n .catch(() => undefined)\n .then(async () => {\n while (!this.cancelled) {\n try {\n await this.cleanupAttempt()\n if (this.cancelled) return\n if (this.retries >= 3) throw error\n this.onStatus(\"reconnecting\", error.message)\n await this.deps.sleep(1_000 * 2 ** this.retries++)\n if (this.cancelled) return\n await this.startAttempt()\n this.onStatus(\"reconnected\", \"Glasses relay restarted\")\n return\n } catch (failure) {\n // Cleanup failure retains ownership; never create another stream on uncertain state.\n if (this.hotspotTouched || this.nativeTouched || this.glassesTouched) {\n try {\n await this.cleanupAttempt()\n } catch (cleanupError) {\n if (!this.cancelled) this.onFailure(asError(cleanupError))\n return\n }\n }\n if (this.retries >= 3) {\n if (!this.cancelled) this.onFailure(asError(failure))\n return\n }\n }\n }\n })\n .finally(() => {\n this.restarting = false\n })\n }\n\n stop(): Promise<void> {\n this.cancel()\n if (this.stopping) return this.stopping\n this.listener?.remove()\n this.listener = null\n this.stopping = Promise.resolve(this.prepareStop)\n .then(() => this.operation.catch(() => undefined))\n .then(async () => {\n await this.cleanupAttempt()\n this.release?.()\n this.release = null\n })\n .finally(() => {\n this.prepareStop = null\n this.stopping = null\n })\n return this.stopping\n }\n\n private async cleanupAttempt(): Promise<void> {\n const failures: unknown[] = []\n const step = async (action: () => Promise<void>) => {\n try {\n await action()\n } catch (error) {\n failures.push(error)\n }\n }\n // Invalidate callbacks before intentionally stopping the glasses or dropping the network.\n const id = this.attemptId\n this.attemptId = null\n await step(async () => {\n this.micListener?.remove()\n this.micListener = null\n this.releaseMic?.()\n this.releaseMic = null\n })\n if (this.glassesTouched)\n await step(async () => {\n if (this.deps.connected()) await this.deps.stopGlasses()\n else this.deps.deferredStop()\n this.glassesTouched = false\n })\n if (this.nativeTouched && id)\n await step(async () => {\n await (this.prepareStop ?? this.deps.native.stop(id))\n this.nativeTouched = false\n })\n if (this.hotspotTouched)\n await step(async () => {\n if (this.deps.connected()) {\n const result = await this.deps.hotspot(false)\n if (result.state !== \"disabled\") throw new Error(\"Glasses hotspot shutdown was not confirmed\")\n } else this.deps.deferredStop()\n this.hotspotTouched = false\n })\n if (failures.length) {\n this.attemptId = id // Retain the native attempt token for a subsequent cleanup retry.\n throw new Error(`Relay cleanup failed: ${failures.map((error) => asError(error).message).join(\"; \")}`)\n }\n }\n}\n\nfunction asError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error))\n}\n\nexport function createManagedWebRtcRelay(\n options: RelayOptions,\n onStatus: (status: string, reason: string) => void,\n onFailure: (error: Error) => void,\n connected: () => boolean,\n deferredStop: () => void,\n): ManagedRelay {\n // Load only for managed WHIP. Hosts using direct SRT/RTMP need no relay module.\n const {requireNativeModule} = require(\"expo-modules-core\") as typeof import(\"expo-modules-core\")\n const {BgTimer} = require(\"../utils/timers\") as typeof import(\"../utils/timers\")\n const native = requireNativeModule<NativeRelay>(\"MentraGlassesMediaRelay\")\n const {Platform} = require(\"react-native\") as typeof import(\"react-native\")\n const {default: micSessionManager} = require(\"./MicSessionManager\") as typeof import(\"./MicSessionManager\")\n return new ManagedWebRtcRelay(options, onStatus, onFailure, {\n native,\n hotspot: (enabled) => BluetoothSdk.setHotspotState(enabled),\n startGlasses: (request) => BluetoothSdk.startStream(request),\n stopGlasses: () => BluetoothSdk.stopStream(),\n connected,\n deferredStop,\n now: Date.now,\n sleep: (ms) => new Promise((resolve) => BgTimer.setTimeout(resolve, ms)),\n acquire: acquireGlassesHotspot,\n ...(Platform.OS === \"android\" && typeof BluetoothSdk.setMicSourcePin === \"function\"\n ? {\n microphone: {\n acquire: () =>\n micSessionManager.acquire({\n owner: `engine:managed-relay:${options.streamId}`,\n source: \"glasses\",\n useCase: \"livestream\",\n }).release,\n subscribe: (listener) => BluetoothSdk.addListener(\"mic_pcm\", listener),\n },\n }\n : {}),\n })\n}\n"]}
@@ -457,7 +457,7 @@ export declare function createSoftapCallDeps(args: {
457
457
  }>;
458
458
  /** Whether this phone's Wi-Fi radio is on. Optional: only Android hosts can answer it. */
459
459
  isWifiEnabled?: () => Promise<boolean>;
460
- joinScopedNetwork: (ssid: string, passphrase: string, gateway?: string) => Promise<string | undefined>;
460
+ joinScopedNetwork: (ssid: string, passphrase: string, gateway?: string, report?: SoftapStepReporter) => Promise<string | undefined>;
461
461
  leaveScopedNetwork: () => Promise<void>;
462
462
  cancelScopedNetworkJoin?: () => Promise<void>;
463
463
  joinMeeting: (packageName: string, options: {
@@ -1 +1 @@
1
- {"version":3,"file":"SoftapCallTransport.d.ts","sourceRoot":"","sources":["../../src/services/SoftapCallTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SoftapCallTransport.d.ts","sourceRoot":"","sources":["../../src/services/SoftapCallTransport.ts"],"names":[],"mappings":"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"}
@@ -977,8 +977,8 @@ export function createSoftapCallDeps(args) {
977
977
  },
978
978
  joinScopedNetwork: async (ssid, passphrase, report) => {
979
979
  const joinOnce = (nextSsid, nextPassphrase) => gatewayAddress
980
- ? subsystems.joinScopedNetwork(nextSsid, nextPassphrase, gatewayAddress)
981
- : subsystems.joinScopedNetwork(nextSsid, nextPassphrase);
980
+ ? subsystems.joinScopedNetwork(nextSsid, nextPassphrase, gatewayAddress, report)
981
+ : subsystems.joinScopedNetwork(nextSsid, nextPassphrase, undefined, report);
982
982
  let address;
983
983
  try {
984
984
  address = await joinOnce(ssid, passphrase);