Meshtastic-Apple/Meshtastic/Model/ConfigModels.swift
2026-04-16 12:10:00 -07:00

320 lines
7.2 KiB
Swift

//
// ConfigModels.swift
// Meshtastic
//
// SwiftData models for all device and module configuration entities.
//
import Foundation
import SwiftData
@Model
final class AmbientLightingConfigEntity {
var blue: Int32 = 0
var current: Int32 = 0
var green: Int32 = 0
var ledState: Bool = false
var red: Int32 = 0
var ambientLightingConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class BluetoothConfigEntity {
var deviceLoggingEnabled: Bool = false
var enabled: Bool = false
var fixedPin: Int32 = 123456
var mode: Int32 = 0
var bluetoothConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class CannedMessageConfigEntity {
var enabled: Bool = false
var inputbrokerEventCcw: Int32 = 0
var inputbrokerEventCw: Int32 = 0
var inputbrokerEventPress: Int32 = 0
var inputbrokerPinA: Int32 = 0
var inputbrokerPinB: Int32 = 0
var inputbrokerPinPress: Int32 = 0
var messages: String?
var rotary1Enabled: Bool = false
var sendBell: Bool = false
var updown1Enabled: Bool = false
var cannedMessagesConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class DetectionSensorConfigEntity {
var enabled: Bool = false
var minimumBroadcastSecs: Int32 = 0
var monitorPin: Int32 = 0
var name: String?
var sendBell: Bool = false
var stateBroadcastSecs: Int32 = 0
var triggerType: Int32 = 0
var usePullup: Bool = false
var detectionSensorConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class DeviceConfigEntity {
var buttonGpio: Int32 = 0
var buzzerGpio: Int32 = 0
var debugLogEnabled: Bool = false
var disableTripleClick: Bool = false
var doubleTapAsButtonPress: Bool = false
var isManaged: Bool = false
var ledHeartbeatEnabled: Bool = true
var nodeInfoBroadcastSecs: Int32 = 0
var rebroadcastMode: Int32 = 0
var role: Int32 = 0
var serialEnabled: Bool = false
var tripleClickAsAdHocPing: Bool = true
var tzdef: String?
var deviceConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class DisplayConfigEntity {
var compassNorthTop: Bool = false
var displayMode: Int32 = 0
var flipScreen: Bool = false
var headingBold: Bool = true
var oledType: Int32 = 0
var screenCarouselInterval: Int32 = 0
var screenOnSeconds: Int32 = 0
var units: Int32 = 0
var use12HClock: Bool = false
var wakeOnTapOrMotion: Bool = false
var displayConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class ExternalNotificationConfigEntity {
var active: Bool = false
var alertBell: Bool = false
var alertBellBuzzer: Bool = false
var alertBellVibra: Bool = false
var alertMessage: Bool = false
var alertMessageBuzzer: Bool = false
var alertMessageVibra: Bool = false
var enabled: Bool = false
var nagTimeout: Int32 = 0
var output: Int32 = 0
var outputBuzzer: Int32 = 0
var outputMilliseconds: Int32 = 0
var outputVibra: Int32 = 0
var useI2SAsBuzzer: Bool = false
var usePWM: Bool = true
var externalNotificationConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class LoRaConfigEntity {
var bandwidth: Int32 = 0
var channelNum: Int32 = 0
var codingRate: Int32 = 0
var frequencyOffset: Float = 0
var hopLimit: Int32 = 0
var ignoreMqtt: Bool = false
var modemPreset: Int32 = 0
var okToMqtt: Bool = false
var overrideDutyCycle: Bool = false
var overrideFrequency: Float = 0.0
var regionCode: Int32 = 0
var spreadFactor: Int32 = 0
var sx126xRxBoostedGain: Bool = false
var txEnabled: Bool = true
var txPower: Int32 = 0
var usePreset: Bool = true
var loRaConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class MQTTConfigEntity {
var address: String?
var enabled: Bool = false
var encryptionEnabled: Bool = false
var jsonEnabled: Bool = false
var mapPositionPrecision: Int32 = 13
var mapPublishIntervalSecs: Int32 = 0
var mapReportingEnabled: Bool = false
var mapReportingShouldReportLocation: Bool = false
var password: String?
var proxyToClientEnabled: Bool = false
var root: String? = "msh"
var tlsEnabled: Bool = false
var username: String?
var mqttConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class NetworkConfigEntity {
var dns: Int32 = 0
var enabledProtocols: Int32 = 0
var ethEnabled: Bool = false
var gateway: Int32 = 0
var ip: Int32 = 0
var ntpServer: String?
var subnet: Int32 = 0
var wifiEnabled: Bool = false
var wifiMode: Int32 = 0
var wifiPsk: String?
var wifiSsid: String?
var networkConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class PaxCounterConfigEntity {
var bleThreshold: Int32 = 0
var enabled: Bool = false
var updateInterval: Int32 = 0
var wifiThreshold: Int32 = -80
var paxCounterConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class PositionConfigEntity {
var broadcastSmartMinimumDistance: Int32 = 0
var broadcastSmartMinimumIntervalSecs: Int32 = 0
var deviceGpsEnabled: Bool = false
var fixedPosition: Bool = false
var gpsAttemptTime: Int32 = 0
var gpsEnGpio: Int32 = 0
var gpsMode: Int32 = 0
var gpsUpdateInterval: Int32 = 0
var positionBroadcastSeconds: Int32 = 0
var positionFlags: Int32 = 0
var rxGpio: Int32 = 0
var smartPositionEnabled: Bool = false
var txGpio: Int32 = 0
var positionConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class PowerConfigEntity {
var adcMultiplierOverride: Float = 0
var deviceBatteryInaAddress: Int32 = 0
var isPowerSaving: Bool = false
var lsSecs: Int32 = 0
var minWakeSecs: Int32 = 0
var onBatteryShutdownAfterSecs: Int32 = 0
var waitBluetoothSecs: Int32 = 0
var powerConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class RangeTestConfigEntity {
var enabled: Bool = false
var save: Bool = false
var sender: Int32 = 0
var rangeTestConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class RTTTLConfigEntity {
var ringtone: String?
var rtttlConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class SecurityConfigEntity {
var adminChannelEnabled: Bool = false
var adminKey: Data?
var adminKey2: Data?
var adminKey3: Data?
var bluetoothLoggingEnabled: Bool = false
var debugLogApiEnabled: Bool = false
var isManaged: Bool = false
var privateKey: Data?
var publicKey: Data?
var serialEnabled: Bool = false
var securityConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class SerialConfigEntity {
var baudRate: Int32 = 0
var echo: Bool = false
var enabled: Bool = false
var mode: Int32 = 0
var overrideConsoleSerialPort: Bool = false
var rxd: Int32 = 0
var timeout: Int32 = 0
var txd: Int32 = 0
var serialConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class StoreForwardConfigEntity {
var enabled: Bool = false
var heartbeat: Bool = false
var historyReturnMax: Int32 = 0
var historyReturnWindow: Int32 = 0
var isRouter: Bool = false
var lastHeartbeat: Date?
var lastRequest: Int32 = 0
var records: Int32 = 0
var storeForwardConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class TAKConfigEntity {
var role: Int32 = 0
var team: Int32 = 0
var takConfigNode: NodeInfoEntity?
init() {}
}
@Model
final class TelemetryConfigEntity {
var deviceTelemetryEnabled: Bool = false
var deviceUpdateInterval: Int32 = 0
var environmentDisplayFahrenheit: Bool = false
var environmentMeasurementEnabled: Bool = false
var environmentScreenEnabled: Bool = false
var environmentUpdateInterval: Int32 = 0
var powerMeasurementEnabled: Bool = false
var powerScreenEnabled: Bool = false
var powerUpdateInterval: Int32 = 0
var telemetryConfigNode: NodeInfoEntity?
init() {}
}