summaryrefslogtreecommitdiff
path: root/cras/client/cras-sys/src/lib.rs
diff options
context:
space:
mode:
authorJorge E. Moreira <jemoreira@google.com>2021-04-12 19:05:41 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-04-12 19:05:41 +0000
commitbcf1f249f11b6865cff3f0d3f0ae5801e67e0e7e (patch)
tree7e0e07b9d8d50fc5dd352d5b36d74fa3cb3427db /cras/client/cras-sys/src/lib.rs
parent1a33fa04345d1d2599eae37bb34781783aa0d04e (diff)
parent072dce8ca50bdf87b113490cdf14bde14724914f (diff)
downloadadhd-bcf1f249f11b6865cff3f0d3f0ae5801e67e0e7e.tar.gz
Merge remote-tracking branch 'aosp/upstream-main' into master am: 072dce8ca5android-s-beta-4android-s-beta-3android-s-beta-4
Original change: https://android-review.googlesource.com/c/platform/external/adhd/+/1673705 Change-Id: I34df6886976fcb22f0bef53453a5cd0924f04f7b
Diffstat (limited to 'cras/client/cras-sys/src/lib.rs')
-rw-r--r--cras/client/cras-sys/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/cras/client/cras-sys/src/lib.rs b/cras/client/cras-sys/src/lib.rs
index 8128575b..2b3d21e0 100644
--- a/cras/client/cras-sys/src/lib.rs
+++ b/cras/client/cras-sys/src/lib.rs
@@ -10,6 +10,7 @@ use std::error;
use std::fmt;
use std::iter::FromIterator;
use std::os::raw::c_char;
+use std::str::FromStr;
use std::time::Duration;
#[allow(dead_code)]
@@ -47,6 +48,7 @@ unsafe impl data_model::DataInit for gen::cras_set_system_volume {}
pub enum Error {
InvalidChannel(i8),
InvalidClientType(u32),
+ InvalidClientTypeStr,
InvalidStreamType(u32),
}
@@ -68,6 +70,7 @@ impl fmt::Display for Error {
t,
CRAS_CLIENT_TYPE::CRAS_CLIENT_TYPE_SERVER_STREAM as u32 + 1
),
+ InvalidClientTypeStr => write!(f, "Invalid client type string"),
InvalidStreamType(t) => write!(
f,
"Stream type {} is not within valid range [0, {})",
@@ -426,6 +429,18 @@ impl TryFrom<u32> for CRAS_CLIENT_TYPE {
}
}
+impl FromStr for CRAS_CLIENT_TYPE {
+ type Err = Error;
+ fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
+ use CRAS_CLIENT_TYPE::*;
+ match s {
+ "crosvm" => Ok(CRAS_CLIENT_TYPE_CROSVM),
+ "arcvm" => Ok(CRAS_CLIENT_TYPE_ARCVM),
+ _ => Err(Error::InvalidClientTypeStr),
+ }
+ }
+}
+
impl Default for audio_stream_debug_info {
fn default() -> Self {
Self {