wifi: Add MeasurementRequestElement (IE 38)
Part of #1311 (IEEE 802.11k/v support). This is MR 3 of 3. Depends on !2788 (the foundational IEs). Independent of !2789, so these two can be reviewed in parallel.
Summary
The Measurement Request element (Section 9.4.2.19) is the most complex IE in the 802.11k stack. It uses a variant-based design to support all 18 measurement types with type-safe access.
Design
- 3-byte fixed header: Measurement Token, Mode bitmap, Type
-
std::variant-based body storage withSetBody<T>/GetBody<T>template API -
SetBodyautomatically syncs the measurement type field - Per-type body structs hold type-scoped subelement fields
- Mode bitmap with named accessors (Parallel, Enable, Request, Report, DurationMandatory)
Measurement types supported
Basic (0), CCA (1), RPI Histogram (2), Channel Load (3), Noise Histogram (4), Beacon (5), Frame (6), STA Statistics (7), LCI (8), Transmit Stream (9), Multicast Diagnostics (10), Location Civic (11), Location Identifier (12), Directional Channel Quality (13), Directional Measurement (14), Directional Statistics (15), FTM Range (16), Measurement Pause (255).
Subelements supported
Channel Load Reporting, Noise Histogram Reporting, SSID, Beacon Reporting, Reporting Detail, AP Channel Report, Azimuth Request, FTM Range Neighbor Report (uses NeighborReportElement from !2788), Vendor Specific.
Files
src/wifi/model/measurement-request-element.{h,cc}-
src/wifi/test/wifi-rrm-info-elems-test.cc(adds 3 test cases, 8 total) src/wifi/CMakeLists.txt
Tests
./ns3 run "test-runner --suite=wifi-rrm-info-elems"
3 new test cases: MeasurementRequestElementTest, MeasurementRequestModeTest, MeasurementRequestSubelementsTest.
Dependencies
Merge !2788 first. The FTM Range body includes NeighborReportElement.