1use crate::bitfield::BitfieldUnit;
2
3#[repr(C, packed)]
4#[derive(Debug, Clone)]
5#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
6pub struct MacHdr {
7 _bitfield_frame_ctl: BitfieldUnit<[u8; 2]>,
8 duration_id: [u8; 2],
9 address1: [u8; 6],
10 address2: [u8; 6],
11 address3: [u8; 6],
12 sequence_ctl: [u8; 2],
13 address4: [u8; 6],
14 qos_ctl: [u8; 2],
15}
16
17impl MacHdr {
18 pub const LEN: usize = ::core::mem::size_of::<MacHdr>();
19
20 #[inline]
21 pub fn protocol_version(&self) -> u16 {
22 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(0, 2) as u16) }
23 }
24 #[inline]
25 pub fn set_protocol_version(&mut self, val: u16) {
26 unsafe {
27 let val: u16 = ::core::mem::transmute(val);
28 self._bitfield_frame_ctl.set(0, 2, val as u64)
29 }
30 }
31 #[inline]
32 pub fn ty(&self) -> u16 {
33 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(2, 4) as u16) }
34 }
35 #[inline]
36 pub fn set_ty(&mut self, val: u16) {
37 unsafe {
38 let val: u16 = ::core::mem::transmute(val);
39 self._bitfield_frame_ctl.set(2, 4, val as u64)
40 }
41 }
42 #[inline]
43 pub fn sub_ty(&self) -> u16 {
44 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(4, 8) as u16) }
45 }
46 #[inline]
47 pub fn set_sub_ty(&mut self, val: u16) {
48 unsafe {
49 let val: u16 = ::core::mem::transmute(val);
50 self._bitfield_frame_ctl.set(4, 8, val as u64)
51 }
52 }
53 #[inline]
54 pub fn tds(&self) -> u16 {
55 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(8, 9) as u16) }
56 }
57 #[inline]
58 pub fn set_tds(&mut self, val: u16) {
59 unsafe {
60 let val: u16 = ::core::mem::transmute(val);
61 self._bitfield_frame_ctl.set(8, 9, val as u64)
62 }
63 }
64 #[inline]
65 pub fn fds(&self) -> u16 {
66 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(9, 10) as u16) }
67 }
68 #[inline]
70 pub fn set_fds(&mut self, val: u16) {
71 unsafe {
72 let val: u16 = ::core::mem::transmute(val);
73 self._bitfield_frame_ctl.set(9, 10, val as u64)
74 }
75 }
76 #[inline]
77 pub fn mflag(&self) -> u16 {
78 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(10, 11) as u16) }
79 }
80 #[inline]
81 pub fn set_mflag(&mut self, val: u16) {
82 unsafe {
83 let val: u16 = ::core::mem::transmute(val);
84 self._bitfield_frame_ctl.set(10, 11, val as u64)
85 }
86 }
87 #[inline]
88 pub fn retry(&self) -> u16 {
89 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(11, 12) as u16) }
90 }
91 #[inline]
92 pub fn set_retry(&mut self, val: u16) {
93 unsafe {
94 let val: u16 = ::core::mem::transmute(val);
95 self._bitfield_frame_ctl.set(11, 12, val as u64)
96 }
97 }
98 #[inline]
99 pub fn pmgmt(&self) -> u16 {
100 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(12, 13) as u16) }
101 }
102 #[inline]
104 pub fn set_pmgmt(&mut self, val: u16) {
105 unsafe {
106 let val: u16 = ::core::mem::transmute(val);
107 self._bitfield_frame_ctl.set(12, 13, val as u64)
108 }
109 }
110 #[inline]
111 pub fn mdata(&self) -> u16 {
112 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(13, 14) as u16) }
113 }
114 #[inline]
116 pub fn set_mdata(&mut self, val: u16) {
117 unsafe {
118 let val: u16 = ::core::mem::transmute(val);
119 self._bitfield_frame_ctl.set(13, 14, val as u64)
120 }
121 }
122 #[inline]
123 pub fn protected_frame(&self) -> u16 {
124 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(14, 15) as u16) }
125 }
126 #[inline]
127 pub fn set_protected_frame(&mut self, val: u16) {
128 unsafe {
129 let val: u16 = ::core::mem::transmute(val);
130 self._bitfield_frame_ctl.set(14, 15, val as u64)
131 }
132 }
133 #[inline]
134 pub fn order(&self) -> u16 {
135 unsafe { ::core::mem::transmute(self._bitfield_frame_ctl.get(15, 16) as u16) }
136 }
137 #[inline]
138 pub fn set_order(&mut self, val: u16) {
139 unsafe {
140 let val: u16 = ::core::mem::transmute(val);
141 self._bitfield_frame_ctl.set(15, 16, val as u64)
142 }
143 }
144 #[inline]
145 pub fn new_bitfield_frame_ctl(
146 protocol_version: u16,
147 ty: u16,
148 sub_ty: u16,
149 tds: u16,
150 fds: u16,
151 mflag: u16,
152 retry: u16,
153 pmgmt: u16,
154 mdata: u16,
155 protected_frame: u16,
156 order: u16,
157 ) -> BitfieldUnit<[u8; 2usize]> {
158 let mut bitfield_unit: BitfieldUnit<[u8; 2]> = Default::default();
159 bitfield_unit.set(0, 2, {
160 let protocol_version: u16 = unsafe { ::core::mem::transmute(protocol_version) };
161 protocol_version as u64
162 });
163 bitfield_unit.set(2, 2, {
164 let ty: u16 = unsafe { ::core::mem::transmute(ty) };
165 ty as u64
166 });
167 bitfield_unit.set(4, 4, {
168 let sub_ty: u16 = unsafe { ::core::mem::transmute(sub_ty) };
169 sub_ty as u64
170 });
171 bitfield_unit.set(8, 1, {
172 let tds: u16 = unsafe { ::core::mem::transmute(tds) };
173 tds as u64
174 });
175 bitfield_unit.set(9, 1, {
176 let fds: u16 = unsafe { ::core::mem::transmute(fds) };
177 fds as u64
178 });
179 bitfield_unit.set(10, 1, {
180 let mflag: u16 = unsafe { ::core::mem::transmute(mflag) };
181 mflag as u64
182 });
183 bitfield_unit.set(11, 1, {
184 let retry: u16 = unsafe { ::core::mem::transmute(retry) };
185 retry as u64
186 });
187 bitfield_unit.set(12, 1, {
188 let pmgmt: u16 = unsafe { ::core::mem::transmute(pmgmt) };
189 pmgmt as u64
190 });
191 bitfield_unit.set(13, 1, {
192 let mdata: u16 = unsafe { ::core::mem::transmute(mdata) };
193 mdata as u64
194 });
195 bitfield_unit.set(14, 1, {
196 let protected_frame: u16 = unsafe { ::core::mem::transmute(protected_frame) };
197 protected_frame as u64
198 });
199 bitfield_unit.set(15, 1, {
200 let order: u16 = unsafe { ::core::mem::transmute(order) };
201 order as u64
202 });
203 bitfield_unit
204 }
205}