summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaulhsia <paulhsia@chromium.org>2021-03-09 17:02:40 +0800
committerCommit Bot <commit-bot@chromium.org>2021-03-09 18:12:44 +0000
commitc30bdb392139477df8da224d72adb6c5b99703bf (patch)
treeabee7b512c85ad24051146a6296c99e9fa09913c
parent822cb08667779635567c873f4be2bc33410abb71 (diff)
downloadadhd-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.rs88
-rw-r--r--cras/client/cras-sys/src/lib.rs15
-rw-r--r--cras/client/libcras/src/libcras.rs2
-rw-r--r--cras/src/common/cras_types.h2
-rw-r--r--cras/src/server/cras_server_metrics.c4
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";
}