#wifi #microsoft #sample #legacy #loose #adaptation #github

wifidirect-legacy-ap

使用https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/WiFiDirectLegacyAP的Rust宽松适配,使用https://github.com/microsoft/windows-rs编写

6个版本 (3个破坏性)

0.4.0 2023年2月12日
0.3.1 2023年2月5日
0.2.1 2023年1月31日
0.1.0 2023年1月30日

#3#适配

每月26次下载

BSD-4-Clause

15KB
193 代码行

WiFiDirect Legacy AP (for Windows)

这是一个Microsoft C++ WiFi Direct Legacy AP示例代码的Rust宽松适配,使用Flying Carpet进行适配,并使用Microsoft的Windows API Rust绑定编写。它是一个暴露一个结构体的库,即WlanHostedNetworkHelper

示例用法

使用SSID、密码、用于从Windows运行时向您的代码写入消息的消息Sender通道,以及一个当AP启动或启动失败时发送一个bool的成功Sender通道的WlanHostedNetworkHelper::new()。在需要的时间内保持返回的热点。

use std::sync::mpsc;
use std::thread::spawn;
use crate::WlanHostedNetworkHelper;

fn run_hosted_network() {
    // Make channels to receive messages from Windows Runtime
    let (message_tx, message_rx) = mpsc::channel::<String>();
    let (success_tx, success_rx) = mpsc::channel::<bool>();
    let wlan_hosted_network_helper =
        WlanHostedNetworkHelper::new("WiFiDirectTestNetwork", "TestingThisLibrary", message_tx, success_tx)
            .unwrap();

    // Listen for messages in a thread that will exit when the hotspot is done and the sender closes
    spawn(move || loop {
        let msg = match message_rx.recv() {
            Ok(m) => m,
            Err(e) => {
                println!("WiFiDirect thread exiting: {}", e);
                break;
            }
        };
        println!("{}", msg);
    });

    // Wait to see whether we were able to start the hotspot
    let started = success_rx.recv().unwrap();
    if !started {
        panic!("Failed to start hotspot");
    }

    // Use the hosted network
    std::thread::sleep(std::time::Duration::from_secs(10));

    // Stop it when done
    wlan_hosted_network_helper.stop().expect("Error in stop()");
}

依赖项

~130MB
~2M SLoC