Skip to main content

starlink_grpc_client/proto_bindings/
space_x.api.device.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct PublicKey {
4    #[prost(string, tag = "1")]
5    pub key: ::prost::alloc::string::String,
6    #[deprecated]
7    #[prost(enumeration = "Capability", repeated, packed = "false", tag = "2")]
8    pub capabilities: ::prost::alloc::vec::Vec<i32>,
9    #[prost(enumeration = "User", tag = "3")]
10    pub user: i32,
11}
12#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
13#[repr(i32)]
14pub enum Capability {
15    Read = 0,
16    ReadInternal = 13,
17    ReadPrivate = 7,
18    Local = 14,
19    Write = 1,
20    WritePersistent = 11,
21    Debug = 2,
22    Admin = 3,
23    Setup = 4,
24    SetSku = 5,
25    Refresh = 6,
26    Fuse = 8,
27    Reset = 9,
28    Test = 10,
29    Ssh = 12,
30    Guest = 15,
31}
32impl Capability {
33    /// String value of the enum field names used in the ProtoBuf definition.
34    ///
35    /// The values are not transformed in any way and thus are considered stable
36    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
37    pub fn as_str_name(&self) -> &'static str {
38        match self {
39            Self::Read => "READ",
40            Self::ReadInternal => "READ_INTERNAL",
41            Self::ReadPrivate => "READ_PRIVATE",
42            Self::Local => "LOCAL",
43            Self::Write => "WRITE",
44            Self::WritePersistent => "WRITE_PERSISTENT",
45            Self::Debug => "DEBUG",
46            Self::Admin => "ADMIN",
47            Self::Setup => "SETUP",
48            Self::SetSku => "SET_SKU",
49            Self::Refresh => "REFRESH",
50            Self::Fuse => "FUSE",
51            Self::Reset => "RESET",
52            Self::Test => "TEST",
53            Self::Ssh => "SSH",
54            Self::Guest => "GUEST",
55        }
56    }
57    /// Creates an enum from field names used in the ProtoBuf definition.
58    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
59        match value {
60            "READ" => Some(Self::Read),
61            "READ_INTERNAL" => Some(Self::ReadInternal),
62            "READ_PRIVATE" => Some(Self::ReadPrivate),
63            "LOCAL" => Some(Self::Local),
64            "WRITE" => Some(Self::Write),
65            "WRITE_PERSISTENT" => Some(Self::WritePersistent),
66            "DEBUG" => Some(Self::Debug),
67            "ADMIN" => Some(Self::Admin),
68            "SETUP" => Some(Self::Setup),
69            "SET_SKU" => Some(Self::SetSku),
70            "REFRESH" => Some(Self::Refresh),
71            "FUSE" => Some(Self::Fuse),
72            "RESET" => Some(Self::Reset),
73            "TEST" => Some(Self::Test),
74            "SSH" => Some(Self::Ssh),
75            "GUEST" => Some(Self::Guest),
76            _ => None,
77        }
78    }
79}
80#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
81#[repr(i32)]
82pub enum User {
83    NoUser = 0,
84    God = 1,
85    Lan = 2,
86    Cloud = 3,
87    Factory = 4,
88    Router = 5,
89    GuestLan = 6,
90    SensitiveCommanding = 7,
91    LanTls = 8,
92}
93impl User {
94    /// String value of the enum field names used in the ProtoBuf definition.
95    ///
96    /// The values are not transformed in any way and thus are considered stable
97    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
98    pub fn as_str_name(&self) -> &'static str {
99        match self {
100            Self::NoUser => "NO_USER",
101            Self::God => "GOD",
102            Self::Lan => "LAN",
103            Self::Cloud => "CLOUD",
104            Self::Factory => "FACTORY",
105            Self::Router => "ROUTER",
106            Self::GuestLan => "GUEST_LAN",
107            Self::SensitiveCommanding => "SENSITIVE_COMMANDING",
108            Self::LanTls => "LAN_TLS",
109        }
110    }
111    /// Creates an enum from field names used in the ProtoBuf definition.
112    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
113        match value {
114            "NO_USER" => Some(Self::NoUser),
115            "GOD" => Some(Self::God),
116            "LAN" => Some(Self::Lan),
117            "CLOUD" => Some(Self::Cloud),
118            "FACTORY" => Some(Self::Factory),
119            "ROUTER" => Some(Self::Router),
120            "GUEST_LAN" => Some(Self::GuestLan),
121            "SENSITIVE_COMMANDING" => Some(Self::SensitiveCommanding),
122            "LAN_TLS" => Some(Self::LanTls),
123            _ => None,
124        }
125    }
126}
127#[derive(Clone, PartialEq, ::prost::Message)]
128pub struct DeviceInfo {
129    #[prost(string, tag = "1")]
130    pub id: ::prost::alloc::string::String,
131    #[prost(string, tag = "2")]
132    pub hardware_version: ::prost::alloc::string::String,
133    #[prost(int32, tag = "14")]
134    pub board_rev: i32,
135    #[prost(string, tag = "3")]
136    pub software_version: ::prost::alloc::string::String,
137    #[prost(string, tag = "11")]
138    pub manufactured_version: ::prost::alloc::string::String,
139    #[prost(int64, tag = "12")]
140    pub generation_number: i64,
141    #[prost(string, tag = "4")]
142    pub country_code: ::prost::alloc::string::String,
143    #[prost(int32, tag = "5")]
144    pub utc_offset_s: i32,
145    #[prost(bool, tag = "6")]
146    pub software_partitions_equal: bool,
147    #[prost(bool, tag = "7")]
148    pub is_dev: bool,
149    #[prost(int32, tag = "8")]
150    pub bootcount: i32,
151    #[prost(int32, tag = "9")]
152    pub anti_rollback_version: i32,
153    #[prost(bool, tag = "10")]
154    pub is_hitl: bool,
155    #[prost(message, optional, tag = "1001")]
156    pub boot: ::core::option::Option<BootInfo>,
157    #[prost(bool, tag = "13")]
158    pub dish_cohoused: bool,
159    #[prost(string, tag = "15")]
160    pub build_id: ::prost::alloc::string::String,
161}
162#[derive(Clone, Copy, PartialEq, ::prost::Message)]
163pub struct DeviceState {
164    #[prost(uint64, tag = "1")]
165    pub uptime_s: u64,
166}
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct SignedData {
169    #[prost(bytes = "vec", tag = "1")]
170    pub data: ::prost::alloc::vec::Vec<u8>,
171    #[prost(bytes = "vec", tag = "2")]
172    pub signature: ::prost::alloc::vec::Vec<u8>,
173}
174#[derive(Clone, Copy, PartialEq, ::prost::Message)]
175pub struct GetNextIdRequest {}
176#[derive(Clone, Copy, PartialEq, ::prost::Message)]
177pub struct GetNextIdResponse {
178    #[prost(uint64, tag = "1")]
179    pub id: u64,
180    #[prost(uint64, tag = "2")]
181    pub epoch_id: u64,
182}
183#[derive(Clone, PartialEq, ::prost::Message)]
184pub struct BootInfo {
185    #[prost(map = "int32, int32", tag = "1")]
186    pub count_by_reason: ::std::collections::HashMap<i32, i32>,
187    #[prost(map = "int32, int32", tag = "4")]
188    pub count_by_reason_delta: ::std::collections::HashMap<i32, i32>,
189    #[prost(enumeration = "BootReason", tag = "2")]
190    pub last_reason: i32,
191    #[prost(int32, tag = "3")]
192    pub last_count: i32,
193    #[prost(bool, tag = "5")]
194    pub crash_boot: bool,
195    #[prost(int32, tag = "6")]
196    pub crash_boot_count: i32,
197    #[prost(string, tag = "7")]
198    pub even_side_software_version: ::prost::alloc::string::String,
199    #[prost(string, tag = "8")]
200    pub odd_side_software_version: ::prost::alloc::string::String,
201    #[prost(int32, tag = "9")]
202    pub api_version_odd_side: i32,
203    #[prost(int32, tag = "10")]
204    pub api_version_even_side: i32,
205}
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct PingTarget {
208    #[prost(string, tag = "1")]
209    pub service: ::prost::alloc::string::String,
210    #[prost(string, tag = "2")]
211    pub location: ::prost::alloc::string::String,
212    #[prost(string, tag = "3")]
213    pub address: ::prost::alloc::string::String,
214}
215#[derive(Clone, PartialEq, ::prost::Message)]
216pub struct PingResult {
217    #[prost(message, optional, tag = "3")]
218    pub target: ::core::option::Option<PingTarget>,
219    #[prost(float, tag = "1")]
220    pub drop_rate: f32,
221    #[prost(float, tag = "2")]
222    pub latency_ms: f32,
223}
224#[derive(Clone, PartialEq, ::prost::Message)]
225pub struct BondingChallenge {
226    #[prost(string, tag = "1")]
227    pub dish_id: ::prost::alloc::string::String,
228    #[prost(string, tag = "2")]
229    pub wifi_id: ::prost::alloc::string::String,
230    #[prost(bytes = "vec", tag = "3")]
231    pub nonce: ::prost::alloc::vec::Vec<u8>,
232}
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct AuthenticateRequest {
235    #[prost(message, optional, tag = "1")]
236    pub challenge: ::core::option::Option<SignedData>,
237}
238#[derive(Clone, PartialEq, ::prost::Message)]
239pub struct ChallengeResponse {
240    #[prost(bytes = "vec", tag = "1")]
241    pub signature: ::prost::alloc::vec::Vec<u8>,
242    #[prost(bytes = "vec", tag = "2")]
243    pub certificate_chain: ::prost::alloc::vec::Vec<u8>,
244}
245#[derive(Clone, PartialEq, ::prost::Message)]
246pub struct NetworkInterface {
247    #[prost(string, tag = "1")]
248    pub name: ::prost::alloc::string::String,
249    #[prost(bool, tag = "4")]
250    pub up: bool,
251    #[prost(string, tag = "5")]
252    pub mac_address: ::prost::alloc::string::String,
253    #[prost(string, repeated, tag = "6")]
254    pub ipv4_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
255    #[prost(string, repeated, tag = "7")]
256    pub ipv6_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
257    #[prost(message, optional, tag = "2")]
258    pub rx_stats: ::core::option::Option<network_interface::RxStats>,
259    #[prost(message, optional, tag = "3")]
260    pub tx_stats: ::core::option::Option<network_interface::TxStats>,
261    #[prost(oneof = "network_interface::Interface", tags = "1000, 1001, 1002")]
262    pub interface: ::core::option::Option<network_interface::Interface>,
263}
264/// Nested message and enum types in `NetworkInterface`.
265pub mod network_interface {
266    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
267    pub struct RxStats {
268        #[prost(uint64, tag = "1")]
269        pub bytes: u64,
270        #[prost(uint64, tag = "2")]
271        pub packets: u64,
272        #[prost(uint64, tag = "3")]
273        pub frame_errors: u64,
274    }
275    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
276    pub struct TxStats {
277        #[prost(uint64, tag = "1")]
278        pub bytes: u64,
279        #[prost(uint64, tag = "2")]
280        pub packets: u64,
281    }
282    #[derive(Clone, PartialEq, ::prost::Oneof)]
283    pub enum Interface {
284        #[prost(message, tag = "1000")]
285        Ethernet(super::EthernetNetworkInterface),
286        #[prost(message, tag = "1001")]
287        Wifi(super::WifiNetworkInterface),
288        #[prost(message, tag = "1002")]
289        Bridge(super::BridgeNetworkInterface),
290    }
291}
292#[derive(Clone, Copy, PartialEq, ::prost::Message)]
293pub struct EthernetNetworkInterface {
294    #[prost(bool, tag = "1")]
295    pub link_detected: bool,
296    #[prost(uint32, tag = "2")]
297    pub speed_mbps: u32,
298    #[prost(bool, tag = "3")]
299    pub autonegotiation_on: bool,
300    #[prost(enumeration = "ethernet_network_interface::Duplex", tag = "4")]
301    pub duplex: i32,
302}
303/// Nested message and enum types in `EthernetNetworkInterface`.
304pub mod ethernet_network_interface {
305    #[derive(
306        Clone,
307        Copy,
308        Debug,
309        PartialEq,
310        Eq,
311        Hash,
312        PartialOrd,
313        Ord,
314        ::prost::Enumeration
315    )]
316    #[repr(i32)]
317    pub enum Duplex {
318        Unknown = 0,
319        Half = 1,
320        Full = 2,
321    }
322    impl Duplex {
323        /// String value of the enum field names used in the ProtoBuf definition.
324        ///
325        /// The values are not transformed in any way and thus are considered stable
326        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
327        pub fn as_str_name(&self) -> &'static str {
328            match self {
329                Self::Unknown => "UNKNOWN",
330                Self::Half => "HALF",
331                Self::Full => "FULL",
332            }
333        }
334        /// Creates an enum from field names used in the ProtoBuf definition.
335        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
336            match value {
337                "UNKNOWN" => Some(Self::Unknown),
338                "HALF" => Some(Self::Half),
339                "FULL" => Some(Self::Full),
340                _ => None,
341            }
342        }
343    }
344}
345#[derive(Clone, Copy, PartialEq, ::prost::Message)]
346pub struct WifiNetworkInterface {
347    #[prost(message, optional, tag = "2")]
348    pub invalid_packet_counts: ::core::option::Option<
349        wifi_network_interface::InvalidPacketCounts,
350    >,
351    #[prost(uint32, tag = "3")]
352    pub channel: u32,
353    #[prost(uint32, tag = "8")]
354    pub missed_beacons: u32,
355    #[prost(double, tag = "4")]
356    pub link_quality: f64,
357    #[prost(double, tag = "5")]
358    pub signal_level: f64,
359    #[prost(double, tag = "6")]
360    pub noise_level: f64,
361}
362/// Nested message and enum types in `WifiNetworkInterface`.
363pub mod wifi_network_interface {
364    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
365    pub struct InvalidPacketCounts {
366        #[prost(uint32, tag = "1")]
367        pub rx_invalid_nwid: u32,
368        #[prost(uint32, tag = "2")]
369        pub rx_invalid_crypt: u32,
370        #[prost(uint32, tag = "3")]
371        pub rx_invalid_frag: u32,
372        #[prost(uint32, tag = "4")]
373        pub tx_excessive_retries: u32,
374        #[prost(uint32, tag = "5")]
375        pub invalid_misc: u32,
376    }
377}
378#[derive(Clone, PartialEq, ::prost::Message)]
379pub struct BridgeNetworkInterface {
380    #[prost(string, repeated, tag = "1")]
381    pub member_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
382}
383#[derive(Clone, Copy, PartialEq, ::prost::Message)]
384pub struct LlaPosition {
385    #[prost(double, tag = "1")]
386    pub lat: f64,
387    #[prost(double, tag = "2")]
388    pub lon: f64,
389    #[prost(double, tag = "3")]
390    pub alt: f64,
391}
392#[derive(Clone, Copy, PartialEq, ::prost::Message)]
393pub struct EcefPosition {
394    #[prost(double, tag = "1")]
395    pub x: f64,
396    #[prost(double, tag = "2")]
397    pub y: f64,
398    #[prost(double, tag = "3")]
399    pub z: f64,
400}
401#[derive(Clone, Copy, PartialEq, ::prost::Message)]
402pub struct InitiateRemoteSshRequest {}
403#[derive(Clone, PartialEq, ::prost::Message)]
404pub struct InitiateRemoteSshResponse {
405    #[prost(uint32, tag = "1")]
406    pub port: u32,
407    #[prost(string, tag = "2")]
408    pub address: ::prost::alloc::string::String,
409    #[prost(bytes = "vec", tag = "3")]
410    pub stsafe: ::prost::alloc::vec::Vec<u8>,
411}
412#[derive(Clone, PartialEq, ::prost::Message)]
413pub struct SoftwareUpdateRequest {
414    #[prost(uint64, tag = "1")]
415    pub stream_id: u64,
416    #[prost(bytes = "vec", tag = "2")]
417    pub data: ::prost::alloc::vec::Vec<u8>,
418    #[prost(bool, tag = "3")]
419    pub open: bool,
420    #[prost(bool, tag = "4")]
421    pub close: bool,
422}
423#[derive(Clone, Copy, PartialEq, ::prost::Message)]
424pub struct SoftwareUpdateResponse {}
425#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
426#[repr(i32)]
427pub enum BootReason {
428    Unknown = 0,
429    Forgotten = 1,
430    PowerCycle = 2,
431    Command = 3,
432    SoftwareUpdate = 4,
433    ConfigUpdate = 5,
434    UptimeFdir = 6,
435    RepeaterFdir = 7,
436    AviationEthWanFdir = 8,
437    KernelPanic = 9,
438    IntentionalKernelPanic = 14,
439    McuBringupFailedFdir = 11,
440    AviationOutageFdir = 12,
441    SoftwareWatchdog = 13,
442    HardwareWatchdog = 15,
443}
444impl BootReason {
445    /// String value of the enum field names used in the ProtoBuf definition.
446    ///
447    /// The values are not transformed in any way and thus are considered stable
448    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
449    pub fn as_str_name(&self) -> &'static str {
450        match self {
451            Self::Unknown => "BOOT_REASON_UNKNOWN",
452            Self::Forgotten => "FORGOTTEN",
453            Self::PowerCycle => "POWER_CYCLE",
454            Self::Command => "COMMAND",
455            Self::SoftwareUpdate => "SOFTWARE_UPDATE",
456            Self::ConfigUpdate => "CONFIG_UPDATE",
457            Self::UptimeFdir => "UPTIME_FDIR",
458            Self::RepeaterFdir => "REPEATER_FDIR",
459            Self::AviationEthWanFdir => "AVIATION_ETH_WAN_FDIR",
460            Self::KernelPanic => "KERNEL_PANIC",
461            Self::IntentionalKernelPanic => "INTENTIONAL_KERNEL_PANIC",
462            Self::McuBringupFailedFdir => "MCU_BRINGUP_FAILED_FDIR",
463            Self::AviationOutageFdir => "AVIATION_OUTAGE_FDIR",
464            Self::SoftwareWatchdog => "SOFTWARE_WATCHDOG",
465            Self::HardwareWatchdog => "HARDWARE_WATCHDOG",
466        }
467    }
468    /// Creates an enum from field names used in the ProtoBuf definition.
469    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
470        match value {
471            "BOOT_REASON_UNKNOWN" => Some(Self::Unknown),
472            "FORGOTTEN" => Some(Self::Forgotten),
473            "POWER_CYCLE" => Some(Self::PowerCycle),
474            "COMMAND" => Some(Self::Command),
475            "SOFTWARE_UPDATE" => Some(Self::SoftwareUpdate),
476            "CONFIG_UPDATE" => Some(Self::ConfigUpdate),
477            "UPTIME_FDIR" => Some(Self::UptimeFdir),
478            "REPEATER_FDIR" => Some(Self::RepeaterFdir),
479            "AVIATION_ETH_WAN_FDIR" => Some(Self::AviationEthWanFdir),
480            "KERNEL_PANIC" => Some(Self::KernelPanic),
481            "INTENTIONAL_KERNEL_PANIC" => Some(Self::IntentionalKernelPanic),
482            "MCU_BRINGUP_FAILED_FDIR" => Some(Self::McuBringupFailedFdir),
483            "AVIATION_OUTAGE_FDIR" => Some(Self::AviationOutageFdir),
484            "SOFTWARE_WATCHDOG" => Some(Self::SoftwareWatchdog),
485            "HARDWARE_WATCHDOG" => Some(Self::HardwareWatchdog),
486            _ => None,
487        }
488    }
489}
490#[derive(Clone, Copy, PartialEq, ::prost::Message)]
491pub struct DishConfig {
492    #[prost(enumeration = "dish_config::SnowMeltMode", tag = "1")]
493    pub snow_melt_mode: i32,
494    #[prost(bool, tag = "1001")]
495    pub apply_snow_melt_mode: bool,
496    #[prost(enumeration = "dish_config::LocationRequestMode", tag = "2")]
497    pub location_request_mode: i32,
498    #[prost(bool, tag = "2001")]
499    pub apply_location_request_mode: bool,
500    #[prost(enumeration = "dish_config::LevelDishMode", tag = "3")]
501    pub level_dish_mode: i32,
502    #[prost(bool, tag = "3001")]
503    pub apply_level_dish_mode: bool,
504    #[prost(uint32, tag = "4")]
505    pub power_save_start_minutes: u32,
506    #[prost(bool, tag = "4001")]
507    pub apply_power_save_start_minutes: bool,
508    #[prost(uint32, tag = "5")]
509    pub power_save_duration_minutes: u32,
510    #[prost(bool, tag = "5001")]
511    pub apply_power_save_duration_minutes: bool,
512    #[prost(bool, tag = "6")]
513    pub power_save_mode: bool,
514    #[prost(bool, tag = "6001")]
515    pub apply_power_save_mode: bool,
516    #[prost(uint32, tag = "9")]
517    pub swupdate_reboot_hour: u32,
518    #[prost(bool, tag = "9001")]
519    pub apply_swupdate_reboot_hour: bool,
520    #[prost(bool, tag = "7")]
521    pub swupdate_three_day_deferral_enabled: bool,
522    #[prost(bool, tag = "7001")]
523    pub apply_swupdate_three_day_deferral_enabled: bool,
524    #[prost(uint32, tag = "8")]
525    pub asset_class: u32,
526    #[prost(bool, tag = "8001")]
527    pub apply_asset_class: bool,
528}
529/// Nested message and enum types in `DishConfig`.
530pub mod dish_config {
531    #[derive(
532        Clone,
533        Copy,
534        Debug,
535        PartialEq,
536        Eq,
537        Hash,
538        PartialOrd,
539        Ord,
540        ::prost::Enumeration
541    )]
542    #[repr(i32)]
543    pub enum SnowMeltMode {
544        Auto = 0,
545        AlwaysOn = 1,
546        AlwaysOff = 2,
547    }
548    impl SnowMeltMode {
549        /// String value of the enum field names used in the ProtoBuf definition.
550        ///
551        /// The values are not transformed in any way and thus are considered stable
552        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
553        pub fn as_str_name(&self) -> &'static str {
554            match self {
555                Self::Auto => "AUTO",
556                Self::AlwaysOn => "ALWAYS_ON",
557                Self::AlwaysOff => "ALWAYS_OFF",
558            }
559        }
560        /// Creates an enum from field names used in the ProtoBuf definition.
561        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
562            match value {
563                "AUTO" => Some(Self::Auto),
564                "ALWAYS_ON" => Some(Self::AlwaysOn),
565                "ALWAYS_OFF" => Some(Self::AlwaysOff),
566                _ => None,
567            }
568        }
569    }
570    #[derive(
571        Clone,
572        Copy,
573        Debug,
574        PartialEq,
575        Eq,
576        Hash,
577        PartialOrd,
578        Ord,
579        ::prost::Enumeration
580    )]
581    #[repr(i32)]
582    pub enum LocationRequestMode {
583        None = 0,
584        Local = 1,
585    }
586    impl LocationRequestMode {
587        /// String value of the enum field names used in the ProtoBuf definition.
588        ///
589        /// The values are not transformed in any way and thus are considered stable
590        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
591        pub fn as_str_name(&self) -> &'static str {
592            match self {
593                Self::None => "NONE",
594                Self::Local => "LOCAL",
595            }
596        }
597        /// Creates an enum from field names used in the ProtoBuf definition.
598        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
599            match value {
600                "NONE" => Some(Self::None),
601                "LOCAL" => Some(Self::Local),
602                _ => None,
603            }
604        }
605    }
606    #[derive(
607        Clone,
608        Copy,
609        Debug,
610        PartialEq,
611        Eq,
612        Hash,
613        PartialOrd,
614        Ord,
615        ::prost::Enumeration
616    )]
617    #[repr(i32)]
618    pub enum LevelDishMode {
619        TiltLikeNormal = 0,
620        ForceLevel = 1,
621    }
622    impl LevelDishMode {
623        /// String value of the enum field names used in the ProtoBuf definition.
624        ///
625        /// The values are not transformed in any way and thus are considered stable
626        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
627        pub fn as_str_name(&self) -> &'static str {
628            match self {
629                Self::TiltLikeNormal => "TILT_LIKE_NORMAL",
630                Self::ForceLevel => "FORCE_LEVEL",
631            }
632        }
633        /// Creates an enum from field names used in the ProtoBuf definition.
634        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
635            match value {
636                "TILT_LIKE_NORMAL" => Some(Self::TiltLikeNormal),
637                "FORCE_LEVEL" => Some(Self::ForceLevel),
638                _ => None,
639            }
640        }
641    }
642}
643#[derive(Clone, Copy, PartialEq, ::prost::Message)]
644pub struct RssiEntry {
645    #[prost(double, tag = "1")]
646    pub theta_degree: f64,
647    #[prost(double, tag = "2")]
648    pub phi_degree: f64,
649    #[prost(double, tag = "3")]
650    pub rssi_dbf: f64,
651    #[prost(uint64, tag = "4")]
652    pub scan_timestamp_ms: u64,
653}
654#[derive(Clone, Copy, PartialEq, ::prost::Message)]
655pub struct DishActivateRssiScan {
656    #[prost(uint32, tag = "1")]
657    pub channel: u32,
658}
659#[derive(Clone, PartialEq, ::prost::Message)]
660pub struct DishGetRssiScanResult {
661    #[prost(bool, tag = "1")]
662    pub success: bool,
663    #[prost(uint32, tag = "2")]
664    pub channel: u32,
665    #[prost(uint64, tag = "3")]
666    pub request_timestamp: u64,
667    #[prost(uint32, tag = "4")]
668    pub number_samples: u32,
669    #[prost(message, repeated, tag = "5")]
670    pub rssi_scan_points: ::prost::alloc::vec::Vec<RssiEntry>,
671}
672#[derive(Clone, Copy, PartialEq, ::prost::Message)]
673pub struct DishStowRequest {
674    #[prost(bool, tag = "1")]
675    pub unstow: bool,
676}
677#[derive(Clone, Copy, PartialEq, ::prost::Message)]
678pub struct DishStowResponse {}
679#[derive(Clone, Copy, PartialEq, ::prost::Message)]
680pub struct DishGetContextRequest {}
681#[derive(Clone, PartialEq, ::prost::Message)]
682pub struct DishGetContextResponse {
683    #[prost(message, optional, tag = "1")]
684    pub device_info: ::core::option::Option<DeviceInfo>,
685    #[prost(message, optional, tag = "7")]
686    pub device_state: ::core::option::Option<DeviceState>,
687    #[prost(float, tag = "2")]
688    pub obstruction_fraction: f32,
689    #[prost(float, tag = "20")]
690    pub obstruction_time: f32,
691    #[prost(float, tag = "3")]
692    pub obstruction_valid_s: f32,
693    #[prost(bool, tag = "12")]
694    pub obstruction_current: bool,
695    #[prost(uint32, tag = "4")]
696    pub cell_id: u32,
697    #[prost(uint32, tag = "5")]
698    pub pop_rack_id: u32,
699    #[prost(uint32, tag = "8")]
700    pub initial_satellite_id: u32,
701    #[prost(uint32, tag = "9")]
702    pub initial_gateway_id: u32,
703    #[prost(bool, tag = "10")]
704    pub on_backup_beam: bool,
705    #[prost(float, tag = "6")]
706    pub seconds_to_slot_end: f32,
707    #[prost(bool, tag = "11")]
708    pub debug_telemetry_enabled: bool,
709    #[prost(float, tag = "13")]
710    pub pop_ping_drop_rate_15s_mean: f32,
711    #[prost(float, tag = "14")]
712    pub pop_ping_latency_ms_15s_mean: f32,
713    #[prost(float, tag = "15")]
714    pub seconds_since_last_1s_outage: f32,
715    #[prost(float, tag = "16")]
716    pub seconds_since_last_2s_outage: f32,
717    #[prost(float, tag = "17")]
718    pub seconds_since_last_5s_outage: f32,
719    #[prost(float, tag = "18")]
720    pub seconds_since_last_15s_outage: f32,
721    #[prost(float, tag = "19")]
722    pub seconds_since_last_60s_outage: f32,
723    #[prost(bool, tag = "23")]
724    pub outage_1s_within_1h: bool,
725    #[prost(bool, tag = "24")]
726    pub outage_2s_within_1h: bool,
727    #[prost(bool, tag = "25")]
728    pub outage_5s_within_1h: bool,
729    #[prost(enumeration = "super::satellites::network::UtDisablementCode", tag = "21")]
730    pub disablement_code: i32,
731    #[prost(float, tag = "22")]
732    pub ku_mac_active_ratio: f32,
733}
734#[derive(Clone, Copy, PartialEq, ::prost::Message)]
735pub struct DishOutage {
736    #[prost(enumeration = "dish_outage::Cause", tag = "1")]
737    pub cause: i32,
738    #[prost(int64, tag = "2")]
739    pub start_timestamp_ns: i64,
740    #[prost(uint64, tag = "3")]
741    pub duration_ns: u64,
742    #[prost(bool, tag = "4")]
743    pub did_switch: bool,
744}
745/// Nested message and enum types in `DishOutage`.
746pub mod dish_outage {
747    #[derive(
748        Clone,
749        Copy,
750        Debug,
751        PartialEq,
752        Eq,
753        Hash,
754        PartialOrd,
755        Ord,
756        ::prost::Enumeration
757    )]
758    #[repr(i32)]
759    pub enum Cause {
760        Unknown = 0,
761        Booting = 1,
762        Stowed = 2,
763        ThermalShutdown = 3,
764        NoSchedule = 4,
765        NoSats = 5,
766        Obstructed = 6,
767        NoDownlink = 7,
768        NoPings = 8,
769        ActuatorActivity = 9,
770        CableTest = 10,
771        Sleeping = 11,
772        MovingWhileNotAllowed = 12,
773    }
774    impl Cause {
775        /// String value of the enum field names used in the ProtoBuf definition.
776        ///
777        /// The values are not transformed in any way and thus are considered stable
778        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
779        pub fn as_str_name(&self) -> &'static str {
780            match self {
781                Self::Unknown => "UNKNOWN",
782                Self::Booting => "BOOTING",
783                Self::Stowed => "STOWED",
784                Self::ThermalShutdown => "THERMAL_SHUTDOWN",
785                Self::NoSchedule => "NO_SCHEDULE",
786                Self::NoSats => "NO_SATS",
787                Self::Obstructed => "OBSTRUCTED",
788                Self::NoDownlink => "NO_DOWNLINK",
789                Self::NoPings => "NO_PINGS",
790                Self::ActuatorActivity => "ACTUATOR_ACTIVITY",
791                Self::CableTest => "CABLE_TEST",
792                Self::Sleeping => "SLEEPING",
793                Self::MovingWhileNotAllowed => "MOVING_WHILE_NOT_ALLOWED",
794            }
795        }
796        /// Creates an enum from field names used in the ProtoBuf definition.
797        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
798            match value {
799                "UNKNOWN" => Some(Self::Unknown),
800                "BOOTING" => Some(Self::Booting),
801                "STOWED" => Some(Self::Stowed),
802                "THERMAL_SHUTDOWN" => Some(Self::ThermalShutdown),
803                "NO_SCHEDULE" => Some(Self::NoSchedule),
804                "NO_SATS" => Some(Self::NoSats),
805                "OBSTRUCTED" => Some(Self::Obstructed),
806                "NO_DOWNLINK" => Some(Self::NoDownlink),
807                "NO_PINGS" => Some(Self::NoPings),
808                "ACTUATOR_ACTIVITY" => Some(Self::ActuatorActivity),
809                "CABLE_TEST" => Some(Self::CableTest),
810                "SLEEPING" => Some(Self::Sleeping),
811                "MOVING_WHILE_NOT_ALLOWED" => Some(Self::MovingWhileNotAllowed),
812                _ => None,
813            }
814        }
815    }
816}
817#[derive(Clone, PartialEq, ::prost::Message)]
818pub struct DishGetHistoryResponse {
819    #[prost(uint64, tag = "1")]
820    pub current: u64,
821    #[prost(float, repeated, tag = "1001")]
822    pub pop_ping_drop_rate: ::prost::alloc::vec::Vec<f32>,
823    #[prost(float, repeated, tag = "1002")]
824    pub pop_ping_latency_ms: ::prost::alloc::vec::Vec<f32>,
825    #[prost(float, repeated, tag = "1003")]
826    pub downlink_throughput_bps: ::prost::alloc::vec::Vec<f32>,
827    #[prost(float, repeated, tag = "1004")]
828    pub uplink_throughput_bps: ::prost::alloc::vec::Vec<f32>,
829    #[prost(message, repeated, tag = "1009")]
830    pub outages: ::prost::alloc::vec::Vec<DishOutage>,
831    #[prost(float, repeated, tag = "1010")]
832    pub power_in: ::prost::alloc::vec::Vec<f32>,
833}
834#[derive(Clone, PartialEq, ::prost::Message)]
835pub struct DishGetStatusResponse {
836    #[prost(message, optional, tag = "1")]
837    pub device_info: ::core::option::Option<DeviceInfo>,
838    #[prost(message, optional, tag = "2")]
839    pub device_state: ::core::option::Option<DeviceState>,
840    #[prost(message, optional, tag = "1005")]
841    pub alerts: ::core::option::Option<DishAlerts>,
842    #[prost(message, optional, tag = "1014")]
843    pub outage: ::core::option::Option<DishOutage>,
844    #[prost(message, optional, tag = "1015")]
845    pub gps_stats: ::core::option::Option<DishGpsStats>,
846    #[prost(float, tag = "1002")]
847    pub seconds_to_first_nonempty_slot: f32,
848    #[prost(float, tag = "1003")]
849    pub pop_ping_drop_rate: f32,
850    #[prost(float, tag = "1007")]
851    pub downlink_throughput_bps: f32,
852    #[prost(float, tag = "1008")]
853    pub uplink_throughput_bps: f32,
854    #[prost(float, tag = "1009")]
855    pub pop_ping_latency_ms: f32,
856    #[prost(message, optional, tag = "1004")]
857    pub obstruction_stats: ::core::option::Option<DishObstructionStats>,
858    #[prost(bool, tag = "1010")]
859    pub stow_requested: bool,
860    #[prost(float, tag = "1011")]
861    pub boresight_azimuth_deg: f32,
862    #[prost(float, tag = "1012")]
863    pub boresight_elevation_deg: f32,
864    #[prost(int32, tag = "1016")]
865    pub eth_speed_mbps: i32,
866    #[prost(enumeration = "UserMobilityClass", tag = "1017")]
867    pub mobility_class: i32,
868    #[prost(bool, tag = "1018")]
869    pub is_snr_above_noise_floor: bool,
870    #[prost(message, optional, tag = "1019")]
871    pub ready_states: ::core::option::Option<DishReadyStates>,
872    #[prost(enumeration = "UserClassOfService", tag = "1020")]
873    pub class_of_service: i32,
874    #[prost(enumeration = "SoftwareUpdateState", tag = "1021")]
875    pub software_update_state: i32,
876    #[prost(bool, tag = "1030")]
877    pub swupdate_reboot_ready: bool,
878    #[prost(enumeration = "RebootReason", tag = "1032")]
879    pub reboot_reason: i32,
880    #[prost(message, optional, tag = "1026")]
881    pub software_update_stats: ::core::option::Option<SoftwareUpdateStats>,
882    #[prost(message, optional, tag = "1027")]
883    pub alignment_stats: ::core::option::Option<AlignmentStats>,
884    #[prost(bool, tag = "1022")]
885    pub is_snr_persistently_low: bool,
886    #[prost(enumeration = "HasActuators", tag = "1023")]
887    pub has_actuators: i32,
888    #[prost(enumeration = "super::satellites::network::UtDisablementCode", tag = "1024")]
889    pub disablement_code: i32,
890    #[prost(
891        enumeration = "super::telemetron::public::integrations::RateLimitReason",
892        tag = "1044"
893    )]
894    pub dl_bandwidth_restricted_reason: i32,
895    #[prost(
896        enumeration = "super::telemetron::public::integrations::RateLimitReason",
897        tag = "1045"
898    )]
899    pub ul_bandwidth_restricted_reason: i32,
900    #[prost(bool, tag = "1025")]
901    pub has_signed_cals: bool,
902    #[prost(message, optional, tag = "2000")]
903    pub config: ::core::option::Option<DishConfig>,
904    #[prost(message, optional, tag = "1028")]
905    pub initialization_duration_seconds: ::core::option::Option<
906        InitializationDurationSeconds,
907    >,
908    #[prost(bool, tag = "1029")]
909    pub is_cell_disabled: bool,
910    #[prost(int32, tag = "1031")]
911    pub seconds_until_swupdate_reboot_possible: i32,
912    #[prost(bool, tag = "1033")]
913    pub high_power_test_mode: bool,
914    #[prost(string, repeated, tag = "1040")]
915    pub connected_routers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
916    #[prost(message, optional, tag = "1041")]
917    pub plc_stats: ::core::option::Option<PlcStats>,
918    #[prost(bool, tag = "1042")]
919    pub is_moving_fast_persisted: bool,
920    #[prost(message, optional, tag = "1043")]
921    pub upsu_stats: ::core::option::Option<DishUpsuStats>,
922    #[prost(message, optional, tag = "1048")]
923    pub aps_stats: ::core::option::Option<DishApsStats>,
924}
925#[derive(Clone, Copy, PartialEq, ::prost::Message)]
926pub struct DishGetObstructionMapRequest {}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct DishGetObstructionMapResponse {
929    #[prost(uint32, tag = "1")]
930    pub num_rows: u32,
931    #[prost(uint32, tag = "2")]
932    pub num_cols: u32,
933    #[prost(float, repeated, tag = "3")]
934    pub snr: ::prost::alloc::vec::Vec<f32>,
935    #[deprecated]
936    #[prost(float, tag = "4")]
937    pub min_elevation_deg: f32,
938    #[prost(float, tag = "5")]
939    pub max_theta_deg: f32,
940    #[prost(enumeration = "ObstructionMapReferenceFrame", tag = "6")]
941    pub map_reference_frame: i32,
942}
943#[derive(Clone, Copy, PartialEq, ::prost::Message)]
944pub struct DishAlerts {
945    #[prost(bool, tag = "1")]
946    pub motors_stuck: bool,
947    #[prost(bool, tag = "3")]
948    pub thermal_throttle: bool,
949    #[prost(bool, tag = "2")]
950    pub thermal_shutdown: bool,
951    #[prost(bool, tag = "5")]
952    pub mast_not_near_vertical: bool,
953    #[prost(bool, tag = "4")]
954    pub unexpected_location: bool,
955    #[prost(bool, tag = "6")]
956    pub slow_ethernet_speeds: bool,
957    #[prost(bool, tag = "18")]
958    pub slow_ethernet_speeds_100: bool,
959    #[prost(bool, tag = "7")]
960    pub roaming: bool,
961    #[prost(bool, tag = "8")]
962    pub install_pending: bool,
963    #[prost(bool, tag = "9")]
964    pub is_heating: bool,
965    #[prost(bool, tag = "10")]
966    pub power_supply_thermal_throttle: bool,
967    #[prost(bool, tag = "11")]
968    pub is_power_save_idle: bool,
969    #[prost(bool, tag = "12")]
970    pub moving_while_not_mobile: bool,
971    #[prost(bool, tag = "15")]
972    pub moving_too_fast_for_policy: bool,
973    #[prost(bool, tag = "14")]
974    pub dbf_telem_stale: bool,
975    #[prost(bool, tag = "16")]
976    pub low_motor_current: bool,
977    #[prost(bool, tag = "17")]
978    pub lower_signal_than_predicted: bool,
979    #[prost(bool, tag = "19")]
980    pub obstruction_map_reset: bool,
981}
982#[derive(Clone, Copy, PartialEq, ::prost::Message)]
983pub struct DishReadyStates {
984    #[prost(bool, tag = "1")]
985    pub cady: bool,
986    #[prost(bool, tag = "2")]
987    pub scp: bool,
988    #[prost(bool, tag = "3")]
989    pub l1l2: bool,
990    #[prost(bool, tag = "4")]
991    pub xphy: bool,
992    #[prost(bool, tag = "5")]
993    pub aap: bool,
994    #[prost(bool, tag = "6")]
995    pub rf: bool,
996}
997#[derive(Clone, Copy, PartialEq, ::prost::Message)]
998pub struct DishGpsStats {
999    #[prost(bool, tag = "1")]
1000    pub gps_valid: bool,
1001    #[prost(uint32, tag = "2")]
1002    pub gps_sats: u32,
1003    #[prost(bool, tag = "3")]
1004    pub no_sats_after_ttff: bool,
1005    #[prost(bool, tag = "4")]
1006    pub inhibit_gps: bool,
1007}
1008#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1009pub struct SoftwareUpdateStats {
1010    #[prost(enumeration = "SoftwareUpdateState", tag = "1")]
1011    pub software_update_state: i32,
1012    #[prost(float, tag = "2")]
1013    pub software_update_progress: f32,
1014    #[prost(bool, tag = "3")]
1015    pub update_requires_reboot: bool,
1016    #[prost(int64, tag = "4")]
1017    pub reboot_scheduled_utc_time: i64,
1018}
1019#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1020pub struct AlignmentStats {
1021    #[prost(enumeration = "HasActuators", tag = "1")]
1022    pub has_actuators: i32,
1023    #[prost(enumeration = "ActuatorState", tag = "2")]
1024    pub actuator_state: i32,
1025    #[prost(float, tag = "3")]
1026    pub tilt_angle_deg: f32,
1027    #[prost(float, tag = "4")]
1028    pub boresight_azimuth_deg: f32,
1029    #[prost(float, tag = "5")]
1030    pub boresight_elevation_deg: f32,
1031    #[prost(float, tag = "8")]
1032    pub desired_boresight_azimuth_deg: f32,
1033    #[prost(float, tag = "9")]
1034    pub desired_boresight_elevation_deg: f32,
1035    #[prost(enumeration = "AttitudeEstimationState", tag = "6")]
1036    pub attitude_estimation_state: i32,
1037    #[prost(float, tag = "7")]
1038    pub attitude_uncertainty_deg: f32,
1039}
1040#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1041pub struct DishObstructionStats {
1042    #[prost(bool, tag = "5")]
1043    pub currently_obstructed: bool,
1044    #[prost(float, tag = "1")]
1045    pub fraction_obstructed: f32,
1046    #[prost(float, tag = "9")]
1047    pub time_obstructed: f32,
1048    #[prost(float, tag = "4")]
1049    pub valid_s: f32,
1050    #[prost(uint32, tag = "10")]
1051    pub patches_valid: u32,
1052    #[prost(float, tag = "6")]
1053    pub avg_prolonged_obstruction_duration_s: f32,
1054    #[prost(float, tag = "7")]
1055    pub avg_prolonged_obstruction_interval_s: f32,
1056    #[prost(bool, tag = "8")]
1057    pub avg_prolonged_obstruction_valid: bool,
1058}
1059#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1060pub struct DishUpsuStats {
1061    #[prost(uint64, tag = "2")]
1062    pub app_version: u64,
1063    #[prost(uint64, tag = "3")]
1064    pub boot_version: u64,
1065    #[prost(uint64, tag = "4")]
1066    pub rom_version: u64,
1067    #[prost(int64, tag = "5")]
1068    pub uptime: i64,
1069    #[prost(float, tag = "6")]
1070    pub dish_power: f32,
1071    #[prost(float, tag = "7")]
1072    pub router_power: f32,
1073    #[prost(bool, tag = "8")]
1074    pub force_dev_signed_allowed: bool,
1075    #[prost(bool, tag = "9")]
1076    pub debug_port_locked: bool,
1077    #[prost(bool, tag = "10")]
1078    pub stsafe_certs_locked: bool,
1079    #[prost(bool, tag = "11")]
1080    pub stsafe_keys_locked: bool,
1081    #[prost(uint32, tag = "12")]
1082    pub g0_locked: u32,
1083    #[prost(uint32, tag = "13")]
1084    pub g0_firmware_version: u32,
1085    #[prost(int32, tag = "14")]
1086    pub board_rev: i32,
1087    #[prost(uint32, tag = "15")]
1088    pub g0_board_id: u32,
1089}
1090#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1091pub struct DishApsStats {
1092    #[prost(uint64, tag = "2")]
1093    pub app_version: u64,
1094    #[prost(uint64, tag = "3")]
1095    pub boot_version: u64,
1096    #[prost(uint64, tag = "4")]
1097    pub rom_version: u64,
1098    #[prost(int64, tag = "5")]
1099    pub uptime: i64,
1100    #[prost(float, tag = "6")]
1101    pub dish_power: f32,
1102    #[prost(bool, tag = "7")]
1103    pub force_dev_signed_allowed: bool,
1104    #[prost(bool, tag = "8")]
1105    pub debug_port_locked: bool,
1106    #[prost(int32, tag = "9")]
1107    pub board_rev: i32,
1108}
1109#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1110pub struct InitializationDurationSeconds {
1111    #[prost(int32, tag = "1")]
1112    pub attitude_initialization: i32,
1113    #[prost(int32, tag = "2")]
1114    pub burst_detected: i32,
1115    #[prost(int32, tag = "3")]
1116    pub ekf_converged: i32,
1117    #[prost(int32, tag = "4")]
1118    pub first_cplane: i32,
1119    #[prost(int32, tag = "5")]
1120    pub first_pop_ping: i32,
1121    #[prost(int32, tag = "6")]
1122    pub gps_valid: i32,
1123    #[prost(int32, tag = "7")]
1124    pub initial_network_entry: i32,
1125    #[prost(int32, tag = "8")]
1126    pub network_schedule: i32,
1127    #[prost(int32, tag = "9")]
1128    pub rf_ready: i32,
1129    #[prost(int32, tag = "10")]
1130    pub stable_connection: i32,
1131}
1132#[derive(Clone, PartialEq, ::prost::Message)]
1133pub struct DishAuthenticateResponse {
1134    #[prost(message, optional, tag = "2")]
1135    pub dish: ::core::option::Option<ChallengeResponse>,
1136}
1137#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1138pub struct SelfTestRequest {
1139    #[prost(bool, tag = "1")]
1140    pub detailed: bool,
1141}
1142#[derive(Clone, PartialEq, ::prost::Message)]
1143pub struct SelfTestResponse {
1144    #[prost(bool, tag = "1")]
1145    pub passed: bool,
1146    #[prost(string, tag = "2")]
1147    pub report: ::prost::alloc::string::String,
1148}
1149#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1150pub struct SetTestModeRequest {
1151    #[prost(enumeration = "set_test_mode_request::RfMode", tag = "1")]
1152    pub rf_mode: i32,
1153    #[prost(bool, tag = "1001")]
1154    pub disable_loss_of_comm_fdir: bool,
1155    #[prost(bool, tag = "1002")]
1156    pub enable_rules_override: bool,
1157}
1158/// Nested message and enum types in `SetTestModeRequest`.
1159pub mod set_test_mode_request {
1160    #[derive(
1161        Clone,
1162        Copy,
1163        Debug,
1164        PartialEq,
1165        Eq,
1166        Hash,
1167        PartialOrd,
1168        Ord,
1169        ::prost::Enumeration
1170    )]
1171    #[repr(i32)]
1172    pub enum RfMode {
1173        Rx = 0,
1174        Idle = 1,
1175        Tx = 2,
1176        Cal = 3,
1177        User = 4,
1178        Normal = 420,
1179    }
1180    impl RfMode {
1181        /// String value of the enum field names used in the ProtoBuf definition.
1182        ///
1183        /// The values are not transformed in any way and thus are considered stable
1184        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1185        pub fn as_str_name(&self) -> &'static str {
1186            match self {
1187                Self::Rx => "RX",
1188                Self::Idle => "IDLE",
1189                Self::Tx => "TX",
1190                Self::Cal => "CAL",
1191                Self::User => "USER",
1192                Self::Normal => "NORMAL",
1193            }
1194        }
1195        /// Creates an enum from field names used in the ProtoBuf definition.
1196        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1197            match value {
1198                "RX" => Some(Self::Rx),
1199                "IDLE" => Some(Self::Idle),
1200                "TX" => Some(Self::Tx),
1201                "CAL" => Some(Self::Cal),
1202                "USER" => Some(Self::User),
1203                "NORMAL" => Some(Self::Normal),
1204                _ => None,
1205            }
1206        }
1207    }
1208}
1209#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1210pub struct SetTestModeResponse {}
1211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1212pub struct DishSetConfigRequest {
1213    #[prost(message, optional, tag = "1")]
1214    pub dish_config: ::core::option::Option<DishConfig>,
1215}
1216#[derive(Clone, PartialEq, ::prost::Message)]
1217pub struct DishSetConfigResponse {
1218    #[prost(message, optional, tag = "1")]
1219    pub updated_dish_config: ::core::option::Option<DishConfig>,
1220    #[prost(string, tag = "2")]
1221    pub error: ::prost::alloc::string::String,
1222}
1223#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1224pub struct DishGetConfigRequest {}
1225#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1226pub struct DishGetConfigResponse {
1227    #[prost(message, optional, tag = "1")]
1228    pub dish_config: ::core::option::Option<DishConfig>,
1229}
1230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1231pub struct DishInhibitGpsRequest {
1232    #[prost(bool, tag = "1")]
1233    pub inhibit_gps: bool,
1234}
1235#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1236pub struct DishInhibitGpsResponse {
1237    #[prost(bool, tag = "1")]
1238    pub inhibit_gps: bool,
1239}
1240#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1241pub struct DishGetDataRequest {
1242    #[prost(uint32, tag = "1")]
1243    pub id: u32,
1244}
1245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1246pub struct DishClearObstructionMapRequest {}
1247#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1248pub struct DishClearObstructionMapResponse {}
1249#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1250pub struct DishActivateRssiScanRequest {
1251    #[prost(message, optional, tag = "1")]
1252    pub scan_query: ::core::option::Option<DishActivateRssiScan>,
1253}
1254#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1255pub struct DishActivateRssiScanResponse {
1256    #[prost(bool, tag = "1")]
1257    pub success: bool,
1258}
1259#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1260pub struct DishGetRssiScanResultRequest {}
1261#[derive(Clone, PartialEq, ::prost::Message)]
1262pub struct DishGetRssiScanResultResponse {
1263    #[prost(message, optional, tag = "1")]
1264    pub result: ::core::option::Option<DishGetRssiScanResult>,
1265}
1266#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1267pub struct DishFactoryResetRequest {
1268    #[prost(bool, tag = "1")]
1269    pub app_reset: bool,
1270}
1271#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1272pub struct DishFactoryResetResponse {}
1273#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1274pub struct ResetButtonRequest {
1275    #[prost(bool, tag = "1")]
1276    pub pressed: bool,
1277}
1278#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1279pub struct ResetButtonResponse {}
1280#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1281pub struct PlcStats {
1282    #[prost(bool, tag = "1")]
1283    pub receiving_plc: bool,
1284    #[prost(uint32, tag = "2")]
1285    pub average_time_to_empty: u32,
1286    #[prost(uint32, tag = "3")]
1287    pub average_time_to_full: u32,
1288    #[prost(uint32, tag = "4")]
1289    pub battery_health: u32,
1290    #[prost(uint32, tag = "5")]
1291    pub hardware_revision_id: u32,
1292    #[prost(bool, tag = "6")]
1293    pub permanent_failure: bool,
1294    #[prost(message, optional, tag = "7")]
1295    pub port_1_stats: ::core::option::Option<PlcPortStats>,
1296    #[prost(message, optional, tag = "8")]
1297    pub port_2_stats: ::core::option::Option<PlcPortStats>,
1298    #[prost(message, optional, tag = "9")]
1299    pub port_3_stats: ::core::option::Option<PlcPortStats>,
1300    #[prost(enumeration = "plc_stats::ProtocolRevision", tag = "10")]
1301    pub plc_revision: i32,
1302    #[prost(bool, tag = "11")]
1303    pub safety_mode_active: bool,
1304    #[prost(uint32, tag = "12")]
1305    pub state_of_charge: u32,
1306    #[prost(uint32, tag = "13")]
1307    pub thermal_throttle_level: u32,
1308}
1309/// Nested message and enum types in `PLCStats`.
1310pub mod plc_stats {
1311    #[derive(
1312        Clone,
1313        Copy,
1314        Debug,
1315        PartialEq,
1316        Eq,
1317        Hash,
1318        PartialOrd,
1319        Ord,
1320        ::prost::Enumeration
1321    )]
1322    #[repr(i32)]
1323    pub enum ProtocolRevision {
1324        RevD = 0,
1325    }
1326    impl ProtocolRevision {
1327        /// String value of the enum field names used in the ProtoBuf definition.
1328        ///
1329        /// The values are not transformed in any way and thus are considered stable
1330        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1331        pub fn as_str_name(&self) -> &'static str {
1332            match self {
1333                Self::RevD => "REV_D",
1334            }
1335        }
1336        /// Creates an enum from field names used in the ProtoBuf definition.
1337        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1338            match value {
1339                "REV_D" => Some(Self::RevD),
1340                _ => None,
1341            }
1342        }
1343    }
1344}
1345#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1346pub struct PlcPortStats {
1347    #[prost(uint32, tag = "1")]
1348    pub power: u32,
1349    #[prost(enumeration = "plc_port_stats::PortStatus", tag = "2")]
1350    pub status: i32,
1351}
1352/// Nested message and enum types in `PLCPortStats`.
1353pub mod plc_port_stats {
1354    #[derive(
1355        Clone,
1356        Copy,
1357        Debug,
1358        PartialEq,
1359        Eq,
1360        Hash,
1361        PartialOrd,
1362        Ord,
1363        ::prost::Enumeration
1364    )]
1365    #[repr(i32)]
1366    pub enum PortStatus {
1367        Inactive = 0,
1368        Charging = 1,
1369        Discharging = 2,
1370        MoistureDetected = 3,
1371    }
1372    impl PortStatus {
1373        /// String value of the enum field names used in the ProtoBuf definition.
1374        ///
1375        /// The values are not transformed in any way and thus are considered stable
1376        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1377        pub fn as_str_name(&self) -> &'static str {
1378            match self {
1379                Self::Inactive => "INACTIVE",
1380                Self::Charging => "CHARGING",
1381                Self::Discharging => "DISCHARGING",
1382                Self::MoistureDetected => "MOISTURE_DETECTED",
1383            }
1384        }
1385        /// Creates an enum from field names used in the ProtoBuf definition.
1386        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1387            match value {
1388                "INACTIVE" => Some(Self::Inactive),
1389                "CHARGING" => Some(Self::Charging),
1390                "DISCHARGING" => Some(Self::Discharging),
1391                "MOISTURE_DETECTED" => Some(Self::MoistureDetected),
1392                _ => None,
1393            }
1394        }
1395    }
1396}
1397#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1398#[repr(i32)]
1399pub enum UserMobilityClass {
1400    Stationary = 0,
1401    Nomadic = 1,
1402    Mobile = 2,
1403}
1404impl UserMobilityClass {
1405    /// String value of the enum field names used in the ProtoBuf definition.
1406    ///
1407    /// The values are not transformed in any way and thus are considered stable
1408    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1409    pub fn as_str_name(&self) -> &'static str {
1410        match self {
1411            Self::Stationary => "STATIONARY",
1412            Self::Nomadic => "NOMADIC",
1413            Self::Mobile => "MOBILE",
1414        }
1415    }
1416    /// Creates an enum from field names used in the ProtoBuf definition.
1417    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1418        match value {
1419            "STATIONARY" => Some(Self::Stationary),
1420            "NOMADIC" => Some(Self::Nomadic),
1421            "MOBILE" => Some(Self::Mobile),
1422            _ => None,
1423        }
1424    }
1425}
1426#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1427#[repr(i32)]
1428pub enum ObstructionMapReferenceFrame {
1429    FrameUnknown = 0,
1430    FrameEarth = 1,
1431    FrameUt = 2,
1432}
1433impl ObstructionMapReferenceFrame {
1434    /// String value of the enum field names used in the ProtoBuf definition.
1435    ///
1436    /// The values are not transformed in any way and thus are considered stable
1437    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1438    pub fn as_str_name(&self) -> &'static str {
1439        match self {
1440            Self::FrameUnknown => "FRAME_UNKNOWN",
1441            Self::FrameEarth => "FRAME_EARTH",
1442            Self::FrameUt => "FRAME_UT",
1443        }
1444    }
1445    /// Creates an enum from field names used in the ProtoBuf definition.
1446    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1447        match value {
1448            "FRAME_UNKNOWN" => Some(Self::FrameUnknown),
1449            "FRAME_EARTH" => Some(Self::FrameEarth),
1450            "FRAME_UT" => Some(Self::FrameUt),
1451            _ => None,
1452        }
1453    }
1454}
1455#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1456#[repr(i32)]
1457pub enum SoftwareUpdateState {
1458    Unknown = 0,
1459    Idle = 1,
1460    Fetching = 2,
1461    PreCheck = 3,
1462    Writing = 4,
1463    PostCheck = 5,
1464    RebootRequired = 6,
1465    Disabled = 7,
1466    Faulted = 8,
1467}
1468impl SoftwareUpdateState {
1469    /// String value of the enum field names used in the ProtoBuf definition.
1470    ///
1471    /// The values are not transformed in any way and thus are considered stable
1472    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1473    pub fn as_str_name(&self) -> &'static str {
1474        match self {
1475            Self::Unknown => "SOFTWARE_UPDATE_STATE_UNKNOWN",
1476            Self::Idle => "IDLE",
1477            Self::Fetching => "FETCHING",
1478            Self::PreCheck => "PRE_CHECK",
1479            Self::Writing => "WRITING",
1480            Self::PostCheck => "POST_CHECK",
1481            Self::RebootRequired => "REBOOT_REQUIRED",
1482            Self::Disabled => "DISABLED",
1483            Self::Faulted => "FAULTED",
1484        }
1485    }
1486    /// Creates an enum from field names used in the ProtoBuf definition.
1487    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1488        match value {
1489            "SOFTWARE_UPDATE_STATE_UNKNOWN" => Some(Self::Unknown),
1490            "IDLE" => Some(Self::Idle),
1491            "FETCHING" => Some(Self::Fetching),
1492            "PRE_CHECK" => Some(Self::PreCheck),
1493            "WRITING" => Some(Self::Writing),
1494            "POST_CHECK" => Some(Self::PostCheck),
1495            "REBOOT_REQUIRED" => Some(Self::RebootRequired),
1496            "DISABLED" => Some(Self::Disabled),
1497            "FAULTED" => Some(Self::Faulted),
1498            _ => None,
1499        }
1500    }
1501}
1502#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1503#[repr(i32)]
1504pub enum UserClassOfService {
1505    UnknownUserClassOfService = 0,
1506    Consumer = 1,
1507    Business = 2,
1508    BusinessPlus = 3,
1509    CommercialAviation = 4,
1510}
1511impl UserClassOfService {
1512    /// String value of the enum field names used in the ProtoBuf definition.
1513    ///
1514    /// The values are not transformed in any way and thus are considered stable
1515    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1516    pub fn as_str_name(&self) -> &'static str {
1517        match self {
1518            Self::UnknownUserClassOfService => "UNKNOWN_USER_CLASS_OF_SERVICE",
1519            Self::Consumer => "CONSUMER",
1520            Self::Business => "BUSINESS",
1521            Self::BusinessPlus => "BUSINESS_PLUS",
1522            Self::CommercialAviation => "COMMERCIAL_AVIATION",
1523        }
1524    }
1525    /// Creates an enum from field names used in the ProtoBuf definition.
1526    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1527        match value {
1528            "UNKNOWN_USER_CLASS_OF_SERVICE" => Some(Self::UnknownUserClassOfService),
1529            "CONSUMER" => Some(Self::Consumer),
1530            "BUSINESS" => Some(Self::Business),
1531            "BUSINESS_PLUS" => Some(Self::BusinessPlus),
1532            "COMMERCIAL_AVIATION" => Some(Self::CommercialAviation),
1533            _ => None,
1534        }
1535    }
1536}
1537#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1538#[repr(i32)]
1539pub enum HasActuators {
1540    Unknown = 0,
1541    Yes = 1,
1542    No = 2,
1543}
1544impl HasActuators {
1545    /// String value of the enum field names used in the ProtoBuf definition.
1546    ///
1547    /// The values are not transformed in any way and thus are considered stable
1548    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1549    pub fn as_str_name(&self) -> &'static str {
1550        match self {
1551            Self::Unknown => "HAS_ACTUATORS_UNKNOWN",
1552            Self::Yes => "HAS_ACTUATORS_YES",
1553            Self::No => "HAS_ACTUATORS_NO",
1554        }
1555    }
1556    /// Creates an enum from field names used in the ProtoBuf definition.
1557    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1558        match value {
1559            "HAS_ACTUATORS_UNKNOWN" => Some(Self::Unknown),
1560            "HAS_ACTUATORS_YES" => Some(Self::Yes),
1561            "HAS_ACTUATORS_NO" => Some(Self::No),
1562            _ => None,
1563        }
1564    }
1565}
1566#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1567#[repr(i32)]
1568pub enum ActuatorState {
1569    Idle = 0,
1570    FullTilt = 1,
1571    Rotate = 2,
1572    Tilt = 3,
1573    UnwrapPositive = 4,
1574    UnwrapNegative = 5,
1575    TiltToStowed = 6,
1576    Faulted = 7,
1577    WaitTilStatic = 8,
1578    DriveToMobilePosition = 9,
1579    MobileWait = 10,
1580}
1581impl ActuatorState {
1582    /// String value of the enum field names used in the ProtoBuf definition.
1583    ///
1584    /// The values are not transformed in any way and thus are considered stable
1585    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1586    pub fn as_str_name(&self) -> &'static str {
1587        match self {
1588            Self::Idle => "ACTUATOR_STATE_IDLE",
1589            Self::FullTilt => "ACTUATOR_STATE_FULL_TILT",
1590            Self::Rotate => "ACTUATOR_STATE_ROTATE",
1591            Self::Tilt => "ACTUATOR_STATE_TILT",
1592            Self::UnwrapPositive => "ACTUATOR_STATE_UNWRAP_POSITIVE",
1593            Self::UnwrapNegative => "ACTUATOR_STATE_UNWRAP_NEGATIVE",
1594            Self::TiltToStowed => "ACTUATOR_STATE_TILT_TO_STOWED",
1595            Self::Faulted => "ACTUATOR_STATE_FAULTED",
1596            Self::WaitTilStatic => "ACTUATOR_STATE_WAIT_TIL_STATIC",
1597            Self::DriveToMobilePosition => "ACTUATOR_STATE_DRIVE_TO_MOBILE_POSITION",
1598            Self::MobileWait => "ACTUATOR_STATE_MOBILE_WAIT",
1599        }
1600    }
1601    /// Creates an enum from field names used in the ProtoBuf definition.
1602    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1603        match value {
1604            "ACTUATOR_STATE_IDLE" => Some(Self::Idle),
1605            "ACTUATOR_STATE_FULL_TILT" => Some(Self::FullTilt),
1606            "ACTUATOR_STATE_ROTATE" => Some(Self::Rotate),
1607            "ACTUATOR_STATE_TILT" => Some(Self::Tilt),
1608            "ACTUATOR_STATE_UNWRAP_POSITIVE" => Some(Self::UnwrapPositive),
1609            "ACTUATOR_STATE_UNWRAP_NEGATIVE" => Some(Self::UnwrapNegative),
1610            "ACTUATOR_STATE_TILT_TO_STOWED" => Some(Self::TiltToStowed),
1611            "ACTUATOR_STATE_FAULTED" => Some(Self::Faulted),
1612            "ACTUATOR_STATE_WAIT_TIL_STATIC" => Some(Self::WaitTilStatic),
1613            "ACTUATOR_STATE_DRIVE_TO_MOBILE_POSITION" => {
1614                Some(Self::DriveToMobilePosition)
1615            }
1616            "ACTUATOR_STATE_MOBILE_WAIT" => Some(Self::MobileWait),
1617            _ => None,
1618        }
1619    }
1620}
1621#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1622#[repr(i32)]
1623pub enum AttitudeEstimationState {
1624    FilterReset = 0,
1625    FilterUnconverged = 1,
1626    FilterConverged = 2,
1627    FilterFaulted = 3,
1628    FilterInvalid = 4,
1629}
1630impl AttitudeEstimationState {
1631    /// String value of the enum field names used in the ProtoBuf definition.
1632    ///
1633    /// The values are not transformed in any way and thus are considered stable
1634    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1635    pub fn as_str_name(&self) -> &'static str {
1636        match self {
1637            Self::FilterReset => "FILTER_RESET",
1638            Self::FilterUnconverged => "FILTER_UNCONVERGED",
1639            Self::FilterConverged => "FILTER_CONVERGED",
1640            Self::FilterFaulted => "FILTER_FAULTED",
1641            Self::FilterInvalid => "FILTER_INVALID",
1642        }
1643    }
1644    /// Creates an enum from field names used in the ProtoBuf definition.
1645    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1646        match value {
1647            "FILTER_RESET" => Some(Self::FilterReset),
1648            "FILTER_UNCONVERGED" => Some(Self::FilterUnconverged),
1649            "FILTER_CONVERGED" => Some(Self::FilterConverged),
1650            "FILTER_FAULTED" => Some(Self::FilterFaulted),
1651            "FILTER_INVALID" => Some(Self::FilterInvalid),
1652            _ => None,
1653        }
1654    }
1655}
1656#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1657#[repr(i32)]
1658pub enum RebootReason {
1659    None = 0,
1660    Manual = 1,
1661    LossOfComm = 2,
1662    SwupdateNow = 3,
1663    SwupdateScheduled = 4,
1664    App = 5,
1665    Emc = 6,
1666    FactoryReset = 7,
1667    TestCase = 8,
1668    ThermalPowerCut = 9,
1669    CriticalProcessDied = 10,
1670    NoRfReady = 11,
1671    PostponedLossOfComm = 12,
1672    SwupdateStationary = 13,
1673    AapCrash = 14,
1674    Xp70Sacs = 15,
1675    IneFailed = 16,
1676}
1677impl RebootReason {
1678    /// String value of the enum field names used in the ProtoBuf definition.
1679    ///
1680    /// The values are not transformed in any way and thus are considered stable
1681    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1682    pub fn as_str_name(&self) -> &'static str {
1683        match self {
1684            Self::None => "REBOOT_REASON_NONE",
1685            Self::Manual => "REBOOT_REASON_MANUAL",
1686            Self::LossOfComm => "REBOOT_REASON_LOSS_OF_COMM",
1687            Self::SwupdateNow => "REBOOT_REASON_SWUPDATE_NOW",
1688            Self::SwupdateScheduled => "REBOOT_REASON_SWUPDATE_SCHEDULED",
1689            Self::App => "REBOOT_REASON_APP",
1690            Self::Emc => "REBOOT_REASON_EMC",
1691            Self::FactoryReset => "REBOOT_REASON_FACTORY_RESET",
1692            Self::TestCase => "REBOOT_REASON_TEST_CASE",
1693            Self::ThermalPowerCut => "REBOOT_REASON_THERMAL_POWER_CUT",
1694            Self::CriticalProcessDied => "REBOOT_REASON_CRITICAL_PROCESS_DIED",
1695            Self::NoRfReady => "REBOOT_REASON_NO_RF_READY",
1696            Self::PostponedLossOfComm => "REBOOT_REASON_POSTPONED_LOSS_OF_COMM",
1697            Self::SwupdateStationary => "REBOOT_REASON_SWUPDATE_STATIONARY",
1698            Self::AapCrash => "REBOOT_REASON_AAP_CRASH",
1699            Self::Xp70Sacs => "REBOOT_REASON_XP70_SACS",
1700            Self::IneFailed => "REBOOT_REASON_INE_FAILED",
1701        }
1702    }
1703    /// Creates an enum from field names used in the ProtoBuf definition.
1704    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1705        match value {
1706            "REBOOT_REASON_NONE" => Some(Self::None),
1707            "REBOOT_REASON_MANUAL" => Some(Self::Manual),
1708            "REBOOT_REASON_LOSS_OF_COMM" => Some(Self::LossOfComm),
1709            "REBOOT_REASON_SWUPDATE_NOW" => Some(Self::SwupdateNow),
1710            "REBOOT_REASON_SWUPDATE_SCHEDULED" => Some(Self::SwupdateScheduled),
1711            "REBOOT_REASON_APP" => Some(Self::App),
1712            "REBOOT_REASON_EMC" => Some(Self::Emc),
1713            "REBOOT_REASON_FACTORY_RESET" => Some(Self::FactoryReset),
1714            "REBOOT_REASON_TEST_CASE" => Some(Self::TestCase),
1715            "REBOOT_REASON_THERMAL_POWER_CUT" => Some(Self::ThermalPowerCut),
1716            "REBOOT_REASON_CRITICAL_PROCESS_DIED" => Some(Self::CriticalProcessDied),
1717            "REBOOT_REASON_NO_RF_READY" => Some(Self::NoRfReady),
1718            "REBOOT_REASON_POSTPONED_LOSS_OF_COMM" => Some(Self::PostponedLossOfComm),
1719            "REBOOT_REASON_SWUPDATE_STATIONARY" => Some(Self::SwupdateStationary),
1720            "REBOOT_REASON_AAP_CRASH" => Some(Self::AapCrash),
1721            "REBOOT_REASON_XP70_SACS" => Some(Self::Xp70Sacs),
1722            "REBOOT_REASON_INE_FAILED" => Some(Self::IneFailed),
1723            _ => None,
1724        }
1725    }
1726}
1727#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1728#[repr(i32)]
1729pub enum DishState {
1730    Unknown = 0,
1731    Connected = 1,
1732    Searching = 2,
1733    Booting = 3,
1734}
1735impl DishState {
1736    /// String value of the enum field names used in the ProtoBuf definition.
1737    ///
1738    /// The values are not transformed in any way and thus are considered stable
1739    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1740    pub fn as_str_name(&self) -> &'static str {
1741        match self {
1742            Self::Unknown => "UNKNOWN",
1743            Self::Connected => "CONNECTED",
1744            Self::Searching => "SEARCHING",
1745            Self::Booting => "BOOTING",
1746        }
1747    }
1748    /// Creates an enum from field names used in the ProtoBuf definition.
1749    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1750        match value {
1751            "UNKNOWN" => Some(Self::Unknown),
1752            "CONNECTED" => Some(Self::Connected),
1753            "SEARCHING" => Some(Self::Searching),
1754            "BOOTING" => Some(Self::Booting),
1755            _ => None,
1756        }
1757    }
1758}
1759#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1760pub struct TransceiverIfLoopbackTestRequest {
1761    #[prost(bool, tag = "1")]
1762    pub enable_if_loopback: bool,
1763}
1764#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1765pub struct TransceiverIfLoopbackTestResponse {
1766    #[prost(float, tag = "1")]
1767    pub ber_loopback_test: f32,
1768    #[prost(float, tag = "2")]
1769    pub snr_loopback_test: f32,
1770    #[prost(float, tag = "3")]
1771    pub rssi_loopback_test: f32,
1772    #[prost(bool, tag = "4")]
1773    pub pll_lock: bool,
1774}
1775#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1776pub struct TransceiverGetStatusRequest {}
1777#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1778pub struct TransceiverGetStatusResponse {
1779    #[prost(enumeration = "TransceiverModulatorState", tag = "1")]
1780    pub mod_state: i32,
1781    #[prost(enumeration = "TransceiverModulatorState", tag = "2")]
1782    pub demod_state: i32,
1783    #[prost(enumeration = "TransceiverTxRxState", tag = "3")]
1784    pub tx_state: i32,
1785    #[prost(enumeration = "TransceiverTxRxState", tag = "4")]
1786    pub rx_state: i32,
1787    #[prost(enumeration = "DishState", tag = "1006")]
1788    pub state: i32,
1789    #[prost(message, optional, tag = "1007")]
1790    pub faults: ::core::option::Option<TransceiverFaults>,
1791    #[prost(enumeration = "TransceiverTransmitBlankingState", tag = "1008")]
1792    pub transmit_blanking_state: i32,
1793    #[prost(float, tag = "1009")]
1794    pub modem_asic_temp: f32,
1795    #[prost(float, tag = "1010")]
1796    pub tx_if_temp: f32,
1797}
1798#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1799pub struct TransceiverFaults {
1800    #[prost(bool, tag = "1")]
1801    pub over_temp_modem_asic_fault: bool,
1802    #[prost(bool, tag = "2")]
1803    pub over_temp_pcba_fault: bool,
1804    #[prost(bool, tag = "3")]
1805    pub dc_voltage_fault: bool,
1806}
1807#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1808pub struct TransceiverGetTelemetryRequest {}
1809#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1810pub struct TransceiverGetTelemetryResponse {
1811    #[prost(uint32, tag = "1001")]
1812    pub antenna_pointing_mode: u32,
1813    #[prost(float, tag = "1002")]
1814    pub antenna_pitch: f32,
1815    #[prost(float, tag = "1003")]
1816    pub antenna_roll: f32,
1817    #[prost(float, tag = "1004")]
1818    pub antenna_rx_theta: f32,
1819    #[prost(float, tag = "1005")]
1820    pub antenna_true_heading: f32,
1821    #[prost(uint32, tag = "1006")]
1822    pub rx_channel: u32,
1823    #[prost(uint32, tag = "1007")]
1824    pub current_cell_id: u32,
1825    #[prost(float, tag = "1008")]
1826    pub seconds_until_slot_end: f32,
1827    #[prost(float, tag = "1009")]
1828    pub wb_rssi_peak_mag_db: f32,
1829    #[prost(float, tag = "1010")]
1830    pub pop_ping_drop_rate: f32,
1831    #[prost(float, tag = "1011")]
1832    pub snr_db: f32,
1833    #[prost(float, tag = "1012")]
1834    pub l1_snr_avg_db: f32,
1835    #[prost(float, tag = "1013")]
1836    pub l1_snr_min_db: f32,
1837    #[prost(float, tag = "1014")]
1838    pub l1_snr_max_db: f32,
1839    #[prost(uint32, tag = "1015")]
1840    pub lmac_satellite_id: u32,
1841    #[prost(uint32, tag = "1016")]
1842    pub target_satellite_id: u32,
1843    #[prost(uint32, tag = "1017")]
1844    pub grant_mcs: u32,
1845    #[prost(float, tag = "1018")]
1846    pub grant_symbols_avg: f32,
1847    #[prost(uint32, tag = "1019")]
1848    pub ded_grant: u32,
1849    #[prost(uint32, tag = "1020")]
1850    pub mobility_proactive_slot_change: u32,
1851    #[prost(uint32, tag = "1021")]
1852    pub mobility_reactive_slot_change: u32,
1853    #[prost(uint32, tag = "1022")]
1854    pub rfp_total_syn_failed: u32,
1855    #[prost(uint32, tag = "1023")]
1856    pub num_out_of_seq: u32,
1857    #[prost(uint32, tag = "1024")]
1858    pub num_ulmap_drop: u32,
1859    #[prost(float, tag = "1025")]
1860    pub current_seconds_of_schedule: f32,
1861    #[prost(uint32, tag = "1026")]
1862    pub send_label_switch_to_ground_failed_calls: u32,
1863    #[prost(double, tag = "1027")]
1864    pub ema_velocity_x: f64,
1865    #[prost(double, tag = "1028")]
1866    pub ema_velocity_y: f64,
1867    #[prost(double, tag = "1029")]
1868    pub ema_velocity_z: f64,
1869    #[prost(float, tag = "1030")]
1870    pub ce_rssi_db: f32,
1871}
1872#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1873#[repr(i32)]
1874pub enum TransceiverModulatorState {
1875    ModstateUnknown = 0,
1876    ModstateEnabled = 1,
1877    ModstateDisabled = 2,
1878}
1879impl TransceiverModulatorState {
1880    /// String value of the enum field names used in the ProtoBuf definition.
1881    ///
1882    /// The values are not transformed in any way and thus are considered stable
1883    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1884    pub fn as_str_name(&self) -> &'static str {
1885        match self {
1886            Self::ModstateUnknown => "MODSTATE_UNKNOWN",
1887            Self::ModstateEnabled => "MODSTATE_ENABLED",
1888            Self::ModstateDisabled => "MODSTATE_DISABLED",
1889        }
1890    }
1891    /// Creates an enum from field names used in the ProtoBuf definition.
1892    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1893        match value {
1894            "MODSTATE_UNKNOWN" => Some(Self::ModstateUnknown),
1895            "MODSTATE_ENABLED" => Some(Self::ModstateEnabled),
1896            "MODSTATE_DISABLED" => Some(Self::ModstateDisabled),
1897            _ => None,
1898        }
1899    }
1900}
1901#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1902#[repr(i32)]
1903pub enum TransceiverTxRxState {
1904    TxrxUnknown = 0,
1905    TxrxEnabled = 1,
1906    TxrxDisabled = 2,
1907}
1908impl TransceiverTxRxState {
1909    /// String value of the enum field names used in the ProtoBuf definition.
1910    ///
1911    /// The values are not transformed in any way and thus are considered stable
1912    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1913    pub fn as_str_name(&self) -> &'static str {
1914        match self {
1915            Self::TxrxUnknown => "TXRX_UNKNOWN",
1916            Self::TxrxEnabled => "TXRX_ENABLED",
1917            Self::TxrxDisabled => "TXRX_DISABLED",
1918        }
1919    }
1920    /// Creates an enum from field names used in the ProtoBuf definition.
1921    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1922        match value {
1923            "TXRX_UNKNOWN" => Some(Self::TxrxUnknown),
1924            "TXRX_ENABLED" => Some(Self::TxrxEnabled),
1925            "TXRX_DISABLED" => Some(Self::TxrxDisabled),
1926            _ => None,
1927        }
1928    }
1929}
1930#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1931#[repr(i32)]
1932pub enum TransceiverTransmitBlankingState {
1933    TbUnknown = 0,
1934    TbEnabled = 1,
1935    TbDisabled = 2,
1936}
1937impl TransceiverTransmitBlankingState {
1938    /// String value of the enum field names used in the ProtoBuf definition.
1939    ///
1940    /// The values are not transformed in any way and thus are considered stable
1941    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1942    pub fn as_str_name(&self) -> &'static str {
1943        match self {
1944            Self::TbUnknown => "TB_UNKNOWN",
1945            Self::TbEnabled => "TB_ENABLED",
1946            Self::TbDisabled => "TB_DISABLED",
1947        }
1948    }
1949    /// Creates an enum from field names used in the ProtoBuf definition.
1950    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1951        match value {
1952            "TB_UNKNOWN" => Some(Self::TbUnknown),
1953            "TB_ENABLED" => Some(Self::TbEnabled),
1954            "TB_DISABLED" => Some(Self::TbDisabled),
1955            _ => None,
1956        }
1957    }
1958}
1959#[derive(Clone, PartialEq, ::prost::Message)]
1960pub struct InflatedBasicServiceSet {
1961    #[prost(string, tag = "1")]
1962    pub bssid: ::prost::alloc::string::String,
1963    #[prost(string, tag = "2")]
1964    pub ssid: ::prost::alloc::string::String,
1965    #[prost(string, tag = "3")]
1966    pub mac_lan: ::prost::alloc::string::String,
1967    #[prost(string, tag = "4")]
1968    pub iface_name: ::prost::alloc::string::String,
1969    #[prost(enumeration = "IfaceType", tag = "5")]
1970    pub iface_type: i32,
1971    #[prost(uint32, tag = "6")]
1972    pub channel: u32,
1973    #[prost(uint32, tag = "7")]
1974    pub preference: u32,
1975    #[prost(string, tag = "8")]
1976    pub domain: ::prost::alloc::string::String,
1977}
1978#[derive(Clone, PartialEq, ::prost::Message)]
1979pub struct DhcpLease {
1980    #[prost(string, tag = "1")]
1981    pub ip_address: ::prost::alloc::string::String,
1982    #[prost(string, tag = "2")]
1983    pub mac_address: ::prost::alloc::string::String,
1984    #[prost(string, tag = "3")]
1985    pub hostname: ::prost::alloc::string::String,
1986    #[prost(string, tag = "4")]
1987    pub expires_time: ::prost::alloc::string::String,
1988    #[prost(bool, tag = "5")]
1989    pub active: bool,
1990    #[prost(uint32, tag = "6")]
1991    pub client_id: u32,
1992}
1993#[derive(Clone, PartialEq, ::prost::Message)]
1994pub struct DhcpServer {
1995    #[prost(string, tag = "1")]
1996    pub domain: ::prost::alloc::string::String,
1997    #[prost(string, tag = "2")]
1998    pub subnet: ::prost::alloc::string::String,
1999    #[prost(message, repeated, tag = "3")]
2000    pub leases: ::prost::alloc::vec::Vec<DhcpLease>,
2001    #[prost(bool, tag = "4")]
2002    pub ip_exhausted: bool,
2003}
2004#[derive(Clone, PartialEq, ::prost::Message)]
2005pub struct RadiusStatsMap {
2006    #[prost(map = "string, message", tag = "1")]
2007    pub radius_stats: ::std::collections::HashMap<
2008        ::prost::alloc::string::String,
2009        radius_stats_map::RadiusStats,
2010    >,
2011}
2012/// Nested message and enum types in `RadiusStatsMap`.
2013pub mod radius_stats_map {
2014    #[derive(Clone, PartialEq, ::prost::Message)]
2015    pub struct RadiusStats {
2016        #[prost(string, tag = "1")]
2017        pub iface_name: ::prost::alloc::string::String,
2018        #[prost(uint32, tag = "2")]
2019        pub timeout_count: u32,
2020        #[prost(uint32, tag = "3")]
2021        pub access_request_count: u32,
2022        #[prost(uint32, tag = "4")]
2023        pub access_accept_count: u32,
2024        #[prost(uint32, tag = "5")]
2025        pub access_reject_count: u32,
2026        #[prost(uint32, tag = "6")]
2027        pub access_challenge_count: u32,
2028        #[prost(uint32, tag = "7")]
2029        pub accounting_request_count: u32,
2030        #[prost(uint32, tag = "8")]
2031        pub accounting_response_count: u32,
2032    }
2033}
2034#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2035pub struct PoeStats {
2036    #[prost(enumeration = "PoeState", tag = "1")]
2037    pub poe_state: i32,
2038    #[prost(float, tag = "2")]
2039    pub poe_power: f32,
2040    #[prost(uint32, tag = "3")]
2041    pub poe_faults_fast_overcurrent: u32,
2042    #[prost(uint32, tag = "4")]
2043    pub poe_faults_slow_overcurrent: u32,
2044    #[prost(uint32, tag = "5")]
2045    pub poe_faults_overvoltage: u32,
2046    #[prost(uint32, tag = "6")]
2047    pub poe_faults_undervoltage: u32,
2048    #[prost(float, tag = "7")]
2049    pub vsns_vin: f32,
2050}
2051#[derive(Clone, PartialEq, ::prost::Message)]
2052pub struct WifiSoftwareUpdateStats {
2053    #[prost(enumeration = "WifiSoftwareUpdateState", tag = "1")]
2054    pub state: i32,
2055    #[prost(float, tag = "2")]
2056    pub software_download_progress: f32,
2057    #[prost(float, tag = "3")]
2058    pub seconds_since_get_target_versions: f32,
2059    #[prost(string, tag = "4")]
2060    pub running_version: ::prost::alloc::string::String,
2061    #[prost(string, tag = "5")]
2062    pub version_in_progress: ::prost::alloc::string::String,
2063}
2064#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2065pub struct WifiSetupRequirement {
2066    #[prost(enumeration = "WifiSetupRequirementState", tag = "1")]
2067    pub state: i32,
2068    #[prost(uint64, tag = "2")]
2069    pub pause_countdown_seconds: u64,
2070}
2071#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2072#[repr(i32)]
2073pub enum IfaceType {
2074    Unknown = 0,
2075    Eth = 1,
2076    Rf2ghz = 2,
2077    Rf5ghz = 5,
2078    Rf5ghzHigh = 6,
2079}
2080impl IfaceType {
2081    /// String value of the enum field names used in the ProtoBuf definition.
2082    ///
2083    /// The values are not transformed in any way and thus are considered stable
2084    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2085    pub fn as_str_name(&self) -> &'static str {
2086        match self {
2087            Self::Unknown => "IFACE_TYPE_UNKNOWN",
2088            Self::Eth => "IFACE_TYPE_ETH",
2089            Self::Rf2ghz => "IFACE_TYPE_RF_2GHZ",
2090            Self::Rf5ghz => "IFACE_TYPE_RF_5GHZ",
2091            Self::Rf5ghzHigh => "IFACE_TYPE_RF_5GHZ_HIGH",
2092        }
2093    }
2094    /// Creates an enum from field names used in the ProtoBuf definition.
2095    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2096        match value {
2097            "IFACE_TYPE_UNKNOWN" => Some(Self::Unknown),
2098            "IFACE_TYPE_ETH" => Some(Self::Eth),
2099            "IFACE_TYPE_RF_2GHZ" => Some(Self::Rf2ghz),
2100            "IFACE_TYPE_RF_5GHZ" => Some(Self::Rf5ghz),
2101            "IFACE_TYPE_RF_5GHZ_HIGH" => Some(Self::Rf5ghzHigh),
2102            _ => None,
2103        }
2104    }
2105}
2106#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2107#[repr(i32)]
2108pub enum TxPowerLevel {
2109    TxPowerLevel100 = 0,
2110    TxPowerLevel80 = 1,
2111    TxPowerLevel50 = 2,
2112    TxPowerLevel25 = 3,
2113    TxPowerLevel12 = 4,
2114    TxPowerLevel6 = 5,
2115}
2116impl TxPowerLevel {
2117    /// String value of the enum field names used in the ProtoBuf definition.
2118    ///
2119    /// The values are not transformed in any way and thus are considered stable
2120    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2121    pub fn as_str_name(&self) -> &'static str {
2122        match self {
2123            Self::TxPowerLevel100 => "TX_POWER_LEVEL_100",
2124            Self::TxPowerLevel80 => "TX_POWER_LEVEL_80",
2125            Self::TxPowerLevel50 => "TX_POWER_LEVEL_50",
2126            Self::TxPowerLevel25 => "TX_POWER_LEVEL_25",
2127            Self::TxPowerLevel12 => "TX_POWER_LEVEL_12",
2128            Self::TxPowerLevel6 => "TX_POWER_LEVEL_6",
2129        }
2130    }
2131    /// Creates an enum from field names used in the ProtoBuf definition.
2132    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2133        match value {
2134            "TX_POWER_LEVEL_100" => Some(Self::TxPowerLevel100),
2135            "TX_POWER_LEVEL_80" => Some(Self::TxPowerLevel80),
2136            "TX_POWER_LEVEL_50" => Some(Self::TxPowerLevel50),
2137            "TX_POWER_LEVEL_25" => Some(Self::TxPowerLevel25),
2138            "TX_POWER_LEVEL_12" => Some(Self::TxPowerLevel12),
2139            "TX_POWER_LEVEL_6" => Some(Self::TxPowerLevel6),
2140            _ => None,
2141        }
2142    }
2143}
2144#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2145#[repr(i32)]
2146pub enum PoeState {
2147    Disabled = 0,
2148    Negotiating = 1,
2149    OnRampup = 2,
2150    On = 3,
2151    WaterDetectRampup = 4,
2152    WaterDetect = 5,
2153}
2154impl PoeState {
2155    /// String value of the enum field names used in the ProtoBuf definition.
2156    ///
2157    /// The values are not transformed in any way and thus are considered stable
2158    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2159    pub fn as_str_name(&self) -> &'static str {
2160        match self {
2161            Self::Disabled => "POE_STATE_DISABLED",
2162            Self::Negotiating => "POE_STATE_NEGOTIATING",
2163            Self::OnRampup => "POE_STATE_ON_RAMPUP",
2164            Self::On => "POE_STATE_ON",
2165            Self::WaterDetectRampup => "POE_STATE_WATER_DETECT_RAMPUP",
2166            Self::WaterDetect => "POE_STATE_WATER_DETECT",
2167        }
2168    }
2169    /// Creates an enum from field names used in the ProtoBuf definition.
2170    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2171        match value {
2172            "POE_STATE_DISABLED" => Some(Self::Disabled),
2173            "POE_STATE_NEGOTIATING" => Some(Self::Negotiating),
2174            "POE_STATE_ON_RAMPUP" => Some(Self::OnRampup),
2175            "POE_STATE_ON" => Some(Self::On),
2176            "POE_STATE_WATER_DETECT_RAMPUP" => Some(Self::WaterDetectRampup),
2177            "POE_STATE_WATER_DETECT" => Some(Self::WaterDetect),
2178            _ => None,
2179        }
2180    }
2181}
2182#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2183#[repr(i32)]
2184pub enum PoeFault {
2185    FastOvercurrent = 0,
2186    SlowOvercurrent = 1,
2187    Undercurrent = 2,
2188    Overvoltage = 3,
2189    Undervoltage = 4,
2190}
2191impl PoeFault {
2192    /// String value of the enum field names used in the ProtoBuf definition.
2193    ///
2194    /// The values are not transformed in any way and thus are considered stable
2195    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2196    pub fn as_str_name(&self) -> &'static str {
2197        match self {
2198            Self::FastOvercurrent => "POE_FAULT_FAST_OVERCURRENT",
2199            Self::SlowOvercurrent => "POE_FAULT_SLOW_OVERCURRENT",
2200            Self::Undercurrent => "POE_FAULT_UNDERCURRENT",
2201            Self::Overvoltage => "POE_FAULT_OVERVOLTAGE",
2202            Self::Undervoltage => "POE_FAULT_UNDERVOLTAGE",
2203        }
2204    }
2205    /// Creates an enum from field names used in the ProtoBuf definition.
2206    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2207        match value {
2208            "POE_FAULT_FAST_OVERCURRENT" => Some(Self::FastOvercurrent),
2209            "POE_FAULT_SLOW_OVERCURRENT" => Some(Self::SlowOvercurrent),
2210            "POE_FAULT_UNDERCURRENT" => Some(Self::Undercurrent),
2211            "POE_FAULT_OVERVOLTAGE" => Some(Self::Overvoltage),
2212            "POE_FAULT_UNDERVOLTAGE" => Some(Self::Undervoltage),
2213            _ => None,
2214        }
2215    }
2216}
2217#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2218#[repr(i32)]
2219pub enum WifiMode {
2220    Default = 0,
2221    AOnly = 1,
2222    BOnly = 2,
2223    GOnly = 3,
2224    NOnly = 4,
2225    BGMixed = 5,
2226    ANMixed = 6,
2227    GNMixed = 7,
2228    BGNMixed = 8,
2229    AAnAcMixed = 9,
2230    AnAcMixed = 10,
2231    BGNAxMixed = 11,
2232    AAnAcAxMixed = 12,
2233    ANAcMixed = 13,
2234    ANAcAxMixed = 14,
2235}
2236impl WifiMode {
2237    /// String value of the enum field names used in the ProtoBuf definition.
2238    ///
2239    /// The values are not transformed in any way and thus are considered stable
2240    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2241    pub fn as_str_name(&self) -> &'static str {
2242        match self {
2243            Self::Default => "WIFI_MODE_DEFAULT",
2244            Self::AOnly => "A_ONLY",
2245            Self::BOnly => "B_ONLY",
2246            Self::GOnly => "G_ONLY",
2247            Self::NOnly => "N_ONLY",
2248            Self::BGMixed => "B_G_MIXED",
2249            Self::ANMixed => "A_N_MIXED",
2250            Self::GNMixed => "G_N_MIXED",
2251            Self::BGNMixed => "B_G_N_MIXED",
2252            Self::AAnAcMixed => "A_AN_AC_MIXED",
2253            Self::AnAcMixed => "AN_AC_MIXED",
2254            Self::BGNAxMixed => "B_G_N_AX_MIXED",
2255            Self::AAnAcAxMixed => "A_AN_AC_AX_MIXED",
2256            Self::ANAcMixed => "A_N_AC_MIXED",
2257            Self::ANAcAxMixed => "A_N_AC_AX_MIXED",
2258        }
2259    }
2260    /// Creates an enum from field names used in the ProtoBuf definition.
2261    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2262        match value {
2263            "WIFI_MODE_DEFAULT" => Some(Self::Default),
2264            "A_ONLY" => Some(Self::AOnly),
2265            "B_ONLY" => Some(Self::BOnly),
2266            "G_ONLY" => Some(Self::GOnly),
2267            "N_ONLY" => Some(Self::NOnly),
2268            "B_G_MIXED" => Some(Self::BGMixed),
2269            "A_N_MIXED" => Some(Self::ANMixed),
2270            "G_N_MIXED" => Some(Self::GNMixed),
2271            "B_G_N_MIXED" => Some(Self::BGNMixed),
2272            "A_AN_AC_MIXED" => Some(Self::AAnAcMixed),
2273            "AN_AC_MIXED" => Some(Self::AnAcMixed),
2274            "B_G_N_AX_MIXED" => Some(Self::BGNAxMixed),
2275            "A_AN_AC_AX_MIXED" => Some(Self::AAnAcAxMixed),
2276            "A_N_AC_MIXED" => Some(Self::ANAcMixed),
2277            "A_N_AC_AX_MIXED" => Some(Self::ANAcAxMixed),
2278            _ => None,
2279        }
2280    }
2281}
2282#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2283#[repr(i32)]
2284pub enum WifiSecurity {
2285    Unknown = 0,
2286    Open = 1,
2287    Wpa2 = 2,
2288    Wpa3 = 3,
2289    Wpa2wpa3 = 4,
2290}
2291impl WifiSecurity {
2292    /// String value of the enum field names used in the ProtoBuf definition.
2293    ///
2294    /// The values are not transformed in any way and thus are considered stable
2295    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2296    pub fn as_str_name(&self) -> &'static str {
2297        match self {
2298            Self::Unknown => "WIFI_SECURITY_UNKNOWN",
2299            Self::Open => "OPEN",
2300            Self::Wpa2 => "WPA2",
2301            Self::Wpa3 => "WPA3",
2302            Self::Wpa2wpa3 => "WPA2WPA3",
2303        }
2304    }
2305    /// Creates an enum from field names used in the ProtoBuf definition.
2306    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2307        match value {
2308            "WIFI_SECURITY_UNKNOWN" => Some(Self::Unknown),
2309            "OPEN" => Some(Self::Open),
2310            "WPA2" => Some(Self::Wpa2),
2311            "WPA3" => Some(Self::Wpa3),
2312            "WPA2WPA3" => Some(Self::Wpa2wpa3),
2313            _ => None,
2314        }
2315    }
2316}
2317#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2318#[repr(i32)]
2319pub enum Protocol {
2320    Tcp = 0,
2321    Udp = 1,
2322    Tls = 2,
2323    Dtls = 3,
2324}
2325impl Protocol {
2326    /// String value of the enum field names used in the ProtoBuf definition.
2327    ///
2328    /// The values are not transformed in any way and thus are considered stable
2329    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2330    pub fn as_str_name(&self) -> &'static str {
2331        match self {
2332            Self::Tcp => "TCP",
2333            Self::Udp => "UDP",
2334            Self::Tls => "TLS",
2335            Self::Dtls => "DTLS",
2336        }
2337    }
2338    /// Creates an enum from field names used in the ProtoBuf definition.
2339    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2340        match value {
2341            "TCP" => Some(Self::Tcp),
2342            "UDP" => Some(Self::Udp),
2343            "TLS" => Some(Self::Tls),
2344            "DTLS" => Some(Self::Dtls),
2345            _ => None,
2346        }
2347    }
2348}
2349#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2350#[repr(i32)]
2351pub enum WifiSoftwareUpdateState {
2352    NotRun = 0,
2353    GettingTargetVersion = 1,
2354    DownloadingUpdateImage = 2,
2355    Flashing = 3,
2356    NoUpdateRequired = 4,
2357    RebootPending = 5,
2358    GettingTargetVersionFailed = 6,
2359    GettingTargetVersionExhausted = 7,
2360    NoValidArtifact = 8,
2361    IllegalArtifact = 9,
2362    DownloadingUpdateImageFailed = 10,
2363    DownloadingUpdateImageExhausted = 11,
2364    FlashingFailed = 12,
2365}
2366impl WifiSoftwareUpdateState {
2367    /// String value of the enum field names used in the ProtoBuf definition.
2368    ///
2369    /// The values are not transformed in any way and thus are considered stable
2370    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2371    pub fn as_str_name(&self) -> &'static str {
2372        match self {
2373            Self::NotRun => "NOT_RUN",
2374            Self::GettingTargetVersion => "GETTING_TARGET_VERSION",
2375            Self::DownloadingUpdateImage => "DOWNLOADING_UPDATE_IMAGE",
2376            Self::Flashing => "FLASHING",
2377            Self::NoUpdateRequired => "NO_UPDATE_REQUIRED",
2378            Self::RebootPending => "REBOOT_PENDING",
2379            Self::GettingTargetVersionFailed => "GETTING_TARGET_VERSION_FAILED",
2380            Self::GettingTargetVersionExhausted => "GETTING_TARGET_VERSION_EXHAUSTED",
2381            Self::NoValidArtifact => "NO_VALID_ARTIFACT",
2382            Self::IllegalArtifact => "ILLEGAL_ARTIFACT",
2383            Self::DownloadingUpdateImageFailed => "DOWNLOADING_UPDATE_IMAGE_FAILED",
2384            Self::DownloadingUpdateImageExhausted => "DOWNLOADING_UPDATE_IMAGE_EXHAUSTED",
2385            Self::FlashingFailed => "FLASHING_FAILED",
2386        }
2387    }
2388    /// Creates an enum from field names used in the ProtoBuf definition.
2389    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2390        match value {
2391            "NOT_RUN" => Some(Self::NotRun),
2392            "GETTING_TARGET_VERSION" => Some(Self::GettingTargetVersion),
2393            "DOWNLOADING_UPDATE_IMAGE" => Some(Self::DownloadingUpdateImage),
2394            "FLASHING" => Some(Self::Flashing),
2395            "NO_UPDATE_REQUIRED" => Some(Self::NoUpdateRequired),
2396            "REBOOT_PENDING" => Some(Self::RebootPending),
2397            "GETTING_TARGET_VERSION_FAILED" => Some(Self::GettingTargetVersionFailed),
2398            "GETTING_TARGET_VERSION_EXHAUSTED" => {
2399                Some(Self::GettingTargetVersionExhausted)
2400            }
2401            "NO_VALID_ARTIFACT" => Some(Self::NoValidArtifact),
2402            "ILLEGAL_ARTIFACT" => Some(Self::IllegalArtifact),
2403            "DOWNLOADING_UPDATE_IMAGE_FAILED" => Some(Self::DownloadingUpdateImageFailed),
2404            "DOWNLOADING_UPDATE_IMAGE_EXHAUSTED" => {
2405                Some(Self::DownloadingUpdateImageExhausted)
2406            }
2407            "FLASHING_FAILED" => Some(Self::FlashingFailed),
2408            _ => None,
2409        }
2410    }
2411}
2412#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2413#[repr(i32)]
2414pub enum WifiSetupRequirementState {
2415    NotRequired = 0,
2416    RequiredCountdown = 1,
2417    RequiredPaused = 2,
2418    RequiredComplete = 3,
2419}
2420impl WifiSetupRequirementState {
2421    /// String value of the enum field names used in the ProtoBuf definition.
2422    ///
2423    /// The values are not transformed in any way and thus are considered stable
2424    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2425    pub fn as_str_name(&self) -> &'static str {
2426        match self {
2427            Self::NotRequired => "NOT_REQUIRED",
2428            Self::RequiredCountdown => "REQUIRED_COUNTDOWN",
2429            Self::RequiredPaused => "REQUIRED_PAUSED",
2430            Self::RequiredComplete => "REQUIRED_COMPLETE",
2431        }
2432    }
2433    /// Creates an enum from field names used in the ProtoBuf definition.
2434    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2435        match value {
2436            "NOT_REQUIRED" => Some(Self::NotRequired),
2437            "REQUIRED_COUNTDOWN" => Some(Self::RequiredCountdown),
2438            "REQUIRED_PAUSED" => Some(Self::RequiredPaused),
2439            "REQUIRED_COMPLETE" => Some(Self::RequiredComplete),
2440            _ => None,
2441        }
2442    }
2443}
2444#[derive(Clone, PartialEq, ::prost::Message)]
2445pub struct MeshConfig {
2446    #[prost(string, tag = "1")]
2447    pub display_name: ::prost::alloc::string::String,
2448    #[prost(bool, tag = "2")]
2449    pub apply_display_name: bool,
2450    #[prost(enumeration = "MeshAuth", tag = "3")]
2451    pub auth: i32,
2452    #[prost(bool, tag = "4")]
2453    pub apply_auth: bool,
2454    #[prost(int64, tag = "5")]
2455    pub last_connected: i64,
2456    #[prost(uint64, tag = "7")]
2457    pub incarnation: u64,
2458    #[prost(string, tag = "9")]
2459    pub hardware_version: ::prost::alloc::string::String,
2460    #[prost(bool, tag = "10")]
2461    pub supports_5ghz_high: bool,
2462}
2463#[derive(Clone, PartialEq, ::prost::Message)]
2464pub struct TlsConfig {
2465    #[prost(string, tag = "1")]
2466    pub key: ::prost::alloc::string::String,
2467    #[prost(string, tag = "2")]
2468    pub cert: ::prost::alloc::string::String,
2469}
2470#[derive(Clone, PartialEq, ::prost::Message)]
2471pub struct HttpServer {
2472    #[prost(string, tag = "1")]
2473    pub domain_name: ::prost::alloc::string::String,
2474    #[prost(message, optional, tag = "2")]
2475    pub tls: ::core::option::Option<TlsConfig>,
2476    #[prost(string, tag = "3")]
2477    pub file_content_id: ::prost::alloc::string::String,
2478    #[prost(string, tag = "4")]
2479    pub file_content_hash: ::prost::alloc::string::String,
2480    #[prost(string, repeated, tag = "5")]
2481    pub access_control_allow_origins: ::prost::alloc::vec::Vec<
2482        ::prost::alloc::string::String,
2483    >,
2484}
2485#[derive(Clone, PartialEq, ::prost::Message)]
2486pub struct CaptivePortal {
2487    #[prost(string, tag = "1")]
2488    pub url: ::prost::alloc::string::String,
2489    #[prost(bool, tag = "2")]
2490    pub display_in_captive_browser: bool,
2491}
2492#[derive(Clone, PartialEq, ::prost::Message)]
2493pub struct WifiConfig {
2494    #[prost(string, tag = "3")]
2495    pub country_code: ::prost::alloc::string::String,
2496    #[prost(bool, tag = "1085")]
2497    pub apply_country_code: bool,
2498    #[prost(bool, tag = "53")]
2499    pub pin_country_code: bool,
2500    #[prost(bool, tag = "1086")]
2501    pub apply_pin_country_code: bool,
2502    #[prost(bool, tag = "54")]
2503    pub custom_power_table: bool,
2504    #[prost(bool, tag = "1087")]
2505    pub apply_custom_power_table: bool,
2506    #[prost(bool, tag = "7")]
2507    pub setup_complete: bool,
2508    #[prost(bool, tag = "1010")]
2509    pub apply_setup_complete: bool,
2510    #[prost(uint32, tag = "9")]
2511    pub version: u32,
2512    #[prost(string, tag = "12")]
2513    pub mac_wan: ::prost::alloc::string::String,
2514    #[prost(string, tag = "13")]
2515    pub mac_lan: ::prost::alloc::string::String,
2516    #[prost(uint32, tag = "19")]
2517    pub channel_2ghz: u32,
2518    #[prost(bool, tag = "1013")]
2519    pub apply_channel_2ghz: bool,
2520    #[prost(uint32, tag = "20")]
2521    pub channel_5ghz: u32,
2522    #[prost(bool, tag = "1014")]
2523    pub apply_channel_5ghz: bool,
2524    #[prost(uint32, tag = "57")]
2525    pub channel_5ghz_high: u32,
2526    #[prost(bool, tag = "1016")]
2527    pub apply_channel_5ghz_high: bool,
2528    #[prost(map = "string, message", tag = "33")]
2529    pub mesh_configs: ::std::collections::HashMap<
2530        ::prost::alloc::string::String,
2531        MeshConfig,
2532    >,
2533    #[prost(map = "string, message", tag = "3033")]
2534    pub mesh_configs_updates: ::std::collections::HashMap<
2535        ::prost::alloc::string::String,
2536        MeshConfig,
2537    >,
2538    #[prost(bool, tag = "1033")]
2539    pub apply_mesh_configs: bool,
2540    #[prost(message, repeated, tag = "22")]
2541    pub dynamic_keys: ::prost::alloc::vec::Vec<PublicKey>,
2542    #[prost(bool, tag = "39")]
2543    pub apply_dynamic_keys: bool,
2544    #[prost(bool, tag = "23")]
2545    pub is_repeater: bool,
2546    #[prost(bool, tag = "1031")]
2547    pub apply_is_repeater: bool,
2548    #[prost(bool, tag = "51")]
2549    pub ap_mode: bool,
2550    #[prost(bool, tag = "1066")]
2551    pub apply_ap_mode: bool,
2552    #[prost(bool, tag = "49")]
2553    pub is_aviation: bool,
2554    #[prost(bool, tag = "1064")]
2555    pub apply_is_aviation: bool,
2556    #[prost(int32, tag = "26")]
2557    pub boot_count: i32,
2558    #[prost(message, optional, tag = "3001")]
2559    pub boot: ::core::option::Option<BootInfo>,
2560    #[prost(string, repeated, tag = "30")]
2561    pub nameservers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2562    #[prost(bool, tag = "1054")]
2563    pub apply_nameservers: bool,
2564    #[prost(bool, tag = "50")]
2565    pub secure_dns: bool,
2566    #[prost(bool, tag = "1065")]
2567    pub apply_secure_dns: bool,
2568    #[prost(bool, tag = "31")]
2569    pub bypass_mode: bool,
2570    #[prost(bool, tag = "1055")]
2571    pub apply_bypass_mode: bool,
2572    #[prost(bool, tag = "42")]
2573    pub dfs_enabled: bool,
2574    #[prost(bool, tag = "1058")]
2575    pub apply_dfs_enabled: bool,
2576    #[prost(bool, tag = "52")]
2577    pub disable_mesh_onboarding: bool,
2578    #[prost(bool, tag = "1067")]
2579    pub apply_disable_mesh_onboarding: bool,
2580    #[prost(bool, tag = "1097")]
2581    pub disable_wireless_mesh_onboarding: bool,
2582    #[prost(bool, tag = "1098")]
2583    pub apply_disable_wireless_mesh_onboarding: bool,
2584    #[prost(bool, tag = "1107")]
2585    pub apply_http_server: bool,
2586    #[prost(message, optional, tag = "1108")]
2587    pub http_server: ::core::option::Option<HttpServer>,
2588    #[prost(message, repeated, tag = "1100")]
2589    pub networks: ::prost::alloc::vec::Vec<wifi_config::Network>,
2590    #[prost(bool, tag = "1101")]
2591    pub apply_networks: bool,
2592    #[prost(uint64, tag = "43")]
2593    pub incarnation: u64,
2594    #[prost(enumeration = "wifi_config::WirelessMode", tag = "44")]
2595    pub wireless_mode_2ghz: i32,
2596    #[prost(bool, tag = "1059")]
2597    pub apply_wireless_mode_2ghz: bool,
2598    #[prost(enumeration = "wifi_config::WirelessMode", tag = "45")]
2599    pub wireless_mode_5ghz: i32,
2600    #[prost(bool, tag = "1060")]
2601    pub apply_wireless_mode_5ghz: bool,
2602    #[prost(enumeration = "wifi_config::WirelessMode", tag = "58")]
2603    pub wireless_mode_5ghz_high: i32,
2604    #[prost(bool, tag = "1070")]
2605    pub apply_wireless_mode_5ghz_high: bool,
2606    #[prost(enumeration = "wifi_config::HtBandwidth", tag = "46")]
2607    pub ht_bandwidth_2ghz: i32,
2608    #[prost(bool, tag = "1061")]
2609    pub apply_ht_bandwidth_2ghz: bool,
2610    #[prost(enumeration = "wifi_config::HtBandwidth", tag = "47")]
2611    pub ht_bandwidth_5ghz: i32,
2612    #[prost(bool, tag = "1062")]
2613    pub apply_ht_bandwidth_5ghz: bool,
2614    #[prost(enumeration = "wifi_config::HtBandwidth", tag = "59")]
2615    pub ht_bandwidth_5ghz_high: i32,
2616    #[prost(bool, tag = "1071")]
2617    pub apply_ht_bandwidth_5ghz_high: bool,
2618    #[prost(enumeration = "wifi_config::VhtBandwidth", tag = "48")]
2619    pub vht_bandwidth: i32,
2620    #[prost(bool, tag = "1063")]
2621    pub apply_vht_bandwidth: bool,
2622    #[prost(enumeration = "wifi_config::VhtBandwidth", tag = "60")]
2623    pub vht_bandwidth_5ghz_high: i32,
2624    #[prost(bool, tag = "1072")]
2625    pub apply_vht_bandwidth_5ghz_high: bool,
2626    #[prost(bool, tag = "55")]
2627    pub use_public_services: bool,
2628    #[prost(bool, tag = "1068")]
2629    pub apply_use_public_services: bool,
2630    #[prost(bool, tag = "56")]
2631    pub disable_automated_speedtests: bool,
2632    #[prost(bool, tag = "1069")]
2633    pub apply_disable_automated_speedtests: bool,
2634    #[prost(bool, tag = "61")]
2635    pub enable_umbilical_vlan: bool,
2636    #[prost(bool, tag = "1073")]
2637    pub apply_enable_umbilical_vlan: bool,
2638    #[deprecated]
2639    #[prost(message, repeated, tag = "62")]
2640    pub client_names: ::prost::alloc::vec::Vec<ClientName>,
2641    #[deprecated]
2642    #[prost(bool, tag = "1074")]
2643    pub apply_client_names: bool,
2644    #[prost(bool, tag = "63")]
2645    pub outdoor_mode: bool,
2646    #[prost(bool, tag = "1075")]
2647    pub apply_outdoor_mode: bool,
2648    #[prost(bool, tag = "64")]
2649    pub disable_2ghz: bool,
2650    #[prost(bool, tag = "1076")]
2651    pub apply_disable_2ghz: bool,
2652    #[prost(bool, tag = "65")]
2653    pub disable_5ghz: bool,
2654    #[prost(bool, tag = "1077")]
2655    pub apply_disable_5ghz: bool,
2656    #[prost(bool, tag = "66")]
2657    pub disable_5ghz_high: bool,
2658    #[prost(bool, tag = "1078")]
2659    pub apply_disable_5ghz_high: bool,
2660    #[prost(bool, tag = "67")]
2661    pub disable_x_mesh_backhaul: bool,
2662    #[prost(bool, tag = "1079")]
2663    pub apply_disable_x_mesh_backhaul: bool,
2664    #[deprecated]
2665    #[prost(string, tag = "68")]
2666    pub golden_bssid: ::prost::alloc::string::String,
2667    #[deprecated]
2668    #[prost(bool, tag = "1080")]
2669    pub apply_golden_bssid: bool,
2670    #[deprecated]
2671    #[prost(enumeration = "IfaceType", tag = "69")]
2672    pub golden_iface_type: i32,
2673    #[deprecated]
2674    #[prost(bool, tag = "1081")]
2675    pub apply_golden_iface_type: bool,
2676    #[prost(enumeration = "TxPowerLevel", tag = "70")]
2677    pub tx_power_level_2ghz: i32,
2678    #[prost(bool, tag = "1082")]
2679    pub apply_tx_power_level_2ghz: bool,
2680    #[prost(enumeration = "TxPowerLevel", tag = "71")]
2681    pub tx_power_level_5ghz: i32,
2682    #[prost(bool, tag = "1083")]
2683    pub apply_tx_power_level_5ghz: bool,
2684    #[prost(enumeration = "TxPowerLevel", tag = "72")]
2685    pub tx_power_level_5ghz_high: i32,
2686    #[prost(bool, tag = "1084")]
2687    pub apply_tx_power_level_5ghz_high: bool,
2688    #[prost(bool, tag = "73")]
2689    pub disable_pending_update_reboot: bool,
2690    #[prost(bool, tag = "1088")]
2691    pub apply_disable_pending_update_reboot: bool,
2692    #[prost(message, repeated, tag = "74")]
2693    pub client_configs: ::prost::alloc::vec::Vec<ClientConfig>,
2694    #[prost(bool, tag = "1089")]
2695    pub apply_client_configs: bool,
2696    #[prost(bool, tag = "75")]
2697    pub disable_set_wifi_config_from_controller: bool,
2698    #[prost(bool, tag = "1090")]
2699    pub apply_disable_set_wifi_config_from_controller: bool,
2700    #[prost(bytes = "vec", tag = "76")]
2701    pub client_key: ::prost::alloc::vec::Vec<u8>,
2702    #[prost(bool, tag = "1091")]
2703    pub apply_client_key: bool,
2704    #[prost(bool, tag = "1092")]
2705    pub apply_wan_traffic_control: bool,
2706    #[prost(int32, tag = "77")]
2707    pub wan_host_dscp_mark: i32,
2708    #[prost(bool, tag = "1093")]
2709    pub apply_wan_host_dscp_mark: bool,
2710    #[prost(bool, tag = "79")]
2711    pub debug_pop_pings: bool,
2712    #[prost(bool, tag = "1095")]
2713    pub apply_debug_pop_pings: bool,
2714    #[prost(bool, tag = "94")]
2715    pub debug_pings: bool,
2716    #[prost(bool, tag = "1106")]
2717    pub apply_debug_pings: bool,
2718    #[prost(bool, tag = "80")]
2719    pub client_tester: bool,
2720    #[prost(bool, tag = "1096")]
2721    pub apply_client_tester: bool,
2722    #[prost(uint32, tag = "81")]
2723    pub asset_class: u32,
2724    #[prost(bool, tag = "1099")]
2725    pub apply_asset_class: bool,
2726    #[prost(bool, tag = "95")]
2727    pub disable_band_steering: bool,
2728    #[prost(bool, tag = "1109")]
2729    pub apply_disable_band_steering: bool,
2730    #[prost(string, repeated, tag = "1110")]
2731    pub only_overflight_countries: ::prost::alloc::vec::Vec<
2732        ::prost::alloc::string::String,
2733    >,
2734    #[prost(bool, tag = "1111")]
2735    pub apply_only_overflight_countries: bool,
2736    #[prost(bool, tag = "1114")]
2737    pub only_overflight_countries_using_default: bool,
2738    #[prost(message, repeated, tag = "1112")]
2739    pub unbridged_eth_ports: ::prost::alloc::vec::Vec<wifi_config::UnbridgedEthPort>,
2740    #[prost(bool, tag = "1113")]
2741    pub apply_unbridged_eth_ports: bool,
2742    #[prost(uint32, tag = "78")]
2743    pub tag: u32,
2744    #[prost(oneof = "wifi_config::WanTrafficControl", tags = "4001, 4002, 4003")]
2745    pub wan_traffic_control: ::core::option::Option<wifi_config::WanTrafficControl>,
2746}
2747/// Nested message and enum types in `WifiConfig`.
2748pub mod wifi_config {
2749    #[derive(Clone, PartialEq, ::prost::Message)]
2750    pub struct BasicServiceSet {
2751        #[prost(string, tag = "1003")]
2752        pub bssid: ::prost::alloc::string::String,
2753        #[prost(string, tag = "1005")]
2754        pub ssid: ::prost::alloc::string::String,
2755        #[prost(enumeration = "Band", tag = "1011")]
2756        pub band: i32,
2757        #[prost(string, tag = "1017")]
2758        pub iface_name: ::prost::alloc::string::String,
2759        #[prost(bool, tag = "1013")]
2760        pub disable: bool,
2761        #[prost(bool, tag = "1015")]
2762        pub hidden: bool,
2763        #[prost(
2764            oneof = "basic_service_set::Auth",
2765            tags = "2001, 2002, 2003, 2004, 2005, 2006"
2766        )]
2767        pub auth: ::core::option::Option<basic_service_set::Auth>,
2768    }
2769    /// Nested message and enum types in `BasicServiceSet`.
2770    pub mod basic_service_set {
2771        #[derive(Clone, PartialEq, ::prost::Oneof)]
2772        pub enum Auth {
2773            #[prost(message, tag = "2001")]
2774            AuthOpen(super::super::AuthOpen),
2775            #[prost(message, tag = "2002")]
2776            AuthWpa2(super::super::AuthWpa2),
2777            #[prost(message, tag = "2003")]
2778            AuthWpa3(super::super::AuthWpa3),
2779            #[prost(message, tag = "2004")]
2780            AuthWpa2Wpa3(super::super::AuthWpa2Wpa3),
2781            #[prost(message, tag = "2005")]
2782            AuthRadius(super::super::AuthRadius),
2783            #[prost(message, tag = "2006")]
2784            AuthOpenEncrypted(super::super::AuthOpenEncrypted),
2785        }
2786    }
2787    #[derive(Clone, PartialEq, ::prost::Message)]
2788    pub struct DnsStaticEntry {
2789        #[prost(string, repeated, tag = "1000")]
2790        pub domains: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2791        #[prost(string, repeated, tag = "1001")]
2792        pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2793    }
2794    #[derive(Clone, PartialEq, ::prost::Message)]
2795    pub struct DnsForwardRule {
2796        #[prost(string, repeated, tag = "1000")]
2797        pub domains: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2798        #[prost(string, repeated, tag = "1001")]
2799        pub server_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2800    }
2801    #[derive(Clone, PartialEq, ::prost::Message)]
2802    pub struct StaticRoute {
2803        #[prost(string, tag = "1")]
2804        pub subnet: ::prost::alloc::string::String,
2805        #[prost(string, tag = "2")]
2806        pub gateway: ::prost::alloc::string::String,
2807    }
2808    #[derive(Clone, PartialEq, ::prost::Message)]
2809    pub struct Network {
2810        #[prost(string, tag = "1003")]
2811        pub ipv4: ::prost::alloc::string::String,
2812        #[prost(uint32, tag = "1012")]
2813        pub dhcpv4_start: u32,
2814        #[prost(uint32, tag = "1025")]
2815        pub dhcpv4_end: u32,
2816        #[prost(bool, tag = "1015")]
2817        pub dhcp_disabled: bool,
2818        #[prost(uint32, tag = "1016")]
2819        pub dhcpv4_lease_duration_s: u32,
2820        #[prost(string, tag = "1011")]
2821        pub domain: ::prost::alloc::string::String,
2822        #[prost(message, repeated, tag = "1007")]
2823        pub basic_service_sets: ::prost::alloc::vec::Vec<BasicServiceSet>,
2824        #[prost(bool, tag = "1008")]
2825        pub client_isolation: bool,
2826        #[prost(bool, tag = "1009")]
2827        pub guest: bool,
2828        #[prost(string, tag = "1010")]
2829        pub landing: ::prost::alloc::string::String,
2830        #[prost(bool, tag = "1017")]
2831        pub landing_page_v2: bool,
2832        #[prost(bool, tag = "1020")]
2833        pub sandbox_enabled: bool,
2834        #[prost(string, repeated, tag = "1022")]
2835        pub sandbox_domain_allow_list: ::prost::alloc::vec::Vec<
2836            ::prost::alloc::string::String,
2837        >,
2838        #[prost(uint32, tag = "1023")]
2839        pub sandbox_id: u32,
2840        #[prost(bool, tag = "1013")]
2841        pub internal: bool,
2842        #[prost(uint32, tag = "1014")]
2843        pub vlan: u32,
2844        #[prost(message, optional, tag = "1024")]
2845        pub captive_portal: ::core::option::Option<super::CaptivePortal>,
2846        #[prost(uint32, tag = "1026")]
2847        pub network_groups: u32,
2848        #[prost(message, repeated, tag = "1027")]
2849        pub dns_static_entries: ::prost::alloc::vec::Vec<DnsStaticEntry>,
2850        #[prost(message, repeated, tag = "1028")]
2851        pub dns_forward_rules: ::prost::alloc::vec::Vec<DnsForwardRule>,
2852        #[prost(bool, tag = "1029")]
2853        pub disable_when_offline: bool,
2854        #[prost(message, repeated, tag = "1030")]
2855        pub static_routes: ::prost::alloc::vec::Vec<StaticRoute>,
2856    }
2857    #[derive(Clone, PartialEq, ::prost::Message)]
2858    pub struct UnbridgedEthPort {
2859        #[prost(uint32, tag = "1")]
2860        pub lan_port_index: u32,
2861        #[prost(string, tag = "2")]
2862        pub ip: ::prost::alloc::string::String,
2863        #[prost(string, tag = "3")]
2864        pub gateway: ::prost::alloc::string::String,
2865        #[prost(message, repeated, tag = "4")]
2866        pub static_routes: ::prost::alloc::vec::Vec<unbridged_eth_port::StaticRoute>,
2867    }
2868    /// Nested message and enum types in `UnbridgedEthPort`.
2869    pub mod unbridged_eth_port {
2870        #[derive(Clone, PartialEq, ::prost::Message)]
2871        pub struct StaticRoute {
2872            #[prost(string, tag = "1")]
2873            pub subnet: ::prost::alloc::string::String,
2874            #[prost(uint32, tag = "2")]
2875            pub network_groups: u32,
2876        }
2877    }
2878    #[derive(
2879        Clone,
2880        Copy,
2881        Debug,
2882        PartialEq,
2883        Eq,
2884        Hash,
2885        PartialOrd,
2886        Ord,
2887        ::prost::Enumeration
2888    )]
2889    #[repr(i32)]
2890    pub enum Security {
2891        Unknown = 0,
2892        Wpa2 = 1,
2893        Wpa3 = 2,
2894        Wpa2wpa3 = 3,
2895    }
2896    impl Security {
2897        /// String value of the enum field names used in the ProtoBuf definition.
2898        ///
2899        /// The values are not transformed in any way and thus are considered stable
2900        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2901        pub fn as_str_name(&self) -> &'static str {
2902            match self {
2903                Self::Unknown => "UNKNOWN",
2904                Self::Wpa2 => "WPA2",
2905                Self::Wpa3 => "WPA3",
2906                Self::Wpa2wpa3 => "WPA2WPA3",
2907            }
2908        }
2909        /// Creates an enum from field names used in the ProtoBuf definition.
2910        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2911            match value {
2912                "UNKNOWN" => Some(Self::Unknown),
2913                "WPA2" => Some(Self::Wpa2),
2914                "WPA3" => Some(Self::Wpa3),
2915                "WPA2WPA3" => Some(Self::Wpa2wpa3),
2916                _ => None,
2917            }
2918        }
2919    }
2920    #[derive(
2921        Clone,
2922        Copy,
2923        Debug,
2924        PartialEq,
2925        Eq,
2926        Hash,
2927        PartialOrd,
2928        Ord,
2929        ::prost::Enumeration
2930    )]
2931    #[repr(i32)]
2932    pub enum Band {
2933        RfUnknown = 0,
2934        Rf2ghz = 2,
2935        Rf5ghz = 5,
2936        Rf5ghzHigh = 6,
2937    }
2938    impl Band {
2939        /// String value of the enum field names used in the ProtoBuf definition.
2940        ///
2941        /// The values are not transformed in any way and thus are considered stable
2942        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2943        pub fn as_str_name(&self) -> &'static str {
2944            match self {
2945                Self::RfUnknown => "RF_UNKNOWN",
2946                Self::Rf2ghz => "RF_2GHZ",
2947                Self::Rf5ghz => "RF_5GHZ",
2948                Self::Rf5ghzHigh => "RF_5GHZ_HIGH",
2949            }
2950        }
2951        /// Creates an enum from field names used in the ProtoBuf definition.
2952        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2953            match value {
2954                "RF_UNKNOWN" => Some(Self::RfUnknown),
2955                "RF_2GHZ" => Some(Self::Rf2ghz),
2956                "RF_5GHZ" => Some(Self::Rf5ghz),
2957                "RF_5GHZ_HIGH" => Some(Self::Rf5ghzHigh),
2958                _ => None,
2959            }
2960        }
2961    }
2962    #[derive(
2963        Clone,
2964        Copy,
2965        Debug,
2966        PartialEq,
2967        Eq,
2968        Hash,
2969        PartialOrd,
2970        Ord,
2971        ::prost::Enumeration
2972    )]
2973    #[repr(i32)]
2974    pub enum WirelessMode {
2975        Default = 0,
2976        AOnly = 1,
2977        BOnly = 2,
2978        GOnly = 3,
2979        NOnly = 4,
2980        BGMixed = 5,
2981        ANMixed = 6,
2982        GNMixed = 7,
2983        BGNMixed = 8,
2984        AAnAcMixed = 9,
2985        AnAcMixed = 10,
2986        BGNAxMixed = 11,
2987        AAnAcAxMixed = 12,
2988    }
2989    impl WirelessMode {
2990        /// String value of the enum field names used in the ProtoBuf definition.
2991        ///
2992        /// The values are not transformed in any way and thus are considered stable
2993        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2994        pub fn as_str_name(&self) -> &'static str {
2995            match self {
2996                Self::Default => "WIRELESS_MODE_DEFAULT",
2997                Self::AOnly => "A_ONLY",
2998                Self::BOnly => "B_ONLY",
2999                Self::GOnly => "G_ONLY",
3000                Self::NOnly => "N_ONLY",
3001                Self::BGMixed => "B_G_MIXED",
3002                Self::ANMixed => "A_N_MIXED",
3003                Self::GNMixed => "G_N_MIXED",
3004                Self::BGNMixed => "B_G_N_MIXED",
3005                Self::AAnAcMixed => "A_AN_AC_MIXED",
3006                Self::AnAcMixed => "AN_AC_MIXED",
3007                Self::BGNAxMixed => "B_G_N_AX_MIXED",
3008                Self::AAnAcAxMixed => "A_AN_AC_AX_MIXED",
3009            }
3010        }
3011        /// Creates an enum from field names used in the ProtoBuf definition.
3012        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3013            match value {
3014                "WIRELESS_MODE_DEFAULT" => Some(Self::Default),
3015                "A_ONLY" => Some(Self::AOnly),
3016                "B_ONLY" => Some(Self::BOnly),
3017                "G_ONLY" => Some(Self::GOnly),
3018                "N_ONLY" => Some(Self::NOnly),
3019                "B_G_MIXED" => Some(Self::BGMixed),
3020                "A_N_MIXED" => Some(Self::ANMixed),
3021                "G_N_MIXED" => Some(Self::GNMixed),
3022                "B_G_N_MIXED" => Some(Self::BGNMixed),
3023                "A_AN_AC_MIXED" => Some(Self::AAnAcMixed),
3024                "AN_AC_MIXED" => Some(Self::AnAcMixed),
3025                "B_G_N_AX_MIXED" => Some(Self::BGNAxMixed),
3026                "A_AN_AC_AX_MIXED" => Some(Self::AAnAcAxMixed),
3027                _ => None,
3028            }
3029        }
3030    }
3031    #[derive(
3032        Clone,
3033        Copy,
3034        Debug,
3035        PartialEq,
3036        Eq,
3037        Hash,
3038        PartialOrd,
3039        Ord,
3040        ::prost::Enumeration
3041    )]
3042    #[repr(i32)]
3043    pub enum HtBandwidth {
3044        Default = 0,
3045        HtBandwidth20Mhz = 1,
3046        HtBandwidth20Or40Mhz = 2,
3047    }
3048    impl HtBandwidth {
3049        /// String value of the enum field names used in the ProtoBuf definition.
3050        ///
3051        /// The values are not transformed in any way and thus are considered stable
3052        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3053        pub fn as_str_name(&self) -> &'static str {
3054            match self {
3055                Self::Default => "HT_BANDWIDTH_DEFAULT",
3056                Self::HtBandwidth20Mhz => "HT_BANDWIDTH_20_MHZ",
3057                Self::HtBandwidth20Or40Mhz => "HT_BANDWIDTH_20_OR_40_MHZ",
3058            }
3059        }
3060        /// Creates an enum from field names used in the ProtoBuf definition.
3061        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3062            match value {
3063                "HT_BANDWIDTH_DEFAULT" => Some(Self::Default),
3064                "HT_BANDWIDTH_20_MHZ" => Some(Self::HtBandwidth20Mhz),
3065                "HT_BANDWIDTH_20_OR_40_MHZ" => Some(Self::HtBandwidth20Or40Mhz),
3066                _ => None,
3067            }
3068        }
3069    }
3070    #[derive(
3071        Clone,
3072        Copy,
3073        Debug,
3074        PartialEq,
3075        Eq,
3076        Hash,
3077        PartialOrd,
3078        Ord,
3079        ::prost::Enumeration
3080    )]
3081    #[repr(i32)]
3082    pub enum VhtBandwidth {
3083        Default = 0,
3084        Disabled = 1,
3085        VhtBandwidth80Mhz = 2,
3086        VhtBandwidth160Mhz = 3,
3087        VhtBandwidth80Plus80Mhz = 4,
3088    }
3089    impl VhtBandwidth {
3090        /// String value of the enum field names used in the ProtoBuf definition.
3091        ///
3092        /// The values are not transformed in any way and thus are considered stable
3093        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3094        pub fn as_str_name(&self) -> &'static str {
3095            match self {
3096                Self::Default => "VHT_BANDWIDTH_DEFAULT",
3097                Self::Disabled => "VHT_BANDWIDTH_DISABLED",
3098                Self::VhtBandwidth80Mhz => "VHT_BANDWIDTH_80_MHZ",
3099                Self::VhtBandwidth160Mhz => "VHT_BANDWIDTH_160_MHZ",
3100                Self::VhtBandwidth80Plus80Mhz => "VHT_BANDWIDTH_80_PLUS_80_MHZ",
3101            }
3102        }
3103        /// Creates an enum from field names used in the ProtoBuf definition.
3104        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3105            match value {
3106                "VHT_BANDWIDTH_DEFAULT" => Some(Self::Default),
3107                "VHT_BANDWIDTH_DISABLED" => Some(Self::Disabled),
3108                "VHT_BANDWIDTH_80_MHZ" => Some(Self::VhtBandwidth80Mhz),
3109                "VHT_BANDWIDTH_160_MHZ" => Some(Self::VhtBandwidth160Mhz),
3110                "VHT_BANDWIDTH_80_PLUS_80_MHZ" => Some(Self::VhtBandwidth80Plus80Mhz),
3111                _ => None,
3112            }
3113        }
3114    }
3115    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3116    pub enum WanTrafficControl {
3117        #[prost(message, tag = "4001")]
3118        WanNoTrafficControl(super::NoTrafficControl),
3119        #[prost(message, tag = "4002")]
3120        WanAckSuppression(super::AckSuppression),
3121        #[prost(message, tag = "4003")]
3122        WanCakeRateLimit(super::CakeRateLimit),
3123    }
3124}
3125#[derive(Clone, PartialEq, ::prost::Message)]
3126pub struct WeeklyBlockSchedule {
3127    #[prost(message, repeated, tag = "1")]
3128    pub block_ranges: ::prost::alloc::vec::Vec<weekly_block_schedule::BlockRange>,
3129    #[prost(string, tag = "2")]
3130    pub group_id: ::prost::alloc::string::String,
3131}
3132/// Nested message and enum types in `WeeklyBlockSchedule`.
3133pub mod weekly_block_schedule {
3134    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3135    pub struct BlockRange {
3136        #[prost(uint32, tag = "1")]
3137        pub start_minutes: u32,
3138        #[prost(uint32, tag = "2")]
3139        pub end_minutes: u32,
3140    }
3141}
3142#[derive(Clone, PartialEq, ::prost::Message)]
3143pub struct ClientConfig {
3144    #[prost(uint32, tag = "1")]
3145    pub client_id: u32,
3146    #[prost(string, tag = "2")]
3147    pub mac_address: ::prost::alloc::string::String,
3148    #[prost(string, tag = "3")]
3149    pub given_name: ::prost::alloc::string::String,
3150    #[prost(message, repeated, tag = "5")]
3151    pub weekly_block_schedules: ::prost::alloc::vec::Vec<WeeklyBlockSchedule>,
3152    #[prost(string, tag = "6")]
3153    pub group_id: ::prost::alloc::string::String,
3154}
3155#[derive(Clone, PartialEq, ::prost::Message)]
3156pub struct ClientName {
3157    #[prost(string, tag = "1")]
3158    pub mac_address: ::prost::alloc::string::String,
3159    #[prost(string, tag = "2")]
3160    pub given_name: ::prost::alloc::string::String,
3161}
3162#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3163pub struct AuthOpen {}
3164#[derive(Clone, PartialEq, ::prost::Message)]
3165pub struct AuthWpa2 {
3166    #[prost(string, tag = "1")]
3167    pub password: ::prost::alloc::string::String,
3168}
3169#[derive(Clone, PartialEq, ::prost::Message)]
3170pub struct AuthWpa3 {
3171    #[prost(string, tag = "1")]
3172    pub password: ::prost::alloc::string::String,
3173}
3174#[derive(Clone, PartialEq, ::prost::Message)]
3175pub struct AuthWpa2Wpa3 {
3176    #[prost(string, tag = "1")]
3177    pub password: ::prost::alloc::string::String,
3178}
3179#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3180pub struct AuthOpenEncrypted {}
3181#[derive(Clone, PartialEq, ::prost::Message)]
3182pub struct AuthRadius {
3183    #[prost(string, tag = "1")]
3184    pub server: ::prost::alloc::string::String,
3185    #[deprecated]
3186    #[prost(string, tag = "3")]
3187    pub server_ca: ::prost::alloc::string::String,
3188    #[prost(string, tag = "4")]
3189    pub server_ca_base_64: ::prost::alloc::string::String,
3190    #[prost(string, tag = "2")]
3191    pub password: ::prost::alloc::string::String,
3192    #[prost(enumeration = "Protocol", tag = "5")]
3193    pub transport: i32,
3194}
3195#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3196pub struct NoTrafficControl {}
3197#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3198pub struct AckSuppression {
3199    #[prost(uint32, tag = "1")]
3200    pub ack_mark: u32,
3201    #[prost(float, tag = "2")]
3202    pub htb_ack_queue_rate: f32,
3203    #[prost(float, tag = "3")]
3204    pub htb_ack_queue_ceil: f32,
3205    #[prost(float, tag = "4")]
3206    pub cake_queue_bandwidth: f32,
3207    #[prost(bool, tag = "5")]
3208    pub cake_ack_filter_aggressive: bool,
3209    #[prost(float, tag = "6")]
3210    pub cake_manual_rtt: f32,
3211}
3212#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3213pub struct CakeRateLimit {
3214    #[prost(uint32, tag = "1")]
3215    pub host_mark: u32,
3216    #[prost(float, tag = "2")]
3217    pub bandwidth: f32,
3218    #[prost(enumeration = "CakePriorityQueueParameter", tag = "3")]
3219    pub priority_queue_parameter: i32,
3220    #[prost(enumeration = "CakeAckFilter", tag = "4")]
3221    pub ack_filter: i32,
3222    #[prost(float, tag = "6")]
3223    pub manual_rtt: f32,
3224}
3225#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3226#[repr(i32)]
3227pub enum MeshAuth {
3228    Unknown = 0,
3229    New = 1,
3230    Trusted = 2,
3231    Untrusted = 3,
3232}
3233impl MeshAuth {
3234    /// String value of the enum field names used in the ProtoBuf definition.
3235    ///
3236    /// The values are not transformed in any way and thus are considered stable
3237    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3238    pub fn as_str_name(&self) -> &'static str {
3239        match self {
3240            Self::Unknown => "MESH_AUTH_UNKNOWN",
3241            Self::New => "MESH_AUTH_NEW",
3242            Self::Trusted => "MESH_AUTH_TRUSTED",
3243            Self::Untrusted => "MESH_AUTH_UNTRUSTED",
3244        }
3245    }
3246    /// Creates an enum from field names used in the ProtoBuf definition.
3247    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3248        match value {
3249            "MESH_AUTH_UNKNOWN" => Some(Self::Unknown),
3250            "MESH_AUTH_NEW" => Some(Self::New),
3251            "MESH_AUTH_TRUSTED" => Some(Self::Trusted),
3252            "MESH_AUTH_UNTRUSTED" => Some(Self::Untrusted),
3253            _ => None,
3254        }
3255    }
3256}
3257#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3258#[repr(i32)]
3259pub enum CakeAckFilter {
3260    NoAckFilter = 0,
3261    AckFilter = 1,
3262    AckFilterAggressive = 2,
3263}
3264impl CakeAckFilter {
3265    /// String value of the enum field names used in the ProtoBuf definition.
3266    ///
3267    /// The values are not transformed in any way and thus are considered stable
3268    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3269    pub fn as_str_name(&self) -> &'static str {
3270        match self {
3271            Self::NoAckFilter => "NO_ACK_FILTER",
3272            Self::AckFilter => "ACK_FILTER",
3273            Self::AckFilterAggressive => "ACK_FILTER_AGGRESSIVE",
3274        }
3275    }
3276    /// Creates an enum from field names used in the ProtoBuf definition.
3277    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3278        match value {
3279            "NO_ACK_FILTER" => Some(Self::NoAckFilter),
3280            "ACK_FILTER" => Some(Self::AckFilter),
3281            "ACK_FILTER_AGGRESSIVE" => Some(Self::AckFilterAggressive),
3282            _ => None,
3283        }
3284    }
3285}
3286#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3287#[repr(i32)]
3288pub enum CakePriorityQueueParameter {
3289    Diffserv3 = 0,
3290    Diffserv4 = 1,
3291    Precedence = 2,
3292    BestEffort = 3,
3293}
3294impl CakePriorityQueueParameter {
3295    /// String value of the enum field names used in the ProtoBuf definition.
3296    ///
3297    /// The values are not transformed in any way and thus are considered stable
3298    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3299    pub fn as_str_name(&self) -> &'static str {
3300        match self {
3301            Self::Diffserv3 => "DIFFSERV3",
3302            Self::Diffserv4 => "DIFFSERV4",
3303            Self::Precedence => "PRECEDENCE",
3304            Self::BestEffort => "BEST_EFFORT",
3305        }
3306    }
3307    /// Creates an enum from field names used in the ProtoBuf definition.
3308    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3309        match value {
3310            "DIFFSERV3" => Some(Self::Diffserv3),
3311            "DIFFSERV4" => Some(Self::Diffserv4),
3312            "PRECEDENCE" => Some(Self::Precedence),
3313            "BEST_EFFORT" => Some(Self::BestEffort),
3314            _ => None,
3315        }
3316    }
3317}
3318#[derive(Clone, PartialEq, ::prost::Message)]
3319pub struct WifiClients {
3320    #[prost(message, repeated, tag = "1")]
3321    pub clients: ::prost::alloc::vec::Vec<WifiClient>,
3322}
3323#[derive(Clone, PartialEq, ::prost::Message)]
3324pub struct ToController {
3325    #[prost(int32, tag = "4")]
3326    pub api_version: i32,
3327    #[prost(int32, tag = "7")]
3328    pub api_version_other_side: i32,
3329    #[prost(bool, tag = "6")]
3330    pub ready_for_multiple_networks: bool,
3331    #[prost(oneof = "to_controller::Message", tags = "1, 2, 3, 5")]
3332    pub message: ::core::option::Option<to_controller::Message>,
3333}
3334/// Nested message and enum types in `ToController`.
3335pub mod to_controller {
3336    #[derive(Clone, PartialEq, ::prost::Oneof)]
3337    pub enum Message {
3338        #[prost(message, tag = "1")]
3339        Clients(super::WifiClients),
3340        #[prost(message, tag = "2")]
3341        MeshJoin(super::WifiMeshJoin),
3342        #[prost(message, tag = "3")]
3343        Status(super::WifiMeshStatus),
3344        #[prost(message, tag = "5")]
3345        Speedtest(super::MeshSpeedtest),
3346    }
3347}
3348#[derive(Clone, PartialEq, ::prost::Message)]
3349pub struct WifiMeshJoin {
3350    #[prost(uint64, tag = "1")]
3351    pub incarnation: u64,
3352    #[prost(string, tag = "2")]
3353    pub hardware_version: ::prost::alloc::string::String,
3354    #[prost(bool, tag = "3")]
3355    pub supports_5ghz_high: bool,
3356    #[prost(message, repeated, tag = "4")]
3357    pub site_survey_scan: ::prost::alloc::vec::Vec<WifiSiteSurveyResult>,
3358}
3359#[derive(Clone, PartialEq, ::prost::Message)]
3360pub struct WifiMeshStatus {
3361    #[prost(string, tag = "5")]
3362    pub software_version: ::prost::alloc::string::String,
3363    #[prost(string, tag = "6")]
3364    pub mac_lan: ::prost::alloc::string::String,
3365    #[prost(string, repeated, tag = "7")]
3366    pub source_mac_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3367    #[prost(message, repeated, tag = "2")]
3368    pub clients: ::prost::alloc::vec::Vec<WifiClient>,
3369    #[prost(message, repeated, tag = "3")]
3370    pub bss_list: ::prost::alloc::vec::Vec<InflatedBasicServiceSet>,
3371    #[prost(string, tag = "4")]
3372    pub hardware_version: ::prost::alloc::string::String,
3373    #[prost(string, tag = "8")]
3374    pub backhaul_bssid: ::prost::alloc::string::String,
3375    #[prost(uint32, tag = "9")]
3376    pub backhaul_est_preference: u32,
3377}
3378#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3379pub struct MeshSpeedtestRequest {}
3380#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3381pub struct MeshSpeedtest {
3382    #[prost(int64, tag = "1")]
3383    pub upload_start_time: i64,
3384    #[prost(int64, tag = "2")]
3385    pub download_start_time: i64,
3386    #[prost(float, tag = "3")]
3387    pub upload_mbps: f32,
3388    #[prost(float, tag = "4")]
3389    pub download_mbps: f32,
3390}
3391#[derive(Clone, PartialEq, ::prost::Message)]
3392pub struct WifiSiteSurveyResult {
3393    #[prost(float, tag = "1")]
3394    pub rssi: f32,
3395    #[prost(uint32, tag = "2")]
3396    pub channel: u32,
3397    #[prost(string, tag = "3")]
3398    pub ssid: ::prost::alloc::string::String,
3399    #[prost(enumeration = "WifiSecurity", tag = "4")]
3400    pub security: i32,
3401    #[prost(enumeration = "WifiMode", tag = "5")]
3402    pub wireless_mode: i32,
3403    #[prost(enumeration = "IfaceType", tag = "6")]
3404    pub iface: i32,
3405    #[prost(string, tag = "7")]
3406    pub mac_address: ::prost::alloc::string::String,
3407    #[prost(float, tag = "8")]
3408    pub est_rx_rate: f32,
3409}
3410#[derive(Clone, PartialEq, ::prost::Message)]
3411pub struct WifiGlobalMeshStatus {
3412    #[prost(string, tag = "1")]
3413    pub hardware_version: ::prost::alloc::string::String,
3414    #[prost(string, tag = "2")]
3415    pub software_version: ::prost::alloc::string::String,
3416    #[prost(message, repeated, tag = "3")]
3417    pub bss_list: ::prost::alloc::vec::Vec<InflatedBasicServiceSet>,
3418}
3419#[derive(Clone, PartialEq, ::prost::Message)]
3420pub struct BackhaulRequest {
3421    #[prost(bool, tag = "1")]
3422    pub retry_backhaul: bool,
3423    #[prost(message, optional, tag = "2")]
3424    pub golden_bss: ::core::option::Option<WifiConfig>,
3425}
3426#[derive(Clone, PartialEq, ::prost::Message)]
3427pub struct FromController {
3428    #[prost(int32, tag = "3")]
3429    pub api_version: i32,
3430    #[prost(oneof = "from_controller::Message", tags = "1, 2, 4, 5, 6, 7")]
3431    pub message: ::core::option::Option<from_controller::Message>,
3432}
3433/// Nested message and enum types in `FromController`.
3434pub mod from_controller {
3435    #[derive(Clone, PartialEq, ::prost::Oneof)]
3436    pub enum Message {
3437        #[prost(message, tag = "1")]
3438        WifiConfig(super::WifiConfig),
3439        #[prost(message, tag = "2")]
3440        SteerClientRequest(super::SteerClientRequest),
3441        #[prost(message, tag = "4")]
3442        Status(super::WifiGlobalMeshStatus),
3443        #[prost(message, tag = "5")]
3444        BackhaulRequest(super::BackhaulRequest),
3445        #[prost(message, tag = "6")]
3446        StartSpeedtest(super::MeshSpeedtestRequest),
3447        #[prost(message, tag = "7")]
3448        WifiBtmRequest(super::WifiBtmRequest),
3449    }
3450}
3451#[derive(Clone, PartialEq, ::prost::Message)]
3452pub struct SteerClientRequest {
3453    #[deprecated]
3454    #[prost(string, tag = "1")]
3455    pub client_mac_addr: ::prost::alloc::string::String,
3456    #[deprecated]
3457    #[prost(message, repeated, tag = "2")]
3458    pub targets: ::prost::alloc::vec::Vec<steer_client_request::SteerTarget>,
3459}
3460/// Nested message and enum types in `SteerClientRequest`.
3461pub mod steer_client_request {
3462    #[derive(Clone, PartialEq, ::prost::Message)]
3463    pub struct SteerTarget {
3464        #[deprecated]
3465        #[prost(string, tag = "1")]
3466        pub bssid: ::prost::alloc::string::String,
3467        #[deprecated]
3468        #[prost(int32, tag = "2")]
3469        pub channel: i32,
3470    }
3471}
3472#[derive(Clone, PartialEq, ::prost::Message)]
3473pub struct WifiBtmRequest {
3474    #[prost(uint32, tag = "5")]
3475    pub bss_termination_duration_m: u32,
3476    #[prost(string, tag = "1")]
3477    pub peer_bssid: ::prost::alloc::string::String,
3478    #[prost(message, repeated, tag = "4")]
3479    pub neighbor_report: ::prost::alloc::vec::Vec<wifi_btm_request::NeighborReport>,
3480}
3481/// Nested message and enum types in `WifiBtmRequest`.
3482pub mod wifi_btm_request {
3483    #[derive(Clone, PartialEq, ::prost::Message)]
3484    pub struct NeighborReport {
3485        #[prost(string, tag = "1")]
3486        pub bssid: ::prost::alloc::string::String,
3487        #[prost(uint32, tag = "2")]
3488        pub channel: u32,
3489    }
3490}
3491#[derive(Clone, PartialEq, ::prost::Message)]
3492pub struct WifiSelfTest {
3493    #[prost(bool, tag = "1")]
3494    pub total_success: bool,
3495    #[prost(message, optional, tag = "2")]
3496    pub fused: ::core::option::Option<wifi_self_test::TestResult>,
3497    #[prost(message, repeated, tag = "3")]
3498    pub eth_phys: ::prost::alloc::vec::Vec<wifi_self_test::TestResult>,
3499    #[prost(message, repeated, tag = "4")]
3500    pub pcis: ::prost::alloc::vec::Vec<wifi_self_test::TestResult>,
3501    #[prost(message, optional, tag = "5")]
3502    pub bl2_prod: ::core::option::Option<wifi_self_test::TestResult>,
3503}
3504/// Nested message and enum types in `WifiSelfTest`.
3505pub mod wifi_self_test {
3506    #[derive(Clone, PartialEq, ::prost::Message)]
3507    pub struct TestResult {
3508        #[prost(string, tag = "1")]
3509        pub name: ::prost::alloc::string::String,
3510        #[prost(bool, tag = "2")]
3511        pub success: bool,
3512        #[prost(string, tag = "3")]
3513        pub failure_reason: ::prost::alloc::string::String,
3514    }
3515}
3516#[derive(Clone, PartialEq, ::prost::Message)]
3517pub struct WifiSetConfigRequest {
3518    #[prost(message, optional, tag = "1")]
3519    pub wifi_config: ::core::option::Option<WifiConfig>,
3520}
3521#[derive(Clone, PartialEq, ::prost::Message)]
3522pub struct WifiSetConfigResponse {
3523    #[prost(message, optional, tag = "1")]
3524    pub updated_wifi_config: ::core::option::Option<WifiConfig>,
3525}
3526#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3527pub struct WifiGetConfigRequest {}
3528#[derive(Clone, PartialEq, ::prost::Message)]
3529pub struct WifiGetConfigResponse {
3530    #[prost(message, optional, tag = "1")]
3531    pub wifi_config: ::core::option::Option<WifiConfig>,
3532}
3533#[derive(Clone, PartialEq, ::prost::Message)]
3534pub struct WifiSetMeshDeviceTrustRequest {
3535    #[prost(string, tag = "1")]
3536    pub device_id: ::prost::alloc::string::String,
3537    #[prost(enumeration = "MeshAuth", tag = "2")]
3538    pub auth: i32,
3539}
3540#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3541pub struct WifiSetMeshDeviceTrustResponse {}
3542#[derive(Clone, PartialEq, ::prost::Message)]
3543pub struct WifiSetMeshConfigRequest {
3544    #[prost(message, optional, tag = "1")]
3545    pub mesh_config: ::core::option::Option<MeshConfig>,
3546    #[prost(string, tag = "2")]
3547    pub device_id: ::prost::alloc::string::String,
3548}
3549#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3550pub struct WifiSetMeshConfigResponse {}
3551#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3552pub struct WifiGetClientsRequest {}
3553#[derive(Clone, PartialEq, ::prost::Message)]
3554pub struct WifiGetClientsResponse {
3555    #[prost(message, repeated, tag = "1")]
3556    pub clients: ::prost::alloc::vec::Vec<WifiClient>,
3557    #[prost(bool, tag = "2")]
3558    pub has_client_index: bool,
3559    #[prost(int32, tag = "3")]
3560    pub client_index: i32,
3561}
3562#[derive(Clone, PartialEq, ::prost::Message)]
3563pub struct WifiGetClientHistoryRequest {
3564    #[deprecated]
3565    #[prost(string, tag = "1")]
3566    pub mac_address: ::prost::alloc::string::String,
3567    #[prost(uint32, tag = "2")]
3568    pub client_id: u32,
3569}
3570#[derive(Clone, PartialEq, ::prost::Message)]
3571pub struct WifiGetClientHistoryResponse {
3572    #[prost(uint64, tag = "1")]
3573    pub current: u64,
3574    #[prost(float, repeated, tag = "2")]
3575    pub tx_throughput_mbps: ::prost::alloc::vec::Vec<f32>,
3576    #[prost(float, repeated, tag = "3")]
3577    pub rx_throughput_mbps: ::prost::alloc::vec::Vec<f32>,
3578    #[prost(
3579        enumeration = "wifi_get_client_history_response::WifiLimitedReason",
3580        repeated,
3581        tag = "4"
3582    )]
3583    pub throughput_limited: ::prost::alloc::vec::Vec<i32>,
3584    #[prost(float, repeated, tag = "5")]
3585    pub rx_rate_mbps: ::prost::alloc::vec::Vec<f32>,
3586    #[prost(bytes = "vec", tag = "6")]
3587    pub rssi: ::prost::alloc::vec::Vec<u8>,
3588}
3589/// Nested message and enum types in `WifiGetClientHistoryResponse`.
3590pub mod wifi_get_client_history_response {
3591    #[derive(
3592        Clone,
3593        Copy,
3594        Debug,
3595        PartialEq,
3596        Eq,
3597        Hash,
3598        PartialOrd,
3599        Ord,
3600        ::prost::Enumeration
3601    )]
3602    #[repr(i32)]
3603    pub enum WifiLimitedReason {
3604        LimitUnknown = 0,
3605        LimitNone = 1,
3606        LimitUnclassified = 2,
3607        LimitDroppedPackets = 3,
3608    }
3609    impl WifiLimitedReason {
3610        /// String value of the enum field names used in the ProtoBuf definition.
3611        ///
3612        /// The values are not transformed in any way and thus are considered stable
3613        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3614        pub fn as_str_name(&self) -> &'static str {
3615            match self {
3616                Self::LimitUnknown => "LIMIT_UNKNOWN",
3617                Self::LimitNone => "LIMIT_NONE",
3618                Self::LimitUnclassified => "LIMIT_UNCLASSIFIED",
3619                Self::LimitDroppedPackets => "LIMIT_DROPPED_PACKETS",
3620            }
3621        }
3622        /// Creates an enum from field names used in the ProtoBuf definition.
3623        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3624            match value {
3625                "LIMIT_UNKNOWN" => Some(Self::LimitUnknown),
3626                "LIMIT_NONE" => Some(Self::LimitNone),
3627                "LIMIT_UNCLASSIFIED" => Some(Self::LimitUnclassified),
3628                "LIMIT_DROPPED_PACKETS" => Some(Self::LimitDroppedPackets),
3629                _ => None,
3630            }
3631        }
3632    }
3633}
3634#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3635pub struct WifiSetAviationConformedRequest {}
3636#[derive(Clone, PartialEq, ::prost::Message)]
3637pub struct WifiGetHistoryResponse {
3638    #[prost(uint64, tag = "1")]
3639    pub current: u64,
3640    #[prost(float, repeated, tag = "1001")]
3641    pub ping_drop_rate: ::prost::alloc::vec::Vec<f32>,
3642    #[prost(float, repeated, tag = "1002")]
3643    pub ping_latency_ms: ::prost::alloc::vec::Vec<f32>,
3644    #[prost(uint64, tag = "2")]
3645    pub current_index_15s: u64,
3646    #[prost(float, repeated, tag = "1003")]
3647    pub pop_ipv4_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3648    #[prost(float, repeated, tag = "1004")]
3649    pub pop_ipv6_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3650    #[prost(float, repeated, tag = "1005")]
3651    pub google_ipv4_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3652    #[prost(float, repeated, tag = "1006")]
3653    pub google_ipv6_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3654    #[prost(float, repeated, tag = "1007")]
3655    pub cloudflare_ipv4_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3656    #[prost(float, repeated, tag = "1008")]
3657    pub cloudflare_ipv6_ping_drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3658    #[prost(map = "string, message", tag = "1009")]
3659    pub dns_resolver_drop_rate: ::std::collections::HashMap<
3660        ::prost::alloc::string::String,
3661        wifi_get_history_response::DnsResolverHistory,
3662    >,
3663}
3664/// Nested message and enum types in `WifiGetHistoryResponse`.
3665pub mod wifi_get_history_response {
3666    #[derive(Clone, PartialEq, ::prost::Message)]
3667    pub struct DnsResolverHistory {
3668        #[prost(float, repeated, tag = "2")]
3669        pub drop_rate_last_15s: ::prost::alloc::vec::Vec<f32>,
3670    }
3671}
3672#[derive(Clone, PartialEq, ::prost::Message)]
3673pub struct WifiNewClientConnectedEvent {
3674    #[prost(message, optional, tag = "1")]
3675    pub client: ::core::option::Option<WifiClient>,
3676}
3677#[derive(Clone, PartialEq, ::prost::Message)]
3678pub struct WifiClient {
3679    #[prost(string, tag = "1")]
3680    pub name: ::prost::alloc::string::String,
3681    #[prost(string, tag = "31")]
3682    pub given_name: ::prost::alloc::string::String,
3683    #[prost(string, tag = "22")]
3684    pub domain: ::prost::alloc::string::String,
3685    #[prost(string, tag = "2")]
3686    pub mac_address: ::prost::alloc::string::String,
3687    #[prost(string, tag = "3")]
3688    pub ip_address: ::prost::alloc::string::String,
3689    #[prost(bool, tag = "49")]
3690    pub dhcp_lease_found: bool,
3691    #[prost(bool, tag = "46")]
3692    pub dhcp_lease_active: bool,
3693    #[prost(bool, tag = "47")]
3694    pub dhcp_lease_renewed: bool,
3695    #[prost(float, tag = "48")]
3696    pub seconds_until_dhcp_lease_expires: f32,
3697    #[prost(string, repeated, tag = "41")]
3698    pub ipv6_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3699    #[prost(float, tag = "4")]
3700    pub signal_strength: f32,
3701    #[prost(uint32, tag = "12")]
3702    pub channel_width: u32,
3703    #[prost(message, optional, tag = "5")]
3704    pub rx_stats: ::core::option::Option<wifi_client::RxStats>,
3705    #[prost(bool, tag = "60")]
3706    pub rx_stats_valid: bool,
3707    #[prost(message, optional, tag = "6")]
3708    pub tx_stats: ::core::option::Option<wifi_client::TxStats>,
3709    #[prost(bool, tag = "61")]
3710    pub tx_stats_valid: bool,
3711    #[prost(uint32, tag = "7")]
3712    pub associated_time_s: u32,
3713    #[prost(uint32, tag = "45")]
3714    pub no_data_idle_s: u32,
3715    #[prost(string, tag = "8")]
3716    pub mode_str: ::prost::alloc::string::String,
3717    #[prost(enumeration = "wifi_client::Interface", tag = "9")]
3718    pub iface: i32,
3719    #[prost(string, tag = "26")]
3720    pub iface_name: ::prost::alloc::string::String,
3721    #[prost(float, tag = "10")]
3722    pub snr: f32,
3723    #[prost(int32, tag = "11")]
3724    pub psmode: i32,
3725    #[prost(string, tag = "13")]
3726    pub upstream_mac_address: ::prost::alloc::string::String,
3727    #[prost(enumeration = "wifi_client::Role", tag = "14")]
3728    pub role: i32,
3729    #[prost(string, tag = "15")]
3730    pub device_id: ::prost::alloc::string::String,
3731    #[prost(uint32, tag = "16")]
3732    pub swq_checks: u32,
3733    #[prost(uint32, tag = "17")]
3734    pub swq_checks_non_empty: u32,
3735    #[prost(uint32, tag = "18")]
3736    pub mib_steer_state: u32,
3737    #[prost(uint32, tag = "19")]
3738    pub mib_steer_method: u32,
3739    #[prost(uint32, tag = "20")]
3740    pub btm_requests: u32,
3741    #[prost(uint32, tag = "21")]
3742    pub btm_requests_success: u32,
3743    #[prost(uint32, tag = "30")]
3744    pub steer_state: u32,
3745    #[prost(uint32, tag = "27")]
3746    pub steer_req_success_last_1h: u32,
3747    #[prost(uint32, tag = "28")]
3748    pub steer_req_fail_last_1h: u32,
3749    #[prost(uint32, tag = "29")]
3750    pub steer_req_fail_and_dissoc_last_1h: u32,
3751    #[prost(bool, tag = "23")]
3752    pub dot11v_support: bool,
3753    #[prost(uint32, tag = "32")]
3754    pub hops_from_controller: u32,
3755    #[prost(float, tag = "33")]
3756    pub est_tx_rate_mbps_from_controller: f32,
3757    #[prost(float, tag = "34")]
3758    pub est_rx_rate_mbps_from_controller: f32,
3759    #[prost(string, tag = "37")]
3760    pub hardware_version: ::prost::alloc::string::String,
3761    #[prost(string, tag = "38")]
3762    pub software_version: ::prost::alloc::string::String,
3763    #[prost(uint32, tag = "39")]
3764    pub api_version: u32,
3765    #[prost(message, optional, tag = "40")]
3766    pub ping_metrics: ::core::option::Option<wifi_client::PingMetrics>,
3767    #[prost(bool, tag = "42")]
3768    pub blocked: bool,
3769    #[prost(uint32, tag = "43")]
3770    pub client_id: u32,
3771    #[prost(string, tag = "53")]
3772    pub captive_client_id: ::prost::alloc::string::String,
3773    #[prost(message, optional, tag = "44")]
3774    pub fqcodel_info: ::core::option::Option<wifi_client::FqcodelInfo>,
3775    #[prost(message, optional, tag = "52")]
3776    pub alerts: ::core::option::Option<wifi_client::Alerts>,
3777}
3778/// Nested message and enum types in `WifiClient`.
3779pub mod wifi_client {
3780    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3781    pub struct RxStats {
3782        #[prost(uint64, tag = "1")]
3783        pub bytes: u64,
3784        #[prost(uint64, tag = "2")]
3785        pub count_errors: u64,
3786        #[prost(uint32, tag = "13")]
3787        pub phy_mode: u32,
3788        #[prost(int32, tag = "3")]
3789        pub nss: i32,
3790        #[prost(uint32, tag = "8")]
3791        pub rate_mbps: u32,
3792        #[prost(float, tag = "14")]
3793        pub rate_mbps_last_30s: f32,
3794        #[prost(float, tag = "15")]
3795        pub rate_mbps_last_15s: f32,
3796        #[prost(float, tag = "16")]
3797        pub rate_mbps_last_1m_avg: f32,
3798        #[prost(float, tag = "17")]
3799        pub throughput_mbps_last_1m_avg: f32,
3800        #[prost(uint32, tag = "5")]
3801        pub mcs: u32,
3802        #[prost(uint32, tag = "6")]
3803        pub bandwidth: u32,
3804        #[prost(uint32, tag = "7")]
3805        pub guard_ns: u32,
3806        #[prost(float, tag = "9")]
3807        pub airtime_fraction_last_1s: f32,
3808        #[prost(uint32, tag = "10")]
3809        pub sampled_packets: u32,
3810        #[prost(uint32, tag = "11")]
3811        pub sampled_packets_retried: u32,
3812        #[prost(uint32, tag = "12")]
3813        pub sampled_packets_dropped: u32,
3814    }
3815    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3816    pub struct TxStats {
3817        #[prost(uint64, tag = "1")]
3818        pub bytes: u64,
3819        #[prost(uint64, tag = "2")]
3820        pub success_bytes: u64,
3821        #[prost(uint32, tag = "10")]
3822        pub phy_mode: u32,
3823        #[prost(int32, tag = "3")]
3824        pub nss: i32,
3825        #[prost(uint32, tag = "8")]
3826        pub rate_mbps: u32,
3827        #[prost(float, tag = "11")]
3828        pub rate_mbps_last_30s: f32,
3829        #[prost(float, tag = "12")]
3830        pub rate_mbps_last_15s: f32,
3831        #[prost(uint32, tag = "5")]
3832        pub mcs: u32,
3833        #[prost(uint32, tag = "6")]
3834        pub bandwidth: u32,
3835        #[prost(uint32, tag = "7")]
3836        pub guard_ns: u32,
3837        #[prost(float, tag = "9")]
3838        pub airtime_fraction_last_1s: f32,
3839    }
3840    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3841    pub struct PingMetrics {
3842        #[prost(bool, tag = "1")]
3843        pub in_unhappy_hour_2s: bool,
3844        #[prost(bool, tag = "2")]
3845        pub in_unhappy_hour_5s: bool,
3846        #[prost(float, tag = "3")]
3847        pub drop_rate_5m: f32,
3848        #[prost(float, tag = "4")]
3849        pub latency_5m: f32,
3850    }
3851    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3852    pub struct FqcodelInfo {
3853        #[prost(uint64, tag = "1")]
3854        pub enqs_hi_prio: u64,
3855        #[prost(uint64, tag = "2")]
3856        pub enqs_fqcodel: u64,
3857        #[prost(uint64, tag = "3")]
3858        pub enqs_new: u64,
3859        #[prost(uint64, tag = "4")]
3860        pub enqs_old: u64,
3861        #[prost(uint64, tag = "5")]
3862        pub enqs_dropped: u64,
3863        #[prost(uint64, tag = "6")]
3864        pub deqs_new: u64,
3865        #[prost(uint64, tag = "7")]
3866        pub deqs_old: u64,
3867        #[prost(uint64, tag = "8")]
3868        pub deqs_flow_new: u64,
3869        #[prost(uint64, tag = "9")]
3870        pub deqs_flow_old_deficit: u64,
3871        #[prost(uint64, tag = "10")]
3872        pub deqs_flow_old_starvation: u64,
3873        #[prost(uint64, tag = "11")]
3874        pub deqs_dropped: u64,
3875    }
3876    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3877    pub struct Alerts {
3878        #[prost(bool, tag = "1")]
3879        pub throughput_limited: bool,
3880    }
3881    #[derive(
3882        Clone,
3883        Copy,
3884        Debug,
3885        PartialEq,
3886        Eq,
3887        Hash,
3888        PartialOrd,
3889        Ord,
3890        ::prost::Enumeration
3891    )]
3892    #[repr(i32)]
3893    pub enum Interface {
3894        Unknown = 0,
3895        Eth = 1,
3896        Rf2ghz = 2,
3897        Rf5ghz = 3,
3898        Rf5ghzHigh = 4,
3899    }
3900    impl Interface {
3901        /// String value of the enum field names used in the ProtoBuf definition.
3902        ///
3903        /// The values are not transformed in any way and thus are considered stable
3904        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3905        pub fn as_str_name(&self) -> &'static str {
3906            match self {
3907                Self::Unknown => "UNKNOWN",
3908                Self::Eth => "ETH",
3909                Self::Rf2ghz => "RF_2GHZ",
3910                Self::Rf5ghz => "RF_5GHZ",
3911                Self::Rf5ghzHigh => "RF_5GHZ_HIGH",
3912            }
3913        }
3914        /// Creates an enum from field names used in the ProtoBuf definition.
3915        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3916            match value {
3917                "UNKNOWN" => Some(Self::Unknown),
3918                "ETH" => Some(Self::Eth),
3919                "RF_2GHZ" => Some(Self::Rf2ghz),
3920                "RF_5GHZ" => Some(Self::Rf5ghz),
3921                "RF_5GHZ_HIGH" => Some(Self::Rf5ghzHigh),
3922                _ => None,
3923            }
3924        }
3925    }
3926    #[derive(
3927        Clone,
3928        Copy,
3929        Debug,
3930        PartialEq,
3931        Eq,
3932        Hash,
3933        PartialOrd,
3934        Ord,
3935        ::prost::Enumeration
3936    )]
3937    #[repr(i32)]
3938    pub enum Role {
3939        Unknown = 0,
3940        Client = 1,
3941        Repeater = 2,
3942        Controller = 3,
3943    }
3944    impl Role {
3945        /// String value of the enum field names used in the ProtoBuf definition.
3946        ///
3947        /// The values are not transformed in any way and thus are considered stable
3948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3949        pub fn as_str_name(&self) -> &'static str {
3950            match self {
3951                Self::Unknown => "ROLE_UNKNOWN",
3952                Self::Client => "CLIENT",
3953                Self::Repeater => "REPEATER",
3954                Self::Controller => "CONTROLLER",
3955            }
3956        }
3957        /// Creates an enum from field names used in the ProtoBuf definition.
3958        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3959            match value {
3960                "ROLE_UNKNOWN" => Some(Self::Unknown),
3961                "CLIENT" => Some(Self::Client),
3962                "REPEATER" => Some(Self::Repeater),
3963                "CONTROLLER" => Some(Self::Controller),
3964                _ => None,
3965            }
3966        }
3967    }
3968}
3969#[derive(Clone, PartialEq, ::prost::Message)]
3970pub struct WifiSetupRequest {
3971    #[prost(bool, tag = "1")]
3972    pub skip: bool,
3973    #[prost(string, tag = "2")]
3974    pub network_name: ::prost::alloc::string::String,
3975    #[prost(string, tag = "3")]
3976    pub network_password: ::prost::alloc::string::String,
3977    #[prost(bool, tag = "4")]
3978    pub bypass: bool,
3979}
3980#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3981pub struct WifiSetupResponse {}
3982#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3983pub struct WifiBandStatus {
3984    #[prost(float, tag = "1")]
3985    pub chan_busy_time_fraction: f32,
3986    #[prost(float, tag = "2")]
3987    pub tx_air_time_fraction: f32,
3988    #[prost(float, tag = "3")]
3989    pub rx_air_time_fraction: f32,
3990    #[prost(float, tag = "4")]
3991    pub obss_air_time_fraction: f32,
3992    #[prost(float, tag = "5")]
3993    pub edcca_air_time_fraction: f32,
3994}
3995#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3996pub struct WifiAlerts {
3997    #[prost(bool, tag = "1")]
3998    pub thermal_throttle: bool,
3999    #[prost(bool, tag = "2")]
4000    pub install_pending: bool,
4001    #[prost(bool, tag = "3")]
4002    pub freshly_fused: bool,
4003    #[prost(bool, tag = "4")]
4004    pub lan_eth_slow_link_10: bool,
4005    #[prost(bool, tag = "5")]
4006    pub lan_eth_slow_link_100: bool,
4007    #[prost(bool, tag = "21")]
4008    pub high_cable_ping_drop_rate: bool,
4009    #[prost(bool, tag = "10")]
4010    pub wan_eth_poor_connection: bool,
4011    #[prost(bool, tag = "11")]
4012    pub mesh_topology_changing_often: bool,
4013    #[prost(bool, tag = "12")]
4014    pub mesh_unreliable_backhaul: bool,
4015    #[prost(bool, tag = "13")]
4016    pub radius_missing_process: bool,
4017    #[prost(bool, tag = "14")]
4018    pub eth_switch_error: bool,
4019    #[prost(bool, tag = "15")]
4020    pub poe_on_dish_unreachable: bool,
4021    #[prost(bool, tag = "16")]
4022    pub poe_fuse_blown: bool,
4023    #[prost(bool, tag = "17")]
4024    pub poe_router_overcurrent: bool,
4025    #[prost(bool, tag = "18")]
4026    pub poe_off_current_nominal: bool,
4027    #[prost(bool, tag = "19")]
4028    pub poe_vin_overvoltage: bool,
4029    #[prost(bool, tag = "20")]
4030    pub poe_vin_undervoltage: bool,
4031    #[prost(bool, tag = "22")]
4032    pub sandbox_disabled: bool,
4033    #[prost(bool, tag = "23")]
4034    pub only_overflight_blocked: bool,
4035    #[prost(bool, tag = "24")]
4036    pub offline_networks_disabled: bool,
4037}
4038#[derive(Clone, PartialEq, ::prost::Message)]
4039pub struct WifiGetStatusResponse {
4040    #[prost(message, optional, tag = "3")]
4041    pub device_info: ::core::option::Option<DeviceInfo>,
4042    #[prost(message, optional, tag = "4")]
4043    pub device_state: ::core::option::Option<DeviceState>,
4044    #[deprecated]
4045    #[prost(bool, tag = "1")]
4046    pub captive_portal_enabled: bool,
4047    #[prost(string, tag = "1003")]
4048    pub ipv4_wan_address: ::prost::alloc::string::String,
4049    #[prost(string, repeated, tag = "1017")]
4050    pub ipv6_wan_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4051    #[prost(float, tag = "1004")]
4052    pub ping_drop_rate: f32,
4053    #[prost(float, tag = "1021")]
4054    pub ping_drop_rate_5m: f32,
4055    #[prost(float, tag = "1005")]
4056    pub ping_latency_ms: f32,
4057    #[prost(float, tag = "1012")]
4058    pub dish_ping_drop_rate: f32,
4059    #[prost(float, tag = "1018")]
4060    pub dish_ping_drop_rate_5m: f32,
4061    #[prost(float, tag = "1013")]
4062    pub dish_ping_latency_ms: f32,
4063    #[prost(float, tag = "1014")]
4064    pub pop_ping_drop_rate: f32,
4065    #[prost(float, tag = "1020")]
4066    pub pop_ping_drop_rate_5m: f32,
4067    #[prost(float, tag = "1015")]
4068    pub pop_ping_latency_ms: f32,
4069    #[prost(float, tag = "1027")]
4070    pub pop_ipv6_ping_drop_rate: f32,
4071    #[prost(float, tag = "1028")]
4072    pub pop_ipv6_ping_drop_rate_5m: f32,
4073    #[prost(float, tag = "1029")]
4074    pub pop_ipv6_ping_latency_ms: f32,
4075    #[deprecated]
4076    #[prost(message, optional, tag = "1008")]
4077    pub rf_2ghz_status: ::core::option::Option<WifiBandStatus>,
4078    #[deprecated]
4079    #[prost(message, optional, tag = "1009")]
4080    pub rf_5ghz_status: ::core::option::Option<WifiBandStatus>,
4081    #[prost(message, optional, tag = "1010")]
4082    pub alerts: ::core::option::Option<WifiAlerts>,
4083    #[prost(bool, tag = "1011")]
4084    pub is_aviation: bool,
4085    #[prost(message, optional, tag = "2000")]
4086    pub config: ::core::option::Option<WifiConfig>,
4087    #[prost(message, repeated, tag = "3000")]
4088    pub clients: ::prost::alloc::vec::Vec<WifiClient>,
4089    #[prost(bool, tag = "3001")]
4090    pub has_client_index: bool,
4091    #[prost(int32, tag = "3002")]
4092    pub client_index: i32,
4093    #[prost(bool, tag = "1016")]
4094    pub is_aviation_conformed: bool,
4095    #[prost(message, optional, tag = "3003")]
4096    pub radius_stats: ::core::option::Option<RadiusStatsMap>,
4097    #[prost(message, repeated, tag = "1019")]
4098    pub dhcp_servers: ::prost::alloc::vec::Vec<DhcpServer>,
4099    #[prost(message, optional, tag = "1022")]
4100    pub poe_stats: ::core::option::Option<PoeStats>,
4101    #[prost(string, tag = "1023")]
4102    pub dish_id: ::prost::alloc::string::String,
4103    #[prost(enumeration = "super::satellites::network::UtDisablementCode", tag = "1031")]
4104    pub dish_disablement_code: i32,
4105    #[prost(int64, tag = "1024")]
4106    pub utc_ns: i64,
4107    #[prost(message, optional, tag = "1025")]
4108    pub software_update_stats: ::core::option::Option<WifiSoftwareUpdateStats>,
4109    #[prost(message, optional, tag = "1026")]
4110    pub setup_requirement: ::core::option::Option<WifiSetupRequirement>,
4111    #[prost(float, tag = "1030")]
4112    pub secs_since_last_public_ipv4_change: f32,
4113}
4114#[derive(Clone, PartialEq, ::prost::Message)]
4115pub struct WifiAuthenticateRequest {
4116    #[prost(message, optional, tag = "1")]
4117    pub challenge: ::core::option::Option<SignedData>,
4118}
4119#[derive(Clone, PartialEq, ::prost::Message)]
4120pub struct WifiAuthenticateResponse {
4121    #[prost(message, optional, tag = "1")]
4122    pub wifi: ::core::option::Option<ChallengeResponse>,
4123    #[prost(message, optional, tag = "2")]
4124    pub dish: ::core::option::Option<ChallengeResponse>,
4125}
4126#[derive(Clone, PartialEq, ::prost::Message)]
4127pub struct WifiAccountBondingEvent {
4128    #[prost(string, tag = "1")]
4129    pub dish_id: ::prost::alloc::string::String,
4130    #[prost(bool, tag = "2")]
4131    pub is_repeater: bool,
4132    #[prost(string, tag = "3")]
4133    pub hardware_version: ::prost::alloc::string::String,
4134}
4135#[derive(Clone, PartialEq, ::prost::Message)]
4136pub struct WifiNewPeerEvent {
4137    #[prost(string, tag = "1")]
4138    pub peer_id: ::prost::alloc::string::String,
4139}
4140#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4141pub struct PingMetrics {
4142    #[prost(float, tag = "1")]
4143    pub latency_mean_ms: f32,
4144    #[prost(float, tag = "2")]
4145    pub latency_stddev_ms: f32,
4146    #[prost(float, tag = "3")]
4147    pub latency_mean_ms_5m: f32,
4148    #[prost(float, tag = "4")]
4149    pub latency_mean_ms_1h: f32,
4150    #[deprecated]
4151    #[prost(float, tag = "5")]
4152    pub latency_mean_ms_1d: f32,
4153    #[prost(float, tag = "6")]
4154    pub drop_rate: f32,
4155    #[prost(float, tag = "7")]
4156    pub drop_rate_5m: f32,
4157    #[prost(float, tag = "8")]
4158    pub drop_rate_1h: f32,
4159    #[prost(float, tag = "9")]
4160    pub drop_rate_1d: f32,
4161    #[prost(float, tag = "10")]
4162    pub seconds_since_last_success: f32,
4163    #[prost(float, tag = "11")]
4164    pub seconds_since_last_1s_outage: f32,
4165    #[prost(float, tag = "15")]
4166    pub seconds_since_last_2s_outage: f32,
4167    #[prost(float, tag = "12")]
4168    pub seconds_since_last_5s_outage: f32,
4169    #[prost(float, tag = "18")]
4170    pub seconds_since_last_15s_outage: f32,
4171    #[prost(float, tag = "19")]
4172    pub seconds_since_last_60s_outage: f32,
4173    #[prost(float, tag = "20")]
4174    pub seconds_since_last_300s_outage: f32,
4175    #[prost(float, tag = "13")]
4176    pub happy_hours_1s_1d: f32,
4177    #[prost(float, tag = "16")]
4178    pub happy_hours_2s_1d: f32,
4179    #[prost(float, tag = "14")]
4180    pub happy_hours_5s_1d: f32,
4181}
4182#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4183pub struct WifiGetPingMetricsRequest {}
4184#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4185pub struct WifiGetPingMetricsResponse {
4186    #[prost(message, optional, tag = "1")]
4187    pub internet: ::core::option::Option<PingMetrics>,
4188}
4189#[derive(Clone, PartialEq, ::prost::Message)]
4190pub struct WifiNetwork {
4191    #[prost(enumeration = "wifi_network::Band", tag = "1")]
4192    pub band: i32,
4193    #[prost(string, tag = "2")]
4194    pub ssid: ::prost::alloc::string::String,
4195    #[prost(uint32, tag = "3")]
4196    pub channel: u32,
4197    #[prost(string, tag = "4")]
4198    pub encryption_type_str: ::prost::alloc::string::String,
4199}
4200/// Nested message and enum types in `WifiNetwork`.
4201pub mod wifi_network {
4202    #[derive(
4203        Clone,
4204        Copy,
4205        Debug,
4206        PartialEq,
4207        Eq,
4208        Hash,
4209        PartialOrd,
4210        Ord,
4211        ::prost::Enumeration
4212    )]
4213    #[repr(i32)]
4214    pub enum Band {
4215        WifiUnknown = 0,
4216        Wifi24ghz = 1,
4217        Wifi5ghz = 2,
4218    }
4219    impl Band {
4220        /// String value of the enum field names used in the ProtoBuf definition.
4221        ///
4222        /// The values are not transformed in any way and thus are considered stable
4223        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4224        pub fn as_str_name(&self) -> &'static str {
4225            match self {
4226                Self::WifiUnknown => "WIFI_UNKNOWN",
4227                Self::Wifi24ghz => "WIFI_2_4GHZ",
4228                Self::Wifi5ghz => "WIFI_5GHZ",
4229            }
4230        }
4231        /// Creates an enum from field names used in the ProtoBuf definition.
4232        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4233            match value {
4234                "WIFI_UNKNOWN" => Some(Self::WifiUnknown),
4235                "WIFI_2_4GHZ" => Some(Self::Wifi24ghz),
4236                "WIFI_5GHZ" => Some(Self::Wifi5ghz),
4237                _ => None,
4238            }
4239        }
4240    }
4241}
4242#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4243pub struct WifiPersistentStats {
4244    #[prost(message, optional, tag = "1")]
4245    pub factory_reset_button: ::core::option::Option<wifi_persistent_stats::Event>,
4246    #[prost(message, optional, tag = "2")]
4247    pub factory_reset_plug_unplug: ::core::option::Option<wifi_persistent_stats::Event>,
4248    #[prost(message, optional, tag = "3")]
4249    pub factory_reset_command: ::core::option::Option<wifi_persistent_stats::Event>,
4250    #[prost(message, optional, tag = "4")]
4251    pub factory_reset_failed_load_wifi_config: ::core::option::Option<
4252        wifi_persistent_stats::Event,
4253    >,
4254    #[prost(message, optional, tag = "5")]
4255    pub reboot_from_software_update: ::core::option::Option<
4256        wifi_persistent_stats::Event,
4257    >,
4258}
4259/// Nested message and enum types in `WifiPersistentStats`.
4260pub mod wifi_persistent_stats {
4261    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4262    pub struct Event {
4263        #[prost(uint32, tag = "1")]
4264        pub count: u32,
4265        #[prost(int64, tag = "2")]
4266        pub last_occurred_timestamp: i64,
4267    }
4268}
4269#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4270pub struct WifiGetPersistentStatsResponse {
4271    #[prost(message, optional, tag = "1")]
4272    pub stats: ::core::option::Option<WifiPersistentStats>,
4273}
4274#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4275pub struct RadioStats {
4276    #[prost(enumeration = "wifi_config::Band", tag = "1")]
4277    pub band: i32,
4278    #[prost(message, optional, tag = "2")]
4279    pub rx_stats: ::core::option::Option<network_interface::RxStats>,
4280    #[prost(message, optional, tag = "3")]
4281    pub tx_stats: ::core::option::Option<network_interface::TxStats>,
4282    #[prost(message, optional, tag = "4")]
4283    pub thermal_status: ::core::option::Option<radio_stats::ThermalStatus>,
4284    #[prost(message, optional, tag = "5")]
4285    pub antenna_status: ::core::option::Option<radio_stats::AntennaStatus>,
4286}
4287/// Nested message and enum types in `RadioStats`.
4288pub mod radio_stats {
4289    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4290    pub struct ThermalStatus {
4291        #[prost(uint32, tag = "1")]
4292        pub level: u32,
4293        #[deprecated]
4294        #[prost(uint32, tag = "2")]
4295        pub temp: u32,
4296        #[prost(double, tag = "3")]
4297        pub temp2: f64,
4298        #[prost(uint32, tag = "4")]
4299        pub power_reduction: u32,
4300        #[prost(uint32, tag = "5")]
4301        pub duty_cycle: u32,
4302    }
4303    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
4304    pub struct AntennaStatus {
4305        #[prost(float, tag = "1")]
4306        pub rssi1: f32,
4307        #[prost(float, tag = "2")]
4308        pub rssi2: f32,
4309        #[prost(float, tag = "3")]
4310        pub rssi3: f32,
4311        #[prost(float, tag = "4")]
4312        pub rssi4: f32,
4313    }
4314}
4315#[derive(Clone, PartialEq, ::prost::Message)]
4316pub struct StarlinkRoutersHourlyMetricsV2 {
4317    #[prost(message, optional, tag = "1")]
4318    pub id: ::core::option::Option<::prost::alloc::string::String>,
4319    #[prost(message, optional, tag = "2")]
4320    pub timestamp_date: ::core::option::Option<::prost::alloc::string::String>,
4321    #[prost(message, optional, tag = "3")]
4322    pub timestamp_hour: ::core::option::Option<u32>,
4323    #[prost(message, optional, tag = "10000")]
4324    pub timestamp: ::core::option::Option<
4325        super::telemetron::public::common::TimestampInfo,
4326    >,
4327    #[prost(message, optional, tag = "4")]
4328    pub sys_hw_gen: ::core::option::Option<u32>,
4329    #[prost(message, optional, tag = "5")]
4330    pub sys_sw: ::core::option::Option<::prost::alloc::string::String>,
4331    #[prost(message, optional, tag = "6")]
4332    pub sys_country: ::core::option::Option<::prost::alloc::string::String>,
4333    #[prost(message, optional, tag = "7")]
4334    pub sys_is_dev: ::core::option::Option<bool>,
4335    #[prost(message, optional, tag = "8")]
4336    pub sys_alloc_fds: ::core::option::Option<u32>,
4337    #[prost(message, optional, tag = "9")]
4338    pub sys_cpu_usage: ::core::option::Option<f32>,
4339    #[prost(message, optional, tag = "10")]
4340    pub sys_mem_free_kb: ::core::option::Option<f32>,
4341    #[prost(message, optional, tag = "11")]
4342    pub sys_bootcount: ::core::option::Option<i32>,
4343    #[prost(message, optional, tag = "12")]
4344    pub sys_partitions_equal: ::core::option::Option<bool>,
4345    #[prost(message, optional, tag = "13")]
4346    pub sys_uptime_seconds: ::core::option::Option<u32>,
4347    #[prost(message, optional, tag = "14")]
4348    pub sys_anti_rollback_version: ::core::option::Option<i32>,
4349    #[prost(message, optional, tag = "15")]
4350    pub sys_is_witl: ::core::option::Option<bool>,
4351    #[prost(message, optional, tag = "16")]
4352    pub sys_is_aviation_conformed: ::core::option::Option<bool>,
4353    #[prost(message, optional, tag = "17")]
4354    pub sys_ubi_max_ec: ::core::option::Option<u32>,
4355    #[prost(message, optional, tag = "18")]
4356    pub sys_ubi_bad_peb: ::core::option::Option<u32>,
4357    #[prost(message, optional, tag = "19")]
4358    pub sys_board_rev: ::core::option::Option<u32>,
4359    #[prost(message, optional, tag = "100")]
4360    pub radios_2ghz_channel: ::core::option::Option<u32>,
4361    #[prost(message, optional, tag = "101")]
4362    pub radios_2ghz_antenna1_rssi: ::core::option::Option<f32>,
4363    #[prost(message, optional, tag = "102")]
4364    pub radios_2ghz_antenna2_rssi: ::core::option::Option<f32>,
4365    #[prost(message, optional, tag = "103")]
4366    pub radios_2ghz_antenna3_rssi: ::core::option::Option<f32>,
4367    #[prost(message, optional, tag = "197")]
4368    pub radios_2ghz_antenna4_rssi: ::core::option::Option<f32>,
4369    #[prost(message, optional, tag = "157")]
4370    pub radios_2ghz_antenna1_tssi: ::core::option::Option<f32>,
4371    #[prost(message, optional, tag = "158")]
4372    pub radios_2ghz_antenna2_tssi: ::core::option::Option<f32>,
4373    #[prost(message, optional, tag = "159")]
4374    pub radios_2ghz_antenna3_tssi: ::core::option::Option<f32>,
4375    #[prost(message, optional, tag = "160")]
4376    pub radios_2ghz_antenna4_tssi: ::core::option::Option<f32>,
4377    #[prost(message, optional, tag = "104")]
4378    pub radios_2ghz_iface_count: ::core::option::Option<u32>,
4379    #[prost(message, optional, tag = "105")]
4380    pub radios_2ghz_chan_busy_fraction: ::core::option::Option<f32>,
4381    #[prost(message, optional, tag = "106")]
4382    pub radios_2ghz_edcca_fraction: ::core::option::Option<f32>,
4383    #[prost(message, optional, tag = "107")]
4384    pub radios_2ghz_overlapping_bss_fraction: ::core::option::Option<f32>,
4385    #[prost(message, optional, tag = "108")]
4386    pub radios_2ghz_rx_bytes: ::core::option::Option<i64>,
4387    #[prost(message, optional, tag = "109")]
4388    pub radios_2ghz_rx_packets: ::core::option::Option<i64>,
4389    #[prost(message, optional, tag = "110")]
4390    pub radios_2ghz_rx_errors: ::core::option::Option<i64>,
4391    #[prost(message, optional, tag = "111")]
4392    pub radios_2ghz_rx_frame_errors: ::core::option::Option<i64>,
4393    #[prost(message, optional, tag = "112")]
4394    pub radios_2ghz_rx_packet_error_rate: ::core::option::Option<f32>,
4395    #[prost(message, optional, tag = "113")]
4396    pub radios_2ghz_rx_airtime_fraction: ::core::option::Option<f32>,
4397    #[prost(message, optional, tag = "114")]
4398    pub radios_2ghz_tx_bytes: ::core::option::Option<i64>,
4399    #[prost(message, optional, tag = "115")]
4400    pub radios_2ghz_tx_packets: ::core::option::Option<i64>,
4401    #[prost(message, optional, tag = "116")]
4402    pub radios_2ghz_tx_errors: ::core::option::Option<i64>,
4403    #[prost(message, optional, tag = "117")]
4404    pub radios_2ghz_tx_packet_error_rate: ::core::option::Option<f32>,
4405    #[prost(message, optional, tag = "118")]
4406    pub radios_2ghz_tx_airtime_fraction: ::core::option::Option<f32>,
4407    #[prost(message, optional, tag = "119")]
4408    pub radios_5ghz_channel: ::core::option::Option<u32>,
4409    #[prost(message, optional, tag = "120")]
4410    pub radios_5ghz_antenna1_rssi: ::core::option::Option<f32>,
4411    #[prost(message, optional, tag = "121")]
4412    pub radios_5ghz_antenna2_rssi: ::core::option::Option<f32>,
4413    #[prost(message, optional, tag = "122")]
4414    pub radios_5ghz_antenna3_rssi: ::core::option::Option<f32>,
4415    #[prost(message, optional, tag = "198")]
4416    pub radios_5ghz_antenna4_rssi: ::core::option::Option<f32>,
4417    #[prost(message, optional, tag = "161")]
4418    pub radios_5ghz_antenna1_tssi: ::core::option::Option<f32>,
4419    #[prost(message, optional, tag = "162")]
4420    pub radios_5ghz_antenna2_tssi: ::core::option::Option<f32>,
4421    #[prost(message, optional, tag = "163")]
4422    pub radios_5ghz_antenna3_tssi: ::core::option::Option<f32>,
4423    #[prost(message, optional, tag = "164")]
4424    pub radios_5ghz_antenna4_tssi: ::core::option::Option<f32>,
4425    #[prost(message, optional, tag = "123")]
4426    pub radios_5ghz_iface_count: ::core::option::Option<u32>,
4427    #[prost(message, optional, tag = "124")]
4428    pub radios_5ghz_chan_busy_fraction: ::core::option::Option<f32>,
4429    #[prost(message, optional, tag = "125")]
4430    pub radios_5ghz_edcca_fraction: ::core::option::Option<f32>,
4431    #[prost(message, optional, tag = "126")]
4432    pub radios_5ghz_overlapping_bss_fraction: ::core::option::Option<f32>,
4433    #[prost(message, optional, tag = "127")]
4434    pub radios_5ghz_rx_bytes: ::core::option::Option<i64>,
4435    #[prost(message, optional, tag = "128")]
4436    pub radios_5ghz_rx_packets: ::core::option::Option<i64>,
4437    #[prost(message, optional, tag = "129")]
4438    pub radios_5ghz_rx_errors: ::core::option::Option<i64>,
4439    #[prost(message, optional, tag = "130")]
4440    pub radios_5ghz_rx_frame_errors: ::core::option::Option<i64>,
4441    #[prost(message, optional, tag = "131")]
4442    pub radios_5ghz_rx_packet_error_rate: ::core::option::Option<f32>,
4443    #[prost(message, optional, tag = "132")]
4444    pub radios_5ghz_rx_airtime_fraction: ::core::option::Option<f32>,
4445    #[prost(message, optional, tag = "133")]
4446    pub radios_5ghz_tx_bytes: ::core::option::Option<i64>,
4447    #[prost(message, optional, tag = "134")]
4448    pub radios_5ghz_tx_packets: ::core::option::Option<i64>,
4449    #[prost(message, optional, tag = "135")]
4450    pub radios_5ghz_tx_errors: ::core::option::Option<i64>,
4451    #[prost(message, optional, tag = "136")]
4452    pub radios_5ghz_tx_packet_error_rate: ::core::option::Option<f32>,
4453    #[prost(message, optional, tag = "137")]
4454    pub radios_5ghz_tx_airtime_fraction: ::core::option::Option<f32>,
4455    #[prost(message, optional, tag = "138")]
4456    pub radios_5ghz_high_channel: ::core::option::Option<u32>,
4457    #[prost(message, optional, tag = "139")]
4458    pub radios_5ghz_high_antenna1_rssi: ::core::option::Option<f32>,
4459    #[prost(message, optional, tag = "140")]
4460    pub radios_5ghz_high_antenna2_rssi: ::core::option::Option<f32>,
4461    #[prost(message, optional, tag = "141")]
4462    pub radios_5ghz_high_antenna3_rssi: ::core::option::Option<f32>,
4463    #[prost(message, optional, tag = "199")]
4464    pub radios_5ghz_high_antenna4_rssi: ::core::option::Option<f32>,
4465    #[prost(message, optional, tag = "165")]
4466    pub radios_5ghz_high_antenna1_tssi: ::core::option::Option<f32>,
4467    #[prost(message, optional, tag = "166")]
4468    pub radios_5ghz_high_antenna2_tssi: ::core::option::Option<f32>,
4469    #[prost(message, optional, tag = "167")]
4470    pub radios_5ghz_high_antenna3_tssi: ::core::option::Option<f32>,
4471    #[prost(message, optional, tag = "168")]
4472    pub radios_5ghz_high_antenna4_tssi: ::core::option::Option<f32>,
4473    #[prost(message, optional, tag = "142")]
4474    pub radios_5ghz_high_iface_count: ::core::option::Option<u32>,
4475    #[prost(message, optional, tag = "143")]
4476    pub radios_5ghz_high_chan_busy_fraction: ::core::option::Option<f32>,
4477    #[prost(message, optional, tag = "144")]
4478    pub radios_5ghz_high_edcca_fraction: ::core::option::Option<f32>,
4479    #[prost(message, optional, tag = "145")]
4480    pub radios_5ghz_high_overlapping_bss_fraction: ::core::option::Option<f32>,
4481    #[prost(message, optional, tag = "146")]
4482    pub radios_5ghz_high_rx_bytes: ::core::option::Option<i64>,
4483    #[prost(message, optional, tag = "147")]
4484    pub radios_5ghz_high_rx_packets: ::core::option::Option<i64>,
4485    #[prost(message, optional, tag = "148")]
4486    pub radios_5ghz_high_rx_errors: ::core::option::Option<i64>,
4487    #[prost(message, optional, tag = "149")]
4488    pub radios_5ghz_high_rx_frame_errors: ::core::option::Option<i64>,
4489    #[prost(message, optional, tag = "150")]
4490    pub radios_5ghz_high_rx_packet_error_rate: ::core::option::Option<f32>,
4491    #[prost(message, optional, tag = "151")]
4492    pub radios_5ghz_high_rx_airtime_fraction: ::core::option::Option<f32>,
4493    #[prost(message, optional, tag = "152")]
4494    pub radios_5ghz_high_tx_bytes: ::core::option::Option<i64>,
4495    #[prost(message, optional, tag = "153")]
4496    pub radios_5ghz_high_tx_packets: ::core::option::Option<i64>,
4497    #[prost(message, optional, tag = "154")]
4498    pub radios_5ghz_high_tx_errors: ::core::option::Option<i64>,
4499    #[prost(message, optional, tag = "155")]
4500    pub radios_5ghz_high_tx_packet_error_rate: ::core::option::Option<f32>,
4501    #[prost(message, optional, tag = "156")]
4502    pub radios_5ghz_high_tx_airtime_fraction: ::core::option::Option<f32>,
4503    #[prost(message, optional, tag = "200")]
4504    pub radios_2ghz_thermal_temp: ::core::option::Option<f32>,
4505    #[prost(message, optional, tag = "201")]
4506    pub radios_5ghz_thermal_temp: ::core::option::Option<f32>,
4507    #[prost(message, optional, tag = "206")]
4508    pub radios_5ghz_high_thermal_temp: ::core::option::Option<f32>,
4509    #[prost(message, optional, tag = "202")]
4510    pub radios_2ghz_thermal_duty_cycle: ::core::option::Option<f32>,
4511    #[prost(message, optional, tag = "203")]
4512    pub radios_5ghz_thermal_duty_cycle: ::core::option::Option<f32>,
4513    #[prost(message, optional, tag = "207")]
4514    pub radios_5ghz_high_thermal_duty_cycle: ::core::option::Option<f32>,
4515    #[prost(message, optional, tag = "204")]
4516    pub radios_2ghz_thermal_throttled_seconds: ::core::option::Option<u32>,
4517    #[prost(message, optional, tag = "205")]
4518    pub radios_5ghz_thermal_throttled_seconds: ::core::option::Option<u32>,
4519    #[prost(message, optional, tag = "208")]
4520    pub radios_5ghz_high_thermal_throttled_seconds: ::core::option::Option<u32>,
4521    #[prost(message, optional, tag = "210")]
4522    pub board_temp: ::core::option::Option<f32>,
4523    #[prost(message, optional, tag = "211")]
4524    pub poe_mcu_die_temp: ::core::option::Option<f32>,
4525    #[prost(message, optional, tag = "212")]
4526    pub poe_percent_water_detect_avg: ::core::option::Option<f32>,
4527    #[prost(message, optional, tag = "300")]
4528    pub ifaces_lan_eth_rx_bytes: ::core::option::Option<i64>,
4529    #[prost(message, optional, tag = "301")]
4530    pub ifaces_lan_eth_rx_packets: ::core::option::Option<i64>,
4531    #[prost(message, optional, tag = "302")]
4532    pub ifaces_lan_eth_rx_errors: ::core::option::Option<i64>,
4533    #[prost(message, optional, tag = "303")]
4534    pub ifaces_lan_eth_rx_frame_errors: ::core::option::Option<i64>,
4535    #[prost(message, optional, tag = "304")]
4536    pub ifaces_lan_eth_tx_bytes: ::core::option::Option<i64>,
4537    #[prost(message, optional, tag = "305")]
4538    pub ifaces_lan_eth_tx_packets: ::core::option::Option<i64>,
4539    #[prost(message, optional, tag = "306")]
4540    pub ifaces_lan_eth_tx_errors: ::core::option::Option<i64>,
4541    #[prost(message, optional, tag = "314")]
4542    pub ifaces_lan1_eth_rx_bytes: ::core::option::Option<i64>,
4543    #[prost(message, optional, tag = "315")]
4544    pub ifaces_lan1_eth_rx_packets: ::core::option::Option<i64>,
4545    #[prost(message, optional, tag = "316")]
4546    pub ifaces_lan1_eth_rx_errors: ::core::option::Option<i64>,
4547    #[prost(message, optional, tag = "317")]
4548    pub ifaces_lan1_eth_rx_frame_errors: ::core::option::Option<i64>,
4549    #[prost(message, optional, tag = "318")]
4550    pub ifaces_lan1_eth_tx_bytes: ::core::option::Option<i64>,
4551    #[prost(message, optional, tag = "319")]
4552    pub ifaces_lan1_eth_tx_packets: ::core::option::Option<i64>,
4553    #[prost(message, optional, tag = "320")]
4554    pub ifaces_lan1_eth_tx_errors: ::core::option::Option<i64>,
4555    #[prost(message, optional, tag = "307")]
4556    pub ifaces_wan_eth_rx_bytes: ::core::option::Option<i64>,
4557    #[prost(message, optional, tag = "308")]
4558    pub ifaces_wan_eth_rx_packets: ::core::option::Option<i64>,
4559    #[prost(message, optional, tag = "309")]
4560    pub ifaces_wan_eth_rx_errors: ::core::option::Option<i64>,
4561    #[prost(message, optional, tag = "310")]
4562    pub ifaces_wan_eth_rx_frame_errors: ::core::option::Option<i64>,
4563    #[prost(message, optional, tag = "311")]
4564    pub ifaces_wan_eth_tx_bytes: ::core::option::Option<i64>,
4565    #[prost(message, optional, tag = "312")]
4566    pub ifaces_wan_eth_tx_packets: ::core::option::Option<i64>,
4567    #[prost(message, optional, tag = "313")]
4568    pub ifaces_wan_eth_tx_errors: ::core::option::Option<i64>,
4569    #[prost(message, optional, tag = "400")]
4570    pub clients: ::core::option::Option<u32>,
4571    #[prost(message, optional, tag = "401")]
4572    pub clients_2ghz: ::core::option::Option<u32>,
4573    #[prost(message, optional, tag = "402")]
4574    pub clients_5ghz: ::core::option::Option<u32>,
4575    #[prost(message, optional, tag = "413")]
4576    pub clients_5ghz_high: ::core::option::Option<u32>,
4577    #[prost(message, optional, tag = "403")]
4578    pub clients_eth: ::core::option::Option<u32>,
4579    #[prost(message, optional, tag = "429")]
4580    pub clients_5ghz_rx_bandwidth_20mhz: ::core::option::Option<u32>,
4581    #[prost(message, optional, tag = "430")]
4582    pub clients_5ghz_rx_bandwidth_40mhz: ::core::option::Option<u32>,
4583    #[prost(message, optional, tag = "431")]
4584    pub clients_5ghz_rx_bandwidth_80mhz: ::core::option::Option<u32>,
4585    #[prost(message, optional, tag = "404")]
4586    pub clients_repeater: ::core::option::Option<u32>,
4587    #[prost(message, optional, tag = "405")]
4588    pub clients_repeater_2ghz: ::core::option::Option<u32>,
4589    #[prost(message, optional, tag = "406")]
4590    pub clients_repeater_5ghz: ::core::option::Option<u32>,
4591    #[prost(message, optional, tag = "416")]
4592    pub clients_repeater_5ghz_high: ::core::option::Option<u32>,
4593    #[prost(message, optional, tag = "407")]
4594    pub clients_repeater_eth: ::core::option::Option<u32>,
4595    #[prost(message, optional, tag = "408")]
4596    pub mesh_hops: ::core::option::Option<u32>,
4597    #[prost(message, optional, tag = "409")]
4598    pub mesh_one_hop_rssi_avg_2ghz: ::core::option::Option<f32>,
4599    #[prost(message, optional, tag = "410")]
4600    pub mesh_one_hop_rssi_avg_5ghz: ::core::option::Option<f32>,
4601    #[prost(message, optional, tag = "414")]
4602    pub mesh_one_hop_rssi_avg_5ghz_high: ::core::option::Option<f32>,
4603    #[prost(message, optional, tag = "411")]
4604    pub mesh_two_hop_rssi_avg_2ghz: ::core::option::Option<f32>,
4605    #[prost(message, optional, tag = "412")]
4606    pub mesh_two_hop_rssi_avg_5ghz: ::core::option::Option<f32>,
4607    #[prost(message, optional, tag = "415")]
4608    pub mesh_two_hop_rssi_avg_5ghz_high: ::core::option::Option<f32>,
4609    #[prost(message, optional, tag = "418")]
4610    pub repeater_tx_rate_mbps_min: ::core::option::Option<f32>,
4611    #[prost(message, optional, tag = "419")]
4612    pub repeater_rx_rate_mbps_min: ::core::option::Option<f32>,
4613    #[prost(message, optional, tag = "420")]
4614    pub repeater_tx_rate_mbps_avg: ::core::option::Option<f32>,
4615    #[prost(message, optional, tag = "421")]
4616    pub repeater_rx_rate_mbps_avg: ::core::option::Option<f32>,
4617    #[prost(message, optional, tag = "422")]
4618    pub repeater_seconds_since_2s_outage_min: ::core::option::Option<f32>,
4619    #[prost(message, optional, tag = "424")]
4620    pub repeater_seconds_since_5s_outage_min: ::core::option::Option<f32>,
4621    #[prost(message, optional, tag = "423")]
4622    pub repeater_seconds_since_2s_outage_avg: ::core::option::Option<f32>,
4623    #[prost(message, optional, tag = "425")]
4624    pub repeater_seconds_since_5s_outage_avg: ::core::option::Option<f32>,
4625    #[prost(message, optional, tag = "426")]
4626    pub repeater_latency_ms_1h_max: ::core::option::Option<f32>,
4627    #[prost(message, optional, tag = "427")]
4628    pub repeater_latency_ms_1h_avg: ::core::option::Option<f32>,
4629    #[prost(message, optional, tag = "428")]
4630    pub mesh_topology_change_count_1d: ::core::option::Option<u32>,
4631    #[prost(message, optional, tag = "600")]
4632    pub ping_seconds_since_last_1s_outage: ::core::option::Option<f32>,
4633    #[prost(message, optional, tag = "601")]
4634    pub ping_seconds_since_last_2s_outage: ::core::option::Option<f32>,
4635    #[prost(message, optional, tag = "602")]
4636    pub ping_seconds_since_last_5s_outage: ::core::option::Option<f32>,
4637    #[prost(message, optional, tag = "603")]
4638    pub ping_seconds_since_last_60s_outage: ::core::option::Option<f32>,
4639    #[prost(message, optional, tag = "604")]
4640    pub ping_seconds_since_last_300s_outage: ::core::option::Option<f32>,
4641    #[prost(message, optional, tag = "605")]
4642    pub ping_drop_rate: ::core::option::Option<f32>,
4643    #[prost(message, optional, tag = "606")]
4644    pub ping_drop_rate_last_1h: ::core::option::Option<f32>,
4645    #[prost(message, optional, tag = "607")]
4646    pub ping_latency: ::core::option::Option<f32>,
4647    #[prost(message, optional, tag = "618")]
4648    pub ping_latency_last_1h: ::core::option::Option<f32>,
4649    #[prost(message, optional, tag = "610")]
4650    pub ping_dish_seconds_since_last_1s_outage: ::core::option::Option<f32>,
4651    #[prost(message, optional, tag = "611")]
4652    pub ping_dish_seconds_since_last_2s_outage: ::core::option::Option<f32>,
4653    #[prost(message, optional, tag = "612")]
4654    pub ping_dish_seconds_since_last_5s_outage: ::core::option::Option<f32>,
4655    #[prost(message, optional, tag = "613")]
4656    pub ping_dish_seconds_since_last_60s_outage: ::core::option::Option<f32>,
4657    #[prost(message, optional, tag = "614")]
4658    pub ping_dish_seconds_since_last_300s_outage: ::core::option::Option<f32>,
4659    #[prost(message, optional, tag = "615")]
4660    pub ping_dish_drop_rate: ::core::option::Option<f32>,
4661    #[prost(message, optional, tag = "616")]
4662    pub ping_dish_drop_rate_last_1h: ::core::option::Option<f32>,
4663    #[prost(message, optional, tag = "617")]
4664    pub ping_dish_latency: ::core::option::Option<f32>,
4665    #[prost(message, optional, tag = "619")]
4666    pub ping_dish_latency_last_1h: ::core::option::Option<f32>,
4667    #[prost(message, optional, tag = "621")]
4668    pub ping_pop_ipv6_drop_rate_last_1h: ::core::option::Option<f32>,
4669    #[prost(message, optional, tag = "623")]
4670    pub ping_pop_ipv6_latency_last_1h: ::core::option::Option<f32>,
4671    #[prost(message, optional, tag = "700")]
4672    pub client_speedtest_router_download_mbps: ::core::option::Option<f32>,
4673    #[prost(message, optional, tag = "701")]
4674    pub client_speedtest_router_upload_mbps: ::core::option::Option<f32>,
4675    #[prost(message, optional, tag = "702")]
4676    pub client_speedtest_router_rssi: ::core::option::Option<f32>,
4677    #[prost(message, optional, tag = "703")]
4678    pub client_speedtest_wifi_download_mbps: ::core::option::Option<f32>,
4679    #[prost(message, optional, tag = "704")]
4680    pub client_speedtest_wifi_upload_mbps: ::core::option::Option<f32>,
4681    #[prost(message, optional, tag = "705")]
4682    pub client_speedtest_client_download_mbps: ::core::option::Option<f32>,
4683    #[prost(message, optional, tag = "706")]
4684    pub client_speedtest_client_upload_mbps: ::core::option::Option<f32>,
4685    #[prost(message, optional, tag = "707")]
4686    pub client_speedtest_client_rssi: ::core::option::Option<f32>,
4687    #[prost(message, optional, tag = "708")]
4688    pub client_speedtest_client_iface: ::core::option::Option<u32>,
4689    #[prost(message, optional, tag = "709")]
4690    pub client_speedtest_client_oui: ::core::option::Option<
4691        ::prost::alloc::string::String,
4692    >,
4693    #[prost(message, optional, tag = "710")]
4694    pub client_speedtest_client_tx_rate: ::core::option::Option<u32>,
4695    #[prost(message, optional, tag = "711")]
4696    pub client_speedtest_client_rx_rate: ::core::option::Option<u32>,
4697    #[prost(message, optional, tag = "712")]
4698    pub client_speedtest_client_platform_type: ::core::option::Option<u32>,
4699    #[prost(message, optional, tag = "800")]
4700    pub speedtest_tcp_8_download_mbps_avg: ::core::option::Option<f32>,
4701    #[prost(message, optional, tag = "801")]
4702    pub speedtest_tcp_8_download_mbps_max: ::core::option::Option<f32>,
4703    #[prost(message, optional, tag = "802")]
4704    pub speedtest_tcp_8_upload_mbps_avg: ::core::option::Option<f32>,
4705    #[prost(message, optional, tag = "803")]
4706    pub speedtest_tcp_8_upload_mbps_max: ::core::option::Option<f32>,
4707    #[prost(message, optional, tag = "804")]
4708    pub speedtest_tcp_64_download_mbps_avg: ::core::option::Option<f32>,
4709    #[prost(message, optional, tag = "805")]
4710    pub speedtest_tcp_64_download_mbps_max: ::core::option::Option<f32>,
4711    #[prost(message, optional, tag = "806")]
4712    pub speedtest_tcp_64_upload_mbps_avg: ::core::option::Option<f32>,
4713    #[prost(message, optional, tag = "807")]
4714    pub speedtest_tcp_64_upload_mbps_max: ::core::option::Option<f32>,
4715    #[prost(message, optional, tag = "808")]
4716    pub speedtest_tcp_1_download_mbps_avg: ::core::option::Option<f32>,
4717    #[prost(message, optional, tag = "809")]
4718    pub speedtest_tcp_1_download_mbps_max: ::core::option::Option<f32>,
4719    #[prost(message, optional, tag = "810")]
4720    pub speedtest_tcp_1_upload_mbps_avg: ::core::option::Option<f32>,
4721    #[prost(message, optional, tag = "811")]
4722    pub speedtest_tcp_1_upload_mbps_max: ::core::option::Option<f32>,
4723    #[prost(message, optional, tag = "900")]
4724    pub dish_cell_id: ::core::option::Option<u32>,
4725    #[prost(message, optional, tag = "1000")]
4726    pub config_setup_complete: ::core::option::Option<bool>,
4727    #[prost(message, optional, tag = "1001")]
4728    pub config_bands_split: ::core::option::Option<bool>,
4729    #[prost(message, optional, tag = "1002")]
4730    pub config_is_repeater: ::core::option::Option<bool>,
4731    #[prost(message, optional, tag = "1003")]
4732    pub config_open_network: ::core::option::Option<bool>,
4733    #[prost(message, optional, tag = "1004")]
4734    pub config_is_aviation: ::core::option::Option<bool>,
4735    #[prost(message, optional, tag = "1005")]
4736    pub config_secure_dns: ::core::option::Option<bool>,
4737    #[prost(message, optional, tag = "1006")]
4738    pub config_legacy: ::core::option::Option<bool>,
4739    #[prost(message, optional, tag = "1007")]
4740    pub config_ap_mode: ::core::option::Option<bool>,
4741    #[prost(message, optional, tag = "1008")]
4742    pub config_dfs_enabled: ::core::option::Option<bool>,
4743    #[prost(message, optional, tag = "1009")]
4744    pub config_network_name_is_default: ::core::option::Option<bool>,
4745    #[prost(message, optional, tag = "1010")]
4746    pub config_remote_ssh_enabled: ::core::option::Option<bool>,
4747    #[prost(message, optional, tag = "1011")]
4748    pub config_is_repeater_wired: ::core::option::Option<bool>,
4749    #[prost(message, optional, tag = "1012")]
4750    pub config_is_repeater_wireless: ::core::option::Option<bool>,
4751    #[prost(message, optional, tag = "1013")]
4752    pub config_block_schedules_set: ::core::option::Option<u32>,
4753    #[prost(message, optional, tag = "1014")]
4754    pub config_custom_nameservers: ::core::option::Option<bool>,
4755    #[prost(message, optional, tag = "1015")]
4756    pub config_disable_mesh_onboarding: ::core::option::Option<bool>,
4757    #[prost(message, optional, tag = "1016")]
4758    pub config_pin_country_code: ::core::option::Option<bool>,
4759    #[prost(message, optional, tag = "1017")]
4760    pub config_disable_update_reboot: ::core::option::Option<bool>,
4761    #[prost(message, optional, tag = "1031")]
4762    pub config_https_content_hosting_enabled: ::core::option::Option<bool>,
4763    #[prost(message, optional, tag = "1018")]
4764    pub config_disable_2ghz: ::core::option::Option<bool>,
4765    #[prost(message, optional, tag = "1019")]
4766    pub config_disable_5ghz: ::core::option::Option<bool>,
4767    #[prost(message, optional, tag = "1029")]
4768    pub config_disable_5ghz_high: ::core::option::Option<bool>,
4769    #[prost(message, optional, tag = "1020")]
4770    pub config_channel_2ghz: ::core::option::Option<u32>,
4771    #[prost(message, optional, tag = "1021")]
4772    pub config_channel_5ghz: ::core::option::Option<u32>,
4773    #[prost(message, optional, tag = "1022")]
4774    pub config_channel_5ghz_high: ::core::option::Option<u32>,
4775    #[prost(message, optional, tag = "1023")]
4776    pub config_networks: ::core::option::Option<u32>,
4777    #[prost(message, optional, tag = "1024")]
4778    pub config_networks_guest: ::core::option::Option<u32>,
4779    #[prost(message, optional, tag = "1025")]
4780    pub config_networks_hidden: ::core::option::Option<u32>,
4781    #[prost(message, optional, tag = "1026")]
4782    pub config_networks_client_isolation: ::core::option::Option<u32>,
4783    #[prost(message, optional, tag = "1027")]
4784    pub config_networks_bands_split: ::core::option::Option<u32>,
4785    #[prost(message, optional, tag = "1101")]
4786    pub wan_traffic_control_cake_bytes: ::core::option::Option<i64>,
4787    #[prost(message, optional, tag = "1102")]
4788    pub wan_traffic_control_cake_packets: ::core::option::Option<i64>,
4789    #[prost(message, optional, tag = "1103")]
4790    pub wan_traffic_control_cake_drops: ::core::option::Option<i64>,
4791    #[prost(message, optional, tag = "1104")]
4792    pub wan_traffic_control_cake_ack_drops: ::core::option::Option<i64>,
4793    #[prost(message, optional, tag = "1100")]
4794    pub conntrack_entries: ::core::option::Option<u32>,
4795    #[prost(message, optional, tag = "1105")]
4796    pub dhcp_secs_eq_0: ::core::option::Option<u32>,
4797    #[prost(message, optional, tag = "1106")]
4798    pub dhcp_secs_gt_0: ::core::option::Option<u32>,
4799    #[prost(message, optional, tag = "1107")]
4800    pub dhcp_secs_gt_10: ::core::option::Option<u32>,
4801    #[prost(message, optional, tag = "1108")]
4802    pub dhcp_secs_gt_30: ::core::option::Option<u32>,
4803    #[prost(message, optional, tag = "1109")]
4804    pub dhcp_secs_gt_60: ::core::option::Option<u32>,
4805    #[prost(message, optional, tag = "1200")]
4806    pub dns_forwards: ::core::option::Option<u32>,
4807    #[prost(message, optional, tag = "1201")]
4808    pub dns_forwards_success: ::core::option::Option<u32>,
4809    #[prost(message, optional, tag = "1202")]
4810    pub dns_forwards_server_failure: ::core::option::Option<u32>,
4811    #[prost(message, optional, tag = "1203")]
4812    pub dns_forwards_no_server_response: ::core::option::Option<u32>,
4813    #[prost(message, optional, tag = "1204")]
4814    pub dns_forwards_success_on_default_backup: ::core::option::Option<u32>,
4815    #[prost(message, optional, tag = "1205")]
4816    pub dns_forwards_dropped: ::core::option::Option<u32>,
4817    #[prost(message, optional, tag = "1206")]
4818    pub dns_forwards_with_backup: ::core::option::Option<u32>,
4819}
4820#[derive(Clone, PartialEq, ::prost::Message)]
4821pub struct StarlinkRouterAlerts {
4822    #[prost(string, tag = "1")]
4823    pub name: ::prost::alloc::string::String,
4824    #[prost(string, tag = "2")]
4825    pub source: ::prost::alloc::string::String,
4826    #[prost(bool, tag = "3")]
4827    pub active: bool,
4828    #[prost(message, optional, tag = "4")]
4829    pub start: ::core::option::Option<super::telemetron::public::common::TimestampInfo>,
4830    #[prost(message, optional, tag = "5")]
4831    pub end: ::core::option::Option<super::telemetron::public::common::TimestampInfo>,
4832    #[prost(string, tag = "6")]
4833    pub hardware: ::prost::alloc::string::String,
4834    #[prost(string, tag = "7")]
4835    pub software: ::prost::alloc::string::String,
4836    #[prost(string, tag = "8")]
4837    pub details: ::prost::alloc::string::String,
4838}
4839#[derive(Clone, PartialEq, ::prost::Message)]
4840pub struct StarlinkRouterClientSpeedtests {
4841    #[prost(string, tag = "1")]
4842    pub id: ::prost::alloc::string::String,
4843    #[prost(message, optional, tag = "2")]
4844    pub data_record: ::core::option::Option<
4845        super::telemetron::public::common::TimestampInfo,
4846    >,
4847    #[prost(string, tag = "3")]
4848    pub country: ::prost::alloc::string::String,
4849    #[prost(message, optional, tag = "30")]
4850    pub speedtest_id: ::core::option::Option<::prost::alloc::string::String>,
4851    #[prost(message, optional, tag = "8")]
4852    pub client_rssi: ::core::option::Option<f32>,
4853    #[prost(message, optional, tag = "9")]
4854    pub router_rssi: ::core::option::Option<f32>,
4855    #[prost(message, optional, tag = "10")]
4856    pub client_iface: ::core::option::Option<u32>,
4857    #[prost(message, optional, tag = "11")]
4858    pub client_oui: ::core::option::Option<::prost::alloc::string::String>,
4859    #[prost(message, optional, tag = "12")]
4860    pub client_tx_rate: ::core::option::Option<u32>,
4861    #[prost(message, optional, tag = "13")]
4862    pub client_rx_rate: ::core::option::Option<u32>,
4863    #[prost(message, optional, tag = "27")]
4864    pub client_platform_type: ::core::option::Option<::prost::alloc::string::String>,
4865    #[prost(message, optional, tag = "34")]
4866    pub client_app_version: ::core::option::Option<::prost::alloc::string::String>,
4867    #[prost(message, optional, tag = "35")]
4868    pub client_app_build: ::core::option::Option<u32>,
4869    #[prost(message, optional, tag = "31")]
4870    pub client_rx_phy_mode: ::core::option::Option<u32>,
4871    #[prost(message, optional, tag = "32")]
4872    pub client_rx_spatial_streams: ::core::option::Option<u32>,
4873    #[prost(message, optional, tag = "33")]
4874    pub client_rx_mcs: ::core::option::Option<u32>,
4875    #[prost(message, optional, tag = "4")]
4876    pub client_download_start_time: ::core::option::Option<
4877        super::telemetron::public::common::TimestampInfo,
4878    >,
4879    #[prost(message, optional, tag = "5")]
4880    pub client_upload_start_time: ::core::option::Option<
4881        super::telemetron::public::common::TimestampInfo,
4882    >,
4883    #[prost(message, optional, tag = "6")]
4884    pub client_download_mbps_avg: ::core::option::Option<f32>,
4885    #[prost(message, optional, tag = "7")]
4886    pub client_upload_mbps_avg: ::core::option::Option<f32>,
4887    #[prost(message, optional, tag = "28")]
4888    pub client_target: ::core::option::Option<::prost::alloc::string::String>,
4889    #[prost(message, optional, tag = "16")]
4890    pub client_tcp_streams: ::core::option::Option<u32>,
4891    #[prost(message, optional, tag = "17")]
4892    pub router_download_start_time: ::core::option::Option<
4893        super::telemetron::public::common::TimestampInfo,
4894    >,
4895    #[prost(message, optional, tag = "18")]
4896    pub router_upload_start_time: ::core::option::Option<
4897        super::telemetron::public::common::TimestampInfo,
4898    >,
4899    #[prost(message, optional, tag = "19")]
4900    pub router_download_mbps_avg: ::core::option::Option<f32>,
4901    #[prost(message, optional, tag = "20")]
4902    pub router_upload_mbps_avg: ::core::option::Option<f32>,
4903    #[prost(message, optional, tag = "29")]
4904    pub router_target: ::core::option::Option<::prost::alloc::string::String>,
4905    #[prost(message, optional, tag = "22")]
4906    pub router_tcp_streams: ::core::option::Option<u32>,
4907    #[prost(message, optional, tag = "23")]
4908    pub wifi_download_start_time: ::core::option::Option<
4909        super::telemetron::public::common::TimestampInfo,
4910    >,
4911    #[prost(message, optional, tag = "24")]
4912    pub wifi_upload_start_time: ::core::option::Option<
4913        super::telemetron::public::common::TimestampInfo,
4914    >,
4915    #[prost(message, optional, tag = "25")]
4916    pub wifi_download_mbps_avg: ::core::option::Option<f32>,
4917    #[prost(message, optional, tag = "26")]
4918    pub wifi_upload_mbps_avg: ::core::option::Option<f32>,
4919}
4920#[derive(Clone, PartialEq, ::prost::Message)]
4921pub struct StarlinkRouterClients {
4922    #[prost(string, tag = "1")]
4923    pub router_id: ::prost::alloc::string::String,
4924    #[prost(message, optional, tag = "2")]
4925    pub timestamp: ::core::option::Option<
4926        super::telemetron::public::common::TimestampInfo,
4927    >,
4928    #[prost(uint32, tag = "3")]
4929    pub client_id: u32,
4930    #[prost(string, tag = "4")]
4931    pub client_telem_index: ::prost::alloc::string::String,
4932    #[prost(message, optional, tag = "119")]
4933    pub router_hw: ::core::option::Option<::prost::alloc::string::String>,
4934    #[prost(message, optional, tag = "120")]
4935    pub router_sw: ::core::option::Option<::prost::alloc::string::String>,
4936    #[prost(message, optional, tag = "137")]
4937    pub router_uptime_s: ::core::option::Option<u32>,
4938    #[prost(message, optional, tag = "121")]
4939    pub client_router_id: ::core::option::Option<::prost::alloc::string::String>,
4940    #[prost(message, optional, tag = "122")]
4941    pub client_hw: ::core::option::Option<::prost::alloc::string::String>,
4942    #[prost(message, optional, tag = "123")]
4943    pub client_sw: ::core::option::Option<::prost::alloc::string::String>,
4944    #[prost(message, optional, tag = "101")]
4945    pub oui: ::core::option::Option<::prost::alloc::string::String>,
4946    #[prost(message, optional, tag = "102")]
4947    pub upstream_id: ::core::option::Option<::prost::alloc::string::String>,
4948    #[prost(message, optional, tag = "103")]
4949    pub is_repeater: ::core::option::Option<bool>,
4950    #[prost(message, optional, tag = "104")]
4951    pub connected_s: ::core::option::Option<u32>,
4952    #[prost(message, optional, tag = "105")]
4953    pub interface: ::core::option::Option<::prost::alloc::string::String>,
4954    #[prost(message, optional, tag = "106")]
4955    pub radio_channel: ::core::option::Option<u32>,
4956    #[prost(message, optional, tag = "107")]
4957    pub rssi: ::core::option::Option<f32>,
4958    #[prost(message, optional, tag = "108")]
4959    pub rx_mcs: ::core::option::Option<u32>,
4960    #[prost(message, optional, tag = "109")]
4961    pub tx_mcs: ::core::option::Option<u32>,
4962    #[prost(message, optional, tag = "110")]
4963    pub rx_rate: ::core::option::Option<u32>,
4964    #[prost(message, optional, tag = "111")]
4965    pub tx_rate: ::core::option::Option<u32>,
4966    #[prost(message, optional, tag = "112")]
4967    pub rx_bandwidth: ::core::option::Option<u32>,
4968    #[prost(message, optional, tag = "113")]
4969    pub rx_spatial_streams: ::core::option::Option<u32>,
4970    #[prost(message, optional, tag = "114")]
4971    pub rx_phy_mode: ::core::option::Option<u32>,
4972    #[prost(message, optional, tag = "118")]
4973    pub mesh_hops: ::core::option::Option<u32>,
4974    #[prost(message, optional, tag = "124")]
4975    pub speedtest_upload_mbps: ::core::option::Option<f32>,
4976    #[prost(message, optional, tag = "125")]
4977    pub speedtest_download_mbps: ::core::option::Option<f32>,
4978    #[prost(message, optional, tag = "127")]
4979    pub site_survey_rssi: ::core::option::Option<f32>,
4980    #[prost(message, optional, tag = "128")]
4981    pub site_survey_est_rx_rate: ::core::option::Option<f32>,
4982    #[prost(message, optional, tag = "129")]
4983    pub est_controller_throughput_mbps: ::core::option::Option<u32>,
4984    #[prost(message, optional, tag = "115")]
4985    pub ping_drop_rate_last_1h: ::core::option::Option<f32>,
4986    #[prost(message, optional, tag = "116")]
4987    pub ping_latency_last_1h: ::core::option::Option<f32>,
4988    #[prost(message, optional, tag = "117")]
4989    pub steer_state: ::core::option::Option<::prost::alloc::string::String>,
4990    #[prost(message, optional, tag = "126")]
4991    pub blocked: ::core::option::Option<bool>,
4992    #[prost(message, optional, tag = "150")]
4993    pub throughput_limited_last_fired: ::core::option::Option<
4994        super::telemetron::public::common::TimestampInfo,
4995    >,
4996    #[prost(message, optional, tag = "130")]
4997    pub has_dhcp_v4_lease: ::core::option::Option<bool>,
4998    #[prost(message, optional, tag = "131")]
4999    pub ipv4_address: ::core::option::Option<::prost::alloc::string::String>,
5000    #[prost(message, optional, tag = "132")]
5001    pub has_hostname: ::core::option::Option<bool>,
5002    #[prost(message, optional, tag = "133")]
5003    pub dhcp_v4_lease_is_active: ::core::option::Option<bool>,
5004    #[prost(message, optional, tag = "134")]
5005    pub dhcp_v4_lease_was_renewed: ::core::option::Option<bool>,
5006    #[prost(message, optional, tag = "135")]
5007    pub seconds_until_dhcp_v4_lease_expires: ::core::option::Option<f32>,
5008    #[prost(message, optional, tag = "138")]
5009    pub dissociations_under_10s: ::core::option::Option<u32>,
5010    #[prost(message, optional, tag = "139")]
5011    pub dissociations_under_30s: ::core::option::Option<u32>,
5012    #[prost(message, optional, tag = "140")]
5013    pub dissociations_under_60s: ::core::option::Option<u32>,
5014    #[prost(message, optional, tag = "141")]
5015    pub dissociations_under_120s: ::core::option::Option<u32>,
5016    #[prost(message, optional, tag = "142")]
5017    pub seconds_to_conn_tcp_ipv4: ::core::option::Option<f32>,
5018    #[prost(message, optional, tag = "143")]
5019    pub seconds_to_conn_tcp_ipv6: ::core::option::Option<f32>,
5020    #[prost(message, optional, tag = "144")]
5021    pub seconds_to_conn_udp_ipv4: ::core::option::Option<f32>,
5022    #[prost(message, optional, tag = "145")]
5023    pub seconds_to_conn_udp_ipv6: ::core::option::Option<f32>,
5024    #[prost(message, optional, tag = "146")]
5025    pub flows_tcp_ipv4: ::core::option::Option<u32>,
5026    #[prost(message, optional, tag = "147")]
5027    pub flows_tcp_ipv6: ::core::option::Option<u32>,
5028    #[prost(message, optional, tag = "148")]
5029    pub flows_udp_ipv4: ::core::option::Option<u32>,
5030    #[prost(message, optional, tag = "149")]
5031    pub flows_udp_ipv6: ::core::option::Option<u32>,
5032}
5033#[derive(Clone, PartialEq, ::prost::Message)]
5034pub struct StarlinkRouterClientTesterRun {
5035    #[prost(string, tag = "1")]
5036    pub client_tester_router_id: ::prost::alloc::string::String,
5037    #[prost(message, optional, tag = "2")]
5038    pub timestamp: ::core::option::Option<
5039        super::telemetron::public::common::TimestampInfo,
5040    >,
5041    #[prost(message, optional, tag = "3")]
5042    pub client_iface_name: ::core::option::Option<::prost::alloc::string::String>,
5043    #[prost(message, optional, tag = "4")]
5044    pub target_ssid: ::core::option::Option<::prost::alloc::string::String>,
5045    #[prost(message, optional, tag = "5")]
5046    pub target_has_password: ::core::option::Option<bool>,
5047    #[prost(message, optional, tag = "6")]
5048    pub target_auth: ::core::option::Option<::prost::alloc::string::String>,
5049    #[prost(message, optional, tag = "7")]
5050    pub target_encryption: ::core::option::Option<::prost::alloc::string::String>,
5051    #[prost(message, optional, tag = "8")]
5052    pub target_bssid: ::core::option::Option<::prost::alloc::string::String>,
5053    #[prost(message, optional, tag = "25")]
5054    pub target_irtt_server: ::core::option::Option<::prost::alloc::string::String>,
5055    #[prost(message, optional, tag = "9")]
5056    pub iteration: ::core::option::Option<u32>,
5057    #[prost(message, optional, tag = "10")]
5058    pub error_code: ::core::option::Option<::prost::alloc::string::String>,
5059    #[prost(message, optional, tag = "11")]
5060    pub seconds_to_associate: ::core::option::Option<f32>,
5061    #[prost(message, optional, tag = "12")]
5062    pub seconds_to_lease: ::core::option::Option<f32>,
5063    #[prost(message, optional, tag = "13")]
5064    pub seconds_to_resolve_router: ::core::option::Option<f32>,
5065    #[prost(message, optional, tag = "14")]
5066    pub seconds_to_resolve_internet: ::core::option::Option<f32>,
5067    #[prost(message, optional, tag = "15")]
5068    pub seconds_to_ping_dish: ::core::option::Option<f32>,
5069    #[prost(message, optional, tag = "16")]
5070    pub v4_irtt_test_duration_s: ::core::option::Option<f32>,
5071    #[prost(message, optional, tag = "17")]
5072    pub v4_irtt_rtt_latency_min_ms: ::core::option::Option<f32>,
5073    #[prost(message, optional, tag = "18")]
5074    pub v4_irtt_rtt_latency_mean_ms: ::core::option::Option<f32>,
5075    #[prost(message, optional, tag = "19")]
5076    pub v4_irtt_rtt_latency_median_ms: ::core::option::Option<f32>,
5077    #[prost(message, optional, tag = "20")]
5078    pub v4_irtt_rtt_latency_max_ms: ::core::option::Option<f32>,
5079    #[prost(message, optional, tag = "21")]
5080    pub v4_irtt_rtt_latency_std_dev_ms: ::core::option::Option<f32>,
5081    #[prost(message, optional, tag = "22")]
5082    pub v4_irtt_pkts_sent: ::core::option::Option<u32>,
5083    #[prost(message, optional, tag = "23")]
5084    pub v4_irtt_pkts_recv: ::core::option::Option<u32>,
5085    #[prost(message, optional, tag = "24")]
5086    pub v4_irtt_loss_percent: ::core::option::Option<f32>,
5087}
5088#[derive(Clone, PartialEq, ::prost::Message)]
5089pub struct WifiSetClientGivenNameRequest {
5090    #[deprecated]
5091    #[prost(message, optional, tag = "1")]
5092    pub client_name: ::core::option::Option<ClientName>,
5093    #[prost(message, optional, tag = "2")]
5094    pub client_config: ::core::option::Option<ClientConfig>,
5095}
5096#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5097pub struct WifiSelfTestRequest {}
5098#[derive(Clone, PartialEq, ::prost::Message)]
5099pub struct WifiSelfTestResponse {
5100    #[prost(message, optional, tag = "1")]
5101    pub self_test: ::core::option::Option<WifiSelfTest>,
5102    #[prost(string, tag = "2")]
5103    pub json: ::prost::alloc::string::String,
5104}
5105#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5106pub struct WifiRunSelfTestRequest {}
5107#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5108pub struct WifiRfTestRequest {
5109    #[prost(uint32, tag = "1")]
5110    pub num_measurements: u32,
5111    #[prost(uint32, tag = "2")]
5112    pub channel_2ghz: u32,
5113    #[prost(uint32, tag = "3")]
5114    pub channel_5ghz: u32,
5115    #[prost(uint32, tag = "4")]
5116    pub channel_5ghz_high: u32,
5117    #[prost(uint32, tag = "5")]
5118    pub mcs_2ghz: u32,
5119    #[prost(uint32, tag = "6")]
5120    pub mcs_5ghz: u32,
5121    #[prost(uint32, tag = "7")]
5122    pub mcs_5ghz_high: u32,
5123    #[prost(uint32, tag = "8")]
5124    pub phy_mode_2ghz: u32,
5125    #[prost(uint32, tag = "9")]
5126    pub phy_mode_5ghz: u32,
5127    #[prost(uint32, tag = "10")]
5128    pub phy_mode_5ghz_high: u32,
5129}
5130#[derive(Clone, PartialEq, ::prost::Message)]
5131pub struct WifiRfTestResponse {
5132    #[prost(string, tag = "1")]
5133    pub report: ::prost::alloc::string::String,
5134}
5135#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5136pub struct WifiGetFirewallRequest {}
5137#[derive(Clone, PartialEq, ::prost::Message)]
5138pub struct WifiGetFirewallResponse {
5139    #[prost(string, tag = "1")]
5140    pub iptables: ::prost::alloc::string::String,
5141    #[prost(string, tag = "2")]
5142    pub iptables_6: ::prost::alloc::string::String,
5143}
5144#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5145pub struct WifiTogglePoeNegotiationRequest {
5146    #[prost(bool, tag = "1")]
5147    pub enable: bool,
5148}
5149#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5150pub struct WifiCalibrationModeRequest {}
5151#[derive(Clone, PartialEq, ::prost::Message)]
5152pub struct StarlinkRouterHourlyMetricsV2 {
5153    #[prost(message, optional, tag = "1")]
5154    pub id: ::core::option::Option<::prost::alloc::string::String>,
5155    #[prost(message, optional, tag = "2")]
5156    pub timestamp_date: ::core::option::Option<::prost::alloc::string::String>,
5157    #[prost(message, optional, tag = "3")]
5158    pub timestamp_hour: ::core::option::Option<u32>,
5159    #[prost(message, optional, tag = "4")]
5160    pub sys_hw_gen: ::core::option::Option<u32>,
5161    #[prost(message, optional, tag = "5")]
5162    pub sys_sw: ::core::option::Option<::prost::alloc::string::String>,
5163    #[prost(message, optional, tag = "6")]
5164    pub sys_country: ::core::option::Option<::prost::alloc::string::String>,
5165    #[prost(message, optional, tag = "7")]
5166    pub sys_is_dev: ::core::option::Option<bool>,
5167    #[prost(message, optional, tag = "8")]
5168    pub sys_alloc_fds: ::core::option::Option<u32>,
5169    #[prost(message, optional, tag = "9")]
5170    pub sys_cpu_usage: ::core::option::Option<f32>,
5171    #[prost(message, optional, tag = "10")]
5172    pub sys_mem_free_kb: ::core::option::Option<f32>,
5173    #[prost(message, optional, tag = "11")]
5174    pub sys_bootcount: ::core::option::Option<i32>,
5175    #[prost(message, optional, tag = "12")]
5176    pub sys_partitions_equal: ::core::option::Option<bool>,
5177    #[prost(message, optional, tag = "13")]
5178    pub sys_uptime_seconds: ::core::option::Option<u32>,
5179    #[prost(message, optional, tag = "14")]
5180    pub sys_anti_rollback_version: ::core::option::Option<i32>,
5181    #[prost(message, optional, tag = "100")]
5182    pub radios_2ghz_channel: ::core::option::Option<u32>,
5183    #[prost(message, optional, tag = "101")]
5184    pub radios_2ghz_antenna1_rssi: ::core::option::Option<f32>,
5185    #[prost(message, optional, tag = "102")]
5186    pub radios_2ghz_antenna2_rssi: ::core::option::Option<f32>,
5187    #[prost(message, optional, tag = "103")]
5188    pub radios_2ghz_antenna3_rssi: ::core::option::Option<f32>,
5189    #[prost(message, optional, tag = "104")]
5190    pub radios_2ghz_iface_count: ::core::option::Option<u32>,
5191    #[prost(message, optional, tag = "105")]
5192    pub radios_2ghz_chan_busy_fraction: ::core::option::Option<f32>,
5193    #[prost(message, optional, tag = "106")]
5194    pub radios_2ghz_edcca_fraction: ::core::option::Option<f32>,
5195    #[prost(message, optional, tag = "107")]
5196    pub radios_2ghz_overlapping_bss_fraction: ::core::option::Option<f32>,
5197    #[prost(message, optional, tag = "108")]
5198    pub radios_2ghz_rx_bytes: ::core::option::Option<u32>,
5199    #[prost(message, optional, tag = "109")]
5200    pub radios_2ghz_rx_packets: ::core::option::Option<u32>,
5201    #[prost(message, optional, tag = "110")]
5202    pub radios_2ghz_rx_errors: ::core::option::Option<u32>,
5203    #[prost(message, optional, tag = "111")]
5204    pub radios_2ghz_rx_frame_errors: ::core::option::Option<u32>,
5205    #[prost(message, optional, tag = "112")]
5206    pub radios_2ghz_rx_packet_error_rate: ::core::option::Option<f32>,
5207    #[prost(message, optional, tag = "113")]
5208    pub radios_2ghz_rx_airtime_fraction: ::core::option::Option<f32>,
5209    #[prost(message, optional, tag = "114")]
5210    pub radios_2ghz_tx_bytes: ::core::option::Option<u32>,
5211    #[prost(message, optional, tag = "115")]
5212    pub radios_2ghz_tx_packets: ::core::option::Option<u32>,
5213    #[prost(message, optional, tag = "116")]
5214    pub radios_2ghz_tx_errors: ::core::option::Option<u32>,
5215    #[prost(message, optional, tag = "117")]
5216    pub radios_2ghz_tx_packet_error_rate: ::core::option::Option<f32>,
5217    #[prost(message, optional, tag = "118")]
5218    pub radios_2ghz_tx_airtime_fraction: ::core::option::Option<f32>,
5219    #[prost(message, optional, tag = "119")]
5220    pub radios_5ghz_channel: ::core::option::Option<u32>,
5221    #[prost(message, optional, tag = "120")]
5222    pub radios_5ghz_antenna1_rssi: ::core::option::Option<f32>,
5223    #[prost(message, optional, tag = "121")]
5224    pub radios_5ghz_antenna2_rssi: ::core::option::Option<f32>,
5225    #[prost(message, optional, tag = "122")]
5226    pub radios_5ghz_antenna3_rssi: ::core::option::Option<f32>,
5227    #[prost(message, optional, tag = "123")]
5228    pub radios_5ghz_iface_count: ::core::option::Option<u32>,
5229    #[prost(message, optional, tag = "124")]
5230    pub radios_5ghz_chan_busy_fraction: ::core::option::Option<f32>,
5231    #[prost(message, optional, tag = "125")]
5232    pub radios_5ghz_edcca_fraction: ::core::option::Option<f32>,
5233    #[prost(message, optional, tag = "126")]
5234    pub radios_5ghz_overlapping_bss_fraction: ::core::option::Option<f32>,
5235    #[prost(message, optional, tag = "127")]
5236    pub radios_5ghz_rx_bytes: ::core::option::Option<u32>,
5237    #[prost(message, optional, tag = "128")]
5238    pub radios_5ghz_rx_packets: ::core::option::Option<u32>,
5239    #[prost(message, optional, tag = "129")]
5240    pub radios_5ghz_rx_errors: ::core::option::Option<u32>,
5241    #[prost(message, optional, tag = "130")]
5242    pub radios_5ghz_rx_frame_errors: ::core::option::Option<u32>,
5243    #[prost(message, optional, tag = "131")]
5244    pub radios_5ghz_rx_packet_error_rate: ::core::option::Option<f32>,
5245    #[prost(message, optional, tag = "132")]
5246    pub radios_5ghz_rx_airtime_fraction: ::core::option::Option<f32>,
5247    #[prost(message, optional, tag = "133")]
5248    pub radios_5ghz_tx_bytes: ::core::option::Option<u32>,
5249    #[prost(message, optional, tag = "134")]
5250    pub radios_5ghz_tx_packets: ::core::option::Option<u32>,
5251    #[prost(message, optional, tag = "135")]
5252    pub radios_5ghz_tx_errors: ::core::option::Option<u32>,
5253    #[prost(message, optional, tag = "136")]
5254    pub radios_5ghz_tx_packet_error_rate: ::core::option::Option<f32>,
5255    #[prost(message, optional, tag = "137")]
5256    pub radios_5ghz_tx_airtime_fraction: ::core::option::Option<f32>,
5257    #[prost(message, optional, tag = "200")]
5258    pub radios_2ghz_thermal_temp: ::core::option::Option<f32>,
5259    #[prost(message, optional, tag = "201")]
5260    pub radios_5ghz_thermal_temp: ::core::option::Option<f32>,
5261    #[prost(message, optional, tag = "202")]
5262    pub radios_2ghz_thermal_duty_cycle: ::core::option::Option<f32>,
5263    #[prost(message, optional, tag = "203")]
5264    pub radios_5ghz_thermal_duty_cycle: ::core::option::Option<f32>,
5265    #[prost(message, optional, tag = "204")]
5266    pub radios_2ghz_thermal_throttled_seconds: ::core::option::Option<u32>,
5267    #[prost(message, optional, tag = "205")]
5268    pub radios_5ghz_thermal_throttled_seconds: ::core::option::Option<u32>,
5269    #[prost(message, optional, tag = "300")]
5270    pub ifaces_lan_eth_rx_bytes: ::core::option::Option<u32>,
5271    #[prost(message, optional, tag = "301")]
5272    pub ifaces_lan_eth_rx_packets: ::core::option::Option<u32>,
5273    #[prost(message, optional, tag = "302")]
5274    pub ifaces_lan_eth_rx_errors: ::core::option::Option<u32>,
5275    #[prost(message, optional, tag = "303")]
5276    pub ifaces_lan_eth_rx_frame_errors: ::core::option::Option<u32>,
5277    #[prost(message, optional, tag = "304")]
5278    pub ifaces_lan_eth_tx_bytes: ::core::option::Option<u32>,
5279    #[prost(message, optional, tag = "305")]
5280    pub ifaces_lan_eth_tx_packets: ::core::option::Option<u32>,
5281    #[prost(message, optional, tag = "306")]
5282    pub ifaces_lan_eth_tx_errors: ::core::option::Option<u32>,
5283    #[prost(message, optional, tag = "307")]
5284    pub ifaces_wan_eth_rx_bytes: ::core::option::Option<u32>,
5285    #[prost(message, optional, tag = "308")]
5286    pub ifaces_wan_eth_rx_packets: ::core::option::Option<u32>,
5287    #[prost(message, optional, tag = "309")]
5288    pub ifaces_wan_eth_rx_errors: ::core::option::Option<u32>,
5289    #[prost(message, optional, tag = "310")]
5290    pub ifaces_wan_eth_rx_frame_errors: ::core::option::Option<u32>,
5291    #[prost(message, optional, tag = "311")]
5292    pub ifaces_wan_eth_tx_bytes: ::core::option::Option<u32>,
5293    #[prost(message, optional, tag = "312")]
5294    pub ifaces_wan_eth_tx_packets: ::core::option::Option<u32>,
5295    #[prost(message, optional, tag = "313")]
5296    pub ifaces_wan_eth_tx_errors: ::core::option::Option<u32>,
5297    #[prost(message, optional, tag = "400")]
5298    pub clients: ::core::option::Option<u32>,
5299    #[prost(message, optional, tag = "401")]
5300    pub clients_2ghz: ::core::option::Option<u32>,
5301    #[prost(message, optional, tag = "402")]
5302    pub clients_5ghz: ::core::option::Option<u32>,
5303    #[prost(message, optional, tag = "403")]
5304    pub clients_eth: ::core::option::Option<u32>,
5305    #[prost(message, optional, tag = "404")]
5306    pub clients_repeater: ::core::option::Option<u32>,
5307    #[prost(message, optional, tag = "405")]
5308    pub clients_repeater_2ghz: ::core::option::Option<u32>,
5309    #[prost(message, optional, tag = "406")]
5310    pub clients_repeater_5ghz: ::core::option::Option<u32>,
5311    #[prost(message, optional, tag = "407")]
5312    pub clients_repeater_eth: ::core::option::Option<u32>,
5313    #[prost(message, optional, tag = "408")]
5314    pub mesh_hops: ::core::option::Option<u32>,
5315    #[prost(message, optional, tag = "409")]
5316    pub mesh_one_hop_rssi_avg_2ghz: ::core::option::Option<f32>,
5317    #[prost(message, optional, tag = "410")]
5318    pub mesh_one_hop_rssi_avg_5ghz: ::core::option::Option<f32>,
5319    #[prost(message, optional, tag = "411")]
5320    pub mesh_two_hop_rssi_avg_2ghz: ::core::option::Option<f32>,
5321    #[prost(message, optional, tag = "412")]
5322    pub mesh_two_hop_rssi_avg_5ghz: ::core::option::Option<f32>,
5323    #[prost(message, optional, tag = "600")]
5324    pub ping_seconds_since_last_1s_outage: ::core::option::Option<f32>,
5325    #[prost(message, optional, tag = "601")]
5326    pub ping_seconds_since_last_2s_outage: ::core::option::Option<f32>,
5327    #[prost(message, optional, tag = "602")]
5328    pub ping_seconds_since_last_5s_outage: ::core::option::Option<f32>,
5329    #[prost(message, optional, tag = "603")]
5330    pub ping_seconds_since_last_60s_outage: ::core::option::Option<f32>,
5331    #[prost(message, optional, tag = "604")]
5332    pub ping_seconds_since_last_300s_outage: ::core::option::Option<f32>,
5333    #[prost(message, optional, tag = "605")]
5334    pub ping_drop_rate: ::core::option::Option<f32>,
5335    #[prost(message, optional, tag = "606")]
5336    pub ping_drop_rate_last_1h: ::core::option::Option<f32>,
5337    #[prost(message, optional, tag = "607")]
5338    pub ping_latency: ::core::option::Option<f32>,
5339    #[prost(message, optional, tag = "610")]
5340    pub ping_dish_seconds_since_last_1s_outage: ::core::option::Option<f32>,
5341    #[prost(message, optional, tag = "611")]
5342    pub ping_dish_seconds_since_last_2s_outage: ::core::option::Option<f32>,
5343    #[prost(message, optional, tag = "612")]
5344    pub ping_dish_seconds_since_last_5s_outage: ::core::option::Option<f32>,
5345    #[prost(message, optional, tag = "613")]
5346    pub ping_dish_seconds_since_last_60s_outage: ::core::option::Option<f32>,
5347    #[prost(message, optional, tag = "614")]
5348    pub ping_dish_seconds_since_last_300s_outage: ::core::option::Option<f32>,
5349    #[prost(message, optional, tag = "615")]
5350    pub ping_dish_drop_rate: ::core::option::Option<f32>,
5351    #[prost(message, optional, tag = "616")]
5352    pub ping_dish_drop_rate_last_1h: ::core::option::Option<f32>,
5353    #[prost(message, optional, tag = "617")]
5354    pub ping_dish_latency: ::core::option::Option<f32>,
5355    #[prost(message, optional, tag = "700")]
5356    pub client_speedtest_router_download_mbps: ::core::option::Option<f32>,
5357    #[prost(message, optional, tag = "701")]
5358    pub client_speedtest_router_upload_mbps: ::core::option::Option<f32>,
5359    #[prost(message, optional, tag = "702")]
5360    pub client_speedtest_router_rssi: ::core::option::Option<f32>,
5361    #[prost(message, optional, tag = "703")]
5362    pub client_speedtest_wifi_download_mbps: ::core::option::Option<f32>,
5363    #[prost(message, optional, tag = "704")]
5364    pub client_speedtest_wifi_upload_mbps: ::core::option::Option<f32>,
5365    #[prost(message, optional, tag = "705")]
5366    pub client_speedtest_client_download_mbps: ::core::option::Option<f32>,
5367    #[prost(message, optional, tag = "706")]
5368    pub client_speedtest_client_upload_mbps: ::core::option::Option<f32>,
5369    #[prost(message, optional, tag = "707")]
5370    pub client_speedtest_client_rssi: ::core::option::Option<f32>,
5371    #[prost(message, optional, tag = "708")]
5372    pub client_speedtest_client_iface: ::core::option::Option<u32>,
5373    #[prost(message, optional, tag = "709")]
5374    pub client_speedtest_client_oui: ::core::option::Option<
5375        ::prost::alloc::string::String,
5376    >,
5377    #[prost(message, optional, tag = "710")]
5378    pub client_speedtest_client_tx_rate: ::core::option::Option<u32>,
5379    #[prost(message, optional, tag = "711")]
5380    pub client_speedtest_client_rx_rate: ::core::option::Option<u32>,
5381    #[prost(message, optional, tag = "712")]
5382    pub client_speedtest_client_platform_type: ::core::option::Option<u32>,
5383    #[prost(message, optional, tag = "800")]
5384    pub speedtest_tcp_8_download_mbps_avg: ::core::option::Option<f32>,
5385    #[prost(message, optional, tag = "801")]
5386    pub speedtest_tcp_8_download_mbps_max: ::core::option::Option<f32>,
5387    #[prost(message, optional, tag = "802")]
5388    pub speedtest_tcp_8_upload_mbps_avg: ::core::option::Option<f32>,
5389    #[prost(message, optional, tag = "803")]
5390    pub speedtest_tcp_8_upload_mbps_max: ::core::option::Option<f32>,
5391    #[prost(message, optional, tag = "804")]
5392    pub speedtest_tcp_64_download_mbps_avg: ::core::option::Option<f32>,
5393    #[prost(message, optional, tag = "805")]
5394    pub speedtest_tcp_64_download_mbps_max: ::core::option::Option<f32>,
5395    #[prost(message, optional, tag = "806")]
5396    pub speedtest_tcp_64_upload_mbps_avg: ::core::option::Option<f32>,
5397    #[prost(message, optional, tag = "807")]
5398    pub speedtest_tcp_64_upload_mbps_max: ::core::option::Option<f32>,
5399    #[prost(message, optional, tag = "900")]
5400    pub dish_cell_id: ::core::option::Option<u32>,
5401    #[prost(message, optional, tag = "1000")]
5402    pub config_setup_complete: ::core::option::Option<bool>,
5403    #[prost(message, optional, tag = "1001")]
5404    pub config_bands_split: ::core::option::Option<bool>,
5405    #[prost(message, optional, tag = "1002")]
5406    pub config_is_repeater: ::core::option::Option<bool>,
5407    #[prost(message, optional, tag = "1003")]
5408    pub config_open_network: ::core::option::Option<bool>,
5409    #[prost(message, optional, tag = "1004")]
5410    pub config_is_aviation: ::core::option::Option<bool>,
5411    #[prost(message, optional, tag = "1005")]
5412    pub config_secure_dns: ::core::option::Option<bool>,
5413    #[prost(message, optional, tag = "1006")]
5414    pub config_legacy: ::core::option::Option<bool>,
5415    #[prost(message, optional, tag = "1007")]
5416    pub config_ap_mode: ::core::option::Option<bool>,
5417    #[prost(message, optional, tag = "1008")]
5418    pub config_dfs_enabled: ::core::option::Option<bool>,
5419    #[prost(message, optional, tag = "1009")]
5420    pub config_network_name_is_default: ::core::option::Option<bool>,
5421    #[deprecated]
5422    #[prost(message, optional, tag = "1010")]
5423    pub config_remote_ssh_enabled: ::core::option::Option<bool>,
5424}
5425#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5426pub struct WifiGuestInfoRequest {}
5427#[derive(Clone, PartialEq, ::prost::Message)]
5428pub struct WifiGuestInfoResponse {
5429    #[prost(bool, tag = "1")]
5430    pub is_guest: bool,
5431    #[prost(bool, tag = "2")]
5432    pub is_online: bool,
5433    #[prost(string, tag = "3")]
5434    pub router_hardware_version: ::prost::alloc::string::String,
5435    #[prost(string, tag = "4")]
5436    pub dish_hardware_version: ::prost::alloc::string::String,
5437    #[prost(bool, tag = "5")]
5438    pub is_router_aviation_conformed: bool,
5439}
5440#[derive(Clone, PartialEq, ::prost::Message)]
5441pub struct WifiFactoryTestCommandRequest {
5442    #[prost(oneof = "wifi_factory_test_command_request::Command", tags = "1, 2, 3")]
5443    pub command: ::core::option::Option<wifi_factory_test_command_request::Command>,
5444}
5445/// Nested message and enum types in `WifiFactoryTestCommandRequest`.
5446pub mod wifi_factory_test_command_request {
5447    #[derive(Clone, PartialEq, ::prost::Oneof)]
5448    pub enum Command {
5449        #[prost(message, tag = "1")]
5450        IwprivCommand(super::IwprivCommand),
5451        #[prost(message, tag = "2")]
5452        IpLinkSetCommand(super::IpLinkSetCommand),
5453        #[prost(message, tag = "3")]
5454        IpAddrSetCommand(super::IpAddrSetCommand),
5455    }
5456}
5457#[derive(Clone, PartialEq, ::prost::Message)]
5458pub struct WifiFactoryTestCommandResponse {
5459    #[prost(string, tag = "1")]
5460    pub response: ::prost::alloc::string::String,
5461}
5462#[derive(Clone, PartialEq, ::prost::Message)]
5463pub struct IwprivCommand {
5464    #[prost(string, tag = "1")]
5465    pub iface: ::prost::alloc::string::String,
5466    #[prost(string, tag = "2")]
5467    pub arg: ::prost::alloc::string::String,
5468    #[prost(enumeration = "iwpriv_command::Ioctl", tag = "3")]
5469    pub ioctl: i32,
5470}
5471/// Nested message and enum types in `IwprivCommand`.
5472pub mod iwpriv_command {
5473    #[derive(
5474        Clone,
5475        Copy,
5476        Debug,
5477        PartialEq,
5478        Eq,
5479        Hash,
5480        PartialOrd,
5481        Ord,
5482        ::prost::Enumeration
5483    )]
5484    #[repr(i32)]
5485    pub enum Ioctl {
5486        Set = 0,
5487        E2p = 1,
5488        Mac = 3,
5489        SxAllow5ghzHigh = 4,
5490    }
5491    impl Ioctl {
5492        /// String value of the enum field names used in the ProtoBuf definition.
5493        ///
5494        /// The values are not transformed in any way and thus are considered stable
5495        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5496        pub fn as_str_name(&self) -> &'static str {
5497            match self {
5498                Self::Set => "IOCTL_SET",
5499                Self::E2p => "IOCTL_E2P",
5500                Self::Mac => "IOCTL_MAC",
5501                Self::SxAllow5ghzHigh => "IOCTL_SX_ALLOW_5GHZ_HIGH",
5502            }
5503        }
5504        /// Creates an enum from field names used in the ProtoBuf definition.
5505        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5506            match value {
5507                "IOCTL_SET" => Some(Self::Set),
5508                "IOCTL_E2P" => Some(Self::E2p),
5509                "IOCTL_MAC" => Some(Self::Mac),
5510                "IOCTL_SX_ALLOW_5GHZ_HIGH" => Some(Self::SxAllow5ghzHigh),
5511                _ => None,
5512            }
5513        }
5514    }
5515}
5516#[derive(Clone, PartialEq, ::prost::Message)]
5517pub struct IpLinkSetCommand {
5518    #[prost(string, tag = "1")]
5519    pub iface: ::prost::alloc::string::String,
5520    #[prost(bool, tag = "2")]
5521    pub up: bool,
5522}
5523#[derive(Clone, PartialEq, ::prost::Message)]
5524pub struct IpAddrSetCommand {
5525    #[prost(string, tag = "1")]
5526    pub iface: ::prost::alloc::string::String,
5527    #[prost(bool, tag = "2")]
5528    pub add: bool,
5529    #[prost(string, tag = "3")]
5530    pub cidr: ::prost::alloc::string::String,
5531}
5532#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5533pub struct WifiStartLocalTelemProxyRequest {
5534    #[prost(int32, tag = "1")]
5535    pub port: i32,
5536}
5537#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5538pub struct WifiBackhaulStatsRequest {}
5539#[derive(Clone, PartialEq, ::prost::Message)]
5540pub struct WifiBackhaulStatsResponse {
5541    #[prost(bool, tag = "1")]
5542    pub success: bool,
5543    #[prost(string, tag = "2")]
5544    pub bssid: ::prost::alloc::string::String,
5545    #[prost(enumeration = "IfaceType", tag = "3")]
5546    pub iface: i32,
5547    #[prost(uint32, tag = "4")]
5548    pub preference: u32,
5549    #[prost(message, repeated, tag = "5")]
5550    pub site_survey_scan: ::prost::alloc::vec::Vec<WifiSiteSurveyResult>,
5551}
5552#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5553pub struct WifiToggleUmbilicalModeRequest {
5554    #[prost(bool, tag = "1")]
5555    pub enable: bool,
5556}
5557#[derive(Clone, PartialEq, ::prost::Message)]
5558pub struct WifiUpdateResponse {
5559    #[prost(message, optional, tag = "1")]
5560    pub stats: ::core::option::Option<WifiSoftwareUpdateStats>,
5561}
5562/// Generated client implementations.
5563pub mod mesh_client {
5564    #![allow(
5565        unused_variables,
5566        dead_code,
5567        missing_docs,
5568        clippy::wildcard_imports,
5569        clippy::let_unit_value,
5570    )]
5571    use tonic::codegen::*;
5572    use tonic::codegen::http::Uri;
5573    #[derive(Debug, Clone)]
5574    pub struct MeshClient<T> {
5575        inner: tonic::client::Grpc<T>,
5576    }
5577    impl MeshClient<tonic::transport::Channel> {
5578        /// Attempt to create a new client by connecting to a given endpoint.
5579        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
5580        where
5581            D: TryInto<tonic::transport::Endpoint>,
5582            D::Error: Into<StdError>,
5583        {
5584            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
5585            Ok(Self::new(conn))
5586        }
5587    }
5588    impl<T> MeshClient<T>
5589    where
5590        T: tonic::client::GrpcService<tonic::body::Body>,
5591        T::Error: Into<StdError>,
5592        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
5593        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
5594    {
5595        pub fn new(inner: T) -> Self {
5596            let inner = tonic::client::Grpc::new(inner);
5597            Self { inner }
5598        }
5599        pub fn with_origin(inner: T, origin: Uri) -> Self {
5600            let inner = tonic::client::Grpc::with_origin(inner, origin);
5601            Self { inner }
5602        }
5603        pub fn with_interceptor<F>(
5604            inner: T,
5605            interceptor: F,
5606        ) -> MeshClient<InterceptedService<T, F>>
5607        where
5608            F: tonic::service::Interceptor,
5609            T::ResponseBody: Default,
5610            T: tonic::codegen::Service<
5611                http::Request<tonic::body::Body>,
5612                Response = http::Response<
5613                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
5614                >,
5615            >,
5616            <T as tonic::codegen::Service<
5617                http::Request<tonic::body::Body>,
5618            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
5619        {
5620            MeshClient::new(InterceptedService::new(inner, interceptor))
5621        }
5622        /// Compress requests with the given encoding.
5623        ///
5624        /// This requires the server to support it otherwise it might respond with an
5625        /// error.
5626        #[must_use]
5627        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
5628            self.inner = self.inner.send_compressed(encoding);
5629            self
5630        }
5631        /// Enable decompressing responses.
5632        #[must_use]
5633        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
5634            self.inner = self.inner.accept_compressed(encoding);
5635            self
5636        }
5637        /// Limits the maximum size of a decoded message.
5638        ///
5639        /// Default: `4MB`
5640        #[must_use]
5641        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
5642            self.inner = self.inner.max_decoding_message_size(limit);
5643            self
5644        }
5645        /// Limits the maximum size of an encoded message.
5646        ///
5647        /// Default: `usize::MAX`
5648        #[must_use]
5649        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
5650            self.inner = self.inner.max_encoding_message_size(limit);
5651            self
5652        }
5653        pub async fn mesh_stream(
5654            &mut self,
5655            request: impl tonic::IntoStreamingRequest<Message = super::ToController>,
5656        ) -> std::result::Result<
5657            tonic::Response<tonic::codec::Streaming<super::FromController>>,
5658            tonic::Status,
5659        > {
5660            self.inner
5661                .ready()
5662                .await
5663                .map_err(|e| {
5664                    tonic::Status::unknown(
5665                        format!("Service was not ready: {}", e.into()),
5666                    )
5667                })?;
5668            let codec = tonic::codec::ProstCodec::default();
5669            let path = http::uri::PathAndQuery::from_static(
5670                "/SpaceX.API.Device.Mesh/MeshStream",
5671            );
5672            let mut req = request.into_streaming_request();
5673            req.extensions_mut()
5674                .insert(GrpcMethod::new("SpaceX.API.Device.Mesh", "MeshStream"));
5675            self.inner.streaming(req, path, codec).await
5676        }
5677    }
5678}
5679#[derive(Clone, PartialEq, ::prost::Message)]
5680pub struct ToDevice {
5681    #[prost(oneof = "to_device::Message", tags = "1, 2")]
5682    pub message: ::core::option::Option<to_device::Message>,
5683}
5684/// Nested message and enum types in `ToDevice`.
5685pub mod to_device {
5686    #[derive(Clone, PartialEq, ::prost::Oneof)]
5687    pub enum Message {
5688        #[prost(message, tag = "1")]
5689        Request(super::Request),
5690        #[prost(message, tag = "2")]
5691        HealthCheck(super::HealthCheck),
5692    }
5693}
5694#[derive(Clone, PartialEq, ::prost::Message)]
5695pub struct FromDevice {
5696    #[prost(oneof = "from_device::Message", tags = "1, 2, 3")]
5697    pub message: ::core::option::Option<from_device::Message>,
5698}
5699/// Nested message and enum types in `FromDevice`.
5700pub mod from_device {
5701    #[derive(Clone, PartialEq, ::prost::Oneof)]
5702    pub enum Message {
5703        #[prost(message, tag = "1")]
5704        Response(super::Response),
5705        #[prost(message, tag = "2")]
5706        Event(super::Event),
5707        #[prost(message, tag = "3")]
5708        HealthCheck(super::HealthCheck),
5709    }
5710}
5711#[derive(Clone, PartialEq, ::prost::Message)]
5712pub struct SensitiveCommand {
5713    #[prost(message, optional, tag = "1")]
5714    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
5715    #[prost(string, tag = "2")]
5716    pub target_id: ::prost::alloc::string::String,
5717    #[prost(oneof = "sensitive_command::Request", tags = "3")]
5718    pub request: ::core::option::Option<sensitive_command::Request>,
5719}
5720/// Nested message and enum types in `SensitiveCommand`.
5721pub mod sensitive_command {
5722    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
5723    pub enum Request {
5724        #[prost(message, tag = "3")]
5725        GetLocation(super::GetLocationRequest),
5726    }
5727}
5728#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5729pub struct HealthCheck {}
5730#[derive(Clone, PartialEq, ::prost::Message)]
5731pub struct Request {
5732    #[prost(uint64, tag = "1")]
5733    pub id: u64,
5734    #[prost(uint64, tag = "14")]
5735    pub epoch_id: u64,
5736    #[prost(string, tag = "13")]
5737    pub target_id: ::prost::alloc::string::String,
5738    #[prost(
5739        oneof = "request::Request",
5740        tags = "15, 1006, 1078, 1005, 1034, 1011, 1008, 1007, 1012, 1015, 1009, 1016, 1004, 1001, 1013, 1010, 1003, 1014, 1017, 1019, 1020, 1021, 1022, 1023, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 2002, 2003, 2008, 2007, 2009, 2010, 2011, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 3002, 3007, 3001, 3009, 3003, 3012, 3013, 3015, 3017, 3016, 3018, 3028, 3019, 3020, 3021, 3024, 3025, 3026, 3027, 3029, 3030, 3031, 4001, 4003, 4004, 5000, 5001, 6000"
5741    )]
5742    pub request: ::core::option::Option<request::Request>,
5743}
5744/// Nested message and enum types in `Request`.
5745pub mod request {
5746    #[derive(Clone, PartialEq, ::prost::Oneof)]
5747    pub enum Request {
5748        #[prost(message, tag = "15")]
5749        SignedRequest(super::SignedData),
5750        #[prost(message, tag = "1006")]
5751        GetNextId(super::GetNextIdRequest),
5752        #[prost(message, tag = "1078")]
5753        SensitiveRequest(super::SignedData),
5754        #[prost(message, tag = "1005")]
5755        Authenticate(super::AuthenticateRequest),
5756        #[prost(message, tag = "1034")]
5757        EnableDebugTelem(super::EnableDebugTelemRequest),
5758        #[prost(message, tag = "1011")]
5759        FactoryReset(super::FactoryResetRequest),
5760        #[prost(message, tag = "1008")]
5761        GetDeviceInfo(super::GetDeviceInfoRequest),
5762        #[prost(message, tag = "1007")]
5763        GetHistory(super::GetHistoryRequest),
5764        #[prost(message, tag = "1012")]
5765        GetLog(super::GetLogRequest),
5766        #[prost(message, tag = "1015")]
5767        GetNetworkInterfaces(super::GetNetworkInterfacesRequest),
5768        #[prost(message, tag = "1009")]
5769        GetPing(super::GetPingRequest),
5770        #[prost(message, tag = "1016")]
5771        PingHost(super::PingHostRequest),
5772        #[prost(message, tag = "1004")]
5773        GetStatus(super::GetStatusRequest),
5774        #[prost(message, tag = "1001")]
5775        Reboot(super::RebootRequest),
5776        #[prost(message, tag = "1013")]
5777        SetSku(super::SetSkuRequest),
5778        #[prost(message, tag = "1010")]
5779        SetTrustedKeys(super::SetTrustedKeysRequest),
5780        #[prost(message, tag = "1003")]
5781        SpeedTest(super::SpeedTestRequest),
5782        #[prost(message, tag = "1014")]
5783        Update(super::UpdateRequest),
5784        #[prost(message, tag = "1017")]
5785        GetLocation(super::GetLocationRequest),
5786        #[prost(message, tag = "1019")]
5787        GetHeapDump(super::GetHeapDumpRequest),
5788        #[prost(message, tag = "1020")]
5789        RestartControl(super::RestartControlRequest),
5790        #[prost(message, tag = "1021")]
5791        Fuse(super::FuseRequest),
5792        #[prost(message, tag = "1022")]
5793        GetPersistentStats(super::GetPersistentStatsRequest),
5794        #[prost(message, tag = "1023")]
5795        GetConnections(super::GetConnectionsRequest),
5796        #[prost(message, tag = "1027")]
5797        StartSpeedtest(super::StartSpeedtestRequest),
5798        #[prost(message, tag = "1028")]
5799        GetSpeedtestStatus(super::GetSpeedtestStatusRequest),
5800        #[prost(message, tag = "1029")]
5801        ReportClientSpeedtest(super::ReportClientSpeedtestRequest),
5802        #[prost(message, tag = "1030")]
5803        InitiateRemoteSsh(super::InitiateRemoteSshRequest),
5804        #[prost(message, tag = "1031")]
5805        SelfTest(super::SelfTestRequest),
5806        #[prost(message, tag = "1032")]
5807        SetTestMode(super::SetTestModeRequest),
5808        #[prost(message, tag = "1033")]
5809        SoftwareUpdate(super::SoftwareUpdateRequest),
5810        #[prost(message, tag = "1035")]
5811        IqCapture(super::IqCaptureRequest),
5812        #[prost(message, tag = "1036")]
5813        GetRadioStats(super::GetRadioStatsRequest),
5814        #[prost(message, tag = "1037")]
5815        Time(super::GetTimeRequest),
5816        #[prost(message, tag = "1038")]
5817        RunIperfServer(super::RunIperfServerRequest),
5818        #[prost(message, tag = "1039")]
5819        TcpConnectivityTest(super::TcpConnectivityTestRequest),
5820        #[prost(message, tag = "1040")]
5821        UdpConnectivityTest(super::UdpConnectivityTestRequest),
5822        #[prost(message, tag = "1041")]
5823        GetGoroutineStackTraces(super::GetGoroutineStackTracesRequest),
5824        #[prost(message, tag = "2002")]
5825        DishStow(super::DishStowRequest),
5826        #[prost(message, tag = "2003")]
5827        DishGetContext(super::DishGetContextRequest),
5828        #[prost(message, tag = "2008")]
5829        DishGetObstructionMap(super::DishGetObstructionMapRequest),
5830        #[prost(message, tag = "2007")]
5831        DishSetEmc(super::DishSetEmcRequest),
5832        #[prost(message, tag = "2009")]
5833        DishGetEmc(super::DishGetEmcRequest),
5834        #[prost(message, tag = "2010")]
5835        DishSetConfig(super::DishSetConfigRequest),
5836        #[prost(message, tag = "2011")]
5837        DishGetConfig(super::DishGetConfigRequest),
5838        #[prost(message, tag = "2013")]
5839        DishPowerSave(super::DishPowerSaveRequest),
5840        #[prost(message, tag = "2014")]
5841        DishInhibitGps(super::DishInhibitGpsRequest),
5842        #[prost(message, tag = "2015")]
5843        DishGetData(super::DishGetDataRequest),
5844        #[prost(message, tag = "2017")]
5845        DishClearObstructionMap(super::DishClearObstructionMapRequest),
5846        #[prost(message, tag = "2018")]
5847        DishSetMaxPowerTestMode(super::DishSetMaxPowerTestModeRequest),
5848        #[prost(message, tag = "2019")]
5849        DishActivateRssiScan(super::DishActivateRssiScanRequest),
5850        #[prost(message, tag = "2020")]
5851        DishGetRssiScanResult(super::DishGetRssiScanResultRequest),
5852        #[prost(message, tag = "2021")]
5853        DishFactoryReset(super::DishFactoryResetRequest),
5854        #[prost(message, tag = "2022")]
5855        ResetButton(super::ResetButtonRequest),
5856        #[prost(message, tag = "2023")]
5857        SetPerVehicleConfig(super::SoftwareUpdateRequest),
5858        #[prost(message, tag = "3002")]
5859        WifiGetClients(super::WifiGetClientsRequest),
5860        #[prost(message, tag = "3007")]
5861        WifiGetPingMetrics(super::WifiGetPingMetricsRequest),
5862        #[prost(message, tag = "3001")]
5863        WifiSetConfig(super::WifiSetConfigRequest),
5864        #[prost(message, tag = "3009")]
5865        WifiGetConfig(super::WifiGetConfigRequest),
5866        #[prost(message, tag = "3003")]
5867        WifiSetup(super::WifiSetupRequest),
5868        #[prost(message, tag = "3012")]
5869        WifiSetMeshDeviceTrust(super::WifiSetMeshDeviceTrustRequest),
5870        #[prost(message, tag = "3013")]
5871        WifiSetMeshConfig(super::WifiSetMeshConfigRequest),
5872        #[prost(message, tag = "3015")]
5873        WifiGetClientHistory(super::WifiGetClientHistoryRequest),
5874        #[prost(message, tag = "3017")]
5875        WifiSetClientGivenName(super::WifiSetClientGivenNameRequest),
5876        #[prost(message, tag = "3016")]
5877        WifiSetAviationConformed(super::WifiSetAviationConformedRequest),
5878        #[prost(message, tag = "3018")]
5879        WifiSelfTest(super::WifiSelfTestRequest),
5880        #[prost(message, tag = "3028")]
5881        WifiRunSelfTest(super::WifiRunSelfTestRequest),
5882        #[prost(message, tag = "3019")]
5883        WifiCalibrationMode(super::WifiCalibrationModeRequest),
5884        #[prost(message, tag = "3020")]
5885        WifiGuestInfo(super::WifiGuestInfoRequest),
5886        #[prost(message, tag = "3021")]
5887        WifiRfTest(super::WifiRfTestRequest),
5888        #[prost(message, tag = "3024")]
5889        WifiGetFirewall(super::WifiGetFirewallRequest),
5890        #[prost(message, tag = "3025")]
5891        WifiTogglePoeNegotiation(super::WifiTogglePoeNegotiationRequest),
5892        #[prost(message, tag = "3026")]
5893        WifiFactoryTestCommand(super::WifiFactoryTestCommandRequest),
5894        #[prost(message, tag = "3027")]
5895        WifiStartLocalTelemProxy(super::WifiStartLocalTelemProxyRequest),
5896        #[prost(message, tag = "3029")]
5897        WifiBackhaulStats(super::WifiBackhaulStatsRequest),
5898        #[prost(message, tag = "3030")]
5899        WifiToggleUmbilicalMode(super::WifiToggleUmbilicalModeRequest),
5900        #[prost(message, tag = "3031")]
5901        WifiClientSandbox(super::WifiClientSandboxRequest),
5902        #[prost(message, tag = "4001")]
5903        TransceiverIfLoopbackTest(super::TransceiverIfLoopbackTestRequest),
5904        #[prost(message, tag = "4003")]
5905        TransceiverGetStatus(super::TransceiverGetStatusRequest),
5906        #[prost(message, tag = "4004")]
5907        TransceiverGetTelemetry(super::TransceiverGetTelemetryRequest),
5908        #[prost(message, tag = "5000")]
5909        StartUnlock(super::services::unlock::StartUnlockRequest),
5910        #[prost(message, tag = "5001")]
5911        FinishUnlock(super::services::unlock::FinishUnlockRequest),
5912        #[prost(message, tag = "6000")]
5913        GetDiagnostics(super::GetDiagnosticsRequest),
5914    }
5915}
5916#[derive(Clone, PartialEq, ::prost::Message)]
5917pub struct Response {
5918    #[prost(uint64, tag = "1")]
5919    pub id: u64,
5920    #[prost(message, optional, tag = "2")]
5921    pub status: ::core::option::Option<super::status::Status>,
5922    #[prost(uint64, tag = "3")]
5923    pub api_version: u64,
5924    #[prost(
5925        oneof = "response::Response",
5926        tags = "1006, 1034, 1011, 1004, 1012, 1015, 1009, 1016, 1001, 1003, 1013, 1010, 1014, 1017, 1019, 1020, 1021, 1023, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1035, 1037, 1038, 1041, 2005, 2003, 2006, 2004, 2008, 2002, 2007, 2009, 2010, 2011, 2013, 2015, 2018, 2019, 2020, 2021, 2022, 2023, 3005, 3002, 3006, 3007, 3004, 3001, 3009, 3003, 3022, 3012, 3013, 3015, 3016, 3020, 3021, 3024, 3025, 3026, 3027, 3028, 4001, 4003, 4004, 5000, 5001, 6000, 6001"
5927    )]
5928    pub response: ::core::option::Option<response::Response>,
5929}
5930/// Nested message and enum types in `Response`.
5931pub mod response {
5932    #[derive(Clone, PartialEq, ::prost::Oneof)]
5933    pub enum Response {
5934        #[prost(message, tag = "1006")]
5935        GetNextId(super::GetNextIdResponse),
5936        #[prost(message, tag = "1034")]
5937        EnableDebugTelem(super::EnableDebugTelemResponse),
5938        #[prost(message, tag = "1011")]
5939        FactoryReset(super::FactoryResetResponse),
5940        #[prost(message, tag = "1004")]
5941        GetDeviceInfo(super::GetDeviceInfoResponse),
5942        #[prost(message, tag = "1012")]
5943        GetLog(super::GetLogResponse),
5944        #[prost(message, tag = "1015")]
5945        GetNetworkInterfaces(super::GetNetworkInterfacesResponse),
5946        #[prost(message, tag = "1009")]
5947        GetPing(super::GetPingResponse),
5948        #[prost(message, tag = "1016")]
5949        PingHost(super::PingHostResponse),
5950        #[prost(message, tag = "1001")]
5951        Reboot(super::RebootResponse),
5952        #[prost(message, tag = "1003")]
5953        SpeedTest(super::SpeedTestResponse),
5954        #[prost(message, tag = "1013")]
5955        SetSku(super::SetSkuResponse),
5956        #[prost(message, tag = "1010")]
5957        SetTrustedKeys(super::SetTrustedKeysResponse),
5958        #[prost(message, tag = "1014")]
5959        Update(super::UpdateResponse),
5960        #[prost(message, tag = "1017")]
5961        GetLocation(super::GetLocationResponse),
5962        #[prost(message, tag = "1019")]
5963        GetHeapDump(super::GetHeapDumpResponse),
5964        #[prost(message, tag = "1020")]
5965        RestartControl(super::RestartControlResponse),
5966        #[prost(message, tag = "1021")]
5967        Fuse(super::FuseResponse),
5968        #[prost(message, tag = "1023")]
5969        GetConnections(super::GetConnectionsResponse),
5970        #[prost(message, tag = "1027")]
5971        StartSpeedtest(super::StartSpeedtestResponse),
5972        #[prost(message, tag = "1028")]
5973        GetSpeedtestStatus(super::GetSpeedtestStatusResponse),
5974        #[prost(message, tag = "1029")]
5975        ReportClientSpeedtest(super::ReportClientSpeedtestResponse),
5976        #[prost(message, tag = "1030")]
5977        InitiateRemoteSsh(super::InitiateRemoteSshResponse),
5978        #[prost(message, tag = "1031")]
5979        SelfTest(super::SelfTestResponse),
5980        #[prost(message, tag = "1032")]
5981        SetTestMode(super::SetTestModeResponse),
5982        #[prost(message, tag = "1033")]
5983        SoftwareUpdate(super::SoftwareUpdateResponse),
5984        #[prost(message, tag = "1035")]
5985        GetRadioStats(super::GetRadioStatsResponse),
5986        #[prost(message, tag = "1037")]
5987        Time(super::GetTimeResponse),
5988        #[prost(message, tag = "1038")]
5989        RunIperfServer(super::RunIperfServerResponse),
5990        #[prost(message, tag = "1041")]
5991        GetGoroutineStackTraces(super::GetGoroutineStackTracesResponse),
5992        #[prost(message, tag = "2005")]
5993        DishAuthenticate(super::DishAuthenticateResponse),
5994        #[prost(message, tag = "2003")]
5995        DishGetContext(super::DishGetContextResponse),
5996        #[prost(message, tag = "2006")]
5997        DishGetHistory(super::DishGetHistoryResponse),
5998        #[prost(message, tag = "2004")]
5999        DishGetStatus(super::DishGetStatusResponse),
6000        #[prost(message, tag = "2008")]
6001        DishGetObstructionMap(super::DishGetObstructionMapResponse),
6002        #[prost(message, tag = "2002")]
6003        DishStow(super::DishStowResponse),
6004        #[prost(message, tag = "2007")]
6005        DishSetEmc(super::DishSetEmcResponse),
6006        #[prost(message, tag = "2009")]
6007        DishGetEmc(super::DishGetEmcResponse),
6008        #[prost(message, tag = "2010")]
6009        DishSetConfig(super::DishSetConfigResponse),
6010        #[prost(message, tag = "2011")]
6011        DishGetConfig(super::DishGetConfigResponse),
6012        #[prost(message, tag = "2013")]
6013        DishInhibitGps(super::DishInhibitGpsResponse),
6014        #[prost(message, tag = "2015")]
6015        DishClearObstructionMap(super::DishClearObstructionMapResponse),
6016        #[prost(message, tag = "2018")]
6017        DishSetMaxPowerTestMode(super::DishSetMaxPowerTestModeResponse),
6018        #[prost(message, tag = "2019")]
6019        DishActivateRssiScan(super::DishActivateRssiScanResponse),
6020        #[prost(message, tag = "2020")]
6021        DishGetRssiScanResult(super::DishGetRssiScanResultResponse),
6022        #[prost(message, tag = "2021")]
6023        DishFactoryReset(super::DishFactoryResetResponse),
6024        #[prost(message, tag = "2022")]
6025        ResetButton(super::ResetButtonResponse),
6026        #[prost(message, tag = "2023")]
6027        SetPerVehicleConfig(super::SetPerVehicleConfigResponse),
6028        #[prost(message, tag = "3005")]
6029        WifiAuthenticate(super::WifiAuthenticateResponse),
6030        #[prost(message, tag = "3002")]
6031        WifiGetClients(super::WifiGetClientsResponse),
6032        #[prost(message, tag = "3006")]
6033        WifiGetHistory(super::WifiGetHistoryResponse),
6034        #[prost(message, tag = "3007")]
6035        WifiGetPingMetrics(super::WifiGetPingMetricsResponse),
6036        #[prost(message, tag = "3004")]
6037        WifiGetStatus(super::WifiGetStatusResponse),
6038        #[prost(message, tag = "3001")]
6039        WifiSetConfig(super::WifiSetConfigResponse),
6040        #[prost(message, tag = "3009")]
6041        WifiGetConfig(super::WifiGetConfigResponse),
6042        #[prost(message, tag = "3003")]
6043        WifiSetup(super::WifiSetupResponse),
6044        #[prost(message, tag = "3022")]
6045        WifiGetPersistentStats(super::WifiGetPersistentStatsResponse),
6046        #[prost(message, tag = "3012")]
6047        WifiSetMeshDeviceTrust(super::WifiSetMeshDeviceTrustResponse),
6048        #[prost(message, tag = "3013")]
6049        WifiSetMeshConfig(super::WifiSetMeshConfigResponse),
6050        #[prost(message, tag = "3015")]
6051        WifiGetClientHistory(super::WifiGetClientHistoryResponse),
6052        #[prost(message, tag = "3016")]
6053        WifiSelfTest(super::WifiSelfTestResponse),
6054        #[prost(message, tag = "3020")]
6055        WifiGuestInfo(super::WifiGuestInfoResponse),
6056        #[prost(message, tag = "3021")]
6057        WifiRfTest(super::WifiRfTestResponse),
6058        #[prost(message, tag = "3024")]
6059        WifiGetFirewall(super::WifiGetFirewallResponse),
6060        #[prost(message, tag = "3025")]
6061        WifiFactoryTestCommand(super::WifiFactoryTestCommandResponse),
6062        #[prost(message, tag = "3026")]
6063        WifiBackhaulStats(super::WifiBackhaulStatsResponse),
6064        #[prost(message, tag = "3027")]
6065        WifiClientSandbox(super::WifiClientSandboxResponse),
6066        #[prost(message, tag = "3028")]
6067        WifiUpdate(super::WifiUpdateResponse),
6068        #[prost(message, tag = "4001")]
6069        TransceiverIfLoopbackTest(super::TransceiverIfLoopbackTestResponse),
6070        #[prost(message, tag = "4003")]
6071        TransceiverGetStatus(super::TransceiverGetStatusResponse),
6072        #[prost(message, tag = "4004")]
6073        TransceiverGetTelemetry(super::TransceiverGetTelemetryResponse),
6074        #[prost(message, tag = "5000")]
6075        StartUnlock(super::services::unlock::StartUnlockResponse),
6076        #[prost(message, tag = "5001")]
6077        FinishUnlock(super::services::unlock::FinishUnlockResponse),
6078        #[prost(message, tag = "6000")]
6079        WifiGetDiagnostics(super::WifiGetDiagnosticsResponse),
6080        #[prost(message, tag = "6001")]
6081        DishGetDiagnostics(super::DishGetDiagnosticsResponse),
6082    }
6083}
6084#[derive(Clone, PartialEq, ::prost::Message)]
6085pub struct Event {
6086    #[prost(oneof = "event::Event", tags = "3001, 3002, 3003, 3004, 3005")]
6087    pub event: ::core::option::Option<event::Event>,
6088}
6089/// Nested message and enum types in `Event`.
6090pub mod event {
6091    #[derive(Clone, PartialEq, ::prost::Oneof)]
6092    pub enum Event {
6093        #[prost(message, tag = "3001")]
6094        WifiNewClientConnected(super::WifiNewClientConnectedEvent),
6095        #[prost(message, tag = "3002")]
6096        WifiAccountBonding(super::WifiAccountBondingEvent),
6097        #[prost(message, tag = "3003")]
6098        WifiNewPeer(super::WifiNewPeerEvent),
6099        #[prost(message, tag = "3004")]
6100        WifiCloudStatus(super::WifiCloudStatusEvent),
6101        #[prost(message, tag = "3005")]
6102        WifiClientSandbox(super::WifiClientSandboxRequest),
6103    }
6104}
6105#[derive(Clone, PartialEq, ::prost::Message)]
6106pub struct WifiCloudStatusEvent {
6107    #[prost(uint32, tag = "4")]
6108    pub api_version: u32,
6109    #[prost(bool, tag = "1")]
6110    pub direct_link_to_dish: bool,
6111    #[prost(string, tag = "2")]
6112    pub hardware_version: ::prost::alloc::string::String,
6113    #[prost(bool, tag = "3")]
6114    pub is_bypassed: bool,
6115}
6116#[derive(Clone, PartialEq, ::prost::Message)]
6117pub struct WifiClientSandboxRequest {
6118    #[prost(message, repeated, tag = "1")]
6119    pub client_sandbox_status: ::prost::alloc::vec::Vec<WifiClientSandboxStatus>,
6120    #[prost(enumeration = "WifiClientSandboxAlert", repeated, tag = "2")]
6121    pub alerts: ::prost::alloc::vec::Vec<i32>,
6122    #[prost(uint64, tag = "3")]
6123    pub unix_timestamp_ns: u64,
6124}
6125#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6126pub struct WifiClientSandboxResponse {}
6127#[derive(Clone, PartialEq, ::prost::Message)]
6128pub struct WifiClientSandboxStatus {
6129    #[prost(string, tag = "1")]
6130    pub client: ::prost::alloc::string::String,
6131    #[prost(uint32, tag = "2")]
6132    pub sandbox: u32,
6133    #[prost(bool, tag = "3")]
6134    pub sandboxed: bool,
6135}
6136#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6137pub struct EnableDebugTelemRequest {
6138    #[prost(uint32, tag = "1")]
6139    pub duration_m: u32,
6140}
6141#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6142pub struct EnableDebugTelemResponse {}
6143#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6144pub struct FactoryResetRequest {}
6145#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6146pub struct FactoryResetResponse {}
6147#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6148pub struct GetTimeRequest {}
6149#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6150pub struct GetTimeResponse {
6151    #[prost(int64, tag = "1")]
6152    pub unix_nano: i64,
6153}
6154#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6155pub struct FuseRequest {
6156    #[prost(bool, tag = "1")]
6157    pub prevent_reboot: bool,
6158}
6159#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6160pub struct FuseResponse {}
6161#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6162pub struct GetHistoryRequest {}
6163#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6164pub struct GetLogRequest {}
6165#[derive(Clone, PartialEq, ::prost::Message)]
6166pub struct GetLogResponse {
6167    #[prost(message, optional, tag = "4")]
6168    pub current: ::core::option::Option<get_log_response::Logs>,
6169    #[prost(message, optional, tag = "5")]
6170    pub saved: ::core::option::Option<get_log_response::Logs>,
6171    #[deprecated]
6172    #[prost(string, tag = "1")]
6173    pub syslog: ::prost::alloc::string::String,
6174    #[deprecated]
6175    #[prost(string, tag = "2")]
6176    pub offline_log: ::prost::alloc::string::String,
6177    #[deprecated]
6178    #[prost(string, tag = "3")]
6179    pub persistent_log: ::prost::alloc::string::String,
6180}
6181/// Nested message and enum types in `GetLogResponse`.
6182pub mod get_log_response {
6183    #[derive(Clone, PartialEq, ::prost::Message)]
6184    pub struct Logs {
6185        #[prost(string, tag = "1")]
6186        pub syslog: ::prost::alloc::string::String,
6187        #[prost(string, tag = "2")]
6188        pub dmesg: ::prost::alloc::string::String,
6189        #[prost(string, tag = "3")]
6190        pub kernel_panic: ::prost::alloc::string::String,
6191        #[deprecated]
6192        #[prost(string, tag = "4")]
6193        pub mtk_eth_procs: ::prost::alloc::string::String,
6194        #[prost(string, tag = "5")]
6195        pub debug_netsys_0sec: ::prost::alloc::string::String,
6196        #[prost(string, tag = "6")]
6197        pub debug_netsys_2sec: ::prost::alloc::string::String,
6198    }
6199}
6200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6201pub struct GetPingRequest {}
6202#[derive(Clone, PartialEq, ::prost::Message)]
6203pub struct GetPingResponse {
6204    #[prost(map = "string, message", tag = "1")]
6205    pub results: ::std::collections::HashMap<::prost::alloc::string::String, PingResult>,
6206}
6207#[derive(Clone, PartialEq, ::prost::Message)]
6208pub struct PingHostRequest {
6209    #[prost(string, tag = "3")]
6210    pub address: ::prost::alloc::string::String,
6211    #[prost(uint32, tag = "4")]
6212    pub size: u32,
6213}
6214#[derive(Clone, PartialEq, ::prost::Message)]
6215pub struct PingHostResponse {
6216    #[prost(message, optional, tag = "1")]
6217    pub result: ::core::option::Option<PingResult>,
6218}
6219#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6220pub struct GetStatusRequest {}
6221#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6222pub struct RebootRequest {}
6223#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6224pub struct RebootResponse {}
6225#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6226pub struct SpeedTestStats {
6227    #[deprecated]
6228    #[prost(float, tag = "3")]
6229    pub latency_ms: f32,
6230    #[deprecated]
6231    #[prost(uint64, tag = "4")]
6232    pub start_time: u64,
6233    #[prost(int64, tag = "5")]
6234    pub upload_start_time: i64,
6235    #[prost(int64, tag = "6")]
6236    pub download_start_time: i64,
6237    #[prost(float, tag = "1")]
6238    pub upload_mbps: f32,
6239    #[prost(float, tag = "2")]
6240    pub download_mbps: f32,
6241    #[prost(enumeration = "speed_test_stats::Target", tag = "7")]
6242    pub target: i32,
6243    #[prost(uint32, tag = "8")]
6244    pub tcp_streams: u32,
6245}
6246/// Nested message and enum types in `SpeedTestStats`.
6247pub mod speed_test_stats {
6248    #[derive(
6249        Clone,
6250        Copy,
6251        Debug,
6252        PartialEq,
6253        Eq,
6254        Hash,
6255        PartialOrd,
6256        Ord,
6257        ::prost::Enumeration
6258    )]
6259    #[repr(i32)]
6260    pub enum Target {
6261        Unknown = 0,
6262        Fastcom = 1,
6263        Cloudflare = 2,
6264    }
6265    impl Target {
6266        /// String value of the enum field names used in the ProtoBuf definition.
6267        ///
6268        /// The values are not transformed in any way and thus are considered stable
6269        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6270        pub fn as_str_name(&self) -> &'static str {
6271            match self {
6272                Self::Unknown => "UNKNOWN",
6273                Self::Fastcom => "FASTCOM",
6274                Self::Cloudflare => "CLOUDFLARE",
6275            }
6276        }
6277        /// Creates an enum from field names used in the ProtoBuf definition.
6278        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6279            match value {
6280                "UNKNOWN" => Some(Self::Unknown),
6281                "FASTCOM" => Some(Self::Fastcom),
6282                "CLOUDFLARE" => Some(Self::Cloudflare),
6283                _ => None,
6284            }
6285        }
6286    }
6287}
6288#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6289pub struct ClientPlatform {
6290    #[prost(enumeration = "client_platform::Platform", tag = "1")]
6291    pub platform: i32,
6292    #[prost(float, tag = "2")]
6293    pub major_version: f32,
6294    #[prost(float, tag = "3")]
6295    pub minor_version: f32,
6296}
6297/// Nested message and enum types in `ClientPlatform`.
6298pub mod client_platform {
6299    #[derive(
6300        Clone,
6301        Copy,
6302        Debug,
6303        PartialEq,
6304        Eq,
6305        Hash,
6306        PartialOrd,
6307        Ord,
6308        ::prost::Enumeration
6309    )]
6310    #[repr(i32)]
6311    pub enum Platform {
6312        Unknown = 0,
6313        Ios = 1,
6314        Android = 2,
6315        Web = 3,
6316    }
6317    impl Platform {
6318        /// String value of the enum field names used in the ProtoBuf definition.
6319        ///
6320        /// The values are not transformed in any way and thus are considered stable
6321        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6322        pub fn as_str_name(&self) -> &'static str {
6323            match self {
6324                Self::Unknown => "UNKNOWN",
6325                Self::Ios => "IOS",
6326                Self::Android => "ANDROID",
6327                Self::Web => "WEB",
6328            }
6329        }
6330        /// Creates an enum from field names used in the ProtoBuf definition.
6331        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6332            match value {
6333                "UNKNOWN" => Some(Self::Unknown),
6334                "IOS" => Some(Self::Ios),
6335                "ANDROID" => Some(Self::Android),
6336                "WEB" => Some(Self::Web),
6337                _ => None,
6338            }
6339        }
6340    }
6341}
6342#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6343pub struct SpeedTestRequest {
6344    #[prost(uint32, tag = "4")]
6345    pub id: u32,
6346    #[prost(message, optional, tag = "1")]
6347    pub client_speedtest: ::core::option::Option<SpeedTestStats>,
6348    #[prost(float, tag = "2")]
6349    pub client_rssi: f32,
6350    #[prost(message, optional, tag = "3")]
6351    pub client_platform: ::core::option::Option<ClientPlatform>,
6352}
6353#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6354pub struct SpeedTestResponse {
6355    #[deprecated]
6356    #[prost(float, tag = "1")]
6357    pub download_bps: f32,
6358    #[deprecated]
6359    #[prost(float, tag = "2")]
6360    pub upload_bps: f32,
6361    #[deprecated]
6362    #[prost(float, tag = "3")]
6363    pub latency_s: f32,
6364    #[deprecated]
6365    #[prost(float, tag = "4")]
6366    pub download_mbps: f32,
6367    #[deprecated]
6368    #[prost(float, tag = "5")]
6369    pub upload_mbps: f32,
6370    #[deprecated]
6371    #[prost(float, tag = "6")]
6372    pub latency_ms: f32,
6373    #[prost(message, optional, tag = "15")]
6374    pub router_speedtest: ::core::option::Option<SpeedTestStats>,
6375    #[prost(float, tag = "7")]
6376    pub download_mbps_1_tcp_conn: f32,
6377    #[prost(float, tag = "8")]
6378    pub upload_mbps_1_tcp_conn: f32,
6379    #[prost(float, tag = "9")]
6380    pub download_mbps_4_tcp_conn: f32,
6381    #[prost(float, tag = "10")]
6382    pub upload_mbps_4_tcp_conn: f32,
6383    #[prost(float, tag = "11")]
6384    pub download_mbps_16_tcp_conn: f32,
6385    #[prost(float, tag = "12")]
6386    pub upload_mbps_16_tcp_conn: f32,
6387    #[prost(float, tag = "13")]
6388    pub download_mbps_64_tcp_conn: f32,
6389    #[prost(float, tag = "14")]
6390    pub upload_mbps_64_tcp_conn: f32,
6391}
6392#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6393pub struct RunIperfServerRequest {
6394    #[prost(uint32, tag = "1")]
6395    pub duration_s: u32,
6396}
6397#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6398pub struct RunIperfServerResponse {
6399    #[prost(uint32, tag = "1")]
6400    pub port: u32,
6401}
6402#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6403pub struct GetConnectionsRequest {}
6404#[derive(Clone, PartialEq, ::prost::Message)]
6405pub struct GetConnectionsResponse {
6406    #[prost(map = "string, message", tag = "1")]
6407    pub services: ::std::collections::HashMap<
6408        ::prost::alloc::string::String,
6409        get_connections_response::ServiceConnection,
6410    >,
6411}
6412/// Nested message and enum types in `GetConnectionsResponse`.
6413pub mod get_connections_response {
6414    #[derive(Clone, PartialEq, ::prost::Message)]
6415    pub struct ServiceConnection {
6416        #[prost(string, tag = "1")]
6417        pub address: ::prost::alloc::string::String,
6418        #[prost(int32, tag = "2")]
6419        pub seconds_since_success: i32,
6420    }
6421}
6422#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6423pub struct GetDeviceInfoRequest {}
6424#[derive(Clone, PartialEq, ::prost::Message)]
6425pub struct GetDeviceInfoResponse {
6426    #[prost(message, optional, tag = "1")]
6427    pub device_info: ::core::option::Option<DeviceInfo>,
6428}
6429#[derive(Clone, PartialEq, ::prost::Message)]
6430pub struct SetTrustedKeysRequest {
6431    #[prost(message, repeated, tag = "1")]
6432    pub keys: ::prost::alloc::vec::Vec<PublicKey>,
6433}
6434#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6435pub struct SetTrustedKeysResponse {}
6436#[derive(Clone, PartialEq, ::prost::Message)]
6437pub struct SetSkuRequest {
6438    #[prost(string, tag = "1")]
6439    pub sku: ::prost::alloc::string::String,
6440    #[prost(string, tag = "2")]
6441    pub country_code: ::prost::alloc::string::String,
6442    #[prost(bool, tag = "4")]
6443    pub apply_country_code: bool,
6444    #[prost(bool, tag = "5")]
6445    pub pin_country_code: bool,
6446    #[prost(bool, tag = "6")]
6447    pub custom_power_table: bool,
6448}
6449#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6450pub struct SetSkuResponse {}
6451#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6452pub struct UpdateRequest {
6453    #[prost(bool, optional, tag = "1")]
6454    pub schedule_reboot: ::core::option::Option<bool>,
6455}
6456#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6457pub struct UpdateResponse {}
6458#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6459pub struct RestartControlRequest {}
6460#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6461pub struct RestartControlResponse {}
6462#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6463pub struct GetNetworkInterfacesRequest {}
6464#[derive(Clone, PartialEq, ::prost::Message)]
6465pub struct GetNetworkInterfacesResponse {
6466    #[prost(message, repeated, tag = "1006")]
6467    pub network_interfaces: ::prost::alloc::vec::Vec<NetworkInterface>,
6468}
6469#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6470pub struct GetRadioStatsRequest {}
6471#[derive(Clone, PartialEq, ::prost::Message)]
6472pub struct GetRadioStatsResponse {
6473    #[prost(message, repeated, tag = "1")]
6474    pub radio_stats: ::prost::alloc::vec::Vec<RadioStats>,
6475}
6476#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6477pub struct GetHeapDumpRequest {}
6478#[derive(Clone, PartialEq, ::prost::Message)]
6479pub struct GetHeapDumpResponse {
6480    #[prost(string, tag = "1")]
6481    pub heap_dump: ::prost::alloc::string::String,
6482}
6483#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6484pub struct GetLocationRequest {
6485    #[prost(enumeration = "PositionSource", tag = "1")]
6486    pub source: i32,
6487}
6488#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6489pub struct GetLocationResponse {
6490    #[prost(message, optional, tag = "1")]
6491    pub lla: ::core::option::Option<LlaPosition>,
6492    #[prost(double, tag = "4")]
6493    pub sigma_m: f64,
6494    #[prost(enumeration = "PositionSource", tag = "3")]
6495    pub source: i32,
6496}
6497#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6498pub struct DishSetEmcRequest {
6499    #[prost(double, tag = "1")]
6500    pub theta: f64,
6501    #[prost(double, tag = "2")]
6502    pub phi: f64,
6503    #[prost(uint32, tag = "3")]
6504    pub rx_chan: u32,
6505    #[prost(uint32, tag = "4")]
6506    pub tx_chan: u32,
6507    #[prost(uint32, tag = "5")]
6508    pub modulation: u32,
6509    #[prost(double, tag = "7")]
6510    pub desired_tilt_angle: f64,
6511    #[prost(bool, tag = "8")]
6512    pub chan_override: bool,
6513    #[prost(bool, tag = "9")]
6514    pub theta_enabled: bool,
6515    #[prost(bool, tag = "10")]
6516    pub phi_enabled: bool,
6517    #[prost(bool, tag = "11")]
6518    pub idle: bool,
6519    #[prost(bool, tag = "12")]
6520    pub fast_switching: bool,
6521    #[prost(bool, tag = "13")]
6522    pub sky_search: bool,
6523    #[prost(bool, tag = "14")]
6524    pub force_pll_unlock: bool,
6525    #[prost(bool, tag = "15")]
6526    pub force_eirp_failure: bool,
6527    #[prost(bool, tag = "16")]
6528    pub snow_active_override: bool,
6529    #[prost(bool, tag = "18")]
6530    pub manual_tilting: bool,
6531    #[prost(bool, tag = "19")]
6532    pub tilt_to_stowed: bool,
6533    #[prost(bool, tag = "20")]
6534    pub reboot: bool,
6535    #[prost(bool, tag = "21")]
6536    pub continuous_motor_test: bool,
6537    #[prost(double, tag = "22")]
6538    pub distance_override_meters: f64,
6539    #[prost(uint32, tag = "24")]
6540    pub country_code_override: u32,
6541    #[prost(int32, tag = "25")]
6542    pub tx_duty_cycle_override: i32,
6543    #[prost(int32, tag = "26")]
6544    pub rx_duty_cycle_override: i32,
6545    #[prost(double, tag = "27")]
6546    pub eirp_legal_limit_dbw_override: f64,
6547    #[prost(double, tag = "28")]
6548    pub eirp_adjustment_db: f64,
6549}
6550#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6551pub struct DishSetEmcResponse {}
6552#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6553pub struct DishSetMaxPowerTestModeRequest {
6554    #[prost(bool, tag = "1")]
6555    pub enabled: bool,
6556}
6557#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6558pub struct DishSetMaxPowerTestModeResponse {
6559    #[prost(bool, tag = "1")]
6560    pub enabled: bool,
6561}
6562#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6563pub struct DishGetEmcRequest {}
6564#[derive(Clone, PartialEq, ::prost::Message)]
6565pub struct DishGetEmcResponse {
6566    #[prost(string, tag = "2")]
6567    pub uuid: ::prost::alloc::string::String,
6568    #[prost(uint64, tag = "3")]
6569    pub timestamp: u64,
6570    #[prost(uint32, tag = "11")]
6571    pub cplane_updates: u32,
6572    #[prost(double, tag = "16")]
6573    pub gps_latitude: f64,
6574    #[prost(double, tag = "17")]
6575    pub gps_longitude: f64,
6576    #[prost(double, tag = "18")]
6577    pub gps_pdop: f64,
6578    #[prost(uint32, tag = "19")]
6579    pub rf_mode: u32,
6580    #[prost(double, tag = "20")]
6581    pub phi: f64,
6582    #[prost(double, tag = "21")]
6583    pub theta: f64,
6584    #[prost(uint32, tag = "22")]
6585    pub rx_channel: u32,
6586    #[prost(uint32, tag = "23")]
6587    pub tx_channel: u32,
6588    #[prost(float, tag = "24")]
6589    pub t_dbf_max: f32,
6590    #[prost(double, tag = "25")]
6591    pub t_center: f64,
6592    #[prost(bool, tag = "30")]
6593    pub auto_power_snow_melt_enabled: bool,
6594    #[prost(double, tag = "32")]
6595    pub voltage: f64,
6596    #[prost(uint32, tag = "33")]
6597    pub rx_beam_state: u32,
6598    #[prost(uint32, tag = "34")]
6599    pub tx_beam_state: u32,
6600    #[prost(uint32, tag = "35")]
6601    pub half_duplex_state: u32,
6602    #[prost(bool, tag = "36")]
6603    pub manual_tilt_enabled: bool,
6604    #[prost(double, tag = "37")]
6605    pub tilt_angle: f64,
6606    #[prost(uint32, tag = "38")]
6607    pub pll_tx_lock_detected: u32,
6608    #[prost(bool, tag = "39")]
6609    pub eirp_exceeded_threshold: bool,
6610    #[prost(bool, tag = "41")]
6611    pub idle_override_enabled: bool,
6612    #[prost(bool, tag = "42")]
6613    pub theta_override_enabled: bool,
6614    #[prost(double, tag = "43")]
6615    pub theta_override_value: f64,
6616    #[prost(bool, tag = "44")]
6617    pub phi_override_enabled: bool,
6618    #[prost(double, tag = "45")]
6619    pub phi_override_value: f64,
6620    #[prost(uint32, tag = "46")]
6621    pub rx_chan_override_value: u32,
6622    #[prost(uint32, tag = "47")]
6623    pub tx_chan_override_value: u32,
6624    #[prost(bool, tag = "48")]
6625    pub sky_search_override_enabled: bool,
6626    #[prost(bool, tag = "49")]
6627    pub fast_switching_enabled: bool,
6628    #[prost(uint32, tag = "50")]
6629    pub modulation_override_value: u32,
6630    #[prost(bool, tag = "51")]
6631    pub force_eirp_failure: bool,
6632    #[prost(bool, tag = "52")]
6633    pub force_pll_unlock: bool,
6634    #[prost(uint32, tag = "53")]
6635    pub ut_ine_success: u32,
6636    #[prost(bool, tag = "54")]
6637    pub rf_ready: bool,
6638    #[prost(bool, tag = "55")]
6639    pub tilt_to_stowed: bool,
6640    #[prost(bool, tag = "56")]
6641    pub reboot: bool,
6642    #[prost(bool, tag = "57")]
6643    pub continuous_motor_test: bool,
6644    #[prost(double, tag = "58")]
6645    pub distance_override_meters: f64,
6646    #[prost(uint32, tag = "62")]
6647    pub country_code_override: u32,
6648    #[prost(double, tag = "63")]
6649    pub max_pointing_distance: f64,
6650    #[prost(double, tag = "64")]
6651    pub distance_scaling_factor: f64,
6652    #[prost(int32, tag = "65")]
6653    pub tx_duty_cycle_override: i32,
6654    #[prost(int32, tag = "66")]
6655    pub rx_duty_cycle_override: i32,
6656    #[prost(float, tag = "67")]
6657    pub tx_time_ms: f32,
6658    #[prost(float, tag = "68")]
6659    pub rx_time_ms: f32,
6660    #[prost(double, tag = "69")]
6661    pub eirp_legal_limit_dbw: f64,
6662    #[prost(double, tag = "70")]
6663    pub eirp_legal_limit_dbw_override: f64,
6664    #[prost(double, tag = "71")]
6665    pub eirp_adjustment_db: f64,
6666    #[prost(double, tag = "72")]
6667    pub eirp_predicted_dbw: f64,
6668}
6669#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6670pub struct GetPersistentStatsRequest {}
6671#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6672pub struct StartSpeedtestRequest {}
6673#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6674pub struct StartSpeedtestResponse {}
6675#[derive(Clone, PartialEq, ::prost::Message)]
6676pub struct SpeedtestStatus {
6677    #[prost(bool, tag = "1")]
6678    pub running: bool,
6679    #[prost(uint32, tag = "2")]
6680    pub id: u32,
6681    #[prost(message, optional, tag = "1000")]
6682    pub up: ::core::option::Option<speedtest_status::Direction>,
6683    #[prost(message, optional, tag = "1001")]
6684    pub down: ::core::option::Option<speedtest_status::Direction>,
6685}
6686/// Nested message and enum types in `SpeedtestStatus`.
6687pub mod speedtest_status {
6688    #[derive(Clone, PartialEq, ::prost::Message)]
6689    pub struct Direction {
6690        #[prost(float, repeated, tag = "1")]
6691        pub throughputs_mbps: ::prost::alloc::vec::Vec<f32>,
6692        #[prost(enumeration = "super::SpeedtestError", tag = "2")]
6693        pub err: i32,
6694    }
6695}
6696#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6697pub struct GetSpeedtestStatusRequest {}
6698#[derive(Clone, PartialEq, ::prost::Message)]
6699pub struct GetSpeedtestStatusResponse {
6700    #[prost(message, optional, tag = "1")]
6701    pub status: ::core::option::Option<SpeedtestStatus>,
6702}
6703#[derive(Clone, PartialEq, ::prost::Message)]
6704pub struct ReportClientSpeedtestRequest {
6705    #[prost(uint32, tag = "1")]
6706    pub id: u32,
6707    #[prost(message, optional, tag = "2")]
6708    pub client_speedtest: ::core::option::Option<SpeedTestStats>,
6709    #[prost(message, optional, tag = "5")]
6710    pub wifi_speedtest: ::core::option::Option<SpeedTestStats>,
6711    #[prost(float, tag = "3")]
6712    pub client_rssi: f32,
6713    #[prost(message, optional, tag = "4")]
6714    pub client_platform: ::core::option::Option<ClientPlatform>,
6715    #[prost(string, tag = "6")]
6716    pub app_version: ::prost::alloc::string::String,
6717    #[prost(uint32, tag = "7")]
6718    pub app_build: u32,
6719}
6720#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6721pub struct ReportClientSpeedtestResponse {}
6722#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6723pub struct SetPerVehicleConfigResponse {}
6724#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6725pub struct DishPowerSaveRequest {
6726    #[prost(uint32, tag = "1")]
6727    pub power_save_start_minutes: u32,
6728    #[prost(uint32, tag = "2")]
6729    pub power_save_duration_minutes: u32,
6730    #[prost(bool, tag = "3")]
6731    pub enable_power_save: bool,
6732}
6733#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6734pub struct IqCaptureRequest {}
6735#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6736pub struct GetDiagnosticsRequest {}
6737#[derive(Clone, PartialEq, ::prost::Message)]
6738pub struct WifiGetDiagnosticsResponse {
6739    #[prost(string, tag = "1")]
6740    pub id: ::prost::alloc::string::String,
6741    #[prost(string, tag = "2")]
6742    pub hardware_version: ::prost::alloc::string::String,
6743    #[prost(string, tag = "3")]
6744    pub software_version: ::prost::alloc::string::String,
6745    #[prost(message, repeated, tag = "4")]
6746    pub networks: ::prost::alloc::vec::Vec<wifi_get_diagnostics_response::Network>,
6747}
6748/// Nested message and enum types in `WifiGetDiagnosticsResponse`.
6749pub mod wifi_get_diagnostics_response {
6750    #[derive(Clone, PartialEq, ::prost::Message)]
6751    pub struct Network {
6752        #[prost(string, tag = "1")]
6753        pub domain: ::prost::alloc::string::String,
6754        #[prost(string, tag = "2")]
6755        pub ipv4: ::prost::alloc::string::String,
6756        #[prost(string, repeated, tag = "3")]
6757        pub ipv6: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6758        #[prost(uint32, tag = "10")]
6759        pub clients_ethernet: u32,
6760        #[prost(uint32, tag = "11")]
6761        pub clients_2ghz: u32,
6762        #[prost(uint32, tag = "12")]
6763        pub clients_5ghz: u32,
6764    }
6765}
6766#[derive(Clone, PartialEq, ::prost::Message)]
6767pub struct DishGetDiagnosticsResponse {
6768    #[prost(string, tag = "1")]
6769    pub id: ::prost::alloc::string::String,
6770    #[prost(string, tag = "2")]
6771    pub hardware_version: ::prost::alloc::string::String,
6772    #[prost(string, tag = "3")]
6773    pub software_version: ::prost::alloc::string::String,
6774    #[prost(int32, tag = "4")]
6775    pub utc_offset_s: i32,
6776    #[prost(enumeration = "dish_get_diagnostics_response::TestResult", tag = "7")]
6777    pub hardware_self_test: i32,
6778    #[prost(
6779        enumeration = "dish_get_diagnostics_response::TestResultCode",
6780        repeated,
6781        tag = "11"
6782    )]
6783    pub hardware_self_test_codes: ::prost::alloc::vec::Vec<i32>,
6784    #[prost(message, optional, tag = "5")]
6785    pub alerts: ::core::option::Option<dish_get_diagnostics_response::Alerts>,
6786    #[prost(enumeration = "dish_get_diagnostics_response::DisablementCode", tag = "6")]
6787    pub disablement_code: i32,
6788    #[prost(message, optional, tag = "8")]
6789    pub location: ::core::option::Option<dish_get_diagnostics_response::Location>,
6790    #[prost(message, optional, tag = "9")]
6791    pub alignment_stats: ::core::option::Option<
6792        dish_get_diagnostics_response::AlignmentStats,
6793    >,
6794    #[prost(bool, tag = "10")]
6795    pub stowed: bool,
6796    #[prost(
6797        enumeration = "super::telemetron::public::integrations::RateLimitReason",
6798        tag = "12"
6799    )]
6800    pub dl_bandwidth_restricted_reason: i32,
6801    #[prost(
6802        enumeration = "super::telemetron::public::integrations::RateLimitReason",
6803        tag = "13"
6804    )]
6805    pub ul_bandwidth_restricted_reason: i32,
6806}
6807/// Nested message and enum types in `DishGetDiagnosticsResponse`.
6808pub mod dish_get_diagnostics_response {
6809    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6810    pub struct Alerts {
6811        #[prost(bool, tag = "1")]
6812        pub dish_is_heating: bool,
6813        #[prost(bool, tag = "2")]
6814        pub dish_thermal_throttle: bool,
6815        #[prost(bool, tag = "3")]
6816        pub dish_thermal_shutdown: bool,
6817        #[prost(bool, tag = "4")]
6818        pub power_supply_thermal_throttle: bool,
6819        #[prost(bool, tag = "5")]
6820        pub motors_stuck: bool,
6821        #[prost(bool, tag = "6")]
6822        pub mast_not_near_vertical: bool,
6823        #[prost(bool, tag = "7")]
6824        pub slow_ethernet_speeds: bool,
6825        #[prost(bool, tag = "8")]
6826        pub software_install_pending: bool,
6827        #[prost(bool, tag = "9")]
6828        pub moving_too_fast_for_policy: bool,
6829        #[prost(bool, tag = "10")]
6830        pub obstructed: bool,
6831    }
6832    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6833    pub struct Location {
6834        #[prost(bool, tag = "1")]
6835        pub enabled: bool,
6836        #[prost(double, tag = "2")]
6837        pub latitude: f64,
6838        #[prost(double, tag = "3")]
6839        pub longitude: f64,
6840        #[prost(double, tag = "4")]
6841        pub altitude_meters: f64,
6842        #[prost(bool, tag = "5")]
6843        pub uncertainty_meters_valid: bool,
6844        #[prost(double, tag = "6")]
6845        pub uncertainty_meters: f64,
6846        #[prost(double, tag = "7")]
6847        pub gps_time_s: f64,
6848    }
6849    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6850    pub struct AlignmentStats {
6851        #[prost(float, tag = "1")]
6852        pub boresight_azimuth_deg: f32,
6853        #[prost(float, tag = "2")]
6854        pub boresight_elevation_deg: f32,
6855        #[prost(float, tag = "3")]
6856        pub desired_boresight_azimuth_deg: f32,
6857        #[prost(float, tag = "4")]
6858        pub desired_boresight_elevation_deg: f32,
6859    }
6860    #[derive(
6861        Clone,
6862        Copy,
6863        Debug,
6864        PartialEq,
6865        Eq,
6866        Hash,
6867        PartialOrd,
6868        Ord,
6869        ::prost::Enumeration
6870    )]
6871    #[repr(i32)]
6872    pub enum TestResult {
6873        NoResult = 0,
6874        Passed = 1,
6875        Failed = 2,
6876    }
6877    impl TestResult {
6878        /// String value of the enum field names used in the ProtoBuf definition.
6879        ///
6880        /// The values are not transformed in any way and thus are considered stable
6881        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6882        pub fn as_str_name(&self) -> &'static str {
6883            match self {
6884                Self::NoResult => "NO_RESULT",
6885                Self::Passed => "PASSED",
6886                Self::Failed => "FAILED",
6887            }
6888        }
6889        /// Creates an enum from field names used in the ProtoBuf definition.
6890        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6891            match value {
6892                "NO_RESULT" => Some(Self::NoResult),
6893                "PASSED" => Some(Self::Passed),
6894                "FAILED" => Some(Self::Failed),
6895                _ => None,
6896            }
6897        }
6898    }
6899    #[derive(
6900        Clone,
6901        Copy,
6902        Debug,
6903        PartialEq,
6904        Eq,
6905        Hash,
6906        PartialOrd,
6907        Ord,
6908        ::prost::Enumeration
6909    )]
6910    #[repr(i32)]
6911    pub enum TestResultCode {
6912        General = 0,
6913        BootUp = 1,
6914        CpuVoltage = 2,
6915        DbfAapCs = 3,
6916        DbfNumFems = 4,
6917        DbfReadErrors = 5,
6918        DbfTDie0 = 6,
6919        DbfTDie1 = 7,
6920        DbfTDie0Valid = 8,
6921        DbfTDie1Valid = 9,
6922        EthPrime = 10,
6923        Eirp = 11,
6924        FemCut = 12,
6925        FuseAvs = 13,
6926        Gps = 14,
6927        Imu = 15,
6928        Phy = 16,
6929        ScpError = 17,
6930        Temperature = 18,
6931        Vtsens = 19,
6932    }
6933    impl TestResultCode {
6934        /// String value of the enum field names used in the ProtoBuf definition.
6935        ///
6936        /// The values are not transformed in any way and thus are considered stable
6937        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6938        pub fn as_str_name(&self) -> &'static str {
6939            match self {
6940                Self::General => "GENERAL",
6941                Self::BootUp => "BOOT_UP",
6942                Self::CpuVoltage => "CPU_VOLTAGE",
6943                Self::DbfAapCs => "DBF_AAP_CS",
6944                Self::DbfNumFems => "DBF_NUM_FEMS",
6945                Self::DbfReadErrors => "DBF_READ_ERRORS",
6946                Self::DbfTDie0 => "DBF_T_DIE_0",
6947                Self::DbfTDie1 => "DBF_T_DIE_1",
6948                Self::DbfTDie0Valid => "DBF_T_DIE_0_VALID",
6949                Self::DbfTDie1Valid => "DBF_T_DIE_1_VALID",
6950                Self::EthPrime => "ETH_PRIME",
6951                Self::Eirp => "EIRP",
6952                Self::FemCut => "FEM_CUT",
6953                Self::FuseAvs => "FUSE_AVS",
6954                Self::Gps => "GPS",
6955                Self::Imu => "IMU",
6956                Self::Phy => "PHY",
6957                Self::ScpError => "SCP_ERROR",
6958                Self::Temperature => "TEMPERATURE",
6959                Self::Vtsens => "VTSENS",
6960            }
6961        }
6962        /// Creates an enum from field names used in the ProtoBuf definition.
6963        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6964            match value {
6965                "GENERAL" => Some(Self::General),
6966                "BOOT_UP" => Some(Self::BootUp),
6967                "CPU_VOLTAGE" => Some(Self::CpuVoltage),
6968                "DBF_AAP_CS" => Some(Self::DbfAapCs),
6969                "DBF_NUM_FEMS" => Some(Self::DbfNumFems),
6970                "DBF_READ_ERRORS" => Some(Self::DbfReadErrors),
6971                "DBF_T_DIE_0" => Some(Self::DbfTDie0),
6972                "DBF_T_DIE_1" => Some(Self::DbfTDie1),
6973                "DBF_T_DIE_0_VALID" => Some(Self::DbfTDie0Valid),
6974                "DBF_T_DIE_1_VALID" => Some(Self::DbfTDie1Valid),
6975                "ETH_PRIME" => Some(Self::EthPrime),
6976                "EIRP" => Some(Self::Eirp),
6977                "FEM_CUT" => Some(Self::FemCut),
6978                "FUSE_AVS" => Some(Self::FuseAvs),
6979                "GPS" => Some(Self::Gps),
6980                "IMU" => Some(Self::Imu),
6981                "PHY" => Some(Self::Phy),
6982                "SCP_ERROR" => Some(Self::ScpError),
6983                "TEMPERATURE" => Some(Self::Temperature),
6984                "VTSENS" => Some(Self::Vtsens),
6985                _ => None,
6986            }
6987        }
6988    }
6989    #[derive(
6990        Clone,
6991        Copy,
6992        Debug,
6993        PartialEq,
6994        Eq,
6995        Hash,
6996        PartialOrd,
6997        Ord,
6998        ::prost::Enumeration
6999    )]
7000    #[repr(i32)]
7001    pub enum DisablementCode {
7002        Unknown = 0,
7003        Okay = 1,
7004        NoActiveAccount = 2,
7005        TooFarFromServiceAddress = 3,
7006        InOcean = 4,
7007        BlockedCountry = 6,
7008        DataOverageSandboxPolicy = 7,
7009        CellIsDisabled = 8,
7010        RoamRestricted = 10,
7011        UnknownLocation = 11,
7012        AccountDisabled = 12,
7013        UnsupportedVersion = 13,
7014        MovingTooFastForPolicy = 14,
7015        UnderAviationFlyoverLimits = 15,
7016    }
7017    impl DisablementCode {
7018        /// String value of the enum field names used in the ProtoBuf definition.
7019        ///
7020        /// The values are not transformed in any way and thus are considered stable
7021        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7022        pub fn as_str_name(&self) -> &'static str {
7023            match self {
7024                Self::Unknown => "UNKNOWN",
7025                Self::Okay => "OKAY",
7026                Self::NoActiveAccount => "NO_ACTIVE_ACCOUNT",
7027                Self::TooFarFromServiceAddress => "TOO_FAR_FROM_SERVICE_ADDRESS",
7028                Self::InOcean => "IN_OCEAN",
7029                Self::BlockedCountry => "BLOCKED_COUNTRY",
7030                Self::DataOverageSandboxPolicy => "DATA_OVERAGE_SANDBOX_POLICY",
7031                Self::CellIsDisabled => "CELL_IS_DISABLED",
7032                Self::RoamRestricted => "ROAM_RESTRICTED",
7033                Self::UnknownLocation => "UNKNOWN_LOCATION",
7034                Self::AccountDisabled => "ACCOUNT_DISABLED",
7035                Self::UnsupportedVersion => "UNSUPPORTED_VERSION",
7036                Self::MovingTooFastForPolicy => "MOVING_TOO_FAST_FOR_POLICY",
7037                Self::UnderAviationFlyoverLimits => "UNDER_AVIATION_FLYOVER_LIMITS",
7038            }
7039        }
7040        /// Creates an enum from field names used in the ProtoBuf definition.
7041        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7042            match value {
7043                "UNKNOWN" => Some(Self::Unknown),
7044                "OKAY" => Some(Self::Okay),
7045                "NO_ACTIVE_ACCOUNT" => Some(Self::NoActiveAccount),
7046                "TOO_FAR_FROM_SERVICE_ADDRESS" => Some(Self::TooFarFromServiceAddress),
7047                "IN_OCEAN" => Some(Self::InOcean),
7048                "BLOCKED_COUNTRY" => Some(Self::BlockedCountry),
7049                "DATA_OVERAGE_SANDBOX_POLICY" => Some(Self::DataOverageSandboxPolicy),
7050                "CELL_IS_DISABLED" => Some(Self::CellIsDisabled),
7051                "ROAM_RESTRICTED" => Some(Self::RoamRestricted),
7052                "UNKNOWN_LOCATION" => Some(Self::UnknownLocation),
7053                "ACCOUNT_DISABLED" => Some(Self::AccountDisabled),
7054                "UNSUPPORTED_VERSION" => Some(Self::UnsupportedVersion),
7055                "MOVING_TOO_FAST_FOR_POLICY" => Some(Self::MovingTooFastForPolicy),
7056                "UNDER_AVIATION_FLYOVER_LIMITS" => Some(Self::UnderAviationFlyoverLimits),
7057                _ => None,
7058            }
7059        }
7060    }
7061}
7062#[derive(Clone, PartialEq, ::prost::Message)]
7063pub struct TcpConnectivityTestRequest {
7064    #[prost(string, tag = "1")]
7065    pub target: ::prost::alloc::string::String,
7066    #[prost(uint32, tag = "2")]
7067    pub port: u32,
7068}
7069#[derive(Clone, PartialEq, ::prost::Message)]
7070pub struct UdpConnectivityTestRequest {
7071    #[prost(string, tag = "1")]
7072    pub target: ::prost::alloc::string::String,
7073    #[prost(uint32, tag = "2")]
7074    pub port: u32,
7075    #[prost(enumeration = "udp_connectivity_test_request::UdpProbeDataType", tag = "3")]
7076    pub probe_data: i32,
7077}
7078/// Nested message and enum types in `UdpConnectivityTestRequest`.
7079pub mod udp_connectivity_test_request {
7080    #[derive(
7081        Clone,
7082        Copy,
7083        Debug,
7084        PartialEq,
7085        Eq,
7086        Hash,
7087        PartialOrd,
7088        Ord,
7089        ::prost::Enumeration
7090    )]
7091    #[repr(i32)]
7092    pub enum UdpProbeDataType {
7093        Empty = 0,
7094        DnsStatusRequest = 1,
7095        DtlsClientHello = 2,
7096        DnsVersionBindReq = 3,
7097        RpcCheck = 4,
7098        DnsSd = 5,
7099        SnmpV1Public = 6,
7100        SnmpV3GetRequest = 7,
7101        NtpMessage = 8,
7102        Xdmcp = 9,
7103        Kerberos = 10,
7104        SipOptions = 11,
7105        LdapSearchReq = 12,
7106        MemcachedStats = 13,
7107        Openvpn = 14,
7108        CifsNsUc = 15,
7109        TftpGet = 16,
7110        DhcpInform = 17,
7111        Quic = 18,
7112        Ripv1 = 19,
7113        NfsProcNull = 20,
7114        CoapRequest = 21,
7115    }
7116    impl UdpProbeDataType {
7117        /// String value of the enum field names used in the ProtoBuf definition.
7118        ///
7119        /// The values are not transformed in any way and thus are considered stable
7120        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7121        pub fn as_str_name(&self) -> &'static str {
7122            match self {
7123                Self::Empty => "EMPTY",
7124                Self::DnsStatusRequest => "DNS_STATUS_REQUEST",
7125                Self::DtlsClientHello => "DTLS_CLIENT_HELLO",
7126                Self::DnsVersionBindReq => "DNS_VERSION_BIND_REQ",
7127                Self::RpcCheck => "RPC_CHECK",
7128                Self::DnsSd => "DNS_SD",
7129                Self::SnmpV1Public => "SNMP_V1_PUBLIC",
7130                Self::SnmpV3GetRequest => "SNMP_V3_GET_REQUEST",
7131                Self::NtpMessage => "NTP_MESSAGE",
7132                Self::Xdmcp => "XDMCP",
7133                Self::Kerberos => "KERBEROS",
7134                Self::SipOptions => "SIP_OPTIONS",
7135                Self::LdapSearchReq => "LDAP_SEARCH_REQ",
7136                Self::MemcachedStats => "MEMCACHED_STATS",
7137                Self::Openvpn => "OPENVPN",
7138                Self::CifsNsUc => "CIFS_NS_UC",
7139                Self::TftpGet => "TFTP_GET",
7140                Self::DhcpInform => "DHCP_INFORM",
7141                Self::Quic => "QUIC",
7142                Self::Ripv1 => "RIPV1",
7143                Self::NfsProcNull => "NFS_PROC_NULL",
7144                Self::CoapRequest => "COAP_REQUEST",
7145            }
7146        }
7147        /// Creates an enum from field names used in the ProtoBuf definition.
7148        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7149            match value {
7150                "EMPTY" => Some(Self::Empty),
7151                "DNS_STATUS_REQUEST" => Some(Self::DnsStatusRequest),
7152                "DTLS_CLIENT_HELLO" => Some(Self::DtlsClientHello),
7153                "DNS_VERSION_BIND_REQ" => Some(Self::DnsVersionBindReq),
7154                "RPC_CHECK" => Some(Self::RpcCheck),
7155                "DNS_SD" => Some(Self::DnsSd),
7156                "SNMP_V1_PUBLIC" => Some(Self::SnmpV1Public),
7157                "SNMP_V3_GET_REQUEST" => Some(Self::SnmpV3GetRequest),
7158                "NTP_MESSAGE" => Some(Self::NtpMessage),
7159                "XDMCP" => Some(Self::Xdmcp),
7160                "KERBEROS" => Some(Self::Kerberos),
7161                "SIP_OPTIONS" => Some(Self::SipOptions),
7162                "LDAP_SEARCH_REQ" => Some(Self::LdapSearchReq),
7163                "MEMCACHED_STATS" => Some(Self::MemcachedStats),
7164                "OPENVPN" => Some(Self::Openvpn),
7165                "CIFS_NS_UC" => Some(Self::CifsNsUc),
7166                "TFTP_GET" => Some(Self::TftpGet),
7167                "DHCP_INFORM" => Some(Self::DhcpInform),
7168                "QUIC" => Some(Self::Quic),
7169                "RIPV1" => Some(Self::Ripv1),
7170                "NFS_PROC_NULL" => Some(Self::NfsProcNull),
7171                "COAP_REQUEST" => Some(Self::CoapRequest),
7172                _ => None,
7173            }
7174        }
7175    }
7176}
7177#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7178pub struct GetGoroutineStackTracesRequest {}
7179#[derive(Clone, PartialEq, ::prost::Message)]
7180pub struct GetGoroutineStackTracesResponse {
7181    #[prost(string, tag = "1")]
7182    pub stack_traces: ::prost::alloc::string::String,
7183}
7184#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7185#[repr(i32)]
7186pub enum WifiClientSandboxAlert {
7187    SandboxAlertUnknown = 0,
7188    SandboxAlertPortal = 1,
7189    SandboxAlertGroundApi = 2,
7190    SandboxAlertStarlinkApi = 3,
7191}
7192impl WifiClientSandboxAlert {
7193    /// String value of the enum field names used in the ProtoBuf definition.
7194    ///
7195    /// The values are not transformed in any way and thus are considered stable
7196    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7197    pub fn as_str_name(&self) -> &'static str {
7198        match self {
7199            Self::SandboxAlertUnknown => "SANDBOX_ALERT_UNKNOWN",
7200            Self::SandboxAlertPortal => "SANDBOX_ALERT_PORTAL",
7201            Self::SandboxAlertGroundApi => "SANDBOX_ALERT_GROUND_API",
7202            Self::SandboxAlertStarlinkApi => "SANDBOX_ALERT_STARLINK_API",
7203        }
7204    }
7205    /// Creates an enum from field names used in the ProtoBuf definition.
7206    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7207        match value {
7208            "SANDBOX_ALERT_UNKNOWN" => Some(Self::SandboxAlertUnknown),
7209            "SANDBOX_ALERT_PORTAL" => Some(Self::SandboxAlertPortal),
7210            "SANDBOX_ALERT_GROUND_API" => Some(Self::SandboxAlertGroundApi),
7211            "SANDBOX_ALERT_STARLINK_API" => Some(Self::SandboxAlertStarlinkApi),
7212            _ => None,
7213        }
7214    }
7215}
7216#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7217#[repr(i32)]
7218pub enum PositionSource {
7219    Auto = 0,
7220    None = 1,
7221    UtInfo = 2,
7222    External = 3,
7223    Gps = 4,
7224    Starlink = 5,
7225    GncGps = 6,
7226    GncPnt = 7,
7227    GncFused = 8,
7228    GncRaw = 9,
7229}
7230impl PositionSource {
7231    /// String value of the enum field names used in the ProtoBuf definition.
7232    ///
7233    /// The values are not transformed in any way and thus are considered stable
7234    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7235    pub fn as_str_name(&self) -> &'static str {
7236        match self {
7237            Self::Auto => "AUTO",
7238            Self::None => "NONE",
7239            Self::UtInfo => "UT_INFO",
7240            Self::External => "EXTERNAL",
7241            Self::Gps => "GPS",
7242            Self::Starlink => "STARLINK",
7243            Self::GncGps => "GNC_GPS",
7244            Self::GncPnt => "GNC_PNT",
7245            Self::GncFused => "GNC_FUSED",
7246            Self::GncRaw => "GNC_RAW",
7247        }
7248    }
7249    /// Creates an enum from field names used in the ProtoBuf definition.
7250    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7251        match value {
7252            "AUTO" => Some(Self::Auto),
7253            "NONE" => Some(Self::None),
7254            "UT_INFO" => Some(Self::UtInfo),
7255            "EXTERNAL" => Some(Self::External),
7256            "GPS" => Some(Self::Gps),
7257            "STARLINK" => Some(Self::Starlink),
7258            "GNC_GPS" => Some(Self::GncGps),
7259            "GNC_PNT" => Some(Self::GncPnt),
7260            "GNC_FUSED" => Some(Self::GncFused),
7261            "GNC_RAW" => Some(Self::GncRaw),
7262            _ => None,
7263        }
7264    }
7265}
7266#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7267#[repr(i32)]
7268pub enum SpeedtestError {
7269    None = 0,
7270    Unknown = 1,
7271    Token = 2,
7272    Api = 3,
7273    NoResult = 4,
7274    Offline = 5,
7275}
7276impl SpeedtestError {
7277    /// String value of the enum field names used in the ProtoBuf definition.
7278    ///
7279    /// The values are not transformed in any way and thus are considered stable
7280    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7281    pub fn as_str_name(&self) -> &'static str {
7282        match self {
7283            Self::None => "SPEEDTEST_ERROR_NONE",
7284            Self::Unknown => "SPEEDTEST_ERROR_UNKNOWN",
7285            Self::Token => "SPEEDTEST_ERROR_TOKEN",
7286            Self::Api => "SPEEDTEST_ERROR_API",
7287            Self::NoResult => "SPEEDTEST_ERROR_NO_RESULT",
7288            Self::Offline => "SPEEDTEST_ERROR_OFFLINE",
7289        }
7290    }
7291    /// Creates an enum from field names used in the ProtoBuf definition.
7292    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7293        match value {
7294            "SPEEDTEST_ERROR_NONE" => Some(Self::None),
7295            "SPEEDTEST_ERROR_UNKNOWN" => Some(Self::Unknown),
7296            "SPEEDTEST_ERROR_TOKEN" => Some(Self::Token),
7297            "SPEEDTEST_ERROR_API" => Some(Self::Api),
7298            "SPEEDTEST_ERROR_NO_RESULT" => Some(Self::NoResult),
7299            "SPEEDTEST_ERROR_OFFLINE" => Some(Self::Offline),
7300            _ => None,
7301        }
7302    }
7303}
7304/// Generated client implementations.
7305pub mod device_client {
7306    #![allow(
7307        unused_variables,
7308        dead_code,
7309        missing_docs,
7310        clippy::wildcard_imports,
7311        clippy::let_unit_value,
7312    )]
7313    use tonic::codegen::*;
7314    use tonic::codegen::http::Uri;
7315    #[derive(Debug, Clone)]
7316    pub struct DeviceClient<T> {
7317        inner: tonic::client::Grpc<T>,
7318    }
7319    impl DeviceClient<tonic::transport::Channel> {
7320        /// Attempt to create a new client by connecting to a given endpoint.
7321        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
7322        where
7323            D: TryInto<tonic::transport::Endpoint>,
7324            D::Error: Into<StdError>,
7325        {
7326            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
7327            Ok(Self::new(conn))
7328        }
7329    }
7330    impl<T> DeviceClient<T>
7331    where
7332        T: tonic::client::GrpcService<tonic::body::Body>,
7333        T::Error: Into<StdError>,
7334        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
7335        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
7336    {
7337        pub fn new(inner: T) -> Self {
7338            let inner = tonic::client::Grpc::new(inner);
7339            Self { inner }
7340        }
7341        pub fn with_origin(inner: T, origin: Uri) -> Self {
7342            let inner = tonic::client::Grpc::with_origin(inner, origin);
7343            Self { inner }
7344        }
7345        pub fn with_interceptor<F>(
7346            inner: T,
7347            interceptor: F,
7348        ) -> DeviceClient<InterceptedService<T, F>>
7349        where
7350            F: tonic::service::Interceptor,
7351            T::ResponseBody: Default,
7352            T: tonic::codegen::Service<
7353                http::Request<tonic::body::Body>,
7354                Response = http::Response<
7355                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
7356                >,
7357            >,
7358            <T as tonic::codegen::Service<
7359                http::Request<tonic::body::Body>,
7360            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
7361        {
7362            DeviceClient::new(InterceptedService::new(inner, interceptor))
7363        }
7364        /// Compress requests with the given encoding.
7365        ///
7366        /// This requires the server to support it otherwise it might respond with an
7367        /// error.
7368        #[must_use]
7369        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
7370            self.inner = self.inner.send_compressed(encoding);
7371            self
7372        }
7373        /// Enable decompressing responses.
7374        #[must_use]
7375        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
7376            self.inner = self.inner.accept_compressed(encoding);
7377            self
7378        }
7379        /// Limits the maximum size of a decoded message.
7380        ///
7381        /// Default: `4MB`
7382        #[must_use]
7383        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
7384            self.inner = self.inner.max_decoding_message_size(limit);
7385            self
7386        }
7387        /// Limits the maximum size of an encoded message.
7388        ///
7389        /// Default: `usize::MAX`
7390        #[must_use]
7391        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
7392            self.inner = self.inner.max_encoding_message_size(limit);
7393            self
7394        }
7395        pub async fn stream(
7396            &mut self,
7397            request: impl tonic::IntoStreamingRequest<Message = super::ToDevice>,
7398        ) -> std::result::Result<
7399            tonic::Response<tonic::codec::Streaming<super::FromDevice>>,
7400            tonic::Status,
7401        > {
7402            self.inner
7403                .ready()
7404                .await
7405                .map_err(|e| {
7406                    tonic::Status::unknown(
7407                        format!("Service was not ready: {}", e.into()),
7408                    )
7409                })?;
7410            let codec = tonic::codec::ProstCodec::default();
7411            let path = http::uri::PathAndQuery::from_static(
7412                "/SpaceX.API.Device.Device/Stream",
7413            );
7414            let mut req = request.into_streaming_request();
7415            req.extensions_mut()
7416                .insert(GrpcMethod::new("SpaceX.API.Device.Device", "Stream"));
7417            self.inner.streaming(req, path, codec).await
7418        }
7419        pub async fn handle(
7420            &mut self,
7421            request: impl tonic::IntoRequest<super::Request>,
7422        ) -> std::result::Result<tonic::Response<super::Response>, tonic::Status> {
7423            self.inner
7424                .ready()
7425                .await
7426                .map_err(|e| {
7427                    tonic::Status::unknown(
7428                        format!("Service was not ready: {}", e.into()),
7429                    )
7430                })?;
7431            let codec = tonic::codec::ProstCodec::default();
7432            let path = http::uri::PathAndQuery::from_static(
7433                "/SpaceX.API.Device.Device/Handle",
7434            );
7435            let mut req = request.into_request();
7436            req.extensions_mut()
7437                .insert(GrpcMethod::new("SpaceX.API.Device.Device", "Handle"));
7438            self.inner.unary(req, path, codec).await
7439        }
7440    }
7441}