diff --git a/wifi_core/Cargo.toml b/wifi_core/Cargo.toml index 554be19..0a16bce 100644 --- a/wifi_core/Cargo.toml +++ b/wifi_core/Cargo.toml @@ -4,3 +4,5 @@ version = "0.1.0" edition = "2024" [dependencies] +bincode = "1.3.3" +serde = { version = "1.0.228", default-features = false, features = ["derive"] } diff --git a/wifi_core/src/lib.rs b/wifi_core/src/lib.rs index b93cf3f..cf8b330 100644 --- a/wifi_core/src/lib.rs +++ b/wifi_core/src/lib.rs @@ -1,14 +1,4 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right -} +pub mod protocol; +pub mod types; -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub const PROTOCOL_VERSION: u32 = 1; diff --git a/wifi_core/src/protocol.rs b/wifi_core/src/protocol.rs new file mode 100644 index 0000000..310a435 --- /dev/null +++ b/wifi_core/src/protocol.rs @@ -0,0 +1,21 @@ +use serde::{Deserialize, Serialize}; + +use crate::types::{NetworkInfo, WifiStatus}; + +#[derive(Debug, Serialize, Deserialize)] +pub enum Request { + GetStatus, + ListNetworks, + Enable, + Disable, + Connect { ssid: String }, + Disconnect, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum Response { + Status(WifiStatus), + Networks(Vec), + Ok, + Error(String), +} diff --git a/wifi_core/src/types.rs b/wifi_core/src/types.rs new file mode 100644 index 0000000..3830e51 --- /dev/null +++ b/wifi_core/src/types.rs @@ -0,0 +1,16 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct NetworkInfo { + pub ssid: String, + pub signal: u8, // 0–100 + pub secure: bool, + pub connected: bool, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WifiStatus { + pub enabled: bool, + pub connected_ssid: Option, + pub signal: Option, // None if disconnected +}