pub enum TelemetryEvent {
Show 33 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,
},
PolicyInitiatedRoamResult {
iface_id: u16,
result: RoamResult,
updated_ap_state: ApState,
original_ap_state: ApState,
request: PolicyRoamRequest,
request_time: MonotonicInstant,
result_time: MonotonicInstant,
},
Disconnected {
track_subsequent_downtime: bool,
info: Option<DisconnectInfo>,
},
OnSignalReport {
ind: SignalReportIndication,
},
OnSignalVelocityUpdate {
rssi_velocity: f64,
},
OnChannelSwitched {
info: ChannelSwitchInfo,
},
PolicyRoamScan {
reasons: Vec<RoamReason>,
},
PolicyRoamAttempt {
request: PolicyRoamRequest,
connected_duration: MonotonicDuration,
},
WouldRoamConnect,
SavedNetworkCount {
saved_network_count: usize,
config_count_per_saved_network: Vec<usize>,
},
NetworkSelectionScanInterval {
time_since_last_scan: MonotonicDuration,
},
ConnectionSelectionScanResults {
saved_network_count: usize,
bss_count_per_saved_network: Vec<usize>,
saved_network_count_found_by_active_scan: usize,
},
PostConnectionSignals {
connect_time: MonotonicInstant,
signal_at_connect: Signal,
signals: HistoricalList<TimestampedSignal>,
},
StartClientConnectionsRequest,
StopClientConnectionsRequest,
StopAp {
enabled_duration: MonotonicDuration,
},
IfaceCreationResult(Result<(), ()>),
IfaceDestructionResult(Result<(), ()>),
StartApResult(Result<(), ()>),
ScanRequestFulfillmentTime {
duration: MonotonicDuration,
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>,
},
LongDurationSignals {
signals: Vec<TimestampedSignal>,
},
RecoveryEvent {
reason: RecoveryReason,
},
GetTimeSeries {
sender: Sender<Arc<Mutex<TimeSeriesStats>>>,
},
SmeTimeout {
source: TimeoutSource,
},
}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
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.
ActiveScanRequestedViaApi
Notify the telemetry event loop of an active scan being requested via Policy API.
NetworkSelectionDecision
Notify the telemetry event loop that network selection is complete.
Fields
network_selection_type: NetworkSelectionTypeType 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.
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.
PolicyInitiatedRoamResult
Notify the telemetry event loop of roam result. If roam result is unsuccessful, telemetry will move its internal state to disconnected.
Fields
result: RoamResultrequest: PolicyRoamRequestrequest_time: MonotonicInstantresult_time: MonotonicInstantDisconnected
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: boolIndicates whether subsequent period should be used to increment the downtime counters.
info: Option<DisconnectInfo>OnSignalReport
Fields
ind: SignalReportIndicationOnSignalVelocityUpdate
OnChannelSwitched
Fields
info: ChannelSwitchInfoPolicyRoamScan
Notify telemetry that there was a decision to look for networks to roam to after evaluating the existing connection.
Fields
reasons: Vec<RoamReason>PolicyRoamAttempt
Notify telemetry that the roam monitor has decided to attempt a roam to a candidate.
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.
NetworkSelectionScanInterval
Record the time since the last network selection scan
Fields
time_since_last_scan: MonotonicDurationConnectionSelectionScanResults
Statistics about networks observed in scan results for Connection Selection
Fields
PostConnectionSignals
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: MonotonicDurationIfaceCreationResult(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
ScanQueueStatistics
Record scan queue length upon scan completion
BssSelectionResult
Record the results of a completed BSS selection
Fields
reason: ConnectReasonscored_candidates: Vec<(ScannedCandidate, i16)>selected_candidate: Option<(ScannedCandidate, i16)>ScanEvent
LongDurationSignals
Fields
signals: Vec<TimestampedSignal>RecoveryEvent
Record recovery events and store recovery-related metadata so that the efficacy of the recovery mechanism can be evaluated later.
Fields
reason: RecoveryReasonGetTimeSeries
Get the TimeSeries held by telemetry loop. Intended for test only.
SmeTimeout
Fields
source: TimeoutSourceAuto Trait Implementations§
impl Freeze for TelemetryEvent
impl !RefUnwindSafe for TelemetryEvent
impl Send for TelemetryEvent
impl Sync for TelemetryEvent
impl Unpin for TelemetryEvent
impl !UnwindSafe for TelemetryEvent
Blanket Implementations§
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, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
T to [Self]§impl<T> IntoAny for T
impl<T> IntoAny for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more