From 5fae2e5f73b14153b126230ed73940fe7c44b42a Mon Sep 17 00:00:00 2001 From: zjs81 Date: Tue, 17 Feb 2026 23:50:11 -0700 Subject: [PATCH] fix formatting --- lib/connector/meshcore_protocol.dart | 9 +- lib/models/radio_settings.dart | 209 ++++++++++++++++++++++++--- lib/screens/settings_screen.dart | 13 +- 3 files changed, 205 insertions(+), 26 deletions(-) diff --git a/lib/connector/meshcore_protocol.dart b/lib/connector/meshcore_protocol.dart index 0b78c65f..ee835781 100644 --- a/lib/connector/meshcore_protocol.dart +++ b/lib/connector/meshcore_protocol.dart @@ -557,8 +557,13 @@ Uint8List buildSetChannelFrame(int channelIndex, String name, Uint8List psk) { // sf: spreading factor (5-12) // cr: coding rate (5-8) // clientRepeat: enable off-grid packet repeat (firmware v9+, omit for older) -Uint8List buildSetRadioParamsFrame(int freqHz, int bwHz, int sf, int cr, - {bool? clientRepeat}) { +Uint8List buildSetRadioParamsFrame( + int freqHz, + int bwHz, + int sf, + int cr, { + bool? clientRepeat, +}) { final writer = BufferWriter(); writer.writeByte(cmdSetRadioParams); writer.writeUInt32LE(freqHz); diff --git a/lib/models/radio_settings.dart b/lib/models/radio_settings.dart index 51256982..37ef3ccb 100644 --- a/lib/models/radio_settings.dart +++ b/lib/models/radio_settings.dart @@ -61,26 +61,197 @@ class RadioSettings { // Regional preset configurations static final List<(String, RadioSettings)> presets = [ - ('Australia', RadioSettings(frequencyMHz: 915.8, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf10, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Australia (Narrow)', RadioSettings(frequencyMHz: 916.575, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf7, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Australia SA, WA, QLD', RadioSettings(frequencyMHz: 923.125, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf8, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Czech Republic', RadioSettings(frequencyMHz: 869.432, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf7, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('EU 433MHz', RadioSettings(frequencyMHz: 433.650, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('EU/UK (Long Range)', RadioSettings(frequencyMHz: 869.525, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('EU/UK (Medium Range)', RadioSettings(frequencyMHz: 869.525, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf10, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('EU/UK (Narrow)', RadioSettings(frequencyMHz: 869.618, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf8, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('New Zealand', RadioSettings(frequencyMHz: 917.375, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('New Zealand (Narrow)', RadioSettings(frequencyMHz: 917.375, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf7, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Portugal 433', RadioSettings(frequencyMHz: 433.375, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf9, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Portugal 869', RadioSettings(frequencyMHz: 869.618, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf7, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('Switzerland', RadioSettings(frequencyMHz: 869.618, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf8, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('USA Arizona', RadioSettings(frequencyMHz: 908.205, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf10, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('USA/Canada', RadioSettings(frequencyMHz: 910.525, bandwidth: LoRaBandwidth.bw62_5, spreadingFactor: LoRaSpreadingFactor.sf7, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Vietnam', RadioSettings(frequencyMHz: 920.250, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), + ( + 'Australia', + RadioSettings( + frequencyMHz: 915.8, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf10, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Australia (Narrow)', + RadioSettings( + frequencyMHz: 916.575, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf7, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Australia SA, WA, QLD', + RadioSettings( + frequencyMHz: 923.125, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf8, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Czech Republic', + RadioSettings( + frequencyMHz: 869.432, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf7, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'EU 433MHz', + RadioSettings( + frequencyMHz: 433.650, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'EU/UK (Long Range)', + RadioSettings( + frequencyMHz: 869.525, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'EU/UK (Medium Range)', + RadioSettings( + frequencyMHz: 869.525, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf10, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'EU/UK (Narrow)', + RadioSettings( + frequencyMHz: 869.618, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf8, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'New Zealand', + RadioSettings( + frequencyMHz: 917.375, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'New Zealand (Narrow)', + RadioSettings( + frequencyMHz: 917.375, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf7, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Portugal 433', + RadioSettings( + frequencyMHz: 433.375, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf9, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Portugal 869', + RadioSettings( + frequencyMHz: 869.618, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf7, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'Switzerland', + RadioSettings( + frequencyMHz: 869.618, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf8, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'USA Arizona', + RadioSettings( + frequencyMHz: 908.205, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf10, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'USA/Canada', + RadioSettings( + frequencyMHz: 910.525, + bandwidth: LoRaBandwidth.bw62_5, + spreadingFactor: LoRaSpreadingFactor.sf7, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Vietnam', + RadioSettings( + frequencyMHz: 920.250, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), // Off-grid repeat presets (valid client_repeat frequencies) - ('Off-Grid 433', RadioSettings(frequencyMHz: 433.0, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), - ('Off-Grid 869', RadioSettings(frequencyMHz: 869.0, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 14)), - ('Off-Grid 918', RadioSettings(frequencyMHz: 918.0, bandwidth: LoRaBandwidth.bw250, spreadingFactor: LoRaSpreadingFactor.sf11, codingRate: LoRaCodingRate.cr4_5, txPowerDbm: 20)), + ( + 'Off-Grid 433', + RadioSettings( + frequencyMHz: 433.0, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), + ( + 'Off-Grid 869', + RadioSettings( + frequencyMHz: 869.0, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 14, + ), + ), + ( + 'Off-Grid 918', + RadioSettings( + frequencyMHz: 918.0, + bandwidth: LoRaBandwidth.bw250, + spreadingFactor: LoRaSpreadingFactor.sf11, + codingRate: LoRaCodingRate.cr4_5, + txPowerDbm: 20, + ), + ), ]; int get frequencyHz => (frequencyMHz * 1000).round(); diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index f131ecbb..12b79de9 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -963,8 +963,7 @@ class _RadioSettingsDialogState extends State<_RadioSettingsDialog> { widget.connector.currentCr, ); - final supportsRepeat = - (widget.connector.firmwareVerCode ?? 0) >= 9; + final supportsRepeat = (widget.connector.firmwareVerCode ?? 0) >= 9; if (supportsRepeat) { const validRepeatFreqsKHz = {433000, 869000, 918000}; @@ -978,8 +977,13 @@ class _RadioSettingsDialogState extends State<_RadioSettingsDialog> { try { await widget.connector.sendFrame( - buildSetRadioParamsFrame(freqHz, bwHz, sf, cr, - clientRepeat: supportsRepeat ? _clientRepeat : null), + buildSetRadioParamsFrame( + freqHz, + bwHz, + sf, + cr, + clientRepeat: supportsRepeat ? _clientRepeat : null, + ), ); await widget.connector.sendFrame(buildSetRadioTxPowerFrame(txPower)); await widget.connector.refreshDeviceInfo(); @@ -1131,4 +1135,3 @@ class _RadioSettingsDialogState extends State<_RadioSettingsDialog> { ); } } -