Expand description

WPA controller

Usage

use wpa_ctrl::{WpaControlReq, WpaControllerBuilder};

const WPA_CTRL_BUILD: WpaControllerBuilder<'static> = WpaControllerBuilder::new();

let mut ctrl = match WPA_CTRL_BUILD.open("wlan0") {
    Ok(ctrl) => ctrl,
    Err(error) => panic!("Cannot open wlan0"),
};

ctrl.request(WpaControlReq::status()).expect("Successful command");
while let Some(resp) = ctrl.recv().expect("To read message") {
    //Skip messages that are not intended as responses
    if resp.is_unsolicited() {
        continue;
    }

    if let Some(status) = resp.as_status() {
        println!("Network status={:?}", status);
        break;
    }
}

Usage scenarios

Add new network

  • Optionally scan and check list of networks using scan_results
  • add_network which returns returns id of network
  • set_network <id> ssid "network name" which specifies network’s name to associate with
  • set_network <id> psk "WAP password" which specifies WPA password, only usable when network requires WPA security
  • set_network <id> key_mgmt NONE which specifies no security, required to connect to networks without password
  • select_network <id> - Select network for use.
  • save_config - Optionally to save configuration.

Reconnect

  • Optionally disconnect;
  • Run reassociate to start process of connecting to currently selected network

Structs

Indicates failure of command
Network id
Pong Message
Surrounds value with quotes, useful when setting ssid or psk
Indicates success of command
Request type
WPA controller
Client builder
Network description
Network’s flag, describing its current state.
Iterator over list of networks
Interface status

Enums

Interface state