[wlan][common] Overhaul the IE parsing/writing functionality
- Separate element splitting from parsing. This allows e.g. finding a single specific element in the frame without parsing others. This also avoid unnecessary "serialization of state" (switching on element id twice) - Make a universal write_ie!() helper macro that makes element serialization much easier and less repetitive. This is similar to the current C++ template-based design. - Split the module into several files to keep it more organized. - Introduce a strong type alias for element ID. - Make element parsing as zerocopy as possible. E.g., TIM header is not copied when parsed. This also allows in-place modification of fields. - Make sure all parsing works over a generic ByteSlice and is not limited to immutable slices. - Explicit error types for frame parsing and writing instead of the generic failure::Error. This allows the client code to recover from specific errors safely and explicitly. - Helper macros for frame validation during parsing and writing. Change-Id: I88262817cc51996c9575e0bf99ab729e3bf18f68
Showing
- garnet/lib/rust/wlan-common/src/error.rs 46 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/error.rs
- garnet/lib/rust/wlan-common/src/ie.rs 0 additions, 865 deletionsgarnet/lib/rust/wlan-common/src/ie.rs
- garnet/lib/rust/wlan-common/src/ie/constants.rs 7 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/constants.rs
- garnet/lib/rust/wlan-common/src/ie/fields.rs 53 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/fields.rs
- garnet/lib/rust/wlan-common/src/ie/id.rs 12 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/id.rs
- garnet/lib/rust/wlan-common/src/ie/mod.rs 36 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/mod.rs
- garnet/lib/rust/wlan-common/src/ie/parse.rs 140 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/parse.rs
- garnet/lib/rust/wlan-common/src/ie/reader.rs 68 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/reader.rs
- garnet/lib/rust/wlan-common/src/ie/write.rs 220 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/ie/write.rs
- garnet/lib/rust/wlan-common/src/lib.rs 8 additions, 2 deletionsgarnet/lib/rust/wlan-common/src/lib.rs
- garnet/lib/rust/wlan-common/src/tim.rs 49 additions, 0 deletionsgarnet/lib/rust/wlan-common/src/tim.rs
Loading
Please register or sign in to comment