libwifi/frame/management/
probe.rs

1use libwifi_macros::AddressHeader;
2
3use crate::frame::components::*;
4
5#[derive(Clone, Debug, AddressHeader)]
6pub struct ProbeRequest {
7    pub header: ManagementHeader,
8    pub station_info: StationInfo,
9}
10
11impl ProbeRequest {
12    pub fn encode(&self) -> Vec<u8> {
13        let mut bytes = Vec::new();
14
15        // Encode the ManagementHeader
16        bytes.extend(self.header.encode());
17
18        // Encode Station Info
19        bytes.extend(self.station_info.encode());
20
21        bytes
22    }
23}
24
25#[derive(Clone, Debug, AddressHeader)]
26pub struct ProbeResponse {
27    pub header: ManagementHeader,
28    pub timestamp: u64,
29    pub beacon_interval: u16,
30    pub capability_info: u16,
31    pub station_info: StationInfo,
32}
33
34impl ProbeResponse {
35    pub fn encode(&self) -> Vec<u8> {
36        let mut bytes = Vec::new();
37
38        // Encode the ManagementHeader
39        bytes.extend(self.header.encode());
40
41        // Encode Timestamp
42        bytes.extend_from_slice(&self.timestamp.to_le_bytes());
43
44        // Encode Beacon Interval
45        bytes.extend_from_slice(&self.beacon_interval.to_le_bytes());
46
47        // Encode Capability Info
48        bytes.extend_from_slice(&self.capability_info.to_le_bytes());
49
50        // Encode Station Info
51        bytes.extend(self.station_info.encode());
52
53        bytes
54    }
55}