(&mut self)
| 584 | } |
| 585 | |
| 586 | fn get_phy_payload_relayed(&mut self) -> Result<()> { |
| 587 | trace!("Getting relayed PhyPayload"); |
| 588 | let df = self.downlink_frame.as_ref().unwrap(); |
| 589 | |
| 590 | let mut phy = self.phy_payload.as_ref().unwrap().clone(); |
| 591 | let nwk_s_enc_key = AES128Key::from_slice(&df.nwk_s_enc_key)?; |
| 592 | |
| 593 | // We need to set the full AFCntDown to decrypt the FRMPayload holding the |
| 594 | // ForwardDownlinkReq. |
| 595 | if let Payload::MACPayload(pl) = &mut phy.payload { |
| 596 | pl.fhdr.f_cnt = df.a_f_cnt_down; |
| 597 | } |
| 598 | phy.decrypt_frm_payload(&nwk_s_enc_key)?; |
| 599 | |
| 600 | if let Payload::MACPayload(pl) = phy.payload |
| 601 | && let Some(lrwn::FRMPayload::ForwardDownlinkReq(pl)) = pl.frm_payload |
| 602 | { |
| 603 | self.phy_payload_relayed = Some(*pl.payload); |
| 604 | } |
| 605 | |
| 606 | Ok(()) |
| 607 | } |
| 608 | |
| 609 | async fn log_downlink_frame(&mut self) -> Result<()> { |
| 610 | trace!("Logging downlink frame"); |
no test coverage detected