summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi-Yu Yu <aaronyu@google.com>2024-05-10 09:03:11 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-05-13 13:53:11 +0000
commit9d9b995e60e1ef5e7e184adda187ee154bb24028 (patch)
treeb3d684fa8de3e000d5f7f9cb49049ac206f94218
parent71206c0ad33219ff6cde968f43d430136249299d (diff)
downloadadhd-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.h2
-rw-r--r--cras/server/s2/src/global.rs21
-rw-r--r--cras/server/s2/src/lib.rs17
-rw-r--r--cras/src/server/cras_system_state.c3
-rw-r--r--init/cras.sh1
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 \