(ul_meta_data: &ULMetaData)
| 296 | } |
| 297 | |
| 298 | pub fn ul_meta_data_to_tx_info(ul_meta_data: &ULMetaData) -> Result<gw::UplinkTxInfo> { |
| 299 | let region_cn = region::CommonName::from_str(&ul_meta_data.rf_region)?; |
| 300 | let region_conf = region::get(region_cn, false, false); |
| 301 | let dr = match ul_meta_data.data_rate { |
| 302 | Some(v) => v, |
| 303 | None => { |
| 304 | return Err(anyhow!("DataRate is not set")); |
| 305 | } |
| 306 | }; |
| 307 | let freq = match ul_meta_data.ul_freq { |
| 308 | Some(v) => (v * 1_000_000.0) as u32, |
| 309 | None => { |
| 310 | return Err(anyhow!("ULFreq is not set")); |
| 311 | } |
| 312 | }; |
| 313 | let params = region_conf.get_data_rate(true, dr)?; |
| 314 | |
| 315 | Ok(gw::UplinkTxInfo { |
| 316 | frequency: freq, |
| 317 | modulation: Some(gw::Modulation { |
| 318 | parameters: Some(match params { |
| 319 | lrwn::region::DataRateModulation::Lora(v) => { |
| 320 | gw::modulation::Parameters::Lora(gw::LoraModulationInfo { |
| 321 | bandwidth: v.bandwidth, |
| 322 | spreading_factor: v.spreading_factor as u32, |
| 323 | code_rate: gw::CodeRate::Cr45.into(), |
| 324 | code_rate_legacy: "".into(), |
| 325 | polarization_inversion: true, |
| 326 | preamble: 0, |
| 327 | no_crc: false, |
| 328 | }) |
| 329 | } |
| 330 | lrwn::region::DataRateModulation::Fsk(v) => { |
| 331 | gw::modulation::Parameters::Fsk(gw::FskModulationInfo { |
| 332 | datarate: v.bitrate, |
| 333 | ..Default::default() |
| 334 | }) |
| 335 | } |
| 336 | lrwn::region::DataRateModulation::LrFhss(v) => { |
| 337 | gw::modulation::Parameters::LrFhss(gw::LrFhssModulationInfo { |
| 338 | operating_channel_width: v.occupied_channel_width, |
| 339 | code_rate: gw::CodeRate::from_str(&v.coding_rate) |
| 340 | .map_err(|e| anyhow!("{}", e))? |
| 341 | .into(), |
| 342 | // GridSteps: this value can't be derived from a DR? |
| 343 | ..Default::default() |
| 344 | }) |
| 345 | } |
| 346 | }), |
| 347 | }), |
| 348 | }) |
| 349 | } |
| 350 | |
| 351 | pub fn dl_meta_data_to_uplink_rx_info( |
| 352 | dl_meta: &backend::DLMetaData, |
no test coverage detected