Skip to content

Commit 1b25f95

Browse files
committed
Vectorize most netsim flags
Except netsim_args, which is environment specific. Netsim flags determine whether a particular device requires netsim for bt or uwb. The netsim process is started if at least one device requires it. Equivalent to ag/If851c1bde6e8a81e4bdb6f7fffbe43696e22265b Bug=b/441907863
1 parent a55dd5b commit 1b25f95

File tree

7 files changed

+66
-43
lines changed

7 files changed

+66
-43
lines changed

base/cvd/cuttlefish/host/commands/assemble_cvd/assemble_cvd_flags.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,13 @@ DEFINE_int32(
157157
"If it is greater than 0, use an existing pica instance which is "
158158
"launched from cuttlefish instance "
159159
"with pica_instance_num. Else, launch a new pica instance");
160-
DEFINE_bool(netsim, CF_DEFAULTS_NETSIM,
161-
"[Experimental] Connect all radios to netsim.");
162160

163-
DEFINE_bool(netsim_bt, CF_DEFAULTS_NETSIM_BT,
164-
"Connect Bluetooth radio to netsim.");
165-
DEFINE_bool(netsim_uwb, CF_DEFAULTS_NETSIM_UWB,
166-
"[Experimental] Connect Uwb radio to netsim.");
161+
DEFINE_vec(netsim, fmt::format("{}", CF_DEFAULTS_NETSIM),
162+
"[Experimental] Connect all radios to netsim.");
163+
DEFINE_vec(netsim_bt, fmt::format("{}", CF_DEFAULTS_NETSIM_BT),
164+
"Connect Bluetooth radio to netsim.");
165+
DEFINE_vec(netsim_uwb, fmt::format("{}", CF_DEFAULTS_NETSIM_UWB),
166+
"[Experimental] Connect Uwb radio to netsim.");
167167
DEFINE_string(netsim_args, CF_DEFAULTS_NETSIM_ARGS,
168168
"Space-separated list of netsim args.");
169169

base/cvd/cuttlefish/host/commands/assemble_cvd/assemble_cvd_flags.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ DECLARE_int32(casimir_instance_num);
7070
DECLARE_string(casimir_args);
7171
DECLARE_bool(enable_host_uwb);
7272
DECLARE_int32(pica_instance_num);
73-
DECLARE_bool(netsim);
73+
DECLARE_vec(netsim);
7474

75-
DECLARE_bool(netsim_bt);
76-
DECLARE_bool(netsim_uwb);
75+
DECLARE_vec(netsim_bt);
76+
DECLARE_vec(netsim_uwb);
7777
DECLARE_string(netsim_args);
7878

7979
DECLARE_bool(enable_automotive_proxy);

base/cvd/cuttlefish/host/commands/assemble_cvd/flags.cc

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -411,26 +411,47 @@ Result<CuttlefishConfig> InitializeCuttlefishConfiguration(
411411
tmp_config_obj.set_ap_rootfs_image(ap_rootfs_image);
412412
tmp_config_obj.set_ap_kernel_image(FLAGS_ap_kernel_image);
413413

414+
tmp_config_obj.set_enable_host_nfc(FLAGS_enable_host_nfc);
415+
tmp_config_obj.set_enable_host_nfc_connector(FLAGS_enable_host_nfc);
416+
414417
// get flag default values and store into map
415418
auto name_to_default_value = CurrentFlagsToDefaultValue();
416419
// old flags but vectorized for multi-device instances
417420
int32_t instances_size = instance_nums.size();
418421

419422
// netsim flags allow all radios or selecting a specific radio
420-
bool is_any_netsim = FLAGS_netsim || FLAGS_netsim_bt || FLAGS_netsim_uwb;
421-
bool is_bt_netsim = FLAGS_netsim || FLAGS_netsim_bt;
422-
bool is_uwb_netsim = FLAGS_netsim || FLAGS_netsim_uwb;
423-
424-
std::vector<bool> enable_host_bluetooth_vec =
425-
CF_EXPECT(GET_FLAG_BOOL_VALUE(enable_host_bluetooth));
426-
427-
tmp_config_obj.set_enable_host_nfc(FLAGS_enable_host_nfc);
428-
tmp_config_obj.set_enable_host_nfc_connector(FLAGS_enable_host_nfc);
423+
std::vector<bool> netsim_all_radios_vec =
424+
CF_EXPECT(GET_FLAG_BOOL_VALUE(netsim));
425+
bool any_netsim_all_radios =
426+
std::any_of(netsim_all_radios_vec.begin(), netsim_all_radios_vec.end(),
427+
[](bool e) { return e; });
428+
std::vector<bool> netsim_bt_vec = CF_EXPECT(GET_FLAG_BOOL_VALUE(netsim_bt));
429+
bool any_netsim_bt = std::any_of(netsim_bt_vec.begin(), netsim_bt_vec.end(),
430+
[](bool e) { return e; });
431+
std::vector<bool> netsim_uwb_vec = CF_EXPECT(GET_FLAG_BOOL_VALUE(netsim_uwb));
432+
bool any_netsim_uwb = std::any_of(
433+
netsim_uwb_vec.begin(), netsim_uwb_vec.end(), [](bool e) { return e; });
434+
bool netsim_has_bt = any_netsim_all_radios || any_netsim_bt;
435+
bool netsim_has_uwb = any_netsim_all_radios || any_netsim_uwb;
429436

430437
// These flags inform NetsimServer::ResultSetup which radios it owns.
431-
if (is_bt_netsim) {
438+
if (netsim_has_bt) {
432439
tmp_config_obj.netsim_radio_enable(CuttlefishConfig::NetsimRadio::Bluetooth);
433440
}
441+
if (netsim_has_uwb) {
442+
tmp_config_obj.netsim_radio_enable(CuttlefishConfig::NetsimRadio::Uwb);
443+
}
444+
445+
bool any_not_netsim_bt = false;
446+
bool any_not_netsim_uwb = false;
447+
for (int32_t i = 0; i < instances_size; ++i) {
448+
any_not_netsim_bt |= !netsim_all_radios_vec[i] && !netsim_bt_vec[i];
449+
any_not_netsim_uwb |= !netsim_all_radios_vec[i] && !netsim_uwb_vec[i];
450+
}
451+
452+
std::vector<bool> enable_host_bluetooth_vec =
453+
CF_EXPECT(GET_FLAG_BOOL_VALUE(enable_host_bluetooth));
454+
434455
// end of vectorize ap_rootfs_image, ap_kernel_image, wmediumd_config
435456

436457
tmp_config_obj.set_enable_automotive_proxy(FLAGS_enable_automotive_proxy);
@@ -639,15 +660,7 @@ Result<CuttlefishConfig> InitializeCuttlefishConfiguration(
639660
if (FLAGS_pica_instance_num > 0) {
640661
pica_instance_num = FLAGS_pica_instance_num - 1;
641662
}
642-
tmp_config_obj.set_enable_host_uwb(FLAGS_enable_host_uwb || is_uwb_netsim);
643-
644-
// netsim has its own connector for uwb
645-
tmp_config_obj.set_enable_host_uwb_connector(FLAGS_enable_host_uwb &&
646-
!is_uwb_netsim);
647-
648-
if (is_uwb_netsim) {
649-
tmp_config_obj.netsim_radio_enable(CuttlefishConfig::NetsimRadio::Uwb);
650-
}
663+
tmp_config_obj.set_enable_host_uwb(FLAGS_enable_host_uwb || any_netsim_uwb);
651664

652665
tmp_config_obj.set_pica_uci_port(7000 + pica_instance_num);
653666
LOG(DEBUG) << "launch pica: " << (FLAGS_pica_instance_num <= 0);
@@ -981,12 +994,21 @@ Result<CuttlefishConfig> InitializeCuttlefishConfiguration(
981994

982995
// crosvm should create fifos for Bluetooth
983996
bool enable_host_bluetooth = enable_host_bluetooth_vec[instance_index];
997+
bool is_netsim_all = netsim_all_radios_vec[instance_index];
998+
bool is_bt_netsim = is_netsim_all || netsim_bt_vec[instance_index];
984999
// or is_bt_netsim is here for backwards compatibility only
9851000
instance.set_has_bluetooth(enable_host_bluetooth || is_bt_netsim);
9861001
// rootcanal and bt_connector should handle Bluetooth (instead of netsim)
9871002
instance.set_enable_host_bluetooth_connector(enable_host_bluetooth &&
9881003
!is_bt_netsim);
9891004

1005+
bool is_uwb_netsim = is_netsim_all || netsim_uwb_vec[instance_index];
1006+
// netsim has its own connector for uwb
1007+
instance.set_enable_host_uwb_connector(FLAGS_enable_host_uwb &&
1008+
!is_uwb_netsim);
1009+
1010+
bool is_any_netsim = is_netsim_all || is_bt_netsim || is_uwb_netsim;
1011+
9901012
instance.set_uuid(FLAGS_uuid);
9911013

9921014
instance.set_environment_name(environment_name);
@@ -1171,12 +1193,13 @@ Result<CuttlefishConfig> InitializeCuttlefishConfiguration(
11711193
tmp_config_obj.set_sig_server_proxy_port(port);
11721194
instance.set_start_netsim(is_first_instance && is_any_netsim);
11731195

1174-
instance.set_start_rootcanal(is_first_instance && !is_bt_netsim &&
1196+
instance.set_start_rootcanal(is_first_instance && any_not_netsim_bt &&
11751197
(FLAGS_rootcanal_instance_num <= 0));
11761198

1177-
instance.set_start_casimir(is_first_instance && FLAGS_casimir_instance_num <= 0);
1199+
instance.set_start_casimir(is_first_instance &&
1200+
FLAGS_casimir_instance_num <= 0);
11781201

1179-
instance.set_start_pica(is_first_instance && !is_uwb_netsim &&
1202+
instance.set_start_pica(is_first_instance && any_not_netsim_uwb &&
11801203
FLAGS_pica_instance_num <= 0);
11811204
instance.set_start_vhal_proxy_server(
11821205
is_first_instance && enable_vhal_proxy_server &&

base/cvd/cuttlefish/host/commands/run_cvd/launch/uwb_connector.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace cuttlefish {
3939
Result<std::optional<MonitorCommand>> UwbConnector(
4040
const CuttlefishConfig& config,
4141
const CuttlefishConfig::InstanceSpecific& instance) {
42-
if (!config.enable_host_uwb_connector()) {
42+
if (!instance.enable_host_uwb_connector()) {
4343
return {};
4444
}
4545
std::vector<std::string> fifo_paths = {

base/cvd/cuttlefish/host/libs/config/cuttlefish_config.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,6 @@ bool CuttlefishConfig::enable_host_uwb() const {
195195
return (*dictionary_)[kEnableHostUwb].asBool();
196196
}
197197

198-
static constexpr char kEnableHostUwbConnector[] = "enable_host_uwb_connector";
199-
void CuttlefishConfig::set_enable_host_uwb_connector(bool enable_host_uwb) {
200-
(*dictionary_)[kEnableHostUwbConnector] = enable_host_uwb;
201-
}
202-
bool CuttlefishConfig::enable_host_uwb_connector() const {
203-
return (*dictionary_)[kEnableHostUwbConnector].asBool();
204-
}
205-
206198
static constexpr char kPicaUciPort[] = "pica_uci_port";
207199
int CuttlefishConfig::pica_uci_port() const {
208200
return (*dictionary_)[kPicaUciPort].asInt();

base/cvd/cuttlefish/host/libs/config/cuttlefish_config.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ class CuttlefishConfig {
122122
void set_enable_host_uwb(bool enable_host_uwb);
123123
bool enable_host_uwb() const;
124124

125-
void set_enable_host_uwb_connector(bool enable_host_uwb);
126-
bool enable_host_uwb_connector() const;
127-
128125
void set_enable_automotive_proxy(bool enable_automotive_proxy);
129126
bool enable_automotive_proxy() const;
130127

@@ -319,6 +316,7 @@ class CuttlefishConfig {
319316
bool has_bluetooth() const;
320317
// Bluetooth is enabled by bt_connector and rootcanal
321318
bool enable_host_bluetooth_connector() const;
319+
bool enable_host_uwb_connector() const;
322320

323321
uint32_t session_id() const;
324322
bool use_allocd() const;
@@ -673,6 +671,7 @@ class CuttlefishConfig {
673671
void set_ethernet_ipv6(const std::string& ip);
674672
void set_has_bluetooth(bool has_bluetooth);
675673
void set_enable_host_bluetooth_connector(bool enable_host_bluetooth);
674+
void set_enable_host_uwb_connector(bool enable_host_uwb);
676675
void set_session_id(uint32_t session_id);
677676
void set_use_allocd(bool use_allocd);
678677
void set_use_cvdalloc(bool use_cvdalloc);

base/cvd/cuttlefish/host/libs/config/cuttlefish_config_instance.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,6 +1616,15 @@ void CuttlefishConfig::MutableInstanceSpecific::
16161616
(*Dictionary())[kRequiresHostBluetoothConnector] = enable_host_bluetooth;
16171617
}
16181618

1619+
static constexpr char kEnableHostUwbConnector[] = "enable_host_uwb_connector";
1620+
bool CuttlefishConfig::InstanceSpecific::enable_host_uwb_connector() const {
1621+
return (*Dictionary())[kEnableHostUwbConnector].asBool();
1622+
}
1623+
void CuttlefishConfig::MutableInstanceSpecific::set_enable_host_uwb_connector(
1624+
bool enable_host_uwb) {
1625+
(*Dictionary())[kEnableHostUwbConnector] = enable_host_uwb;
1626+
}
1627+
16191628
static constexpr char kUseAllocd[] = "use_allocd";
16201629
bool CuttlefishConfig::InstanceSpecific::use_allocd() const {
16211630
return (*Dictionary())[kUseAllocd].asBool();

0 commit comments

Comments
 (0)