blob: c7a9de1f9e9b162c49fd8b406b8e6c66ac4f8794 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.settings;
/// Settings related to input to the device.
///
/// Supported SettingsEpitaph enums:
/// REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR
[Discoverable]
protocol Input {
/// Gets the current |InputDeviceSettings|. Returns immediately on first call;
/// subsequent calls return when the value changes.
///
/// If this call fails, it is considered a fatal error and the channel
/// will be closed.
[Transitional = "Will be deprecated in favor of Watch2"]
Watch() -> (InputDeviceSettings settings);
/// Sets |InputDeviceSettings|. Any field not explicitly set in the table
/// performs a no-op, and will not make any changes.
[Transitional = "Will be deprecated in favor of SetStates"]
Set(InputDeviceSettings settings) -> () error Error;
/// Gets the current |InputSettings|. Returns immediately on first call;
/// subsequent calls return when the value changes.
///
/// If this call fails, it is considered a fatal error and the channel
/// will be closed.
[Transitional = "Future replacement for Watch"]
Watch2() -> (InputSettings settings);
/// Requests software input devices to set their software state. May
/// not necessarily change the overall state of the device, depending on the
/// hardware state. Will modify the software state of the existing device if a
/// known id is passed. Otherwise it will add a new input device.
[Transitional = "Future replacement for Set"]
SetStates(vector<InputState>:MAX input_states) -> () error Error;
};
/// A series of flags determining the state of an input device mute toggle.
bits ToggleStateFlags : uint64 {
AVAILABLE = 0x01;
ACTIVE = 0x02;
MUTED = 0x04;
DISABLED = 0x08;
ERROR = 0x10;
};
enum DeviceType {
MICROPHONE = 1;
CAMERA = 2;
};
enum DeviceStateSource {
HARDWARE = 1;
SOFTWARE = 2;
};
/// Settings related to device input. New format for InputDeviceSettings.
table InputSettings {
1: vector<InputDevice>:MAX devices;
};
table InputDevice {
/// Uniquely identifies a device within a device type.
1: string:MAX device_name;
/// The type of input device (e.g. camera, microphone).
2: DeviceType device_type;
/// The state for each source (e.g. hardware, software).
3: vector<SourceState>:MAX source_states;
/// The software toggle states which are allowed to be changed for a device.
4: ToggleStateFlags mutable_toggle_state;
/// The overall state of the device considering the source states.
5: DeviceState state;
};
/// Holds the state for an |InputDevice|.
table DeviceState {
/// Controls the on/off state of the input device.
1: ToggleStateFlags toggle_flags;
};
/// Describes what the |source|’s |state| is.
table SourceState {
1: DeviceStateSource source;
2: DeviceState state;
};
/// A subset of |DeviceState|’s properties that clients may pass to change the
/// software state of an InputDevice.
table InputState {
1: string:MAX name;
2: DeviceType device_type;
3: DeviceState state;
};
///////////////////////////////////
// Soon-to-be-deprecated API below
///////////////////////////////////
/// Settings related to audio input. Replacement for fuchsia.settings.AudioSettings.input.
table InputDeviceSettings {
1: Microphone microphone;
};
/// Settings related to the microphone.
table Microphone {
/// Whether the microphone is muted.
///
/// This is only tracking the software mute state. The service will pick up the hardware state
/// and combine the two states to find the overall state. If either software or hardware is
/// muted, the overall state is muted. The two may be different if the device should not
/// listen regardless of hardware state, or if the software state is unmuted and the user
/// turns the microphone off.
1: bool muted;
};