blob: 5b82181d02c7c34d774d97bc7a3b246823745704 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use {
crate::{
access_point::{state_machine as ap_fsm, types as ap_types},
client::types as client_types,
regulatory_manager::REGION_CODE_LEN,
},
anyhow::Error,
fidl_fuchsia_wlan_sme,
futures::channel::oneshot,
};
#[derive(Debug)]
pub(crate) struct DisconnectRequest {
pub network_id: ap_types::NetworkIdentifier,
pub reason: client_types::DisconnectReason,
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) struct ConnectRequest {
pub request: client_types::ConnectRequest,
pub responder: oneshot::Sender<Result<oneshot::Receiver<()>, Error>>,
}
#[derive(Debug)]
pub(crate) struct RecordIdleIfaceRequest {
pub iface_id: u16,
pub responder: oneshot::Sender<()>,
}
#[derive(Debug)]
pub(crate) struct HasIdleIfaceRequest {
pub responder: oneshot::Sender<bool>,
}
#[derive(Debug)]
pub(crate) struct AddIfaceRequest {
pub iface_id: u16,
pub responder: oneshot::Sender<()>,
}
#[derive(Debug)]
pub(crate) struct RemoveIfaceRequest {
pub iface_id: u16,
pub responder: oneshot::Sender<()>,
}
#[derive(Debug)]
pub(crate) struct ScanRequest {
pub scan_request: fidl_fuchsia_wlan_sme::ScanRequest,
pub responder: oneshot::Sender<Result<fidl_fuchsia_wlan_sme::ScanTransactionProxy, Error>>,
}
#[derive(Debug)]
pub(crate) struct ScanProxyRequest {
pub responder: oneshot::Sender<Result<fidl_fuchsia_wlan_sme::ClientSmeProxy, Error>>,
}
#[derive(Debug)]
pub(crate) struct StopClientConnectionsRequest {
pub reason: client_types::DisconnectReason,
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) struct StartClientConnectionsRequest {
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) struct StartApRequest {
pub config: ap_fsm::ApConfig,
pub responder: oneshot::Sender<Result<oneshot::Receiver<()>, Error>>,
}
#[derive(Debug)]
pub(crate) struct StopApRequest {
pub ssid: Vec<u8>,
pub password: Vec<u8>,
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) struct StopAllApsRequest {
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) struct HasWpa3IfaceRequest {
pub responder: oneshot::Sender<bool>,
}
#[derive(Debug)]
pub(crate) struct SetCountryRequest {
pub country_code: Option<[u8; REGION_CODE_LEN]>,
pub responder: oneshot::Sender<Result<(), Error>>,
}
#[derive(Debug)]
pub(crate) enum IfaceManagerRequest {
Disconnect(DisconnectRequest),
Connect(ConnectRequest),
RecordIdleIface(RecordIdleIfaceRequest),
HasIdleIface(HasIdleIfaceRequest),
AddIface(AddIfaceRequest),
RemoveIface(RemoveIfaceRequest),
Scan(ScanRequest),
GetScanProxy(ScanProxyRequest),
StopClientConnections(StopClientConnectionsRequest),
StartClientConnections(StartClientConnectionsRequest),
StartAp(StartApRequest),
StopAp(StopApRequest),
StopAllAps(StopAllApsRequest),
HasWpa3Iface(HasWpa3IfaceRequest),
#[allow(unused)]
SetCountry(SetCountryRequest),
}
pub(crate) struct SetCountryOperationState {
pub client_connections_initially_enabled: bool,
pub initial_ap_configs: Vec<ap_fsm::ApConfig>,
pub set_country_result: Result<(), Error>,
pub responder: oneshot::Sender<Result<(), Error>>,
}
pub(crate) enum IfaceManagerOperation {
ConfigureStateMachine,
SetCountry(SetCountryOperationState),
}