pub enum TelemetryEvent {
Show 30 variants QueryStatus { sender: Sender<QueryStatusResult>, }, StartEstablishConnection { reset_start_time: bool, }, ClearEstablishConnectionStartTime, ActiveScanRequested { num_ssids_requested: usize, }, ActiveScanRequestedViaApi { num_ssids_requested: usize, }, NetworkSelectionDecision { network_selection_type: NetworkSelectionType, num_candidates: Result<usize, ()>, selected_count: usize, }, ConnectResult { iface_id: u16, policy_connect_reason: Option<ConnectReason>, result: ConnectResult, multiple_bss_candidates: bool, ap_state: ApState, network_is_likely_hidden: bool, }, Disconnected { track_subsequent_downtime: bool, info: DisconnectInfo, }, OnSignalReport { ind: SignalReportIndication, rssi_velocity: f64, }, OnChannelSwitched { info: ChannelSwitchInfo, }, RoamingScan, WouldRoamConnect, SavedNetworkCount { saved_network_count: usize, config_count_per_saved_network: Vec<usize>, }, NetworkSelectionScanInterval { time_since_last_scan: Duration, }, ConnectionSelectionScanResults { saved_network_count: usize, bss_count_per_saved_network: Vec<usize>, saved_network_count_found_by_active_scan: usize, }, PostConnectionScores { connect_time: Time, score_at_connect: u8, scores: HistoricalList<TimestampedConnectionScore>, }, StartClientConnectionsRequest, StopClientConnectionsRequest, StopAp { enabled_duration: Duration, }, UpdateExperiment { experiment: ExperimentUpdate, }, IfaceCreationResult(Result<(), ()>), IfaceDestructionResult(Result<(), ()>), StartApResult(Result<(), ()>), ScanRequestFulfillmentTime { duration: Duration, reason: ScanReason, }, ScanQueueStatistics { fulfilled_requests: usize, remaining_requests: usize, }, BssSelectionResult { reason: ConnectReason, scored_candidates: Vec<(ScannedCandidate, i16)>, selected_candidate: Option<(ScannedCandidate, i16)>, }, ScanEvent { inspect_data: ScanEventInspectData, scan_defects: Vec<ScanIssue>, }, LongDurationConnectionScoreAverage { scores: Vec<TimestampedConnectionScore>, }, RecoveryEvent { reason: RecoveryReason, }, GetTimeSeries { sender: Sender<Arc<Mutex<TimeSeriesStats>>>, },
}

Variants§

§

QueryStatus

Request telemetry for the latest status

Fields

§sender: Sender<QueryStatusResult>
§

StartEstablishConnection

Notify the telemetry event loop that the process of establishing connection is started

Fields

§reset_start_time: bool

If set to true, use the current time as the start time of the establish connection process. If set to false, then use the start time initialized from the previous StartEstablishConnection event, or use the current time if there isn’t an existing start time.

§

ClearEstablishConnectionStartTime

Clear any existing start time of establish connection process tracked by telemetry.

§

ActiveScanRequested

Notify the telemetry event loop of an active scan being requested.

Fields

§num_ssids_requested: usize
§

ActiveScanRequestedViaApi

Notify the telemetry event loop of an active scan being requested via Policy API.

Fields

§num_ssids_requested: usize
§

NetworkSelectionDecision

Notify the telemetry event loop that network selection is complete.

Fields

§network_selection_type: NetworkSelectionType

Type of network selection. If it’s undirected and no candidate network is found, telemetry will toggle the “no saved neighbor” flag.

§num_candidates: Result<usize, ()>

When there’s a scan error, num_candidates should be Err. When num_candidates is Ok(0) for an undirected network selection, telemetry will toggle the “no saved neighbor” flag. If the event loop is tracking downtime, the subsequent downtime period will also be used to increment the, downtime_no_saved_neighbor_duration counter. This counter is used to adjust the raw downtime.

§selected_count: usize

Count of number of networks selected. This will be 0 if there are no candidates selected including if num_candidates is Ok(0) or Err. However, this will only be logged to Cobalt is num_candidates is not Err and is greater than 0.

§

ConnectResult

Notify the telemetry event loop of connection result. If connection result is successful, telemetry will move its internal state to connected. Subsequently, the telemetry event loop will increment the connected_duration counter periodically.

Fields

§iface_id: u16
§policy_connect_reason: Option<ConnectReason>
§multiple_bss_candidates: bool
§ap_state: ApState
§network_is_likely_hidden: bool
§

Disconnected

Notify the telemetry event loop that the client has disconnected. Subsequently, the telemetry event loop will increment the downtime counters periodically if TelemetrySender has requested downtime to be tracked via track_subsequent_downtime flag.

Fields

§track_subsequent_downtime: bool

Indicates whether subsequent period should be used to increment the downtime counters.

§

OnSignalReport

Fields

§rssi_velocity: f64
§

OnChannelSwitched

§

RoamingScan

Notify telemetry that there was a decision to look for networks to roam to after evaluating the existing connection.

§

WouldRoamConnect

Proactive roams do not happen yet, but we want to analyze metrics for when they would happen. Roams are set up to log metrics when disconnects happen to roam, so this event covers when roams would happen but no actual disconnect happens.

§

SavedNetworkCount

Counts of saved networks and count of configurations for each of those networks, to be recorded periodically.

Fields

§saved_network_count: usize
§config_count_per_saved_network: Vec<usize>
§

NetworkSelectionScanInterval

Record the time since the last network selection scan

Fields

§time_since_last_scan: Duration
§

ConnectionSelectionScanResults

Statistics about networks observed in scan results for Connection Selection

Fields

§saved_network_count: usize
§bss_count_per_saved_network: Vec<usize>
§saved_network_count_found_by_active_scan: usize
§

PostConnectionScores

Notify telemetry event loop that connection duration has reached threshold to log post-connect score deltas.

Fields

§connect_time: Time
§score_at_connect: u8
§

StartClientConnectionsRequest

Notify telemetry of an API request to start client connections.

§

StopClientConnectionsRequest

Notify telemetry of an API request to stop client connections.

§

StopAp

Notify telemetry of when AP is stopped, and how long it was started.

Fields

§enabled_duration: Duration
§

UpdateExperiment

Notify telemetry that its experiment group has changed and that a new metrics logger must be created.

Fields

§experiment: ExperimentUpdate
§

IfaceCreationResult(Result<(), ()>)

Notify telemetry of the result of a create iface request.

§

IfaceDestructionResult(Result<(), ()>)

Notify telemetry of the result of destroying an interface.

§

StartApResult(Result<(), ()>)

Notify telemetry of the result of a StartAp request.

§

ScanRequestFulfillmentTime

Record scan fulfillment time

Fields

§duration: Duration
§reason: ScanReason
§

ScanQueueStatistics

Record scan queue length upon scan completion

Fields

§fulfilled_requests: usize
§remaining_requests: usize
§

BssSelectionResult

Record the results of a completed BSS selection

Fields

§scored_candidates: Vec<(ScannedCandidate, i16)>
§selected_candidate: Option<(ScannedCandidate, i16)>
§

ScanEvent

Fields

§scan_defects: Vec<ScanIssue>
§

LongDurationConnectionScoreAverage

§

RecoveryEvent

Record recovery events and store recovery-related metadata so that the efficacy of the recovery mechanism can be evaluated later.

Fields

§

GetTimeSeries

Get the TimeSeries held by telemetry loop. Intended for test only.

Fields

§sender: Sender<Arc<Mutex<TimeSeriesStats>>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
source§

impl<T> OptionalField for T
where T: ?Sized,

source§

const PRESENT: Presence<Self> = _

source§

const ABSENT: Presence<Self> = _

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more