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

Method set_uplink_data_rate_relayed

chirpstack/src/uplink/data.rs:662–682  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

660 }
661
662 async fn set_uplink_data_rate_relayed(&mut self) -> Result<()> {
663 trace!("Set relayed uplink data-rate and reset tx-power on change");
664 let device = self.device.as_mut().unwrap();
665 let relay_ctx = self.relay_context.as_ref().unwrap();
666
667 self.device_changeset.last_seen_at = Some(Some(Utc::now()));
668 if device.dr.is_none() || self.uplink_frame_set.dr as i16 != device.dr.unwrap_or_default() {
669 self.device_changeset.dr = Some(Some(self.uplink_frame_set.dr.into()));
670 }
671
672 let ds = device.get_device_session_mut()?;
673 // The node changed its data-rate. Possibly the node did also reset its
674 // tx-power to max power. Because of this, we need to reset the tx-power
675 // and the uplink history at the network-server side too.
676 if ds.dr != relay_ctx.req.metadata.dr as u32 {
677 ds.tx_power_index = 0;
678 ds.uplink_adr_history = Vec::new();
679 }
680 ds.dr = self.uplink_frame_set.dr as u32;
681 Ok(())
682 }
683
684 async fn handle_class_b_beacon_locked(&mut self) -> Result<()> {
685 trace!("Handle Class-B beacon locked");

Callers 1

_handle_relayedMethod · 0.80

Calls 4

unwrapMethod · 0.80
as_refMethod · 0.80
intoMethod · 0.45

Tested by

no test coverage detected