diff options
author | Li-Yu Yu <aaronyu@google.com> | 2024-05-10 09:03:11 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2024-05-13 13:53:11 +0000 |
commit | 9d9b995e60e1ef5e7e184adda187ee154bb24028 (patch) | |
tree | b3d684fa8de3e000d5f7f9cb49049ac206f94218 | |
parent | 71206c0ad33219ff6cde968f43d430136249299d (diff) | |
download | adhd-9d9b995e60e1ef5e7e184adda187ee154bb24028.tar.gz |
Use cras-config-dir instead of ucm-suffix for beamforming
Eventually we should have config files for beamforming,
before that let's just not (ab)use ucm as a config
side channel.
BUG=b:327062210
BUG=b:233174542
BUG=b:339785214
TEST=dbus-send --system --print-reply --dest=org.chromium.cras /org/chromium/cras org.chromium.cras.Control.DumpS2AsJSON
Change-Id: I2ba4a90e1256dfa2569cd8c28a1645086a1e6561
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/5528486
Commit-Queue: Li-Yu Yu <aaronyu@google.com>
Tested-by: chromeos-cop-builder@chromeos-cop.iam.gserviceaccount.com <chromeos-cop-builder@chromeos-cop.iam.gserviceaccount.com>
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
-rw-r--r-- | cras/server/s2/s2.h | 2 | ||||
-rw-r--r-- | cras/server/s2/src/global.rs | 21 | ||||
-rw-r--r-- | cras/server/s2/src/lib.rs | 17 | ||||
-rw-r--r-- | cras/src/server/cras_system_state.c | 3 | ||||
-rw-r--r-- | init/cras.sh | 1 |
5 files changed, 21 insertions, 23 deletions
diff --git a/cras/server/s2/s2.h b/cras/server/s2/s2.h index e2699637..120ad9a3 100644 --- a/cras/server/s2/s2.h +++ b/cras/server/s2/s2.h @@ -34,7 +34,7 @@ void cras_s2_set_style_transfer_enabled(bool enabled); bool cras_s2_get_style_transfer_enabled(void); -void cras_s2_set_ucm_suffix(const char *ucm_suffix); +void cras_s2_load_cras_config_dir(void); bool cras_s2_get_beamforming_supported(void); diff --git a/cras/server/s2/src/global.rs b/cras/server/s2/src/global.rs index e35474d9..028c3a78 100644 --- a/cras/server/s2/src/global.rs +++ b/cras/server/s2/src/global.rs @@ -3,7 +3,6 @@ // found in the LICENSE file. use std::ffi::c_char; -use std::ffi::CStr; use std::ffi::CString; use std::ops::Deref; use std::sync::Mutex; @@ -62,18 +61,14 @@ pub extern "C" fn cras_s2_get_style_transfer_enabled() -> bool { } #[no_mangle] -pub unsafe extern "C" fn cras_s2_set_ucm_suffix(ucm_suffix: *const libc::c_char) { - if ucm_suffix.is_null() { - state().set_ucm_suffix(""); - } else { - match CStr::from_ptr(ucm_suffix).to_str() { - Ok(str) => { - state().set_ucm_suffix(str); - } - Err(err) => { - state().set_ucm_suffix(""); - log::error!("ucm_suffix is not a valid string: {err}"); - } +pub extern "C" fn cras_s2_load_cras_config_dir() { + match std::fs::read_to_string("/run/chromeos-config/v1/audio/main/cras-config-dir") { + Ok(str) => { + state().set_cras_config_dir(&str); + } + Err(err) => { + state().set_cras_config_dir(""); + log::info!("Failed to read cras-config-dir: {err}"); } } } diff --git a/cras/server/s2/src/lib.rs b/cras/server/s2/src/lib.rs index beb21559..9b8b8383 100644 --- a/cras/server/s2/src/lib.rs +++ b/cras/server/s2/src/lib.rs @@ -16,8 +16,8 @@ struct Input { dlc_manager_ready: bool, style_transfer_featured_allowed: bool, style_transfer_enabled: bool, - // cros_config /audio/main ucm-suffix. - ucm_suffix: String, + // cros_config /audio/main cras-config-dir. + cras_config_dir: String, } #[derive(Serialize)] @@ -29,7 +29,8 @@ struct Output { } fn resolve(input: &Input) -> Output { - let beamforming_supported = input.ucm_suffix == "omniknight.3mic"; + // TODO(b/339785214): Decide this based on config file content. + let beamforming_supported = input.cras_config_dir == "omniknight.3mic"; Output { ap_nc_allowed: input.ap_nc_featured_allowed || input.ap_nc_segmentation_allowed @@ -62,7 +63,7 @@ impl S2 { dlc_manager_ready: false, style_transfer_featured_allowed: false, style_transfer_enabled: false, - ucm_suffix: String::new(), + cras_config_dir: String::new(), }; let output = resolve(&input); Self { input, output } @@ -98,8 +99,8 @@ impl S2 { self.update(); } - fn set_ucm_suffix(&mut self, ucm_suffix: &str) { - self.input.ucm_suffix = ucm_suffix.into(); + fn set_cras_config_dir(&mut self, cras_config_dir: &str) { + self.input.cras_config_dir = cras_config_dir.into(); self.update(); } @@ -169,11 +170,11 @@ mod tests { assert!(!s.output.beamforming_supported); assert!(s.output.style_transfer_supported); - s.set_ucm_suffix("omniknight.3mic"); + s.set_cras_config_dir("omniknight.3mic"); assert!(s.output.beamforming_supported); assert!(!s.output.style_transfer_supported); - s.set_ucm_suffix("omniknight"); + s.set_cras_config_dir("omniknight"); assert!(!s.output.beamforming_supported); assert!(s.output.style_transfer_supported); } diff --git a/cras/src/server/cras_system_state.c b/cras/src/server/cras_system_state.c index da2390bf..205bb73d 100644 --- a/cras/src/server/cras_system_state.c +++ b/cras/src/server/cras_system_state.c @@ -2,6 +2,7 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ + #include "cras/src/server/cras_system_state.h" #include <errno.h> @@ -209,6 +210,7 @@ void cras_system_state_init(const char* device_config_dir, syslog(LOG_ERR, "Fatal: no memory to create board config"); exit(-ENOMEM); } + cras_s2_load_cras_config_dir(); // Initial system state. exp_state->state_version = CRAS_SERVER_STATE_VERSION; @@ -317,7 +319,6 @@ void cras_system_state_deinit() { void cras_system_state_set_internal_ucm_suffix( const char* internal_ucm_suffix) { state.internal_ucm_suffix = internal_ucm_suffix; - cras_s2_set_ucm_suffix(internal_ucm_suffix); } void cras_system_set_volume(size_t volume) { diff --git a/init/cras.sh b/init/cras.sh index ab8ee52e..116cf3f2 100644 --- a/init/cras.sh +++ b/init/cras.sh @@ -18,6 +18,7 @@ exec minijail0 -u cras -g cras -G --uts -v -l \ -k '/run/imageloader,/run/imageloader,none,MS_BIND|MS_REC' \ -b /run/libsegmentation \ -b /run/udev \ + -b /run/chromeos-config/v1 \ -b /dev \ -b /dev/shm,,1 \ -k proc,/proc,proc \ |