Refactor startup params for bluetooth for disable_address_reuse

Test: m netsimd
Change-Id: I4ee3be276924012ba5f1e4392bbc9a511320362a
diff --git a/rust/daemon/src/bluetooth/facade.rs b/rust/daemon/src/bluetooth/facade.rs
index c236a7b..5921924 100644
--- a/rust/daemon/src/bluetooth/facade.rs
+++ b/rust/daemon/src/bluetooth/facade.rs
@@ -54,9 +54,13 @@
 }
 
 /// Starts the Bluetooth service.
-pub fn bluetooth_start(config: &MessageField<BluetoothConfig>, instance_num: u16) {
+pub fn bluetooth_start(
+    config: &MessageField<BluetoothConfig>,
+    instance_num: u16,
+    disable_address_reuse: bool,
+) {
     let proto_bytes = config.as_ref().unwrap_or_default().write_to_bytes().unwrap();
-    ffi_bluetooth::bluetooth_start(&proto_bytes, instance_num);
+    ffi_bluetooth::bluetooth_start(&proto_bytes, instance_num, disable_address_reuse);
 }
 
 /// Stops the Bluetooth service.
diff --git a/rust/daemon/src/bluetooth/mocked.rs b/rust/daemon/src/bluetooth/mocked.rs
index fa8cbe5..2ae0ea1 100644
--- a/rust/daemon/src/bluetooth/mocked.rs
+++ b/rust/daemon/src/bluetooth/mocked.rs
@@ -76,7 +76,11 @@
 }
 
 /// Starts the Bluetooth service.
-pub fn bluetooth_start(_config: &MessageField<BluetoothConfig>, _instance_num: u16) {
+pub fn bluetooth_start(
+    _config: &MessageField<BluetoothConfig>,
+    _instance_num: u16,
+    _disable_address_reuse: bool,
+) {
     info!("bluetooth service started");
 }
 
diff --git a/rust/daemon/src/config.rs b/rust/daemon/src/config.rs
index 2b118e0..ba1d36b 100644
--- a/rust/daemon/src/config.rs
+++ b/rust/daemon/src/config.rs
@@ -18,7 +18,6 @@
 
 static SET_DEV_CALLED: Once = Once::new();
 static SET_PCAP_CALLED: Once = Once::new();
-static SET_DISABLE_ADDRESS_REUSE_CALLED: Once = Once::new();
 
 lazy_static! {
     static ref CONFIG: RwLock<Config> = RwLock::new(Config::new());
@@ -27,12 +26,11 @@
 struct Config {
     pub dev: Option<bool>,
     pub pcap: Option<bool>,
-    pub disable_address_reuse: Option<bool>,
 }
 
 impl Config {
     pub fn new() -> Self {
-        Self { dev: None, pcap: None, disable_address_reuse: None }
+        Self { dev: None, pcap: None }
     }
 }
 
@@ -64,20 +62,6 @@
     });
 }
 
-/// Get the flag of disable_address_reuse
-pub fn get_disable_address_reuse() -> bool {
-    let config = CONFIG.read().unwrap();
-    config.disable_address_reuse.unwrap_or(false)
-}
-
-/// Set the flag of disable_address_reuse
-pub fn set_disable_address_reuse(flag: bool) {
-    SET_DISABLE_ADDRESS_REUSE_CALLED.call_once(|| {
-        let mut config = CONFIG.write().unwrap();
-        config.disable_address_reuse = Some(flag);
-    });
-}
-
 #[cfg(test)]
 mod tests {
     use super::*;
@@ -109,18 +93,4 @@
         set_pcap(false);
         assert!(get_pcap());
     }
-
-    #[test]
-    fn test_disable_address_reuse() {
-        // Check if default disable_address_reuse boolean is false
-        assert!(!get_disable_address_reuse());
-
-        // Check if set_disable_address_reuse changes the flag to true
-        set_disable_address_reuse(true);
-        assert!(get_disable_address_reuse());
-
-        // Check if set_disable_address_reuse can only be called once
-        set_disable_address_reuse(false);
-        assert!(get_disable_address_reuse());
-    }
 }
diff --git a/rust/daemon/src/ffi.rs b/rust/daemon/src/ffi.rs
index 468ec6a..57adcd5 100644
--- a/rust/daemon/src/ffi.rs
+++ b/rust/daemon/src/ffi.rs
@@ -26,8 +26,6 @@
 use crate::transport::dispatcher::{handle_request_cxx, handle_response};
 use crate::transport::grpc::{register_grpc_transport, unregister_grpc_transport};
 
-use crate::config::get_disable_address_reuse;
-
 use crate::captures::captures_handler::handle_capture_cxx;
 use crate::devices::devices_handler::{
     add_chip_cxx, get_distance_cxx, handle_device_cxx, remove_chip_cxx, AddChipResultCxx,
@@ -215,7 +213,7 @@
 
         #[rust_name = bluetooth_start]
         #[namespace = "netsim::hci::facade"]
-        pub fn Start(proto_bytes: &[u8], instance_num: u16);
+        pub fn Start(proto_bytes: &[u8], instance_num: u16, disable_address_reuse: bool);
 
         #[rust_name = bluetooth_stop]
         #[namespace = "netsim::hci::facade"]
@@ -354,12 +352,6 @@
 
         #[cxx_name = "GetVersion"]
         fn get_version() -> String;
-
-        // Disable Address Reuse Flag
-
-        #[cxx_name = "GetDisableAddressReuse"]
-        fn get_disable_address_reuse() -> bool;
-
     }
 
     #[allow(dead_code)]
diff --git a/rust/daemon/src/rust_main.rs b/rust/daemon/src/rust_main.rs
index d7521c3..a0fe60f 100644
--- a/rust/daemon/src/rust_main.rs
+++ b/rust/daemon/src/rust_main.rs
@@ -15,6 +15,7 @@
 use clap::Parser;
 use log::warn;
 use log::{error, info};
+#[cfg(feature = "cuttlefish")]
 use netsim_common::system::netsimd_temp_dir;
 use netsim_common::util::os_utils::{get_hci_port, get_instance, remove_netsim_ini};
 use netsim_common::util::zip_artifact::zip_artifacts;
@@ -180,7 +181,6 @@
         args.no_cli_ui,
         args.no_web_ui,
         args.pcap,
-        args.disable_address_reuse,
         hci_port,
         instance_num,
         args.dev,
@@ -202,7 +202,7 @@
     wait_devices(device_events_rx);
 
     // Start radio facades
-    bluetooth_facade::bluetooth_start(&config.bluetooth, instance_num);
+    bluetooth_facade::bluetooth_start(&config.bluetooth, instance_num, args.disable_address_reuse);
     wifi_facade::wifi_start(&config.wifi);
 
     // Run all netsimd services (grpc, socket, web)
diff --git a/rust/daemon/src/service.rs b/rust/daemon/src/service.rs
index fefd8b5..14ac3c8 100644
--- a/rust/daemon/src/service.rs
+++ b/rust/daemon/src/service.rs
@@ -14,7 +14,7 @@
 
 use crate::bluetooth::advertise_settings as ble_advertise_settings;
 use crate::captures::captures_handler::clear_pcap_files;
-use crate::config::{get_dev, set_dev, set_disable_address_reuse, set_pcap};
+use crate::config::{get_dev, set_dev, set_pcap};
 use crate::ffi::ffi_transport::{run_grpc_server_cxx, GrpcServer};
 use crate::http_server::server::run_http_server;
 use crate::transport::socket::run_socket_transport;
@@ -32,7 +32,6 @@
     no_cli_ui: bool,
     no_web_ui: bool,
     pcap: bool,
-    disable_address_reuse: bool,
     hci_port: u16,
     instance_num: u16,
     dev: bool,
@@ -46,7 +45,6 @@
         no_cli_ui: bool,
         no_web_ui: bool,
         pcap: bool,
-        disable_address_reuse: bool,
         hci_port: u16,
         instance_num: u16,
         dev: bool,
@@ -57,7 +55,6 @@
             no_cli_ui,
             no_web_ui,
             pcap,
-            disable_address_reuse,
             hci_port,
             instance_num,
             dev,
@@ -89,7 +86,6 @@
         }
         set_pcap(self.service_params.pcap);
         set_dev(self.service_params.dev);
-        set_disable_address_reuse(self.service_params.disable_address_reuse);
     }
 
     /// Runs netsim gRPC server
diff --git a/src/hci/bluetooth_facade.cc b/src/hci/bluetooth_facade.cc
index eae705a..f706cfd 100644
--- a/src/hci/bluetooth_facade.cc
+++ b/src/hci/bluetooth_facade.cc
@@ -188,7 +188,7 @@
 
 // Initialize the rootcanal library.
 void Start(const rust::Slice<::std::uint8_t const> proto_bytes,
-           uint16_t instance_num) {
+           uint16_t instance_num, bool disable_address_reuse) {
   if (gStarted) return;
 
   // output is to a file, so no color wanted
@@ -229,7 +229,7 @@
 
   // Disable Address Reuse if '--disable_address_reuse' flag is true
   // TODO: once config files are active, use the value from config proto
-  gTestModel->SetReuseDeviceAddresses(!netsim::GetDisableAddressReuse());
+  gTestModel->SetReuseDeviceAddresses(!disable_address_reuse);
 
   // NOTE: 0:BR_EDR, 1:LOW_ENERGY. The order is used by bluetooth CTS.
   phy_classic_index_ = gTestModel->AddPhy(rootcanal::Phy::Type::BR_EDR);
diff --git a/src/hci/bluetooth_facade.h b/src/hci/bluetooth_facade.h
index fb82383..8a05755 100644
--- a/src/hci/bluetooth_facade.h
+++ b/src/hci/bluetooth_facade.h
@@ -52,7 +52,7 @@
 void RemoveRustDevice(uint32_t facade_id);
 
 void Start(const rust::Slice<::std::uint8_t const> proto_bytes,
-           uint16_t instance_num);
+           uint16_t instance_num, bool disable_address_reuse);
 void Stop();
 
 // Cxx functions for rust ffi.