nr,gnb,mac: fix const-correctness of some methods of class srsran::mac_sch_pdu_nr

This commit is contained in:
Francisco 2021-11-01 17:06:14 +00:00 committed by Francisco Paisana
parent 885e1bcc60
commit 4286ab81d9
2 changed files with 42 additions and 29 deletions

View File

@ -57,17 +57,18 @@ public:
mac_sch_subpdu_nr(mac_sch_pdu_nr* parent_) : parent(parent_), logger(&srslog::fetch_basic_logger("MAC-NR")){};
nr_lcid_sch_t get_type();
bool is_sdu();
bool is_sdu() const;
bool is_valid_lcid();
bool is_var_len_ce(uint32_t lcid);
bool is_ul_ccch();
int32_t read_subheader(const uint8_t* ptr);
uint32_t get_total_length();
uint32_t get_sdu_length();
uint32_t get_lcid();
uint8_t* get_sdu();
uint16_t get_c_rnti();
int32_t read_subheader(const uint8_t* ptr);
uint32_t get_total_length() const;
uint32_t get_sdu_length() const;
uint32_t get_lcid() const;
uint8_t* get_sdu();
const uint8_t* get_sdu() const;
uint16_t get_c_rnti() const;
// both return the reported values as per TS 38.321, mapping to dB according to TS 38.133 Sec 10.1.17 not done here
uint8_t get_phr();
@ -78,13 +79,13 @@ public:
uint8_t lcg_id;
uint8_t buffer_size;
};
lcg_bsr_t get_sbsr();
lcg_bsr_t get_sbsr() const;
static const uint8_t max_num_lcg_lbsr = 8;
struct lbsr_t {
uint8_t bitmap; // the first octet of LBSR and Long Trunc BSR
std::vector<lcg_bsr_t> list; // one entry for each reported LCG
};
lbsr_t get_lbsr();
lbsr_t get_lbsr() const;
// TA
struct ta_t {
@ -171,7 +172,8 @@ private:
}
/// Returns the SDU pointer.
uint8_t* ptr() { return sdu; }
const uint8_t* ptr() const { return sdu; }
uint8_t* ptr() { return sdu; }
};
sdu_buffer sdu;
@ -187,7 +189,8 @@ public:
void pack();
int unpack(const uint8_t* payload, const uint32_t& len);
uint32_t get_num_subpdus();
const mac_sch_subpdu_nr& get_subpdu(const uint32_t& index);
const mac_sch_subpdu_nr& get_subpdu(const uint32_t& index) const;
mac_sch_subpdu_nr& get_subpdu(uint32_t index);
bool is_ulsch();
int init_tx(byte_buffer_t* buffer_, uint32_t pdu_len_, bool is_ulsch_ = false);

View File

@ -23,7 +23,7 @@ mac_sch_subpdu_nr::nr_lcid_sch_t mac_sch_subpdu_nr::get_type()
return CCCH;
}
bool mac_sch_subpdu_nr::is_sdu()
bool mac_sch_subpdu_nr::is_sdu() const
{
return (lcid <= 32);
}
@ -191,17 +191,17 @@ uint32_t mac_sch_subpdu_nr::write_subpdu(const uint8_t* start_)
return ptr - start_;
}
uint32_t mac_sch_subpdu_nr::get_total_length()
uint32_t mac_sch_subpdu_nr::get_total_length() const
{
return (header_length + sdu_length);
}
uint32_t mac_sch_subpdu_nr::get_sdu_length()
uint32_t mac_sch_subpdu_nr::get_sdu_length() const
{
return sdu_length;
}
uint32_t mac_sch_subpdu_nr::get_lcid()
uint32_t mac_sch_subpdu_nr::get_lcid() const
{
return lcid;
}
@ -211,10 +211,15 @@ uint8_t* mac_sch_subpdu_nr::get_sdu()
return sdu.ptr();
}
uint16_t mac_sch_subpdu_nr::get_c_rnti()
const uint8_t* mac_sch_subpdu_nr::get_sdu() const
{
return sdu.ptr();
}
uint16_t mac_sch_subpdu_nr::get_c_rnti() const
{
if (parent->is_ulsch() && lcid == CRNTI) {
uint8_t* ptr = sdu.ptr();
const uint8_t* ptr = sdu.ptr();
return le16toh((uint16_t)ptr[0] << 8 | ptr[1]);
}
return 0;
@ -249,26 +254,26 @@ mac_sch_subpdu_nr::ta_t mac_sch_subpdu_nr::get_ta()
return ta;
}
mac_sch_subpdu_nr::lcg_bsr_t mac_sch_subpdu_nr::get_sbsr()
mac_sch_subpdu_nr::lcg_bsr_t mac_sch_subpdu_nr::get_sbsr() const
{
lcg_bsr_t sbsr = {};
if (parent->is_ulsch() && (lcid == SHORT_BSR || lcid == SHORT_TRUNC_BSR)) {
uint8_t* ptr = sdu.ptr();
sbsr.lcg_id = (ptr[0] & 0xe0) >> 5;
sbsr.buffer_size = ptr[0] & 0x1f;
const uint8_t* ptr = sdu.ptr();
sbsr.lcg_id = (ptr[0] & 0xe0) >> 5;
sbsr.buffer_size = ptr[0] & 0x1f;
}
return sbsr;
}
mac_sch_subpdu_nr::lbsr_t mac_sch_subpdu_nr::get_lbsr()
mac_sch_subpdu_nr::lbsr_t mac_sch_subpdu_nr::get_lbsr() const
{
lbsr_t lbsr = {};
lbsr.list.reserve(mac_sch_subpdu_nr::max_num_lcg_lbsr);
if (parent->is_ulsch() && (lcid == LONG_BSR || lcid == LONG_TRUNC_BSR)) {
uint8_t* ptr = sdu.ptr();
lbsr.bitmap = *ptr; // read LCG bitmap
ptr++; // skip LCG bitmap
const uint8_t* ptr = sdu.ptr();
lbsr.bitmap = *ptr; // read LCG bitmap
ptr++; // skip LCG bitmap
// early stop if LBSR is empty
if (lbsr.bitmap == 0) {
@ -444,7 +449,12 @@ uint32_t mac_sch_pdu_nr::get_num_subpdus()
return subpdus.size();
}
const mac_sch_subpdu_nr& mac_sch_pdu_nr::get_subpdu(const uint32_t& index)
const mac_sch_subpdu_nr& mac_sch_pdu_nr::get_subpdu(const uint32_t& index) const
{
return subpdus.at(index);
}
mac_sch_subpdu_nr& mac_sch_pdu_nr::get_subpdu(uint32_t index)
{
return subpdus.at(index);
}
@ -551,11 +561,11 @@ uint32_t mac_sch_pdu_nr::add_sudpdu(mac_sch_subpdu_nr& subpdu)
return SRSRAN_SUCCESS;
}
void mac_sch_pdu_nr::to_string(fmt::memory_buffer& buffer)
void mac_sch_pdu_nr::to_string(fmt::memory_buffer& fmtbuffer)
{
fmt::format_to(buffer, "{}", is_ulsch() ? "UL" : "DL");
fmt::format_to(fmtbuffer, "{}", is_ulsch() ? "UL" : "DL");
for (auto& subpdu : subpdus) {
subpdu.to_string(buffer);
subpdu.to_string(fmtbuffer);
}
}