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

Method get_device_data_or_try_pr_roaming

chirpstack/src/uplink/join.rs:264–295  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

262 }
263
264 async fn get_device_data_or_try_pr_roaming(&mut self) -> Result<()> {
265 trace!("Getting device");
266 let jr = self.join_request.as_ref().unwrap();
267 let (dev, app, t, dp) = match get_all_device_data(jr.dev_eui).await {
268 Ok(v) => v,
269 Err(e) => {
270 if let StorageError::NotFound(_) = e {
271 if !roaming::is_enabled() {
272 warn!(dev_eui = %jr.dev_eui, "Unknown device");
273 return Err(anyhow::Error::new(Error::Abort));
274 }
275
276 info!(dev_eui = %jr.dev_eui, join_eui = %jr.join_eui, "Unknown device, trying passive-roaming activation");
277 join_fns::JoinRequest::start_pr(self.uplink_frame_set.clone(), *jr).await?;
278 return Err(anyhow::Error::new(Error::Abort));
279 } else {
280 return Err(anyhow::Error::new(e));
281 }
282 }
283 };
284
285 if dp.region != self.uplink_frame_set.region_common_name {
286 return Err(anyhow!("Invalid device-profile region"));
287 }
288
289 self.tenant = Some(t);
290 self.application = Some(app);
291 self.device_profile = Some(dp);
292 self.device = Some(dev);
293
294 Ok(())
295 }
296
297 fn set_device_info(&mut self) -> Result<()> {
298 let tenant = self.tenant.as_ref().unwrap();

Callers 1

_handleMethod · 0.80

Calls 4

get_all_device_dataFunction · 0.85
is_enabledFunction · 0.85
unwrapMethod · 0.80
as_refMethod · 0.80

Tested by

no test coverage detected