mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Add channelNum to lora config
This commit is contained in:
parent
2d4d511c37
commit
c943b87a52
1 changed files with 77 additions and 11 deletions
|
|
@ -23,12 +23,18 @@ struct LoRaConfig: View {
|
|||
@State var txPower = 0
|
||||
@State var txEnabled = true
|
||||
@State var usePreset = true
|
||||
@State var channelNum = 0
|
||||
|
||||
var body: some View {
|
||||
|
||||
VStack {
|
||||
Form {
|
||||
Section(header: Text("Region")) {
|
||||
Section(header: Text("Options")) {
|
||||
Toggle(isOn: $txEnabled) {
|
||||
Label("Transmit Enabled", systemImage: "waveform.path")
|
||||
}
|
||||
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
||||
|
||||
Picker("Region", selection: $region ) {
|
||||
ForEach(RegionCodes.allCases) { r in
|
||||
Text(r.description)
|
||||
|
|
@ -39,14 +45,48 @@ struct LoRaConfig: View {
|
|||
.font(.caption)
|
||||
}
|
||||
Section(header: Text("Modem")) {
|
||||
Picker("Presets", selection: $modemPreset ) {
|
||||
ForEach(ModemPresets.allCases) { m in
|
||||
Text(m.description)
|
||||
Toggle(isOn: $usePreset) {
|
||||
Label("Use Preset", systemImage: "list.bullet.rectangle")
|
||||
}
|
||||
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
||||
if usePreset {
|
||||
|
||||
Picker("Presets", selection: $modemPreset ) {
|
||||
ForEach(ModemPresets.allCases) { m in
|
||||
Text(m.description)
|
||||
}
|
||||
}
|
||||
.pickerStyle(DefaultPickerStyle())
|
||||
Text("Available modem presets, default is Long Fast.")
|
||||
.font(.caption)
|
||||
} else {
|
||||
Grid {
|
||||
GridRow {
|
||||
Text("Bandwidth")
|
||||
.font(.caption)
|
||||
Text(String(node?.loRaConfig?.bandwidth ?? 0))
|
||||
.font(.caption)
|
||||
}
|
||||
GridRow {
|
||||
Text("Spread Factor")
|
||||
.font(.caption)
|
||||
Text(String(node?.loRaConfig?.spreadFactor ?? 0))
|
||||
.font(.caption)
|
||||
}
|
||||
GridRow {
|
||||
Text("Coding Rate")
|
||||
.font(.caption)
|
||||
Text(String(node?.loRaConfig?.codingRate ?? 0))
|
||||
.font(.caption)
|
||||
}
|
||||
GridRow {
|
||||
Text("Frequency Offset")
|
||||
.font(.caption)
|
||||
Text(String(node?.loRaConfig?.frequencyOffset ?? 0))
|
||||
.font(.caption)
|
||||
}
|
||||
}
|
||||
}
|
||||
.pickerStyle(DefaultPickerStyle())
|
||||
Text("Available modem presets, default is Long Fast.")
|
||||
.font(.caption)
|
||||
}
|
||||
Section(header: Text("Mesh Options")) {
|
||||
Picker("Number of hops", selection: $hopLimit) {
|
||||
|
|
@ -59,9 +99,23 @@ struct LoRaConfig: View {
|
|||
.pickerStyle(DefaultPickerStyle())
|
||||
Text("Sets the maximum number of hops, default is 3. Increasing hops also increases air time utilization and should be used carefully.")
|
||||
.font(.caption)
|
||||
Picker("Channel Number", selection: $channelNum) {
|
||||
ForEach(0..<9) {
|
||||
if $0 == 0 {
|
||||
Text("Automatic")
|
||||
} else {
|
||||
Text("Channel \($0)")
|
||||
}
|
||||
}
|
||||
}
|
||||
.pickerStyle(DefaultPickerStyle())
|
||||
Text("A hash of the primary channel's name sets the LoRa channel number, this determines the actual frequency you are transmitting on in the band. To ensure devices with different primary channel names transmit on the same frequency, you must explicitly set the LoRa channel number.")
|
||||
.font(.caption)
|
||||
}
|
||||
}
|
||||
.disabled(self.bleManager.connectedPeripheral == nil || node?.loRaConfig == nil)
|
||||
|
||||
|
||||
Button {
|
||||
isPresentingSaveConfirm = true
|
||||
} label: {
|
||||
|
|
@ -86,8 +140,9 @@ struct LoRaConfig: View {
|
|||
lc.hopLimit = UInt32(hopLimit)
|
||||
lc.region = RegionCodes(rawValue: region)!.protoEnumValue()
|
||||
lc.modemPreset = ModemPresets(rawValue: modemPreset)!.protoEnumValue()
|
||||
lc.usePreset = true
|
||||
lc.txEnabled = true
|
||||
lc.usePreset = usePreset
|
||||
lc.txEnabled = txEnabled
|
||||
lc.channelNum = UInt32(channelNum)
|
||||
let adminMessageId = bleManager.saveLoRaConfig(config: lc, fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: node?.myInfo?.adminIndex ?? 0)
|
||||
if adminMessageId > 0 {
|
||||
// Should show a saved successfully alert once I know that to be true
|
||||
|
|
@ -103,8 +158,8 @@ struct LoRaConfig: View {
|
|||
}
|
||||
.navigationTitle("lora.config")
|
||||
.navigationBarItems(trailing:
|
||||
ZStack {
|
||||
ConnectedDevice(bluetoothOn: bleManager.isSwitchedOn, deviceConnected: bleManager.connectedPeripheral != nil, name: (bleManager.connectedPeripheral != nil) ? bleManager.connectedPeripheral.shortName : "????")
|
||||
ZStack {
|
||||
ConnectedDevice(bluetoothOn: bleManager.isSwitchedOn, deviceConnected: bleManager.connectedPeripheral != nil, name: (bleManager.connectedPeripheral != nil) ? bleManager.connectedPeripheral.shortName : "????")
|
||||
})
|
||||
.onAppear {
|
||||
|
||||
|
|
@ -115,6 +170,7 @@ struct LoRaConfig: View {
|
|||
self.modemPreset = Int(node?.loRaConfig?.modemPreset ?? 0)
|
||||
self.txEnabled = node?.loRaConfig?.txEnabled ?? true
|
||||
self.txPower = Int(node?.loRaConfig?.txPower ?? 0)
|
||||
self.channelNum = Int(node?.loRaConfig?.channelNum ?? 0)
|
||||
self.hasChanges = false
|
||||
|
||||
// Need to request a LoRaConfig from the remote node before allowing changes
|
||||
|
|
@ -131,6 +187,11 @@ struct LoRaConfig: View {
|
|||
if newRegion != node!.loRaConfig!.regionCode { hasChanges = true }
|
||||
}
|
||||
}
|
||||
.onChange(of: usePreset) { newUsePreset in
|
||||
if node != nil && node!.loRaConfig != nil {
|
||||
if newUsePreset != node!.loRaConfig!.usePreset { hasChanges = true }
|
||||
}
|
||||
}
|
||||
.onChange(of: modemPreset) { newModemPreset in
|
||||
if node != nil && node!.loRaConfig != nil {
|
||||
if newModemPreset != node!.loRaConfig!.modemPreset { hasChanges = true }
|
||||
|
|
@ -141,5 +202,10 @@ struct LoRaConfig: View {
|
|||
if newHopLimit != node!.loRaConfig!.hopLimit { hasChanges = true }
|
||||
}
|
||||
}
|
||||
.onChange(of: channelNum) { newChannelNum in
|
||||
if node != nil && node!.loRaConfig != nil {
|
||||
if newChannelNum != node!.loRaConfig!.channelNum { hasChanges = true }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue