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

Method _update_relay_conf

chirpstack/src/downlink/data.rs:2058–2104  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

2056 }
2057
2058 async fn _update_relay_conf(&mut self) -> Result<()> {
2059 trace!("Updating Relay Conf");
2060
2061 let ds = self.device.get_device_session_mut()?;
2062 let relay_params = self.device_profile.relay_params.clone().unwrap_or_default();
2063
2064 // Get the current relay state.
2065 let relay = if let Some(r) = &ds.relay {
2066 r.clone()
2067 } else {
2068 internal::Relay::default()
2069 };
2070
2071 if relay.enabled != relay_params.relay_enabled
2072 || relay.cad_periodicity != relay_params.relay_cad_periodicity as u32
2073 || relay.default_channel_index != relay_params.default_channel_index as u32
2074 || relay.second_channel_freq != relay_params.second_channel_freq
2075 || relay.second_channel_dr != relay_params.second_channel_dr as u32
2076 || relay.second_channel_ack_offset != relay_params.second_channel_ack_offset as u32
2077 {
2078 let set = lrwn::MACCommandSet::new(vec![lrwn::MACCommand::RelayConfReq(
2079 lrwn::RelayConfReqPayload {
2080 channel_settings_relay: lrwn::ChannelSettingsRelay {
2081 start_stop: match relay_params.relay_enabled {
2082 true => 1,
2083 false => 0,
2084 },
2085 cad_periodicity: relay_params.relay_cad_periodicity,
2086 default_ch_idx: relay_params.default_channel_index,
2087 second_ch_idx: if relay_params.second_channel_freq > 0 {
2088 1
2089 } else {
2090 0
2091 },
2092 second_ch_dr: relay_params.second_channel_dr,
2093 second_ch_ack_offset: relay_params.second_channel_ack_offset,
2094 },
2095 second_ch_freq: relay_params.second_channel_freq,
2096 },
2097 )]);
2098 self.mac_commands.push(set);
2099 }
2100
2101 ds.relay = Some(relay);
2102
2103 Ok(())
2104 }
2105
2106 async fn _update_end_device_conf(&mut self) -> Result<()> {
2107 trace!("Updating End Device Conf");

Callers 2

set_mac_commandsMethod · 0.80
test_update_relay_confFunction · 0.80

Calls 2

pushMethod · 0.80

Tested by 1

test_update_relay_confFunction · 0.64