(&mut self)
| 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"); |
no test coverage detected