| // 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 |InputSettings|. Returns immediately on first call; |
| /// subsequent calls return when the value changes. |
| /// |
| /// When any of the input devices' states change, this will return the |
| /// full [InputSettings] object, containing the states for all the |
| /// available input devices on the target device. |
| /// |
| /// To find the state of a specific input device, the devices vector |
| /// contained in settings can be iterated through to find a specific |
| /// [DeviceType]. If there are multiple devices of the same [DeviceType], |
| /// the [InputDevice]'s device_name can be examined in conjunction with |
| /// the [DeviceType] to find the desired input device. Together, the |
| /// device_name and [DeviceType] uniquely identify an [InputDevice]. |
| /// |
| /// If this call fails, it is considered a fatal error and the channel |
| /// will be closed. |
| Watch() -> (struct { |
| settings InputSettings; |
| }); |
| |
| /// 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 device_name and device_type are passed. Otherwise |
| /// it will add a new input device. Devices not included in input_states |
| /// will not be modified. |
| Set(struct { |
| input_states vector<InputState>:MAX; |
| }) -> () error Error; |
| |
| @available(deprecated=7, removed=9) |
| Watch2() -> (struct { |
| settings InputSettings; |
| }); |
| |
| @available(deprecated=7, removed=9) |
| SetStates(struct { |
| input_states vector<InputState>:MAX; |
| }) -> () error Error; |
| }; |
| |
| /// A series of flags determining the state of an input device mute toggle. |
| type ToggleStateFlags = strict bits : uint64 { |
| /// The input device exists and is neither muted nor disabled. |
| AVAILABLE = 0x01; |
| /// The input device is being used. |
| ACTIVE = 0x02; |
| /// The input device could be available if it was enabled, but it is muted. |
| MUTED = 0x04; |
| /// The input device is permanently disabled, e.g. by policy. |
| DISABLED = 0x08; |
| /// The state cannot be determined. |
| ERROR = 0x10; |
| }; |
| |
| type DeviceType = strict enum { |
| MICROPHONE = 1; |
| CAMERA = 2; |
| }; |
| |
| type DeviceStateSource = strict enum { |
| HARDWARE = 1; |
| SOFTWARE = 2; |
| }; |
| |
| /// Settings related to device input. New format for InputDeviceSettings. |
| /// |
| /// InputSettings contains a list of input devices, e.g. Microphone and Camera |
| /// devices. There may be multiple devices of each type. If so, they will be |
| /// differentiated by the device_name. If there is only one device of a certain |
| /// [DeviceType], then the name defaults to the same as the device type, e.g. |
| /// DeviceType::Microphone -> "microphone". |
| type InputSettings = table { |
| 1: devices vector<InputDevice>:MAX; |
| }; |
| |
| /// Contains the information for an input device. The device is uniquely identified |
| /// by the combination of device_name and device_type. |
| type InputDevice = table { |
| /// Uniquely identifies a device within a device type. |
| 1: device_name string:MAX; |
| /// The type of input device (e.g. camera, microphone). |
| 2: device_type DeviceType; |
| /// The state for each individual [DeviceStateSource]. |
| 3: source_states vector<SourceState>:MAX; |
| /// The software toggle states which are allowed to be changed for a device. |
| 4: mutable_toggle_state ToggleStateFlags; |
| /// The overall state of the device, considering the combination |
| /// of the source states. |
| 5: state DeviceState; |
| }; |
| |
| /// Holds the state for an |InputDevice|. |
| type DeviceState = table { |
| /// Controls the on/off state of the input device. |
| 1: toggle_flags ToggleStateFlags; |
| }; |
| |
| /// Describes what the |source|'s |state| is. |
| type SourceState = table { |
| 1: source DeviceStateSource; |
| 2: state DeviceState; |
| }; |
| |
| /// A subset of |DeviceState|'s properties that clients may pass to change the |
| /// software state of an InputDevice. |
| type InputState = table { |
| 1: name string:MAX; |
| 2: device_type DeviceType; |
| 3: state DeviceState; |
| }; |