diff --git a/chirpstack/src/downlink/helpers.rs b/chirpstack/src/downlink/helpers.rs index 115ef994..f1cfdadf 100644 --- a/chirpstack/src/downlink/helpers.rs +++ b/chirpstack/src/downlink/helpers.rs @@ -1,3 +1,5 @@ +use std::str::FromStr; + use anyhow::Result; use rand::seq::SliceRandom; @@ -65,7 +67,9 @@ pub fn set_tx_info_data_rate( parameters: Some(gw::modulation::Parameters::Lora(gw::LoraModulationInfo { bandwidth: v.bandwidth, spreading_factor: v.spreading_factor as u32, - code_rate: chirpstack_api::gw::CodeRate::Cr45.into(), + code_rate: gw::CodeRate::from_str(&v.coding_rate) + .map_err(|e| anyhow!("{}", e))? + .into(), polarization_inversion: true, code_rate_legacy: "".into(), })), diff --git a/chirpstack/src/uplink/helpers.rs b/chirpstack/src/uplink/helpers.rs index 45408195..26c11ffd 100644 --- a/chirpstack/src/uplink/helpers.rs +++ b/chirpstack/src/uplink/helpers.rs @@ -25,6 +25,7 @@ pub fn get_uplink_dr(region_name: &str, tx_info: &chirpstack_api::gw::UplinkTxIn lrwn::region::DataRateModulation::Lora(lrwn::region::LoraDataRate { spreading_factor: v.spreading_factor as u8, bandwidth: v.bandwidth, + coding_rate: v.code_rate().into(), }) } chirpstack_api::gw::modulation::Parameters::Fsk(v) => { @@ -57,7 +58,9 @@ pub fn set_uplink_modulation( gw::modulation::Parameters::Lora(gw::LoraModulationInfo { bandwidth: v.bandwidth, spreading_factor: v.spreading_factor as u32, - code_rate: gw::CodeRate::Cr45.into(), + code_rate: gw::CodeRate::from_str(&v.coding_rate) + .map_err(|e| anyhow!("{}", e))? + .into(), code_rate_legacy: "".into(), polarization_inversion: true, }) diff --git a/chirpstack/src/uplink/stats.rs b/chirpstack/src/uplink/stats.rs index 1f225868..14136622 100644 --- a/chirpstack/src/uplink/stats.rs +++ b/chirpstack/src/uplink/stats.rs @@ -255,6 +255,7 @@ fn per_modultation_to_per_dr( lrwn::region::DataRateModulation::Lora(lrwn::region::LoraDataRate { spreading_factor: v.spreading_factor as u8, bandwidth: v.bandwidth, + coding_rate: v.code_rate().into(), }) } gw::modulation::Parameters::Fsk(v) => { diff --git a/lrwn/src/region/as923.rs b/lrwn/src/region/as923.rs index 481008e8..07b996a3 100644 --- a/lrwn/src/region/as923.rs +++ b/lrwn/src/region/as923.rs @@ -42,6 +42,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -53,6 +54,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -64,6 +66,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -75,6 +78,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -86,6 +90,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -97,6 +102,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -108,6 +114,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/au915.rs b/lrwn/src/region/au915.rs index 4d6b65ac..50895c7a 100644 --- a/lrwn/src/region/au915.rs +++ b/lrwn/src/region/au915.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -116,6 +123,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -127,6 +135,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -138,6 +147,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -149,6 +159,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -160,6 +171,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -171,6 +183,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -1362,6 +1375,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), uplink: true, expected_dr: 0, @@ -1370,6 +1384,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: false, expected_dr: 8, @@ -1378,6 +1393,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: true, expected_dr: 6, @@ -1386,6 +1402,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: false, expected_dr: 12, diff --git a/lrwn/src/region/cn470.rs b/lrwn/src/region/cn470.rs index 6a04a7e1..8d0c0fe0 100644 --- a/lrwn/src/region/cn470.rs +++ b/lrwn/src/region/cn470.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/cn779.rs b/lrwn/src/region/cn779.rs index b9f790af..00eafc64 100644 --- a/lrwn/src/region/cn779.rs +++ b/lrwn/src/region/cn779.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/eu433.rs b/lrwn/src/region/eu433.rs index 1f361a02..f5ac4a69 100644 --- a/lrwn/src/region/eu433.rs +++ b/lrwn/src/region/eu433.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/eu868.rs b/lrwn/src/region/eu868.rs index 8c53f185..99a8df23 100644 --- a/lrwn/src/region/eu868.rs +++ b/lrwn/src/region/eu868.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), }, ), @@ -764,6 +771,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), 0, ), @@ -772,6 +780,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), 0, ), @@ -780,6 +789,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), 5, ), @@ -788,6 +798,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), 5, ), @@ -796,6 +807,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), 6, ), @@ -804,6 +816,7 @@ mod tests { DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), 6, ), diff --git a/lrwn/src/region/in865.rs b/lrwn/src/region/in865.rs index 2f26e9df..4d3bbb0d 100644 --- a/lrwn/src/region/in865.rs +++ b/lrwn/src/region/in865.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/ism2400.rs b/lrwn/src/region/ism2400.rs index 42316808..a9401dc2 100644 --- a/lrwn/src/region/ism2400.rs +++ b/lrwn/src/region/ism2400.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 6, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), @@ -105,6 +112,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 5, bandwidth: 812000, + coding_rate: "4/8LI".into(), }), }, ), diff --git a/lrwn/src/region/kr920.rs b/lrwn/src/region/kr920.rs index 3988ad08..157488aa 100644 --- a/lrwn/src/region/kr920.rs +++ b/lrwn/src/region/kr920.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/mod.rs b/lrwn/src/region/mod.rs index 57299ae0..9f1704a9 100644 --- a/lrwn/src/region/mod.rs +++ b/lrwn/src/region/mod.rs @@ -274,25 +274,26 @@ pub struct DataRate { pub modulation: DataRateModulation, } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Debug)] pub enum DataRateModulation { Lora(LoraDataRate), Fsk(FskDataRate), LrFhss(LrFhssDataRate), } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Debug)] pub struct LoraDataRate { pub spreading_factor: u8, pub bandwidth: u32, + pub coding_rate: String, } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Debug)] pub struct FskDataRate { pub bitrate: u32, } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Debug)] pub struct LrFhssDataRate { pub coding_rate: String, pub occupied_channel_width: u32, @@ -465,7 +466,7 @@ impl RegionBaseConfig { } } - Err(anyhow!("Unknown data-rate")) + Err(anyhow!("Unknown data-rate: {:?}", modulation)) } fn get_data_rate(&self, dr: u8) -> Result { diff --git a/lrwn/src/region/ru864.rs b/lrwn/src/region/ru864.rs index d8608943..776b3d7e 100644 --- a/lrwn/src/region/ru864.rs +++ b/lrwn/src/region/ru864.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -83,6 +88,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -94,6 +100,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 250000, + coding_rate: "4/5".into(), }), }, ), diff --git a/lrwn/src/region/us915.rs b/lrwn/src/region/us915.rs index 763bbd50..56819a28 100644 --- a/lrwn/src/region/us915.rs +++ b/lrwn/src/region/us915.rs @@ -28,6 +28,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -39,6 +40,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -50,6 +52,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -61,6 +64,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 125000, + coding_rate: "4/5".into(), }), }, ), @@ -72,6 +76,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -106,6 +111,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -117,6 +123,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 11, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -128,6 +135,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -139,6 +147,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 9, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -150,6 +159,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -161,6 +171,7 @@ impl Configuration { modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 7, bandwidth: 500000, + coding_rate: "4/5".into(), }), }, ), @@ -1054,6 +1065,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 10, bandwidth: 125000, + coding_rate: "4/5".into(), }), uplink: true, expected_dr: 0, @@ -1062,6 +1074,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 12, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: false, expected_dr: 8, @@ -1070,6 +1083,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: true, expected_dr: 4, @@ -1078,6 +1092,7 @@ pub mod test { dr_modulation: DataRateModulation::Lora(LoraDataRate { spreading_factor: 8, bandwidth: 500000, + coding_rate: "4/5".into(), }), uplink: false, expected_dr: 12,