meshcore-open/lib/models/radio_settings.dart
446564 b34d684e67 format dart files
formats all dart files using `dart format .` from the root project dir

this makes the code style repeatable by new contributors and makes PR review easier
2026-02-04 08:32:35 -08:00

107 lines
2.5 KiB
Dart

enum LoRaBandwidth {
bw7_8(7800, '7.8 kHz'),
bw10_4(10400, '10.4 kHz'),
bw15_6(15600, '15.6 kHz'),
bw20_8(20800, '20.8 kHz'),
bw31_25(31250, '31.25 kHz'),
bw41_7(41700, '41.7 kHz'),
bw62_5(62500, '62.5 kHz'),
bw125(125000, '125 kHz'),
bw250(250000, '250 kHz'),
bw500(500000, '500 kHz');
final int hz;
final String label;
const LoRaBandwidth(this.hz, this.label);
}
enum LoRaSpreadingFactor {
sf5(5, 'SF5'),
sf6(6, 'SF6'),
sf7(7, 'SF7'),
sf8(8, 'SF8'),
sf9(9, 'SF9'),
sf10(10, 'SF10'),
sf11(11, 'SF11'),
sf12(12, 'SF12');
final int value;
final String label;
const LoRaSpreadingFactor(this.value, this.label);
}
enum LoRaCodingRate {
cr4_5(5, '4/5'),
cr4_6(6, '4/6'),
cr4_7(7, '4/7'),
cr4_8(8, '4/8');
final int value;
final String label;
const LoRaCodingRate(this.value, this.label);
}
class RadioSettings {
final double frequencyMHz;
final LoRaBandwidth bandwidth;
final LoRaSpreadingFactor spreadingFactor;
final LoRaCodingRate codingRate;
final int txPowerDbm;
RadioSettings({
required this.frequencyMHz,
required this.bandwidth,
required this.spreadingFactor,
required this.codingRate,
required this.txPowerDbm,
});
// Preset configurations
static RadioSettings get preset915MHz => RadioSettings(
frequencyMHz: 915.0,
bandwidth: LoRaBandwidth.bw125,
spreadingFactor: LoRaSpreadingFactor.sf7,
codingRate: LoRaCodingRate.cr4_5,
txPowerDbm: 20,
);
static RadioSettings get preset868MHz => RadioSettings(
frequencyMHz: 868.0,
bandwidth: LoRaBandwidth.bw125,
spreadingFactor: LoRaSpreadingFactor.sf7,
codingRate: LoRaCodingRate.cr4_5,
txPowerDbm: 14,
);
static RadioSettings get preset433MHz => RadioSettings(
frequencyMHz: 433.0,
bandwidth: LoRaBandwidth.bw125,
spreadingFactor: LoRaSpreadingFactor.sf7,
codingRate: LoRaCodingRate.cr4_5,
txPowerDbm: 20,
);
static RadioSettings get presetLongRange => RadioSettings(
frequencyMHz: 915.0,
bandwidth: LoRaBandwidth.bw125,
spreadingFactor: LoRaSpreadingFactor.sf12,
codingRate: LoRaCodingRate.cr4_8,
txPowerDbm: 20,
);
static RadioSettings get presetFastSpeed => RadioSettings(
frequencyMHz: 915.0,
bandwidth: LoRaBandwidth.bw500,
spreadingFactor: LoRaSpreadingFactor.sf7,
codingRate: LoRaCodingRate.cr4_5,
txPowerDbm: 20,
);
int get frequencyHz => (frequencyMHz * 1000).round();
int get bandwidthHz => bandwidth.hz;
int get sf => spreadingFactor.value;
int get cr => codingRate.value;
}