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

Method _handle_relayed

chirpstack/src/uplink/join.rs:146–193  ·  view source on GitHub ↗
(relay_ctx: RelayContext, ufs: UplinkFrameSet)

Source from the content-addressed store, hash-verified

144 }
145
146 async fn _handle_relayed(relay_ctx: RelayContext, ufs: UplinkFrameSet) -> Result<()> {
147 let mut ctx = JoinRequest {
148 uplink_frame_set: ufs,
149 relay_context: Some(relay_ctx),
150 js_client: None,
151 join_request: None,
152 device: None,
153 application: None,
154 tenant: None,
155 device_profile: None,
156 device_keys: None,
157 join_accept: None,
158 device_info: None,
159 relay_rx_info: None,
160 f_nwk_s_int_key: None,
161 s_nwk_s_int_key: None,
162 nwk_s_enc_key: None,
163 app_s_key: None,
164 js_session_key_id: vec![],
165 };
166
167 ctx.get_join_request_payload_relayed()?;
168 ctx.get_device_data().await?;
169 ctx.get_device_keys_or_js_client().await?;
170 ctx.set_device_info()?;
171 ctx.set_relay_rx_info()?;
172 ctx.abort_on_device_is_disabled()?;
173 ctx.abort_on_otaa_is_disabled()?;
174 ctx.abort_on_relay_only_comm()?;
175 ctx.set_random_dev_addr()?;
176 if ctx.js_client.is_some() {
177 // Using join-server
178 ctx.get_join_accept_from_js().await?;
179 } else {
180 // Using internal keys
181 ctx.validate_mic().await?;
182 ctx.validate_dev_nonce_and_get_device_keys().await?;
183 ctx.construct_join_accept_and_set_keys()?;
184 }
185 ctx.set_device_session().await?;
186 ctx.flush_device_queue().await?;
187 ctx.set_device_mode().await?;
188 ctx.update_device().await?;
189 ctx.start_downlink_join_accept_flow_relayed().await?;
190 ctx.send_join_event().await?;
191
192 Ok(())
193 }
194
195 fn get_join_request_payload(&mut self) -> Result<()> {
196 trace!("Getting JoinRequestPayload");

Callers

nothing calls this directly

Tested by

no test coverage detected