diff options
author | paulhsia <paulhsia@chromium.org> | 2021-03-09 17:02:40 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-03-09 18:12:44 +0000 |
commit | c30bdb392139477df8da224d72adb6c5b99703bf (patch) | |
tree | abee7b512c85ad24051146a6296c99e9fa09913c | |
parent | 822cb08667779635567c873f4be2bc33410abb71 (diff) | |
download | adhd-c30bdb392139477df8da224d72adb6c5b99703bf.tar.gz |
cras_types: Add CRAS_CLIENT_TYPE_ARCVM for arc in VM
Add a new client type for arc in VM for UMA and to separate it
from other linux VMs.
Changes:
- Add CRAS_CLIENT_TYPE_ARCVM for arc in VM
- Generate cras_sys from the latest codebase
- Add FromStr for CRAS_CLIENT_TYPE
- Expose cras_sys::Error in libcras as CrasSysError
- Add PluginVM and ARCVM to metrics_client_type_str for UMA
BUG=b:177393225
TEST=Apply full patch set and start audio in ARCVM with
`cras_test_client --dump_a`
Change-Id: I76960479431d34d9c1b311856eef8f64500bf654
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/2744525
Reviewed-by: Yu-Hsuan Hsu <yuhsuan@chromium.org>
Tested-by: Chih-Yang Hsia <paulhsia@chromium.org>
Commit-Queue: Chih-Yang Hsia <paulhsia@chromium.org>
-rw-r--r-- | cras/client/cras-sys/src/gen.rs | 88 | ||||
-rw-r--r-- | cras/client/cras-sys/src/lib.rs | 15 | ||||
-rw-r--r-- | cras/client/libcras/src/libcras.rs | 2 | ||||
-rw-r--r-- | cras/src/common/cras_types.h | 2 | ||||
-rw-r--r-- | cras/src/server/cras_server_metrics.c | 4 |
5 files changed, 90 insertions, 21 deletions
diff --git a/cras/client/cras-sys/src/gen.rs b/cras/client/cras-sys/src/gen.rs index 0375a0bd..6fb4cdf8 100644 --- a/cras/client/cras-sys/src/gen.rs +++ b/cras/client/cras-sys/src/gen.rs @@ -748,7 +748,9 @@ pub enum CRAS_CONNECTION_TYPE { CRAS_CAPTURE = 2, CRAS_VMS_LEGACY = 3, CRAS_VMS_UNIFIED = 4, - CRAS_NUM_CONN_TYPE = 5, + CRAS_PLUGIN_PLAYBACK = 5, + CRAS_PLUGIN_UNIFIED = 6, + CRAS_NUM_CONN_TYPE = 7, } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -798,6 +800,9 @@ pub enum CRAS_CLIENT_TYPE { CRAS_CLIENT_TYPE_CROSVM = 6, CRAS_CLIENT_TYPE_SERVER_STREAM = 7, CRAS_CLIENT_TYPE_LACROS = 8, + CRAS_CLIENT_TYPE_PLUGIN = 9, + CRAS_CLIENT_TYPE_ARCVM = 10, + CRAS_NUM_CLIENT_TYPE = 11, } impl CRAS_STREAM_EFFECT { pub const APM_ECHO_CANCELLATION: CRAS_STREAM_EFFECT = CRAS_STREAM_EFFECT(1); @@ -914,24 +919,25 @@ pub enum CRAS_BT_LOG_EVENTS { BT_A2DP_START = 6, BT_A2DP_SUSPENDED = 7, BT_CODEC_SELECTION = 8, - BT_DEV_CONNECTED_CHANGE = 9, - BT_DEV_CONN_WATCH_CB = 10, - BT_DEV_SUSPEND_CB = 11, - BT_HFP_NEW_CONNECTION = 12, - BT_HFP_REQUEST_DISCONNECT = 13, - BT_HFP_SUPPORTED_FEATURES = 14, - BT_HFP_HF_INDICATOR = 15, - BT_HFP_SET_SPEAKER_GAIN = 16, - BT_HFP_UPDATE_SPEAKER_GAIN = 17, - BT_HSP_NEW_CONNECTION = 18, - BT_HSP_REQUEST_DISCONNECT = 19, - BT_NEW_AUDIO_PROFILE_AFTER_CONNECT = 20, - BT_RESET = 21, - BT_SCO_CONNECT = 22, - BT_TRANSPORT_ACQUIRE = 23, - BT_TRANSPORT_RELEASE = 24, - BT_TRANSPORT_SET_VOLUME = 25, - BT_TRANSPORT_UPDATE_VOLUME = 26, + BT_DEV_CONNECTED = 9, + BT_DEV_DISCONNECTED = 10, + BT_DEV_CONN_WATCH_CB = 11, + BT_DEV_SUSPEND_CB = 12, + BT_HFP_NEW_CONNECTION = 13, + BT_HFP_REQUEST_DISCONNECT = 14, + BT_HFP_SUPPORTED_FEATURES = 15, + BT_HFP_HF_INDICATOR = 16, + BT_HFP_SET_SPEAKER_GAIN = 17, + BT_HFP_UPDATE_SPEAKER_GAIN = 18, + BT_HSP_NEW_CONNECTION = 19, + BT_HSP_REQUEST_DISCONNECT = 20, + BT_NEW_AUDIO_PROFILE_AFTER_CONNECT = 21, + BT_RESET = 22, + BT_SCO_CONNECT = 23, + BT_TRANSPORT_ACQUIRE = 24, + BT_TRANSPORT_RELEASE = 25, + BT_TRANSPORT_SET_VOLUME = 26, + BT_TRANSPORT_UPDATE_VOLUME = 27, } #[repr(C, packed)] #[derive(Debug, Copy, Clone)] @@ -2117,12 +2123,15 @@ pub struct cras_server_state { pub bt_wbs_enabled: i32, pub deprioritize_bt_wbs_mic: i32, pub main_thread_debug_info: main_thread_debug_info, + pub num_input_streams_with_permission: [u32; 11usize], + pub noise_cancellation_enabled: i32, + pub hotword_pause_at_suspend: i32, } #[test] fn bindgen_test_layout_cras_server_state() { assert_eq!( ::std::mem::size_of::<cras_server_state>(), - 1414292usize, + 1414344usize, concat!("Size of: ", stringify!(cras_server_state)) ); assert_eq!( @@ -2520,6 +2529,45 @@ fn bindgen_test_layout_cras_server_state() { stringify!(main_thread_debug_info) ) ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<cras_server_state>())).num_input_streams_with_permission + as *const _ as usize + }, + 1414292usize, + concat!( + "Offset of field: ", + stringify!(cras_server_state), + "::", + stringify!(num_input_streams_with_permission) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<cras_server_state>())).noise_cancellation_enabled as *const _ + as usize + }, + 1414336usize, + concat!( + "Offset of field: ", + stringify!(cras_server_state), + "::", + stringify!(noise_cancellation_enabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<cras_server_state>())).hotword_pause_at_suspend as *const _ + as usize + }, + 1414340usize, + concat!( + "Offset of field: ", + stringify!(cras_server_state), + "::", + stringify!(hotword_pause_at_suspend) + ) + ); } pub const cras_notify_device_action_CRAS_DEVICE_ACTION_ADD: cras_notify_device_action = 0; pub const cras_notify_device_action_CRAS_DEVICE_ACTION_REMOVE: cras_notify_device_action = 1; 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 { diff --git a/cras/client/libcras/src/libcras.rs b/cras/client/libcras/src/libcras.rs index 80d2cff7..402a4a27 100644 --- a/cras/client/libcras/src/libcras.rs +++ b/cras/client/libcras/src/libcras.rs @@ -136,7 +136,7 @@ pub use cras_sys::gen::{ CRAS_CLIENT_TYPE as CrasClientType, CRAS_NODE_TYPE as CrasNodeType, CRAS_STREAM_EFFECT as CrasStreamEffect, }; -pub use cras_sys::{AudioDebugInfo, CrasIodevInfo, CrasIonodeInfo}; +pub use cras_sys::{AudioDebugInfo, CrasIodevInfo, CrasIonodeInfo, Error as CrasSysError}; use sys_util::{PollContext, PollToken, SharedMemory}; mod audio_socket; diff --git a/cras/src/common/cras_types.h b/cras/src/common/cras_types.h index 89e3b816..544ba02c 100644 --- a/cras/src/common/cras_types.h +++ b/cras/src/common/cras_types.h @@ -169,6 +169,7 @@ enum CRAS_CLIENT_TYPE { CRAS_CLIENT_TYPE_SERVER_STREAM, /* Server stream */ CRAS_CLIENT_TYPE_LACROS, /* LaCrOS */ CRAS_CLIENT_TYPE_PLUGIN, /* PluginVM */ + CRAS_CLIENT_TYPE_ARCVM, /* ARCVM */ CRAS_NUM_CLIENT_TYPE, /* numbers of CRAS_CLIENT_TYPE */ }; @@ -213,6 +214,7 @@ cras_client_type_str(enum CRAS_CLIENT_TYPE client_type) ENUM_STR(CRAS_CLIENT_TYPE_SERVER_STREAM) ENUM_STR(CRAS_CLIENT_TYPE_LACROS) ENUM_STR(CRAS_CLIENT_TYPE_PLUGIN) + ENUM_STR(CRAS_CLIENT_TYPE_ARCVM) default: return "INVALID_CLIENT_TYPE"; } diff --git a/cras/src/server/cras_server_metrics.c b/cras/src/server/cras_server_metrics.c index e03dfd97..f4f54094 100644 --- a/cras/src/server/cras_server_metrics.c +++ b/cras/src/server/cras_server_metrics.c @@ -306,6 +306,10 @@ metrics_client_type_str(enum CRAS_CLIENT_TYPE client_type) return "ServerStream"; case CRAS_CLIENT_TYPE_LACROS: return "LaCrOS"; + case CRAS_CLIENT_TYPE_PLUGIN: + return "PluginVM"; + case CRAS_CLIENT_TYPE_ARCVM: + return "ARCVM"; default: return "InvalidType"; } |