MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / ul_meta_data_to_tx_info

Function ul_meta_data_to_tx_info

chirpstack/src/backend/roaming.rs:298–349  ·  view source on GitHub ↗
(ul_meta_data: &ULMetaData)

Source from the content-addressed store, hash-verified

296}
297
298pub 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
351pub fn dl_meta_data_to_uplink_rx_info(
352 dl_meta: &backend::DLMetaData,

Callers 3

_handle_xmit_data_reqFunction · 0.85

Calls 3

getFunction · 0.70
get_data_rateMethod · 0.45
intoMethod · 0.45

Tested by

no test coverage detected