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

Method get_phy_payload_relayed

chirpstack/src/downlink/tx_ack.rs:586–607  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

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");

Callers 1

_handle_relayedMethod · 0.80

Calls 3

unwrapMethod · 0.80
as_refMethod · 0.80
decrypt_frm_payloadMethod · 0.45

Tested by

no test coverage detected