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