drivers_only_common/
sme_helpers.rs1use rand::Rng;
6use rand::distr::Alphanumeric;
7use std::sync::LazyLock;
8use {
9 fidl_fuchsia_wlan_common as fidl_common, fidl_fuchsia_wlan_ieee80211 as fidl_ieee80211,
10 fidl_fuchsia_wlan_sme as fidl_sme,
11};
12
13pub static DEFAULT_OPEN_AP_CONFIG: LazyLock<fidl_sme::ApConfig> =
14 LazyLock::new(|| fidl_sme::ApConfig {
15 ssid: random_ssid(),
16 password: vec![],
17 radio_cfg: fidl_sme::RadioConfig {
18 phy: fidl_common::WlanPhyType::Ofdm,
19 channel: fidl_ieee80211::WlanChannel {
20 primary: 1,
21 cbw: fidl_ieee80211::ChannelBandwidth::Cbw20,
22 secondary80: 0,
23 },
24 },
25 });
26
27pub async fn get_client_sme(
28 generic_sme_proxy: &fidl_sme::GenericSmeProxy,
29) -> fidl_sme::ClientSmeProxy {
30 let (client_sme_proxy, client_sme_server) = fidl::endpoints::create_proxy();
31 generic_sme_proxy
32 .get_client_sme(client_sme_server)
33 .await
34 .expect("FIDL error")
35 .expect("GetClientSme Error");
36 client_sme_proxy
37}
38
39pub async fn get_telemetry(
40 generic_sme_proxy: &fidl_sme::GenericSmeProxy,
41) -> fidl_sme::TelemetryProxy {
42 let (telemetry_proxy, telemetry_server) = fidl::endpoints::create_proxy();
43 generic_sme_proxy
44 .get_sme_telemetry(telemetry_server)
45 .await
46 .expect("FIDL error")
47 .expect("GetTelemetry error");
48 telemetry_proxy
49}
50
51pub async fn get_ap_sme(generic_sme_proxy: &fidl_sme::GenericSmeProxy) -> fidl_sme::ApSmeProxy {
52 let (ap_sme_proxy, ap_sme_server) = fidl::endpoints::create_proxy();
53 generic_sme_proxy.get_ap_sme(ap_sme_server).await.expect("FIDL error").expect("GetApSme Error");
54 ap_sme_proxy
55}
56
57pub fn random_string_as_bytes(len: usize) -> Vec<u8> {
58 rand::rng().sample_iter(&Alphanumeric).take(len).collect()
59}
60
61pub fn random_ssid() -> Vec<u8> {
62 let ssid_len = rand::random_range(1..=fidl_ieee80211::MAX_SSID_BYTE_LEN as usize);
63 random_string_as_bytes(ssid_len)
64}
65
66pub fn random_password() -> Vec<u8> {
67 let pw_len = rand::random_range(8..=63);
68 random_string_as_bytes(pw_len)
69}