wlan_mlme/ap/frame_writer/
mod.rs
1use crate::error::Error;
6use anyhow::format_err;
7use wlan_common::mac;
8use zerocopy::Ref;
9
10pub fn set_more_data(buffer: &mut [u8]) -> Result<(), Error> {
11 let (frame_ctrl, _) = Ref::<&mut [u8], mac::FrameControl>::from_prefix(buffer)
12 .map_err(|_| format_err!("could not parse frame control header"))?;
13 let frame_ctrl = Ref::into_mut(frame_ctrl);
14 frame_ctrl.set_more_data(true);
15 Ok(())
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn more_data() {
24 let mut buffer = vec![
25 0b00001000, 0b00000010, 0, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0x10, 0, 0xAA, 0xAA, 0x03, 0, 0, 0, 0x12, 0x34, 1, 2, 3, 4, 5,
37 ];
38 set_more_data(&mut buffer[..]).expect("expected set more data OK");
39 assert_eq!(
40 &[
41 0b00001000, 0b00100010, 0, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0x10, 0, 0xAA, 0xAA, 0x03, 0, 0, 0, 0x12, 0x34, 1, 2, 3, 4, 5,
53 ][..],
54 &buffer[..]
55 );
56 }
57}