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

Method get_join_accept_from_js

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

Source from the content-addressed store, hash-verified

524 }
525
526 async fn get_join_accept_from_js(&mut self) -> Result<()> {
527 trace!("Getting join-accept from Join Server");
528
529 let js_client = self.js_client.as_ref().unwrap();
530 let jr = self.join_request.as_ref().unwrap();
531 let region_network = config::get_region_network(&self.uplink_frame_set.region_config_id)?;
532 let region_conf = region::get(&self.uplink_frame_set.region_config_id)?;
533
534 let phy_b = self.uplink_frame_set.phy_payload.to_vec()?;
535 let dp = self.device_profile.as_ref().unwrap();
536 let dev = self.device.as_ref().unwrap();
537
538 // The opt_neg flag is set for devices other than 1.0.x.
539 let opt_neg = !self
540 .device_profile
541 .as_ref()
542 .unwrap()
543 .mac_version
544 .to_string()
545 .starts_with("1.0");
546
547 let dl_settings = DLSettings {
548 opt_neg,
549 rx2_dr: region_network.rx2_dr,
550 rx1_dr_offset: region_network.rx1_dr_offset,
551 };
552
553 let mut join_req_pl = backend::JoinReqPayload {
554 mac_version: dp.mac_version.to_string(),
555 phy_payload: phy_b,
556 dev_eui: dev.dev_eui.to_vec(),
557 dev_addr: dev.dev_addr.unwrap().to_vec(),
558 dl_settings: dl_settings.to_le_bytes()?.to_vec(),
559 rx_delay: region_network.rx1_delay,
560 cf_list: match region_conf.get_cf_list(dp.mac_version) {
561 Some(v) => v.to_bytes()?.to_vec(),
562 None => Vec::new(),
563 },
564 ..Default::default()
565 };
566
567 let async_receiver = match js_client.is_async() {
568 false => None,
569 true => Some(
570 get_async_receiver(
571 join_req_pl.base.transaction_id,
572 js_client.get_async_timeout(),
573 )
574 .await?,
575 ),
576 };
577
578 let join_ans_pl = js_client
579 .join_req(jr.join_eui.to_vec(), &mut join_req_pl, async_receiver)
580 .await?;
581
582 if let Some(v) = &join_ans_pl.app_s_key {
583 self.app_s_key = Some(common::KeyEnvelope {

Callers 2

_handleMethod · 0.45
_handle_relayedMethod · 0.45

Calls 14

get_region_networkFunction · 0.85
get_async_receiverFunction · 0.85
unwrapFunction · 0.85
unwrapMethod · 0.80
as_refMethod · 0.80
to_stringMethod · 0.80
is_asyncMethod · 0.80
get_async_timeoutMethod · 0.80
join_reqMethod · 0.80
getFunction · 0.50
to_vecMethod · 0.45
to_le_bytesMethod · 0.45

Tested by

no test coverage detected