|
|
@ -56,12 +56,11 @@ public:
|
|
|
|
bool new_retx(slot_point slot_tx, slot_point slot_ack, const prb_grant& grant);
|
|
|
|
bool new_retx(slot_point slot_tx, slot_point slot_ack, const prb_grant& grant);
|
|
|
|
bool new_retx(slot_point slot_tx, slot_point slot_ack);
|
|
|
|
bool new_retx(slot_point slot_tx, slot_point slot_ack);
|
|
|
|
|
|
|
|
|
|
|
|
const uint32_t pid;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
// NOTE: Has to be used before first tx is dispatched
|
|
|
|
// NOTE: Has to be used before first tx is dispatched
|
|
|
|
bool set_tbs(uint32_t tbs);
|
|
|
|
bool set_tbs(uint32_t tbs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const uint32_t pid;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
struct tb_t {
|
|
|
|
struct tb_t {
|
|
|
|
bool active = false;
|
|
|
|
bool active = false;
|
|
|
@ -87,13 +86,12 @@ public:
|
|
|
|
tx_harq_softbuffer& get_softbuffer() { return *softbuffer; }
|
|
|
|
tx_harq_softbuffer& get_softbuffer() { return *softbuffer; }
|
|
|
|
srsran::unique_byte_buffer_t* get_tx_pdu() { return &pdu; }
|
|
|
|
srsran::unique_byte_buffer_t* get_tx_pdu() { return &pdu; }
|
|
|
|
|
|
|
|
|
|
|
|
// clear and reset softbuffer and PDU for new tx
|
|
|
|
bool new_tx(slot_point slot_tx,
|
|
|
|
bool set_tbs(uint32_t tbs)
|
|
|
|
slot_point slot_ack,
|
|
|
|
{
|
|
|
|
const prb_grant& grant,
|
|
|
|
softbuffer->reset();
|
|
|
|
uint32_t mcs,
|
|
|
|
pdu->clear();
|
|
|
|
uint32_t tbs,
|
|
|
|
return harq_proc::set_tbs(tbs);
|
|
|
|
uint32_t max_retx);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
srsran::unique_pool_ptr<tx_harq_softbuffer> softbuffer;
|
|
|
|
srsran::unique_pool_ptr<tx_harq_softbuffer> softbuffer;
|
|
|
|