Skip to content

Commit c1e947f

Browse files
committed
Remote camera/microphone validation
1 parent 5deb69a commit c1e947f

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

internal/orchestrator/orchestrator.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,11 @@ var (
5959
const (
6060
DefaultDockerStopTimeoutSeconds = 5
6161

62-
CameraDevice = "camera"
63-
MicrophoneDevice = "microphone"
64-
SpeakerDevice = "speaker"
62+
CameraDevice = "camera"
63+
RemoteCameraDevice = "remote_camera"
64+
MicrophoneDevice = "microphone"
65+
RemoteMicrophoneDevice = "remote_microphone"
66+
SpeakerDevice = "speaker"
6567
)
6668

6769
type AppStreamMessage struct {
@@ -1090,6 +1092,12 @@ func validateDevices(res *deviceResult, requiredDeviceClasses map[string]any) er
10901092
if len(requiredDeviceClasses) > 0 {
10911093
for class := range requiredDeviceClasses {
10921094
switch class {
1095+
case RemoteCameraDevice:
1096+
// Remote camera does not require a local camera device to be present
1097+
continue
1098+
case RemoteMicrophoneDevice:
1099+
// Remote microphone does not require a local microphone device to be present
1100+
continue
10931101
case CameraDevice:
10941102
if !res.hasVideoDevice {
10951103
return fmt.Errorf("no camera found")

internal/orchestrator/provision.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ func generateMainComposeFile(
275275

276276
// 6. Collect all the required device classes from the app descriptor
277277
if len(app.Descriptor.RequiredDevices) > 0 {
278+
// Required devices defined at app level take precedence over brick defined ones
279+
requiredDeviceClasses := make(map[string]any)
278280
for _, deviceClass := range app.Descriptor.RequiredDevices {
279281
requiredDeviceClasses[deviceClass] = true
280282
}

0 commit comments

Comments
 (0)