mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
1857 lines
75 KiB
Swift
1857 lines
75 KiB
Swift
// DO NOT EDIT.
|
|
// swift-format-ignore-file
|
|
//
|
|
// Generated by the Swift generator plugin for the protocol buffer compiler.
|
|
// Source: radioconfig.proto
|
|
//
|
|
// For information on using the generated types, please see the documentation:
|
|
// https://github.com/apple/swift-protobuf/
|
|
|
|
///
|
|
/// Meshtastic protobufs
|
|
///
|
|
/// For more information on protobufs (and tools to use them with the language of your choice) see
|
|
/// https://developers.google.com/protocol-buffers/docs/proto3
|
|
///
|
|
/// We are not placing any of these defs inside a package, because if you do the
|
|
/// resulting nanopb version is super verbose package mesh.
|
|
///
|
|
/// Protobuf build instructions:
|
|
///
|
|
/// To build java classes for reading writing:
|
|
/// protoc -I=. --java_out /tmp mesh.proto
|
|
///
|
|
/// To generate Nanopb c code:
|
|
/// /home/kevinh/packages/nanopb-0.4.0-linux-x86/generator-bin/protoc --nanopb_out=/tmp -I=app/src/main/proto mesh.proto
|
|
///
|
|
/// Nanopb binaries available here: https://jpa.kapsi.fi/nanopb/download/ use nanopb 0.4.0
|
|
|
|
import Foundation
|
|
import SwiftProtobuf
|
|
|
|
// If the compiler emits an error on this type, it is because this file
|
|
// was generated by a version of the `protoc` Swift plug-in that is
|
|
// incompatible with the version of SwiftProtobuf to which you are linking.
|
|
// Please ensure that you are building against the same version of the API
|
|
// that was used to generate this file.
|
|
fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
|
|
struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
|
|
typealias Version = _2
|
|
}
|
|
|
|
///
|
|
/// The frequency/regulatory region the user has selected.
|
|
///
|
|
/// Note: In 1.0 builds (which must still be supported by the android app for a
|
|
/// long time) this field will be unpopulated.
|
|
///
|
|
/// If firmware is ever upgraded from an old 1.0ish build, the old
|
|
/// MyNodeInfo.region string will be used to set UserPreferences.region and the
|
|
/// old value will be no longer set.
|
|
enum RegionCode: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
case unset // = 0
|
|
case us // = 1
|
|
case eu433 // = 2
|
|
case eu865 // = 3
|
|
case cn // = 4
|
|
case jp // = 5
|
|
case anz // = 6
|
|
case kr // = 7
|
|
case tw // = 8
|
|
case ru // = 9
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .unset
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .unset
|
|
case 1: self = .us
|
|
case 2: self = .eu433
|
|
case 3: self = .eu865
|
|
case 4: self = .cn
|
|
case 5: self = .jp
|
|
case 6: self = .anz
|
|
case 7: self = .kr
|
|
case 8: self = .tw
|
|
case 9: self = .ru
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .unset: return 0
|
|
case .us: return 1
|
|
case .eu433: return 2
|
|
case .eu865: return 3
|
|
case .cn: return 4
|
|
case .jp: return 5
|
|
case .anz: return 6
|
|
case .kr: return 7
|
|
case .tw: return 8
|
|
case .ru: return 9
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension RegionCode: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [RegionCode] = [
|
|
.unset,
|
|
.us,
|
|
.eu433,
|
|
.eu865,
|
|
.cn,
|
|
.jp,
|
|
.anz,
|
|
.kr,
|
|
.tw,
|
|
.ru,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// Sets the charge control current of devices with a battery charger that can be
|
|
/// configured. This is passed into the axp power management chip like on the tbeam.
|
|
enum ChargeCurrent: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
case maunset // = 0
|
|
case ma100 // = 1
|
|
case ma190 // = 2
|
|
case ma280 // = 3
|
|
case ma360 // = 4
|
|
case ma450 // = 5
|
|
case ma550 // = 6
|
|
case ma630 // = 7
|
|
case ma700 // = 8
|
|
case ma780 // = 9
|
|
case ma880 // = 10
|
|
case ma960 // = 11
|
|
case ma1000 // = 12
|
|
case ma1080 // = 13
|
|
case ma1160 // = 14
|
|
case ma1240 // = 15
|
|
case ma1320 // = 16
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .maunset
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .maunset
|
|
case 1: self = .ma100
|
|
case 2: self = .ma190
|
|
case 3: self = .ma280
|
|
case 4: self = .ma360
|
|
case 5: self = .ma450
|
|
case 6: self = .ma550
|
|
case 7: self = .ma630
|
|
case 8: self = .ma700
|
|
case 9: self = .ma780
|
|
case 10: self = .ma880
|
|
case 11: self = .ma960
|
|
case 12: self = .ma1000
|
|
case 13: self = .ma1080
|
|
case 14: self = .ma1160
|
|
case 15: self = .ma1240
|
|
case 16: self = .ma1320
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .maunset: return 0
|
|
case .ma100: return 1
|
|
case .ma190: return 2
|
|
case .ma280: return 3
|
|
case .ma360: return 4
|
|
case .ma450: return 5
|
|
case .ma550: return 6
|
|
case .ma630: return 7
|
|
case .ma700: return 8
|
|
case .ma780: return 9
|
|
case .ma880: return 10
|
|
case .ma960: return 11
|
|
case .ma1000: return 12
|
|
case .ma1080: return 13
|
|
case .ma1160: return 14
|
|
case .ma1240: return 15
|
|
case .ma1320: return 16
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension ChargeCurrent: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [ChargeCurrent] = [
|
|
.maunset,
|
|
.ma100,
|
|
.ma190,
|
|
.ma280,
|
|
.ma360,
|
|
.ma450,
|
|
.ma550,
|
|
.ma630,
|
|
.ma700,
|
|
.ma780,
|
|
.ma880,
|
|
.ma960,
|
|
.ma1000,
|
|
.ma1080,
|
|
.ma1160,
|
|
.ma1240,
|
|
.ma1320,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// How the GPS hardware in this unit is operated.
|
|
/// Note: This is independent of how our location is shared with other devices.
|
|
/// For that see LocationSharing
|
|
enum GpsOperation: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
|
|
///
|
|
/// This is treated as GpsOpMobile - it is the default setting
|
|
case gpsOpUnset // = 0
|
|
|
|
///
|
|
/// Note: This mode was removed, because it is identical go GpsOpMobile with a gps_update_rate of once per day
|
|
/// This node is mostly stationary, we should try to get location only once per day,
|
|
/// Once we have that position we should turn the GPS to sleep mode
|
|
/// This is the recommended configuration for stationary 'router' nodes
|
|
case gpsOpStationary // = 1
|
|
|
|
///
|
|
/// This node is mobile and we should get GPS position at a rate governed by gps_update_rate
|
|
case gpsOpMobile // = 2
|
|
|
|
///
|
|
/// We should only use the GPS to get time (no location data should be acquired/stored)
|
|
/// Once we have the time we treat gps_update_interval as MAXINT (i.e. sleep forever)
|
|
case gpsOpTimeOnly // = 3
|
|
|
|
///
|
|
/// GPS is always turned off - this mode is not recommended - use GpsOpTimeOnly instead
|
|
case gpsOpDisabled // = 4
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .gpsOpUnset
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .gpsOpUnset
|
|
case 1: self = .gpsOpStationary
|
|
case 2: self = .gpsOpMobile
|
|
case 3: self = .gpsOpTimeOnly
|
|
case 4: self = .gpsOpDisabled
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .gpsOpUnset: return 0
|
|
case .gpsOpStationary: return 1
|
|
case .gpsOpMobile: return 2
|
|
case .gpsOpTimeOnly: return 3
|
|
case .gpsOpDisabled: return 4
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension GpsOperation: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [GpsOperation] = [
|
|
.gpsOpUnset,
|
|
.gpsOpStationary,
|
|
.gpsOpMobile,
|
|
.gpsOpTimeOnly,
|
|
.gpsOpDisabled,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// How the GPS coordinates are displayed on the OLED screen.
|
|
enum GpsCoordinateFormat: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
|
|
///
|
|
/// GPS coordinates are displayed in the normal decimal degrees format:
|
|
/// DD.DDDDDD DDD.DDDDDD
|
|
case gpsFormatDec // = 0
|
|
|
|
///
|
|
/// GPS coordinates are displayed in the degrees minutes seconds format:
|
|
/// DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
case gpsFormatDms // = 1
|
|
|
|
///
|
|
/// GPS coordinates are displayed in Universal Transverse Mercator format:
|
|
/// ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
case gpsFormatUtm // = 2
|
|
|
|
///
|
|
/// GPS coordinates are displayed in Military Grid Reference System format:
|
|
/// ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
/// E is easting, N is northing
|
|
case gpsFormatMgrs // = 3
|
|
|
|
///
|
|
/// GPS coordinates are displayed in Open Location Code (aka Plus Codes).
|
|
case gpsFormatOlc // = 4
|
|
|
|
///
|
|
/// GPS coordinates are displayed in Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
/// Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, E is the easting,
|
|
/// N is the northing
|
|
case gpsFormatOsgr // = 5
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .gpsFormatDec
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .gpsFormatDec
|
|
case 1: self = .gpsFormatDms
|
|
case 2: self = .gpsFormatUtm
|
|
case 3: self = .gpsFormatMgrs
|
|
case 4: self = .gpsFormatOlc
|
|
case 5: self = .gpsFormatOsgr
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .gpsFormatDec: return 0
|
|
case .gpsFormatDms: return 1
|
|
case .gpsFormatUtm: return 2
|
|
case .gpsFormatMgrs: return 3
|
|
case .gpsFormatOlc: return 4
|
|
case .gpsFormatOsgr: return 5
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension GpsCoordinateFormat: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [GpsCoordinateFormat] = [
|
|
.gpsFormatDec,
|
|
.gpsFormatDms,
|
|
.gpsFormatUtm,
|
|
.gpsFormatMgrs,
|
|
.gpsFormatOlc,
|
|
.gpsFormatOsgr,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// How our location is shared with other nodes (or the local phone)
|
|
enum LocationSharing: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
|
|
///
|
|
/// This is the default and treated as LocEnabled.
|
|
case locUnset // = 0
|
|
|
|
///
|
|
/// We are sharing our location
|
|
case locEnabled // = 1
|
|
|
|
///
|
|
/// We are not sharing our location (if the unit has a GPS it will default to only get time - i.e. GpsOpTimeOnly)
|
|
case locDisabled // = 2
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .locUnset
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .locUnset
|
|
case 1: self = .locEnabled
|
|
case 2: self = .locDisabled
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .locUnset: return 0
|
|
case .locEnabled: return 1
|
|
case .locDisabled: return 2
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension LocationSharing: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [LocationSharing] = [
|
|
.locUnset,
|
|
.locEnabled,
|
|
.locDisabled,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// Bit field of boolean configuration options, indicating which optional
|
|
/// fields to include when assembling POSITION messages
|
|
/// Longitude and latitude are always included (also time if GPS-synced)
|
|
///
|
|
/// NOTE: the more fields are included, the larger the message will be -
|
|
/// leading to longer airtime and a higher risk of packet loss
|
|
enum PositionFlags: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
|
|
/// Required for compilation
|
|
case posUndefined // = 0
|
|
|
|
/// Include an altitude value (if available)
|
|
case posAltitude // = 1
|
|
|
|
/// Altitude value is MSL
|
|
case posAltMsl // = 2
|
|
|
|
/// Include geoidal separation
|
|
case posGeoSep // = 4
|
|
|
|
/// Include the DOP value ; PDOP used by default, see below
|
|
case posDop // = 8
|
|
|
|
/// If POS_DOP set, send separate HDOP / VDOP values instead of PDOP
|
|
case posHvdop // = 16
|
|
|
|
/// Include battery level
|
|
case posBattery // = 32
|
|
|
|
/// Include number of "satellites in view"
|
|
case posSatinview // = 64
|
|
|
|
/// Include a sequence number incremented per packet
|
|
case posSeqNos // = 128
|
|
|
|
/// Include positional timestamp (from GPS solution)
|
|
case posTimestamp // = 256
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .posUndefined
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .posUndefined
|
|
case 1: self = .posAltitude
|
|
case 2: self = .posAltMsl
|
|
case 4: self = .posGeoSep
|
|
case 8: self = .posDop
|
|
case 16: self = .posHvdop
|
|
case 32: self = .posBattery
|
|
case 64: self = .posSatinview
|
|
case 128: self = .posSeqNos
|
|
case 256: self = .posTimestamp
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .posUndefined: return 0
|
|
case .posAltitude: return 1
|
|
case .posAltMsl: return 2
|
|
case .posGeoSep: return 4
|
|
case .posDop: return 8
|
|
case .posHvdop: return 16
|
|
case .posBattery: return 32
|
|
case .posSatinview: return 64
|
|
case .posSeqNos: return 128
|
|
case .posTimestamp: return 256
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension PositionFlags: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [PositionFlags] = [
|
|
.posUndefined,
|
|
.posAltitude,
|
|
.posAltMsl,
|
|
.posGeoSep,
|
|
.posDop,
|
|
.posHvdop,
|
|
.posBattery,
|
|
.posSatinview,
|
|
.posSeqNos,
|
|
.posTimestamp,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
///
|
|
/// The entire set of user settable/readable settings for our radio device.
|
|
/// Includes both the current channel settings and any preferences the user has
|
|
/// set for behavior of their node
|
|
struct RadioConfig {
|
|
// SwiftProtobuf.Message conformance is added in an extension below. See the
|
|
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for
|
|
// methods supported on all messages.
|
|
|
|
var preferences: RadioConfig.UserPreferences {
|
|
get {return _preferences ?? RadioConfig.UserPreferences()}
|
|
set {_preferences = newValue}
|
|
}
|
|
/// Returns true if `preferences` has been explicitly set.
|
|
var hasPreferences: Bool {return self._preferences != nil}
|
|
/// Clears the value of `preferences`. Subsequent reads from it will return its default value.
|
|
mutating func clearPreferences() {self._preferences = nil}
|
|
|
|
var unknownFields = SwiftProtobuf.UnknownStorage()
|
|
|
|
///
|
|
/// See [software design](/software/other/sw-design.md) for more information on these preferences
|
|
struct UserPreferences {
|
|
// SwiftProtobuf.Message conformance is added in an extension below. See the
|
|
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for
|
|
// methods supported on all messages.
|
|
|
|
///
|
|
/// We should send our position this often (but only if it has changed significantly)
|
|
/// Defaults to 15 minutes
|
|
var positionBroadcastSecs: UInt32 {
|
|
get {return _storage._positionBroadcastSecs}
|
|
set {_uniqueStorage()._positionBroadcastSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// We should send our position this often (but only if it has changed significantly)
|
|
/// Defaults to 15 minutes
|
|
var positionBroadcastSmart: Bool {
|
|
get {return _storage._positionBroadcastSmart}
|
|
set {_uniqueStorage()._positionBroadcastSmart = newValue}
|
|
}
|
|
|
|
///
|
|
/// Send our owner info at least this often (also we always send once at boot - to rejoin the mesh)
|
|
var sendOwnerInterval: UInt32 {
|
|
get {return _storage._sendOwnerInterval}
|
|
set {_uniqueStorage()._sendOwnerInterval = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of 1 minute
|
|
var waitBluetoothSecs: UInt32 {
|
|
get {return _storage._waitBluetoothSecs}
|
|
set {_uniqueStorage()._waitBluetoothSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of one minute
|
|
var screenOnSecs: UInt32 {
|
|
get {return _storage._screenOnSecs}
|
|
set {_uniqueStorage()._screenOnSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of 15 minutes
|
|
/// IMPORTANT NOTE FOR DEVICE CLIENTS: YOU MUST SEND SOME SORT OF PACKET TO THE PHONE AT LEAST THIS OFTEN OR THE DEVICE WILL DECIDE YOU ARE GONE!
|
|
var phoneTimeoutSecs: UInt32 {
|
|
get {return _storage._phoneTimeoutSecs}
|
|
set {_uniqueStorage()._phoneTimeoutSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of two hours, MAXUINT for disabled
|
|
var phoneSdsTimeoutSec: UInt32 {
|
|
get {return _storage._phoneSdsTimeoutSec}
|
|
set {_uniqueStorage()._phoneSdsTimeoutSec = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of two hours, MAXUINT for disabled
|
|
var meshSdsTimeoutSecs: UInt32 {
|
|
get {return _storage._meshSdsTimeoutSecs}
|
|
set {_uniqueStorage()._meshSdsTimeoutSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of one year
|
|
var sdsSecs: UInt32 {
|
|
get {return _storage._sdsSecs}
|
|
set {_uniqueStorage()._sdsSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of 3600
|
|
var lsSecs: UInt32 {
|
|
get {return _storage._lsSecs}
|
|
set {_uniqueStorage()._lsSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Power management state machine option.
|
|
/// See [power management](/software/other/power.md) for details.
|
|
/// 0 for default of 10 seconds
|
|
var minWakeSecs: UInt32 {
|
|
get {return _storage._minWakeSecs}
|
|
set {_uniqueStorage()._minWakeSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, this node will try to join the specified wifi network and
|
|
/// acquire an address via DHCP
|
|
var wifiSsid: String {
|
|
get {return _storage._wifiSsid}
|
|
set {_uniqueStorage()._wifiSsid = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, will be use to authenticate to the named wifi
|
|
var wifiPassword: String {
|
|
get {return _storage._wifiPassword}
|
|
set {_uniqueStorage()._wifiPassword = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, the node will operate as an AP (and DHCP server), otherwise it
|
|
/// will be a station
|
|
var wifiApMode: Bool {
|
|
get {return _storage._wifiApMode}
|
|
set {_uniqueStorage()._wifiApMode = newValue}
|
|
}
|
|
|
|
///
|
|
/// The region code for my radio (US, CN, EU433, etc...)
|
|
var region: RegionCode {
|
|
get {return _storage._region}
|
|
set {_uniqueStorage()._region = newValue}
|
|
}
|
|
|
|
///
|
|
/// Sets the current of the battery charger
|
|
var chargeCurrent: ChargeCurrent {
|
|
get {return _storage._chargeCurrent}
|
|
set {_uniqueStorage()._chargeCurrent = newValue}
|
|
}
|
|
|
|
///
|
|
/// Are we operating as a router.
|
|
/// Changes behavior in the following ways:
|
|
/// The device will only sleep for critically low battery level (i.e. always tries to stay alive for the mesh)
|
|
/// In the future routing decisions will preferentially route packets through nodes with this attribute (because assumed
|
|
/// good line of sight)
|
|
var isRouter: Bool {
|
|
get {return _storage._isRouter}
|
|
set {_uniqueStorage()._isRouter = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
|
|
/// we should try to minimize power consumption as much as possible.
|
|
/// YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
|
|
var isLowPower: Bool {
|
|
get {return _storage._isLowPower}
|
|
set {_uniqueStorage()._isLowPower = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, this node is at a fixed position.
|
|
/// We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node.
|
|
/// The lat/lon/alt can be set by an internal GPS or with the help of the app.
|
|
var fixedPosition: Bool {
|
|
get {return _storage._fixedPosition}
|
|
set {_uniqueStorage()._fixedPosition = newValue}
|
|
}
|
|
|
|
///
|
|
/// If set, this will disable the SerialConsole by not initilizing the StreamAPI
|
|
var serialDisabled: Bool {
|
|
get {return _storage._serialDisabled}
|
|
set {_uniqueStorage()._serialDisabled = newValue}
|
|
}
|
|
|
|
///
|
|
/// How our location is shared with other nodes (or the local phone)
|
|
var locationShare: LocationSharing {
|
|
get {return _storage._locationShare}
|
|
set {_uniqueStorage()._locationShare = newValue}
|
|
}
|
|
|
|
///
|
|
/// How the GPS hardware in this unit is operated.
|
|
/// Note: This is independent of how our location is shared with other devices.
|
|
/// For that see LocationSharing
|
|
var gpsOperation: GpsOperation {
|
|
get {return _storage._gpsOperation}
|
|
set {_uniqueStorage()._gpsOperation = newValue}
|
|
}
|
|
|
|
///
|
|
/// How often should we try to get GPS position (in seconds) when we are in GpsOpMobile mode?
|
|
/// or zero for the default of once every 30 seconds
|
|
/// or a very large value (maxint) to update only once at boot.
|
|
var gpsUpdateInterval: UInt32 {
|
|
get {return _storage._gpsUpdateInterval}
|
|
set {_uniqueStorage()._gpsUpdateInterval = newValue}
|
|
}
|
|
|
|
///
|
|
/// How long should we try to get our position during each gps_update_interval attempt? (in seconds)
|
|
/// Or if zero, use the default of 30 seconds.
|
|
/// If we don't get a new gps fix in that time, the gps will be put into sleep until the next gps_update_rate
|
|
/// window.
|
|
var gpsAttemptTime: UInt32 {
|
|
get {return _storage._gpsAttemptTime}
|
|
set {_uniqueStorage()._gpsAttemptTime = newValue}
|
|
}
|
|
|
|
///
|
|
/// Shall we accept 2D GPS fixes? By default, only 3D fixes are accepted
|
|
/// (during a 2D fix, altitude values are unreliable and will be excluded)
|
|
var gpsAccept2D: Bool {
|
|
get {return _storage._gpsAccept2D}
|
|
set {_uniqueStorage()._gpsAccept2D = newValue}
|
|
}
|
|
|
|
///
|
|
/// GPS maximum DOP accepted (dilution of precision)
|
|
/// Set a rejection threshold for GPS readings based on their precision,
|
|
/// relative to the GPS rated accuracy (which is typically ~3m)
|
|
/// Solutions above this value will be treated as retryable errors!
|
|
///
|
|
/// Useful range is between 1 - 64 (3m - <~200m)
|
|
/// By default (if zero), accept all GPS readings
|
|
var gpsMaxDop: UInt32 {
|
|
get {return _storage._gpsMaxDop}
|
|
set {_uniqueStorage()._gpsMaxDop = newValue}
|
|
}
|
|
|
|
///
|
|
/// This parameter is for advanced users with advanced test equipment, we do not recommend most users use it.
|
|
/// A frequency offset that is added to to the calculated band center frequency.
|
|
/// Used to correct for crystal calibration errors.
|
|
var frequencyOffset: Float {
|
|
get {return _storage._frequencyOffset}
|
|
set {_uniqueStorage()._frequencyOffset = newValue}
|
|
}
|
|
|
|
///
|
|
/// The server to use for our MQTT global message gateway feature.
|
|
/// If not set, the default server will be used
|
|
var mqttServer: String {
|
|
get {return _storage._mqttServer}
|
|
set {_uniqueStorage()._mqttServer = newValue}
|
|
}
|
|
|
|
///
|
|
/// If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as
|
|
/// is_uplink_enabled or is_downlink_enabled.
|
|
/// But if this flag is set, all MQTT features will be disabled and no servers will be contacted.
|
|
var mqttDisabled: Bool {
|
|
get {return _storage._mqttDisabled}
|
|
set {_uniqueStorage()._mqttDisabled = newValue}
|
|
}
|
|
|
|
///
|
|
/// How the GPS coordinates are displayed on the OLED screen.
|
|
var gpsFormat: GpsCoordinateFormat {
|
|
get {return _storage._gpsFormat}
|
|
set {_uniqueStorage()._gpsFormat = newValue}
|
|
}
|
|
|
|
///
|
|
/// This setting is never saved to disk, but if set, all device settings will be returned to factory defaults.
|
|
/// (Region, serial number etc... will be preserved)
|
|
var factoryReset: Bool {
|
|
get {return _storage._factoryReset}
|
|
set {_uniqueStorage()._factoryReset = newValue}
|
|
}
|
|
|
|
///
|
|
/// By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
|
/// Set this to true to leave the debug log outputting even when API is active.
|
|
var debugLogEnabled: Bool {
|
|
get {return _storage._debugLogEnabled}
|
|
set {_uniqueStorage()._debugLogEnabled = newValue}
|
|
}
|
|
|
|
///
|
|
/// If true, radio should not try to be smart about what packets to queue to
|
|
/// the phone
|
|
/// bool keep_all_packets = 101;
|
|
/// If true, we will try to capture all the packets sent on the mesh, not just the ones destined to our node.
|
|
/// bool promiscuous_mode = 102;
|
|
/// For testing it is useful sometimes to force a node to never listen to
|
|
/// particular other nodes (simulating radio out of range). All nodenums listed
|
|
/// in ignore_incoming will have packets they send droped on receive (by router.cpp)
|
|
var ignoreIncoming: [UInt32] {
|
|
get {return _storage._ignoreIncoming}
|
|
set {_uniqueStorage()._ignoreIncoming = newValue}
|
|
}
|
|
|
|
///
|
|
/// Preferences for the SerialPlugin
|
|
/// FIXME - Move this out of UserPreferences and into a section for plugin configuration.
|
|
var serialpluginEnabled: Bool {
|
|
get {return _storage._serialpluginEnabled}
|
|
set {_uniqueStorage()._serialpluginEnabled = newValue}
|
|
}
|
|
|
|
var serialpluginEcho: Bool {
|
|
get {return _storage._serialpluginEcho}
|
|
set {_uniqueStorage()._serialpluginEcho = newValue}
|
|
}
|
|
|
|
var serialpluginRxd: UInt32 {
|
|
get {return _storage._serialpluginRxd}
|
|
set {_uniqueStorage()._serialpluginRxd = newValue}
|
|
}
|
|
|
|
var serialpluginTxd: UInt32 {
|
|
get {return _storage._serialpluginTxd}
|
|
set {_uniqueStorage()._serialpluginTxd = newValue}
|
|
}
|
|
|
|
var serialpluginTimeout: UInt32 {
|
|
get {return _storage._serialpluginTimeout}
|
|
set {_uniqueStorage()._serialpluginTimeout = newValue}
|
|
}
|
|
|
|
var serialpluginMode: UInt32 {
|
|
get {return _storage._serialpluginMode}
|
|
set {_uniqueStorage()._serialpluginMode = newValue}
|
|
}
|
|
|
|
///
|
|
/// Preferences for the ExternalNotificationPlugin
|
|
/// FIXME - Move this out of UserPreferences and into a section for plugin configuration.
|
|
var extNotificationPluginEnabled: Bool {
|
|
get {return _storage._extNotificationPluginEnabled}
|
|
set {_uniqueStorage()._extNotificationPluginEnabled = newValue}
|
|
}
|
|
|
|
var extNotificationPluginOutputMs: UInt32 {
|
|
get {return _storage._extNotificationPluginOutputMs}
|
|
set {_uniqueStorage()._extNotificationPluginOutputMs = newValue}
|
|
}
|
|
|
|
var extNotificationPluginOutput: UInt32 {
|
|
get {return _storage._extNotificationPluginOutput}
|
|
set {_uniqueStorage()._extNotificationPluginOutput = newValue}
|
|
}
|
|
|
|
var extNotificationPluginActive: Bool {
|
|
get {return _storage._extNotificationPluginActive}
|
|
set {_uniqueStorage()._extNotificationPluginActive = newValue}
|
|
}
|
|
|
|
var extNotificationPluginAlertMessage: Bool {
|
|
get {return _storage._extNotificationPluginAlertMessage}
|
|
set {_uniqueStorage()._extNotificationPluginAlertMessage = newValue}
|
|
}
|
|
|
|
var extNotificationPluginAlertBell: Bool {
|
|
get {return _storage._extNotificationPluginAlertBell}
|
|
set {_uniqueStorage()._extNotificationPluginAlertBell = newValue}
|
|
}
|
|
|
|
///
|
|
/// Preferences for the RangeTestPlugin
|
|
/// FIXME - Move this out of UserPreferences and into a section for plugin configuration.
|
|
var rangeTestPluginEnabled: Bool {
|
|
get {return _storage._rangeTestPluginEnabled}
|
|
set {_uniqueStorage()._rangeTestPluginEnabled = newValue}
|
|
}
|
|
|
|
var rangeTestPluginSender: UInt32 {
|
|
get {return _storage._rangeTestPluginSender}
|
|
set {_uniqueStorage()._rangeTestPluginSender = newValue}
|
|
}
|
|
|
|
var rangeTestPluginSave: Bool {
|
|
get {return _storage._rangeTestPluginSave}
|
|
set {_uniqueStorage()._rangeTestPluginSave = newValue}
|
|
}
|
|
|
|
///
|
|
/// Preferences for the StoreForwardPlugin
|
|
///FIXME - Move this out of UserPreferences and into a section for plugin configuration. (was 136)
|
|
var storeForwardPluginEnabled: Bool {
|
|
get {return _storage._storeForwardPluginEnabled}
|
|
set {_uniqueStorage()._storeForwardPluginEnabled = newValue}
|
|
}
|
|
|
|
var storeForwardPluginHeartbeat: Bool {
|
|
get {return _storage._storeForwardPluginHeartbeat}
|
|
set {_uniqueStorage()._storeForwardPluginHeartbeat = newValue}
|
|
}
|
|
|
|
var storeForwardPluginRecords: UInt32 {
|
|
get {return _storage._storeForwardPluginRecords}
|
|
set {_uniqueStorage()._storeForwardPluginRecords = newValue}
|
|
}
|
|
|
|
var storeForwardPluginHistoryReturnMax: UInt32 {
|
|
get {return _storage._storeForwardPluginHistoryReturnMax}
|
|
set {_uniqueStorage()._storeForwardPluginHistoryReturnMax = newValue}
|
|
}
|
|
|
|
var storeForwardPluginHistoryReturnWindow: UInt32 {
|
|
get {return _storage._storeForwardPluginHistoryReturnWindow}
|
|
set {_uniqueStorage()._storeForwardPluginHistoryReturnWindow = newValue}
|
|
}
|
|
|
|
///
|
|
/// Preferences for the EnvironmentalMeasurement Plugin
|
|
/// FIXME - Move this out of UserPreferences and into a section for plugin configuration.
|
|
/// Enable/Disable the environmental measurement plugin measurement collection
|
|
var environmentalMeasurementPluginMeasurementEnabled: Bool {
|
|
get {return _storage._environmentalMeasurementPluginMeasurementEnabled}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginMeasurementEnabled = newValue}
|
|
}
|
|
|
|
///
|
|
/// Enable/Disable the environmental measurement plugin on-device display
|
|
var environmentalMeasurementPluginScreenEnabled: Bool {
|
|
get {return _storage._environmentalMeasurementPluginScreenEnabled}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginScreenEnabled = newValue}
|
|
}
|
|
|
|
///
|
|
/// Sometimes sensor reads can fail.
|
|
/// If this happens, we will retry a configurable number of attempts,
|
|
/// each attempt will be delayed by the minimum required refresh rate for that sensor
|
|
var environmentalMeasurementPluginReadErrorCountThreshold: UInt32 {
|
|
get {return _storage._environmentalMeasurementPluginReadErrorCountThreshold}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginReadErrorCountThreshold = newValue}
|
|
}
|
|
|
|
///
|
|
/// Interval in seconds of how often we should try to send our
|
|
/// measurements to the mesh
|
|
var environmentalMeasurementPluginUpdateInterval: UInt32 {
|
|
get {return _storage._environmentalMeasurementPluginUpdateInterval}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginUpdateInterval = newValue}
|
|
}
|
|
|
|
///
|
|
/// Sometimes we can end up with more than read_error_count_threshold failures.
|
|
/// In this case, we will stop trying to read from the sensor for a while.
|
|
/// Wait this long until trying to read from the sensor again
|
|
var environmentalMeasurementPluginRecoveryInterval: UInt32 {
|
|
get {return _storage._environmentalMeasurementPluginRecoveryInterval}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginRecoveryInterval = newValue}
|
|
}
|
|
|
|
///
|
|
/// We'll always read the sensor in Celsius, but sometimes we might want to
|
|
/// display the results in Farenheit as a "user preference".
|
|
var environmentalMeasurementPluginDisplayFarenheit: Bool {
|
|
get {return _storage._environmentalMeasurementPluginDisplayFarenheit}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginDisplayFarenheit = newValue}
|
|
}
|
|
|
|
///
|
|
/// Specify the sensor type
|
|
var environmentalMeasurementPluginSensorType: RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType {
|
|
get {return _storage._environmentalMeasurementPluginSensorType}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginSensorType = newValue}
|
|
}
|
|
|
|
///
|
|
/// Specify the peferred GPIO Pin for sensor readings
|
|
var environmentalMeasurementPluginSensorPin: UInt32 {
|
|
get {return _storage._environmentalMeasurementPluginSensorPin}
|
|
set {_uniqueStorage()._environmentalMeasurementPluginSensorPin = newValue}
|
|
}
|
|
|
|
///
|
|
/// Bit field of boolean configuration options for POSITION messages
|
|
/// (bitwise OR of PositionFlags)
|
|
var positionFlags: UInt32 {
|
|
get {return _storage._positionFlags}
|
|
set {_uniqueStorage()._positionFlags = newValue}
|
|
}
|
|
|
|
///
|
|
/// Circumvents the logic block for determining whether the device is powered or not.
|
|
/// Useful for devices with finicky ADC issues on the battery sense pins.
|
|
var isAlwaysPowered: Bool {
|
|
get {return _storage._isAlwaysPowered}
|
|
set {_uniqueStorage()._isAlwaysPowered = newValue}
|
|
}
|
|
|
|
///
|
|
/// Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
|
/// Potentially useful for devices without user buttons.
|
|
var autoScreenCarouselSecs: UInt32 {
|
|
get {return _storage._autoScreenCarouselSecs}
|
|
set {_uniqueStorage()._autoScreenCarouselSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// If non-zero, the device will fully power off this many seconds after external power is removed.
|
|
var onBatteryShutdownAfterSecs: UInt32 {
|
|
get {return _storage._onBatteryShutdownAfterSecs}
|
|
set {_uniqueStorage()._onBatteryShutdownAfterSecs = newValue}
|
|
}
|
|
|
|
///
|
|
/// Overrides HOPS_RELIABLE and sets the maximum number of hops. This can't be greater than 7.
|
|
var hopLimit: UInt32 {
|
|
get {return _storage._hopLimit}
|
|
set {_uniqueStorage()._hopLimit = newValue}
|
|
}
|
|
|
|
///
|
|
/// MQTT username to use (most useful for a custom MQTT server).
|
|
/// If using a custom server, this will be honoured even if empty.
|
|
/// If using the default server, this will only be honoured if set, otherwise the device will use the default username
|
|
var mqttUsername: String {
|
|
get {return _storage._mqttUsername}
|
|
set {_uniqueStorage()._mqttUsername = newValue}
|
|
}
|
|
|
|
///
|
|
/// MQTT password to use (most useful for a custom MQTT server).
|
|
/// If using a custom server, this will be honoured even if empty.
|
|
/// If using the default server, this will only be honoured if set, otherwise the device will use the default password
|
|
var mqttPassword: String {
|
|
get {return _storage._mqttPassword}
|
|
set {_uniqueStorage()._mqttPassword = newValue}
|
|
}
|
|
|
|
var unknownFields = SwiftProtobuf.UnknownStorage()
|
|
|
|
enum EnvironmentalMeasurementSensorType: SwiftProtobuf.Enum {
|
|
typealias RawValue = Int
|
|
case dht11 // = 0
|
|
case ds18B20 // = 1
|
|
case UNRECOGNIZED(Int)
|
|
|
|
init() {
|
|
self = .dht11
|
|
}
|
|
|
|
init?(rawValue: Int) {
|
|
switch rawValue {
|
|
case 0: self = .dht11
|
|
case 1: self = .ds18B20
|
|
default: self = .UNRECOGNIZED(rawValue)
|
|
}
|
|
}
|
|
|
|
var rawValue: Int {
|
|
switch self {
|
|
case .dht11: return 0
|
|
case .ds18B20: return 1
|
|
case .UNRECOGNIZED(let i): return i
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
init() {}
|
|
|
|
fileprivate var _storage = _StorageClass.defaultInstance
|
|
}
|
|
|
|
init() {}
|
|
|
|
fileprivate var _preferences: RadioConfig.UserPreferences? = nil
|
|
}
|
|
|
|
#if swift(>=4.2)
|
|
|
|
extension RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType: CaseIterable {
|
|
// The compiler won't synthesize support with the UNRECOGNIZED case.
|
|
static var allCases: [RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType] = [
|
|
.dht11,
|
|
.ds18B20,
|
|
]
|
|
}
|
|
|
|
#endif // swift(>=4.2)
|
|
|
|
// MARK: - Code below here is support for the SwiftProtobuf runtime.
|
|
|
|
extension RegionCode: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "Unset"),
|
|
1: .same(proto: "US"),
|
|
2: .same(proto: "EU433"),
|
|
3: .same(proto: "EU865"),
|
|
4: .same(proto: "CN"),
|
|
5: .same(proto: "JP"),
|
|
6: .same(proto: "ANZ"),
|
|
7: .same(proto: "KR"),
|
|
8: .same(proto: "TW"),
|
|
9: .same(proto: "RU"),
|
|
]
|
|
}
|
|
|
|
extension ChargeCurrent: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "MAUnset"),
|
|
1: .same(proto: "MA100"),
|
|
2: .same(proto: "MA190"),
|
|
3: .same(proto: "MA280"),
|
|
4: .same(proto: "MA360"),
|
|
5: .same(proto: "MA450"),
|
|
6: .same(proto: "MA550"),
|
|
7: .same(proto: "MA630"),
|
|
8: .same(proto: "MA700"),
|
|
9: .same(proto: "MA780"),
|
|
10: .same(proto: "MA880"),
|
|
11: .same(proto: "MA960"),
|
|
12: .same(proto: "MA1000"),
|
|
13: .same(proto: "MA1080"),
|
|
14: .same(proto: "MA1160"),
|
|
15: .same(proto: "MA1240"),
|
|
16: .same(proto: "MA1320"),
|
|
]
|
|
}
|
|
|
|
extension GpsOperation: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "GpsOpUnset"),
|
|
1: .same(proto: "GpsOpStationary"),
|
|
2: .same(proto: "GpsOpMobile"),
|
|
3: .same(proto: "GpsOpTimeOnly"),
|
|
4: .same(proto: "GpsOpDisabled"),
|
|
]
|
|
}
|
|
|
|
extension GpsCoordinateFormat: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "GpsFormatDec"),
|
|
1: .same(proto: "GpsFormatDMS"),
|
|
2: .same(proto: "GpsFormatUTM"),
|
|
3: .same(proto: "GpsFormatMGRS"),
|
|
4: .same(proto: "GpsFormatOLC"),
|
|
5: .same(proto: "GpsFormatOSGR"),
|
|
]
|
|
}
|
|
|
|
extension LocationSharing: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "LocUnset"),
|
|
1: .same(proto: "LocEnabled"),
|
|
2: .same(proto: "LocDisabled"),
|
|
]
|
|
}
|
|
|
|
extension PositionFlags: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "POS_UNDEFINED"),
|
|
1: .same(proto: "POS_ALTITUDE"),
|
|
2: .same(proto: "POS_ALT_MSL"),
|
|
4: .same(proto: "POS_GEO_SEP"),
|
|
8: .same(proto: "POS_DOP"),
|
|
16: .same(proto: "POS_HVDOP"),
|
|
32: .same(proto: "POS_BATTERY"),
|
|
64: .same(proto: "POS_SATINVIEW"),
|
|
128: .same(proto: "POS_SEQ_NOS"),
|
|
256: .same(proto: "POS_TIMESTAMP"),
|
|
]
|
|
}
|
|
|
|
extension RadioConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
|
static let protoMessageName: String = "RadioConfig"
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
1: .same(proto: "preferences"),
|
|
]
|
|
|
|
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
|
while let fieldNumber = try decoder.nextFieldNumber() {
|
|
// The use of inline closures is to circumvent an issue where the compiler
|
|
// allocates stack space for every case branch when no optimizations are
|
|
// enabled. https://github.com/apple/swift-protobuf/issues/1034
|
|
switch fieldNumber {
|
|
case 1: try { try decoder.decodeSingularMessageField(value: &self._preferences) }()
|
|
default: break
|
|
}
|
|
}
|
|
}
|
|
|
|
func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
|
|
if let v = self._preferences {
|
|
try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
|
|
}
|
|
try unknownFields.traverse(visitor: &visitor)
|
|
}
|
|
|
|
static func ==(lhs: RadioConfig, rhs: RadioConfig) -> Bool {
|
|
if lhs._preferences != rhs._preferences {return false}
|
|
if lhs.unknownFields != rhs.unknownFields {return false}
|
|
return true
|
|
}
|
|
}
|
|
|
|
extension RadioConfig.UserPreferences: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
|
static let protoMessageName: String = RadioConfig.protoMessageName + ".UserPreferences"
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
1: .standard(proto: "position_broadcast_secs"),
|
|
17: .standard(proto: "position_broadcast_smart"),
|
|
2: .standard(proto: "send_owner_interval"),
|
|
4: .standard(proto: "wait_bluetooth_secs"),
|
|
5: .standard(proto: "screen_on_secs"),
|
|
6: .standard(proto: "phone_timeout_secs"),
|
|
7: .standard(proto: "phone_sds_timeout_sec"),
|
|
8: .standard(proto: "mesh_sds_timeout_secs"),
|
|
9: .standard(proto: "sds_secs"),
|
|
10: .standard(proto: "ls_secs"),
|
|
11: .standard(proto: "min_wake_secs"),
|
|
12: .standard(proto: "wifi_ssid"),
|
|
13: .standard(proto: "wifi_password"),
|
|
14: .standard(proto: "wifi_ap_mode"),
|
|
15: .same(proto: "region"),
|
|
16: .standard(proto: "charge_current"),
|
|
37: .standard(proto: "is_router"),
|
|
38: .standard(proto: "is_low_power"),
|
|
39: .standard(proto: "fixed_position"),
|
|
40: .standard(proto: "serial_disabled"),
|
|
32: .standard(proto: "location_share"),
|
|
33: .standard(proto: "gps_operation"),
|
|
34: .standard(proto: "gps_update_interval"),
|
|
36: .standard(proto: "gps_attempt_time"),
|
|
45: .standard(proto: "gps_accept_2d"),
|
|
46: .standard(proto: "gps_max_dop"),
|
|
41: .standard(proto: "frequency_offset"),
|
|
42: .standard(proto: "mqtt_server"),
|
|
43: .standard(proto: "mqtt_disabled"),
|
|
44: .standard(proto: "gps_format"),
|
|
100: .standard(proto: "factory_reset"),
|
|
101: .standard(proto: "debug_log_enabled"),
|
|
103: .standard(proto: "ignore_incoming"),
|
|
120: .standard(proto: "serialplugin_enabled"),
|
|
121: .standard(proto: "serialplugin_echo"),
|
|
122: .standard(proto: "serialplugin_rxd"),
|
|
123: .standard(proto: "serialplugin_txd"),
|
|
124: .standard(proto: "serialplugin_timeout"),
|
|
125: .standard(proto: "serialplugin_mode"),
|
|
126: .standard(proto: "ext_notification_plugin_enabled"),
|
|
127: .standard(proto: "ext_notification_plugin_output_ms"),
|
|
128: .standard(proto: "ext_notification_plugin_output"),
|
|
129: .standard(proto: "ext_notification_plugin_active"),
|
|
130: .standard(proto: "ext_notification_plugin_alert_message"),
|
|
131: .standard(proto: "ext_notification_plugin_alert_bell"),
|
|
132: .standard(proto: "range_test_plugin_enabled"),
|
|
133: .standard(proto: "range_test_plugin_sender"),
|
|
134: .standard(proto: "range_test_plugin_save"),
|
|
148: .standard(proto: "store_forward_plugin_enabled"),
|
|
149: .standard(proto: "store_forward_plugin_heartbeat"),
|
|
137: .standard(proto: "store_forward_plugin_records"),
|
|
138: .standard(proto: "store_forward_plugin_history_return_max"),
|
|
139: .standard(proto: "store_forward_plugin_history_return_window"),
|
|
140: .standard(proto: "environmental_measurement_plugin_measurement_enabled"),
|
|
141: .standard(proto: "environmental_measurement_plugin_screen_enabled"),
|
|
142: .standard(proto: "environmental_measurement_plugin_read_error_count_threshold"),
|
|
143: .standard(proto: "environmental_measurement_plugin_update_interval"),
|
|
144: .standard(proto: "environmental_measurement_plugin_recovery_interval"),
|
|
145: .standard(proto: "environmental_measurement_plugin_display_farenheit"),
|
|
146: .standard(proto: "environmental_measurement_plugin_sensor_type"),
|
|
147: .standard(proto: "environmental_measurement_plugin_sensor_pin"),
|
|
150: .standard(proto: "position_flags"),
|
|
151: .standard(proto: "is_always_powered"),
|
|
152: .standard(proto: "auto_screen_carousel_secs"),
|
|
153: .standard(proto: "on_battery_shutdown_after_secs"),
|
|
154: .standard(proto: "hop_limit"),
|
|
155: .standard(proto: "mqtt_username"),
|
|
156: .standard(proto: "mqtt_password"),
|
|
]
|
|
|
|
fileprivate class _StorageClass {
|
|
var _positionBroadcastSecs: UInt32 = 0
|
|
var _positionBroadcastSmart: Bool = false
|
|
var _sendOwnerInterval: UInt32 = 0
|
|
var _waitBluetoothSecs: UInt32 = 0
|
|
var _screenOnSecs: UInt32 = 0
|
|
var _phoneTimeoutSecs: UInt32 = 0
|
|
var _phoneSdsTimeoutSec: UInt32 = 0
|
|
var _meshSdsTimeoutSecs: UInt32 = 0
|
|
var _sdsSecs: UInt32 = 0
|
|
var _lsSecs: UInt32 = 0
|
|
var _minWakeSecs: UInt32 = 0
|
|
var _wifiSsid: String = String()
|
|
var _wifiPassword: String = String()
|
|
var _wifiApMode: Bool = false
|
|
var _region: RegionCode = .unset
|
|
var _chargeCurrent: ChargeCurrent = .maunset
|
|
var _isRouter: Bool = false
|
|
var _isLowPower: Bool = false
|
|
var _fixedPosition: Bool = false
|
|
var _serialDisabled: Bool = false
|
|
var _locationShare: LocationSharing = .locUnset
|
|
var _gpsOperation: GpsOperation = .gpsOpUnset
|
|
var _gpsUpdateInterval: UInt32 = 0
|
|
var _gpsAttemptTime: UInt32 = 0
|
|
var _gpsAccept2D: Bool = false
|
|
var _gpsMaxDop: UInt32 = 0
|
|
var _frequencyOffset: Float = 0
|
|
var _mqttServer: String = String()
|
|
var _mqttDisabled: Bool = false
|
|
var _gpsFormat: GpsCoordinateFormat = .gpsFormatDec
|
|
var _factoryReset: Bool = false
|
|
var _debugLogEnabled: Bool = false
|
|
var _ignoreIncoming: [UInt32] = []
|
|
var _serialpluginEnabled: Bool = false
|
|
var _serialpluginEcho: Bool = false
|
|
var _serialpluginRxd: UInt32 = 0
|
|
var _serialpluginTxd: UInt32 = 0
|
|
var _serialpluginTimeout: UInt32 = 0
|
|
var _serialpluginMode: UInt32 = 0
|
|
var _extNotificationPluginEnabled: Bool = false
|
|
var _extNotificationPluginOutputMs: UInt32 = 0
|
|
var _extNotificationPluginOutput: UInt32 = 0
|
|
var _extNotificationPluginActive: Bool = false
|
|
var _extNotificationPluginAlertMessage: Bool = false
|
|
var _extNotificationPluginAlertBell: Bool = false
|
|
var _rangeTestPluginEnabled: Bool = false
|
|
var _rangeTestPluginSender: UInt32 = 0
|
|
var _rangeTestPluginSave: Bool = false
|
|
var _storeForwardPluginEnabled: Bool = false
|
|
var _storeForwardPluginHeartbeat: Bool = false
|
|
var _storeForwardPluginRecords: UInt32 = 0
|
|
var _storeForwardPluginHistoryReturnMax: UInt32 = 0
|
|
var _storeForwardPluginHistoryReturnWindow: UInt32 = 0
|
|
var _environmentalMeasurementPluginMeasurementEnabled: Bool = false
|
|
var _environmentalMeasurementPluginScreenEnabled: Bool = false
|
|
var _environmentalMeasurementPluginReadErrorCountThreshold: UInt32 = 0
|
|
var _environmentalMeasurementPluginUpdateInterval: UInt32 = 0
|
|
var _environmentalMeasurementPluginRecoveryInterval: UInt32 = 0
|
|
var _environmentalMeasurementPluginDisplayFarenheit: Bool = false
|
|
var _environmentalMeasurementPluginSensorType: RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType = .dht11
|
|
var _environmentalMeasurementPluginSensorPin: UInt32 = 0
|
|
var _positionFlags: UInt32 = 0
|
|
var _isAlwaysPowered: Bool = false
|
|
var _autoScreenCarouselSecs: UInt32 = 0
|
|
var _onBatteryShutdownAfterSecs: UInt32 = 0
|
|
var _hopLimit: UInt32 = 0
|
|
var _mqttUsername: String = String()
|
|
var _mqttPassword: String = String()
|
|
|
|
static let defaultInstance = _StorageClass()
|
|
|
|
private init() {}
|
|
|
|
init(copying source: _StorageClass) {
|
|
_positionBroadcastSecs = source._positionBroadcastSecs
|
|
_positionBroadcastSmart = source._positionBroadcastSmart
|
|
_sendOwnerInterval = source._sendOwnerInterval
|
|
_waitBluetoothSecs = source._waitBluetoothSecs
|
|
_screenOnSecs = source._screenOnSecs
|
|
_phoneTimeoutSecs = source._phoneTimeoutSecs
|
|
_phoneSdsTimeoutSec = source._phoneSdsTimeoutSec
|
|
_meshSdsTimeoutSecs = source._meshSdsTimeoutSecs
|
|
_sdsSecs = source._sdsSecs
|
|
_lsSecs = source._lsSecs
|
|
_minWakeSecs = source._minWakeSecs
|
|
_wifiSsid = source._wifiSsid
|
|
_wifiPassword = source._wifiPassword
|
|
_wifiApMode = source._wifiApMode
|
|
_region = source._region
|
|
_chargeCurrent = source._chargeCurrent
|
|
_isRouter = source._isRouter
|
|
_isLowPower = source._isLowPower
|
|
_fixedPosition = source._fixedPosition
|
|
_serialDisabled = source._serialDisabled
|
|
_locationShare = source._locationShare
|
|
_gpsOperation = source._gpsOperation
|
|
_gpsUpdateInterval = source._gpsUpdateInterval
|
|
_gpsAttemptTime = source._gpsAttemptTime
|
|
_gpsAccept2D = source._gpsAccept2D
|
|
_gpsMaxDop = source._gpsMaxDop
|
|
_frequencyOffset = source._frequencyOffset
|
|
_mqttServer = source._mqttServer
|
|
_mqttDisabled = source._mqttDisabled
|
|
_gpsFormat = source._gpsFormat
|
|
_factoryReset = source._factoryReset
|
|
_debugLogEnabled = source._debugLogEnabled
|
|
_ignoreIncoming = source._ignoreIncoming
|
|
_serialpluginEnabled = source._serialpluginEnabled
|
|
_serialpluginEcho = source._serialpluginEcho
|
|
_serialpluginRxd = source._serialpluginRxd
|
|
_serialpluginTxd = source._serialpluginTxd
|
|
_serialpluginTimeout = source._serialpluginTimeout
|
|
_serialpluginMode = source._serialpluginMode
|
|
_extNotificationPluginEnabled = source._extNotificationPluginEnabled
|
|
_extNotificationPluginOutputMs = source._extNotificationPluginOutputMs
|
|
_extNotificationPluginOutput = source._extNotificationPluginOutput
|
|
_extNotificationPluginActive = source._extNotificationPluginActive
|
|
_extNotificationPluginAlertMessage = source._extNotificationPluginAlertMessage
|
|
_extNotificationPluginAlertBell = source._extNotificationPluginAlertBell
|
|
_rangeTestPluginEnabled = source._rangeTestPluginEnabled
|
|
_rangeTestPluginSender = source._rangeTestPluginSender
|
|
_rangeTestPluginSave = source._rangeTestPluginSave
|
|
_storeForwardPluginEnabled = source._storeForwardPluginEnabled
|
|
_storeForwardPluginHeartbeat = source._storeForwardPluginHeartbeat
|
|
_storeForwardPluginRecords = source._storeForwardPluginRecords
|
|
_storeForwardPluginHistoryReturnMax = source._storeForwardPluginHistoryReturnMax
|
|
_storeForwardPluginHistoryReturnWindow = source._storeForwardPluginHistoryReturnWindow
|
|
_environmentalMeasurementPluginMeasurementEnabled = source._environmentalMeasurementPluginMeasurementEnabled
|
|
_environmentalMeasurementPluginScreenEnabled = source._environmentalMeasurementPluginScreenEnabled
|
|
_environmentalMeasurementPluginReadErrorCountThreshold = source._environmentalMeasurementPluginReadErrorCountThreshold
|
|
_environmentalMeasurementPluginUpdateInterval = source._environmentalMeasurementPluginUpdateInterval
|
|
_environmentalMeasurementPluginRecoveryInterval = source._environmentalMeasurementPluginRecoveryInterval
|
|
_environmentalMeasurementPluginDisplayFarenheit = source._environmentalMeasurementPluginDisplayFarenheit
|
|
_environmentalMeasurementPluginSensorType = source._environmentalMeasurementPluginSensorType
|
|
_environmentalMeasurementPluginSensorPin = source._environmentalMeasurementPluginSensorPin
|
|
_positionFlags = source._positionFlags
|
|
_isAlwaysPowered = source._isAlwaysPowered
|
|
_autoScreenCarouselSecs = source._autoScreenCarouselSecs
|
|
_onBatteryShutdownAfterSecs = source._onBatteryShutdownAfterSecs
|
|
_hopLimit = source._hopLimit
|
|
_mqttUsername = source._mqttUsername
|
|
_mqttPassword = source._mqttPassword
|
|
}
|
|
}
|
|
|
|
fileprivate mutating func _uniqueStorage() -> _StorageClass {
|
|
if !isKnownUniquelyReferenced(&_storage) {
|
|
_storage = _StorageClass(copying: _storage)
|
|
}
|
|
return _storage
|
|
}
|
|
|
|
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
|
_ = _uniqueStorage()
|
|
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
|
while let fieldNumber = try decoder.nextFieldNumber() {
|
|
// The use of inline closures is to circumvent an issue where the compiler
|
|
// allocates stack space for every case branch when no optimizations are
|
|
// enabled. https://github.com/apple/swift-protobuf/issues/1034
|
|
switch fieldNumber {
|
|
case 1: try { try decoder.decodeSingularUInt32Field(value: &_storage._positionBroadcastSecs) }()
|
|
case 2: try { try decoder.decodeSingularUInt32Field(value: &_storage._sendOwnerInterval) }()
|
|
case 4: try { try decoder.decodeSingularUInt32Field(value: &_storage._waitBluetoothSecs) }()
|
|
case 5: try { try decoder.decodeSingularUInt32Field(value: &_storage._screenOnSecs) }()
|
|
case 6: try { try decoder.decodeSingularUInt32Field(value: &_storage._phoneTimeoutSecs) }()
|
|
case 7: try { try decoder.decodeSingularUInt32Field(value: &_storage._phoneSdsTimeoutSec) }()
|
|
case 8: try { try decoder.decodeSingularUInt32Field(value: &_storage._meshSdsTimeoutSecs) }()
|
|
case 9: try { try decoder.decodeSingularUInt32Field(value: &_storage._sdsSecs) }()
|
|
case 10: try { try decoder.decodeSingularUInt32Field(value: &_storage._lsSecs) }()
|
|
case 11: try { try decoder.decodeSingularUInt32Field(value: &_storage._minWakeSecs) }()
|
|
case 12: try { try decoder.decodeSingularStringField(value: &_storage._wifiSsid) }()
|
|
case 13: try { try decoder.decodeSingularStringField(value: &_storage._wifiPassword) }()
|
|
case 14: try { try decoder.decodeSingularBoolField(value: &_storage._wifiApMode) }()
|
|
case 15: try { try decoder.decodeSingularEnumField(value: &_storage._region) }()
|
|
case 16: try { try decoder.decodeSingularEnumField(value: &_storage._chargeCurrent) }()
|
|
case 17: try { try decoder.decodeSingularBoolField(value: &_storage._positionBroadcastSmart) }()
|
|
case 32: try { try decoder.decodeSingularEnumField(value: &_storage._locationShare) }()
|
|
case 33: try { try decoder.decodeSingularEnumField(value: &_storage._gpsOperation) }()
|
|
case 34: try { try decoder.decodeSingularUInt32Field(value: &_storage._gpsUpdateInterval) }()
|
|
case 36: try { try decoder.decodeSingularUInt32Field(value: &_storage._gpsAttemptTime) }()
|
|
case 37: try { try decoder.decodeSingularBoolField(value: &_storage._isRouter) }()
|
|
case 38: try { try decoder.decodeSingularBoolField(value: &_storage._isLowPower) }()
|
|
case 39: try { try decoder.decodeSingularBoolField(value: &_storage._fixedPosition) }()
|
|
case 40: try { try decoder.decodeSingularBoolField(value: &_storage._serialDisabled) }()
|
|
case 41: try { try decoder.decodeSingularFloatField(value: &_storage._frequencyOffset) }()
|
|
case 42: try { try decoder.decodeSingularStringField(value: &_storage._mqttServer) }()
|
|
case 43: try { try decoder.decodeSingularBoolField(value: &_storage._mqttDisabled) }()
|
|
case 44: try { try decoder.decodeSingularEnumField(value: &_storage._gpsFormat) }()
|
|
case 45: try { try decoder.decodeSingularBoolField(value: &_storage._gpsAccept2D) }()
|
|
case 46: try { try decoder.decodeSingularUInt32Field(value: &_storage._gpsMaxDop) }()
|
|
case 100: try { try decoder.decodeSingularBoolField(value: &_storage._factoryReset) }()
|
|
case 101: try { try decoder.decodeSingularBoolField(value: &_storage._debugLogEnabled) }()
|
|
case 103: try { try decoder.decodeRepeatedUInt32Field(value: &_storage._ignoreIncoming) }()
|
|
case 120: try { try decoder.decodeSingularBoolField(value: &_storage._serialpluginEnabled) }()
|
|
case 121: try { try decoder.decodeSingularBoolField(value: &_storage._serialpluginEcho) }()
|
|
case 122: try { try decoder.decodeSingularUInt32Field(value: &_storage._serialpluginRxd) }()
|
|
case 123: try { try decoder.decodeSingularUInt32Field(value: &_storage._serialpluginTxd) }()
|
|
case 124: try { try decoder.decodeSingularUInt32Field(value: &_storage._serialpluginTimeout) }()
|
|
case 125: try { try decoder.decodeSingularUInt32Field(value: &_storage._serialpluginMode) }()
|
|
case 126: try { try decoder.decodeSingularBoolField(value: &_storage._extNotificationPluginEnabled) }()
|
|
case 127: try { try decoder.decodeSingularUInt32Field(value: &_storage._extNotificationPluginOutputMs) }()
|
|
case 128: try { try decoder.decodeSingularUInt32Field(value: &_storage._extNotificationPluginOutput) }()
|
|
case 129: try { try decoder.decodeSingularBoolField(value: &_storage._extNotificationPluginActive) }()
|
|
case 130: try { try decoder.decodeSingularBoolField(value: &_storage._extNotificationPluginAlertMessage) }()
|
|
case 131: try { try decoder.decodeSingularBoolField(value: &_storage._extNotificationPluginAlertBell) }()
|
|
case 132: try { try decoder.decodeSingularBoolField(value: &_storage._rangeTestPluginEnabled) }()
|
|
case 133: try { try decoder.decodeSingularUInt32Field(value: &_storage._rangeTestPluginSender) }()
|
|
case 134: try { try decoder.decodeSingularBoolField(value: &_storage._rangeTestPluginSave) }()
|
|
case 137: try { try decoder.decodeSingularUInt32Field(value: &_storage._storeForwardPluginRecords) }()
|
|
case 138: try { try decoder.decodeSingularUInt32Field(value: &_storage._storeForwardPluginHistoryReturnMax) }()
|
|
case 139: try { try decoder.decodeSingularUInt32Field(value: &_storage._storeForwardPluginHistoryReturnWindow) }()
|
|
case 140: try { try decoder.decodeSingularBoolField(value: &_storage._environmentalMeasurementPluginMeasurementEnabled) }()
|
|
case 141: try { try decoder.decodeSingularBoolField(value: &_storage._environmentalMeasurementPluginScreenEnabled) }()
|
|
case 142: try { try decoder.decodeSingularUInt32Field(value: &_storage._environmentalMeasurementPluginReadErrorCountThreshold) }()
|
|
case 143: try { try decoder.decodeSingularUInt32Field(value: &_storage._environmentalMeasurementPluginUpdateInterval) }()
|
|
case 144: try { try decoder.decodeSingularUInt32Field(value: &_storage._environmentalMeasurementPluginRecoveryInterval) }()
|
|
case 145: try { try decoder.decodeSingularBoolField(value: &_storage._environmentalMeasurementPluginDisplayFarenheit) }()
|
|
case 146: try { try decoder.decodeSingularEnumField(value: &_storage._environmentalMeasurementPluginSensorType) }()
|
|
case 147: try { try decoder.decodeSingularUInt32Field(value: &_storage._environmentalMeasurementPluginSensorPin) }()
|
|
case 148: try { try decoder.decodeSingularBoolField(value: &_storage._storeForwardPluginEnabled) }()
|
|
case 149: try { try decoder.decodeSingularBoolField(value: &_storage._storeForwardPluginHeartbeat) }()
|
|
case 150: try { try decoder.decodeSingularUInt32Field(value: &_storage._positionFlags) }()
|
|
case 151: try { try decoder.decodeSingularBoolField(value: &_storage._isAlwaysPowered) }()
|
|
case 152: try { try decoder.decodeSingularUInt32Field(value: &_storage._autoScreenCarouselSecs) }()
|
|
case 153: try { try decoder.decodeSingularUInt32Field(value: &_storage._onBatteryShutdownAfterSecs) }()
|
|
case 154: try { try decoder.decodeSingularUInt32Field(value: &_storage._hopLimit) }()
|
|
case 155: try { try decoder.decodeSingularStringField(value: &_storage._mqttUsername) }()
|
|
case 156: try { try decoder.decodeSingularStringField(value: &_storage._mqttPassword) }()
|
|
default: break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
|
|
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
|
if _storage._positionBroadcastSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._positionBroadcastSecs, fieldNumber: 1)
|
|
}
|
|
if _storage._sendOwnerInterval != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._sendOwnerInterval, fieldNumber: 2)
|
|
}
|
|
if _storage._waitBluetoothSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._waitBluetoothSecs, fieldNumber: 4)
|
|
}
|
|
if _storage._screenOnSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._screenOnSecs, fieldNumber: 5)
|
|
}
|
|
if _storage._phoneTimeoutSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._phoneTimeoutSecs, fieldNumber: 6)
|
|
}
|
|
if _storage._phoneSdsTimeoutSec != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._phoneSdsTimeoutSec, fieldNumber: 7)
|
|
}
|
|
if _storage._meshSdsTimeoutSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._meshSdsTimeoutSecs, fieldNumber: 8)
|
|
}
|
|
if _storage._sdsSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._sdsSecs, fieldNumber: 9)
|
|
}
|
|
if _storage._lsSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._lsSecs, fieldNumber: 10)
|
|
}
|
|
if _storage._minWakeSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._minWakeSecs, fieldNumber: 11)
|
|
}
|
|
if !_storage._wifiSsid.isEmpty {
|
|
try visitor.visitSingularStringField(value: _storage._wifiSsid, fieldNumber: 12)
|
|
}
|
|
if !_storage._wifiPassword.isEmpty {
|
|
try visitor.visitSingularStringField(value: _storage._wifiPassword, fieldNumber: 13)
|
|
}
|
|
if _storage._wifiApMode != false {
|
|
try visitor.visitSingularBoolField(value: _storage._wifiApMode, fieldNumber: 14)
|
|
}
|
|
if _storage._region != .unset {
|
|
try visitor.visitSingularEnumField(value: _storage._region, fieldNumber: 15)
|
|
}
|
|
if _storage._chargeCurrent != .maunset {
|
|
try visitor.visitSingularEnumField(value: _storage._chargeCurrent, fieldNumber: 16)
|
|
}
|
|
if _storage._positionBroadcastSmart != false {
|
|
try visitor.visitSingularBoolField(value: _storage._positionBroadcastSmart, fieldNumber: 17)
|
|
}
|
|
if _storage._locationShare != .locUnset {
|
|
try visitor.visitSingularEnumField(value: _storage._locationShare, fieldNumber: 32)
|
|
}
|
|
if _storage._gpsOperation != .gpsOpUnset {
|
|
try visitor.visitSingularEnumField(value: _storage._gpsOperation, fieldNumber: 33)
|
|
}
|
|
if _storage._gpsUpdateInterval != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._gpsUpdateInterval, fieldNumber: 34)
|
|
}
|
|
if _storage._gpsAttemptTime != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._gpsAttemptTime, fieldNumber: 36)
|
|
}
|
|
if _storage._isRouter != false {
|
|
try visitor.visitSingularBoolField(value: _storage._isRouter, fieldNumber: 37)
|
|
}
|
|
if _storage._isLowPower != false {
|
|
try visitor.visitSingularBoolField(value: _storage._isLowPower, fieldNumber: 38)
|
|
}
|
|
if _storage._fixedPosition != false {
|
|
try visitor.visitSingularBoolField(value: _storage._fixedPosition, fieldNumber: 39)
|
|
}
|
|
if _storage._serialDisabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._serialDisabled, fieldNumber: 40)
|
|
}
|
|
if _storage._frequencyOffset != 0 {
|
|
try visitor.visitSingularFloatField(value: _storage._frequencyOffset, fieldNumber: 41)
|
|
}
|
|
if !_storage._mqttServer.isEmpty {
|
|
try visitor.visitSingularStringField(value: _storage._mqttServer, fieldNumber: 42)
|
|
}
|
|
if _storage._mqttDisabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._mqttDisabled, fieldNumber: 43)
|
|
}
|
|
if _storage._gpsFormat != .gpsFormatDec {
|
|
try visitor.visitSingularEnumField(value: _storage._gpsFormat, fieldNumber: 44)
|
|
}
|
|
if _storage._gpsAccept2D != false {
|
|
try visitor.visitSingularBoolField(value: _storage._gpsAccept2D, fieldNumber: 45)
|
|
}
|
|
if _storage._gpsMaxDop != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._gpsMaxDop, fieldNumber: 46)
|
|
}
|
|
if _storage._factoryReset != false {
|
|
try visitor.visitSingularBoolField(value: _storage._factoryReset, fieldNumber: 100)
|
|
}
|
|
if _storage._debugLogEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._debugLogEnabled, fieldNumber: 101)
|
|
}
|
|
if !_storage._ignoreIncoming.isEmpty {
|
|
try visitor.visitPackedUInt32Field(value: _storage._ignoreIncoming, fieldNumber: 103)
|
|
}
|
|
if _storage._serialpluginEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._serialpluginEnabled, fieldNumber: 120)
|
|
}
|
|
if _storage._serialpluginEcho != false {
|
|
try visitor.visitSingularBoolField(value: _storage._serialpluginEcho, fieldNumber: 121)
|
|
}
|
|
if _storage._serialpluginRxd != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._serialpluginRxd, fieldNumber: 122)
|
|
}
|
|
if _storage._serialpluginTxd != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._serialpluginTxd, fieldNumber: 123)
|
|
}
|
|
if _storage._serialpluginTimeout != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._serialpluginTimeout, fieldNumber: 124)
|
|
}
|
|
if _storage._serialpluginMode != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._serialpluginMode, fieldNumber: 125)
|
|
}
|
|
if _storage._extNotificationPluginEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._extNotificationPluginEnabled, fieldNumber: 126)
|
|
}
|
|
if _storage._extNotificationPluginOutputMs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._extNotificationPluginOutputMs, fieldNumber: 127)
|
|
}
|
|
if _storage._extNotificationPluginOutput != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._extNotificationPluginOutput, fieldNumber: 128)
|
|
}
|
|
if _storage._extNotificationPluginActive != false {
|
|
try visitor.visitSingularBoolField(value: _storage._extNotificationPluginActive, fieldNumber: 129)
|
|
}
|
|
if _storage._extNotificationPluginAlertMessage != false {
|
|
try visitor.visitSingularBoolField(value: _storage._extNotificationPluginAlertMessage, fieldNumber: 130)
|
|
}
|
|
if _storage._extNotificationPluginAlertBell != false {
|
|
try visitor.visitSingularBoolField(value: _storage._extNotificationPluginAlertBell, fieldNumber: 131)
|
|
}
|
|
if _storage._rangeTestPluginEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._rangeTestPluginEnabled, fieldNumber: 132)
|
|
}
|
|
if _storage._rangeTestPluginSender != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._rangeTestPluginSender, fieldNumber: 133)
|
|
}
|
|
if _storage._rangeTestPluginSave != false {
|
|
try visitor.visitSingularBoolField(value: _storage._rangeTestPluginSave, fieldNumber: 134)
|
|
}
|
|
if _storage._storeForwardPluginRecords != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._storeForwardPluginRecords, fieldNumber: 137)
|
|
}
|
|
if _storage._storeForwardPluginHistoryReturnMax != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._storeForwardPluginHistoryReturnMax, fieldNumber: 138)
|
|
}
|
|
if _storage._storeForwardPluginHistoryReturnWindow != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._storeForwardPluginHistoryReturnWindow, fieldNumber: 139)
|
|
}
|
|
if _storage._environmentalMeasurementPluginMeasurementEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._environmentalMeasurementPluginMeasurementEnabled, fieldNumber: 140)
|
|
}
|
|
if _storage._environmentalMeasurementPluginScreenEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._environmentalMeasurementPluginScreenEnabled, fieldNumber: 141)
|
|
}
|
|
if _storage._environmentalMeasurementPluginReadErrorCountThreshold != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._environmentalMeasurementPluginReadErrorCountThreshold, fieldNumber: 142)
|
|
}
|
|
if _storage._environmentalMeasurementPluginUpdateInterval != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._environmentalMeasurementPluginUpdateInterval, fieldNumber: 143)
|
|
}
|
|
if _storage._environmentalMeasurementPluginRecoveryInterval != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._environmentalMeasurementPluginRecoveryInterval, fieldNumber: 144)
|
|
}
|
|
if _storage._environmentalMeasurementPluginDisplayFarenheit != false {
|
|
try visitor.visitSingularBoolField(value: _storage._environmentalMeasurementPluginDisplayFarenheit, fieldNumber: 145)
|
|
}
|
|
if _storage._environmentalMeasurementPluginSensorType != .dht11 {
|
|
try visitor.visitSingularEnumField(value: _storage._environmentalMeasurementPluginSensorType, fieldNumber: 146)
|
|
}
|
|
if _storage._environmentalMeasurementPluginSensorPin != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._environmentalMeasurementPluginSensorPin, fieldNumber: 147)
|
|
}
|
|
if _storage._storeForwardPluginEnabled != false {
|
|
try visitor.visitSingularBoolField(value: _storage._storeForwardPluginEnabled, fieldNumber: 148)
|
|
}
|
|
if _storage._storeForwardPluginHeartbeat != false {
|
|
try visitor.visitSingularBoolField(value: _storage._storeForwardPluginHeartbeat, fieldNumber: 149)
|
|
}
|
|
if _storage._positionFlags != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._positionFlags, fieldNumber: 150)
|
|
}
|
|
if _storage._isAlwaysPowered != false {
|
|
try visitor.visitSingularBoolField(value: _storage._isAlwaysPowered, fieldNumber: 151)
|
|
}
|
|
if _storage._autoScreenCarouselSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._autoScreenCarouselSecs, fieldNumber: 152)
|
|
}
|
|
if _storage._onBatteryShutdownAfterSecs != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._onBatteryShutdownAfterSecs, fieldNumber: 153)
|
|
}
|
|
if _storage._hopLimit != 0 {
|
|
try visitor.visitSingularUInt32Field(value: _storage._hopLimit, fieldNumber: 154)
|
|
}
|
|
if !_storage._mqttUsername.isEmpty {
|
|
try visitor.visitSingularStringField(value: _storage._mqttUsername, fieldNumber: 155)
|
|
}
|
|
if !_storage._mqttPassword.isEmpty {
|
|
try visitor.visitSingularStringField(value: _storage._mqttPassword, fieldNumber: 156)
|
|
}
|
|
}
|
|
try unknownFields.traverse(visitor: &visitor)
|
|
}
|
|
|
|
static func ==(lhs: RadioConfig.UserPreferences, rhs: RadioConfig.UserPreferences) -> Bool {
|
|
if lhs._storage !== rhs._storage {
|
|
let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in
|
|
let _storage = _args.0
|
|
let rhs_storage = _args.1
|
|
if _storage._positionBroadcastSecs != rhs_storage._positionBroadcastSecs {return false}
|
|
if _storage._positionBroadcastSmart != rhs_storage._positionBroadcastSmart {return false}
|
|
if _storage._sendOwnerInterval != rhs_storage._sendOwnerInterval {return false}
|
|
if _storage._waitBluetoothSecs != rhs_storage._waitBluetoothSecs {return false}
|
|
if _storage._screenOnSecs != rhs_storage._screenOnSecs {return false}
|
|
if _storage._phoneTimeoutSecs != rhs_storage._phoneTimeoutSecs {return false}
|
|
if _storage._phoneSdsTimeoutSec != rhs_storage._phoneSdsTimeoutSec {return false}
|
|
if _storage._meshSdsTimeoutSecs != rhs_storage._meshSdsTimeoutSecs {return false}
|
|
if _storage._sdsSecs != rhs_storage._sdsSecs {return false}
|
|
if _storage._lsSecs != rhs_storage._lsSecs {return false}
|
|
if _storage._minWakeSecs != rhs_storage._minWakeSecs {return false}
|
|
if _storage._wifiSsid != rhs_storage._wifiSsid {return false}
|
|
if _storage._wifiPassword != rhs_storage._wifiPassword {return false}
|
|
if _storage._wifiApMode != rhs_storage._wifiApMode {return false}
|
|
if _storage._region != rhs_storage._region {return false}
|
|
if _storage._chargeCurrent != rhs_storage._chargeCurrent {return false}
|
|
if _storage._isRouter != rhs_storage._isRouter {return false}
|
|
if _storage._isLowPower != rhs_storage._isLowPower {return false}
|
|
if _storage._fixedPosition != rhs_storage._fixedPosition {return false}
|
|
if _storage._serialDisabled != rhs_storage._serialDisabled {return false}
|
|
if _storage._locationShare != rhs_storage._locationShare {return false}
|
|
if _storage._gpsOperation != rhs_storage._gpsOperation {return false}
|
|
if _storage._gpsUpdateInterval != rhs_storage._gpsUpdateInterval {return false}
|
|
if _storage._gpsAttemptTime != rhs_storage._gpsAttemptTime {return false}
|
|
if _storage._gpsAccept2D != rhs_storage._gpsAccept2D {return false}
|
|
if _storage._gpsMaxDop != rhs_storage._gpsMaxDop {return false}
|
|
if _storage._frequencyOffset != rhs_storage._frequencyOffset {return false}
|
|
if _storage._mqttServer != rhs_storage._mqttServer {return false}
|
|
if _storage._mqttDisabled != rhs_storage._mqttDisabled {return false}
|
|
if _storage._gpsFormat != rhs_storage._gpsFormat {return false}
|
|
if _storage._factoryReset != rhs_storage._factoryReset {return false}
|
|
if _storage._debugLogEnabled != rhs_storage._debugLogEnabled {return false}
|
|
if _storage._ignoreIncoming != rhs_storage._ignoreIncoming {return false}
|
|
if _storage._serialpluginEnabled != rhs_storage._serialpluginEnabled {return false}
|
|
if _storage._serialpluginEcho != rhs_storage._serialpluginEcho {return false}
|
|
if _storage._serialpluginRxd != rhs_storage._serialpluginRxd {return false}
|
|
if _storage._serialpluginTxd != rhs_storage._serialpluginTxd {return false}
|
|
if _storage._serialpluginTimeout != rhs_storage._serialpluginTimeout {return false}
|
|
if _storage._serialpluginMode != rhs_storage._serialpluginMode {return false}
|
|
if _storage._extNotificationPluginEnabled != rhs_storage._extNotificationPluginEnabled {return false}
|
|
if _storage._extNotificationPluginOutputMs != rhs_storage._extNotificationPluginOutputMs {return false}
|
|
if _storage._extNotificationPluginOutput != rhs_storage._extNotificationPluginOutput {return false}
|
|
if _storage._extNotificationPluginActive != rhs_storage._extNotificationPluginActive {return false}
|
|
if _storage._extNotificationPluginAlertMessage != rhs_storage._extNotificationPluginAlertMessage {return false}
|
|
if _storage._extNotificationPluginAlertBell != rhs_storage._extNotificationPluginAlertBell {return false}
|
|
if _storage._rangeTestPluginEnabled != rhs_storage._rangeTestPluginEnabled {return false}
|
|
if _storage._rangeTestPluginSender != rhs_storage._rangeTestPluginSender {return false}
|
|
if _storage._rangeTestPluginSave != rhs_storage._rangeTestPluginSave {return false}
|
|
if _storage._storeForwardPluginEnabled != rhs_storage._storeForwardPluginEnabled {return false}
|
|
if _storage._storeForwardPluginHeartbeat != rhs_storage._storeForwardPluginHeartbeat {return false}
|
|
if _storage._storeForwardPluginRecords != rhs_storage._storeForwardPluginRecords {return false}
|
|
if _storage._storeForwardPluginHistoryReturnMax != rhs_storage._storeForwardPluginHistoryReturnMax {return false}
|
|
if _storage._storeForwardPluginHistoryReturnWindow != rhs_storage._storeForwardPluginHistoryReturnWindow {return false}
|
|
if _storage._environmentalMeasurementPluginMeasurementEnabled != rhs_storage._environmentalMeasurementPluginMeasurementEnabled {return false}
|
|
if _storage._environmentalMeasurementPluginScreenEnabled != rhs_storage._environmentalMeasurementPluginScreenEnabled {return false}
|
|
if _storage._environmentalMeasurementPluginReadErrorCountThreshold != rhs_storage._environmentalMeasurementPluginReadErrorCountThreshold {return false}
|
|
if _storage._environmentalMeasurementPluginUpdateInterval != rhs_storage._environmentalMeasurementPluginUpdateInterval {return false}
|
|
if _storage._environmentalMeasurementPluginRecoveryInterval != rhs_storage._environmentalMeasurementPluginRecoveryInterval {return false}
|
|
if _storage._environmentalMeasurementPluginDisplayFarenheit != rhs_storage._environmentalMeasurementPluginDisplayFarenheit {return false}
|
|
if _storage._environmentalMeasurementPluginSensorType != rhs_storage._environmentalMeasurementPluginSensorType {return false}
|
|
if _storage._environmentalMeasurementPluginSensorPin != rhs_storage._environmentalMeasurementPluginSensorPin {return false}
|
|
if _storage._positionFlags != rhs_storage._positionFlags {return false}
|
|
if _storage._isAlwaysPowered != rhs_storage._isAlwaysPowered {return false}
|
|
if _storage._autoScreenCarouselSecs != rhs_storage._autoScreenCarouselSecs {return false}
|
|
if _storage._onBatteryShutdownAfterSecs != rhs_storage._onBatteryShutdownAfterSecs {return false}
|
|
if _storage._hopLimit != rhs_storage._hopLimit {return false}
|
|
if _storage._mqttUsername != rhs_storage._mqttUsername {return false}
|
|
if _storage._mqttPassword != rhs_storage._mqttPassword {return false}
|
|
return true
|
|
}
|
|
if !storagesAreEqual {return false}
|
|
}
|
|
if lhs.unknownFields != rhs.unknownFields {return false}
|
|
return true
|
|
}
|
|
}
|
|
|
|
extension RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType: SwiftProtobuf._ProtoNameProviding {
|
|
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
|
0: .same(proto: "DHT11"),
|
|
1: .same(proto: "DS18B20"),
|
|
]
|
|
}
|