From 61051b4cb3e249e4e12cdc16dcd24825388e3b2a Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Tue, 23 Jul 2019 17:28:35 +0100 Subject: [PATCH] Changed PDCP NR read_data_header to return SN. --- lib/include/srslte/upper/pdcp_entity_nr.h | 8 ++++---- lib/src/upper/pdcp_entity_nr.cc | 17 +++++++++-------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/include/srslte/upper/pdcp_entity_nr.h b/lib/include/srslte/upper/pdcp_entity_nr.h index 0fd53cc72..7e8032d28 100644 --- a/lib/include/srslte/upper/pdcp_entity_nr.h +++ b/lib/include/srslte/upper/pdcp_entity_nr.h @@ -74,10 +74,10 @@ private: uint32_t window_size = 0; // Packing/Unpacking Helper functions - void read_data_header(const unique_byte_buffer_t& sdu, uint32_t* rcvd_sn); - void write_data_header(const unique_byte_buffer_t& sdu, uint32_t sn); - void extract_mac(const unique_byte_buffer_t& sdu, uint8_t* mac); - void append_mac(const unique_byte_buffer_t& sdu, uint8_t* mac); + uint32_t read_data_header(const unique_byte_buffer_t& sdu); + void write_data_header(const unique_byte_buffer_t& sdu, uint32_t sn); + void extract_mac(const unique_byte_buffer_t& sdu, uint8_t* mac); + void append_mac(const unique_byte_buffer_t& sdu, uint8_t* mac); }; } // namespace srslte diff --git a/lib/src/upper/pdcp_entity_nr.cc b/lib/src/upper/pdcp_entity_nr.cc index 72338433a..1ae4470f6 100644 --- a/lib/src/upper/pdcp_entity_nr.cc +++ b/lib/src/upper/pdcp_entity_nr.cc @@ -116,8 +116,7 @@ void pdcp_entity_nr::write_pdu(unique_byte_buffer_t pdu) } // Extract RCVD_SN from header - uint32_t rcvd_sn; - read_data_header(pdu, &rcvd_sn); + uint32_t rcvd_sn = read_data_header(pdu); // Extract MAC uint8_t mac[4]; @@ -176,24 +175,26 @@ void pdcp_entity_nr::write_pdu(unique_byte_buffer_t pdu) // TODO handle reordering timers } -void pdcp_entity_nr::read_data_header(const unique_byte_buffer_t& pdu, uint32_t* rcvd_sn) +uint32_t pdcp_entity_nr::read_data_header(const unique_byte_buffer_t& pdu) { // Check PDU is long enough to extract header if (pdu->N_bytes <= cfg.hdr_len_bytes) { log->error("PDU too small to extract header\n"); - return; + return 0; } // Extract RCVD_SN uint16_t rcvd_sn_16 = 0; + uint32_t rcvd_sn_32 = 0; switch (cfg.sn_len) { case PDCP_SN_LEN_12: srslte::uint8_to_uint16(pdu->msg, &rcvd_sn_16); - (*rcvd_sn) = SN(rcvd_sn_16); + rcvd_sn_32 = SN(rcvd_sn_16); break; case PDCP_SN_LEN_18: - srslte::uint8_to_uint24(pdu->msg, rcvd_sn); - (*rcvd_sn) = SN(*rcvd_sn); + srslte::uint8_to_uint24(pdu->msg, &rcvd_sn_32); + rcvd_sn_32 = SN(rcvd_sn_32); + break; break; default: log->error("Cannot extract RCVD_SN, invalid SN length configured: %d\n", cfg.sn_len); @@ -202,7 +203,7 @@ void pdcp_entity_nr::read_data_header(const unique_byte_buffer_t& pdu, uint32_t* // Discard header pdu->msg += cfg.hdr_len_bytes; pdu->N_bytes -= cfg.hdr_len_bytes; - return; + return rcvd_sn_32; } void pdcp_entity_nr::write_data_header(const srslte::unique_byte_buffer_t& sdu, uint32_t count)