pub struct RxRateIndexHistogram {
pub hist_scope: HistScope,
pub antenna_id: Option<Box<AntennaId>>,
pub rx_rate_index_samples: Vec<HistBucket>,
pub invalid_samples: u64,
}
Expand description
Histogram for received data rate.
Fields§
§hist_scope: HistScope
§antenna_id: Option<Box<AntennaId>>
If hist_scope is PER_ANTENNA, antenna_id must be provided.
rx_rate_index_samples: Vec<HistBucket>
Sparse histogram of count of received frames for each rate. Each sample’s bucket_index is an index into this lookup table: 0-3: B-MCS 0-3 4-11: G-MCS 0-7 12-27: N-MCS 0-15 (BW20) 28-43: N-MCS 0-15 (BW40) 44-59: N-MCS 0-15 (BW20:SGI) 60-75: N-MCS 0-15 (BW40:SGI) 76-85: AC-MCS 0-9 (VHT:BW20:NSS1) 86-95: AC-MCS 0-9 (VHT:BW20:NSS2) 96-105: AC-MCS 0-9 (VHT:BW40:NSS1) 106-115: AC-MCS 0-9 (VHT:BW40:NSS2) 116-125: AC-MCS 0-9 (VHT:BW80:NSS1) 126-135: AC-MCS 0-9 (VHT:BW80:NSS2) 136-145: AC-MCS 0-9 (VHT:BW20:NSS1:SGI) 146-155: AC-MCS 0-9 (VHT:BW20:NSS2:SGI) 156-165: AC-MCS 0-9 (VHT:BW40:NSS1:SGI) 166-175: AC-MCS 0-9 (VHT:BW40:NSS2:SGI) 176-185: AC-MCS 0-9 (VHT:BW80:NSS1:SGI) 186-195: AC-MCS 0-9 (VHT:BW80:NSS2:SGI)
For example, if rx_rate_index_samples contains a HistBucket with bucket_index = 75 and num_samples = 50, that means there were 50 frames counted that had a rate corresponding to N-MCS 15 (BW40:SGI).
invalid_samples: u64
Count of invalid samples encountered, if any.
Trait Implementations§
Source§impl Clone for RxRateIndexHistogram
impl Clone for RxRateIndexHistogram
Source§fn clone(&self) -> RxRateIndexHistogram
fn clone(&self) -> RxRateIndexHistogram
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RxRateIndexHistogram
impl Debug for RxRateIndexHistogram
Source§impl<D: ResourceDialect> Decode<RxRateIndexHistogram, D> for RxRateIndexHistogram
impl<D: ResourceDialect> Decode<RxRateIndexHistogram, D> for RxRateIndexHistogram
Source§impl<D: ResourceDialect> Encode<RxRateIndexHistogram, D> for &RxRateIndexHistogram
impl<D: ResourceDialect> Encode<RxRateIndexHistogram, D> for &RxRateIndexHistogram
Source§impl<D: ResourceDialect, T0: Encode<HistScope, D>, T1: Encode<Boxed<AntennaId>, D>, T2: Encode<Vector<HistBucket, 196>, D>, T3: Encode<u64, D>> Encode<RxRateIndexHistogram, D> for (T0, T1, T2, T3)
impl<D: ResourceDialect, T0: Encode<HistScope, D>, T1: Encode<Boxed<AntennaId>, D>, T2: Encode<Vector<HistBucket, 196>, D>, T3: Encode<u64, D>> Encode<RxRateIndexHistogram, D> for (T0, T1, T2, T3)
Source§impl Hash for RxRateIndexHistogram
impl Hash for RxRateIndexHistogram
Source§impl Ord for RxRateIndexHistogram
impl Ord for RxRateIndexHistogram
Source§fn cmp(&self, other: &RxRateIndexHistogram) -> Ordering
fn cmp(&self, other: &RxRateIndexHistogram) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for RxRateIndexHistogram
impl PartialEq for RxRateIndexHistogram
Source§impl PartialOrd for RxRateIndexHistogram
impl PartialOrd for RxRateIndexHistogram
Source§impl TypeMarker for RxRateIndexHistogram
impl TypeMarker for RxRateIndexHistogram
Source§type Owned = RxRateIndexHistogram
type Owned = RxRateIndexHistogram
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read more§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.Source§impl ValueTypeMarker for RxRateIndexHistogram
impl ValueTypeMarker for RxRateIndexHistogram
Source§type Borrowed<'a> = &'a RxRateIndexHistogram
type Borrowed<'a> = &'a RxRateIndexHistogram
Encode<Self>
type cheaply obtainable from &Self::Owned
. There are three cases: Read moreimpl Eq for RxRateIndexHistogram
impl Persistable for RxRateIndexHistogram
impl StructuralPartialEq for RxRateIndexHistogram
Auto Trait Implementations§
impl Freeze for RxRateIndexHistogram
impl RefUnwindSafe for RxRateIndexHistogram
impl Send for RxRateIndexHistogram
impl Sync for RxRateIndexHistogram
impl Unpin for RxRateIndexHistogram
impl UnwindSafe for RxRateIndexHistogram
Blanket Implementations§
§impl<T> Body for Twhere
T: Persistable,
impl<T> Body for Twhere
T: Persistable,
§type MarkerAtTopLevel = T
type MarkerAtTopLevel = T
§type MarkerInResultUnion = T
type MarkerInResultUnion = T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)