fuchsia_bluetooth/types/
io_capabilities.rs

1// Copyright 2020 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use fidl_fuchsia_bluetooth_sys as sys;
6use std::str::FromStr;
7
8use crate::error::Error;
9
10#[derive(Clone, Copy, Debug, PartialEq)]
11pub enum InputCapability {
12    None,
13    Confirmation,
14    Keyboard,
15}
16
17impl FromStr for InputCapability {
18    type Err = Error;
19
20    fn from_str(src: &str) -> Result<Self, Self::Err> {
21        match src {
22            "none" => Ok(InputCapability::None),
23            "confirmation" => Ok(InputCapability::Confirmation),
24            "keyboard" => Ok(InputCapability::Keyboard),
25            cap => Err(Error::other(&format!("invalid input capability: {cap}"))),
26        }
27    }
28}
29
30impl Into<sys::InputCapability> for InputCapability {
31    fn into(self) -> sys::InputCapability {
32        match self {
33            InputCapability::None => sys::InputCapability::None,
34            InputCapability::Confirmation => sys::InputCapability::Confirmation,
35            InputCapability::Keyboard => sys::InputCapability::Keyboard,
36        }
37    }
38}
39
40#[derive(Clone, Copy, Debug, PartialEq)]
41pub enum OutputCapability {
42    None,
43    Display,
44}
45
46impl FromStr for OutputCapability {
47    type Err = Error;
48
49    fn from_str(src: &str) -> Result<Self, Self::Err> {
50        match src {
51            "none" => Ok(OutputCapability::None),
52            "display" => Ok(OutputCapability::Display),
53            cap => Err(Error::other(&format!("invalid output capability: {cap}"))),
54        }
55    }
56}
57
58impl Into<sys::OutputCapability> for OutputCapability {
59    fn into(self) -> sys::OutputCapability {
60        match self {
61            OutputCapability::None => sys::OutputCapability::None,
62            OutputCapability::Display => sys::OutputCapability::Display,
63        }
64    }
65}