Change interface to unique_byte_buffer

logging message for msg3 preparing
This commit is contained in:
David Rupprecht 2021-02-19 18:19:28 +01:00 committed by David Rupprecht
parent 3af0342418
commit 82a8dcc77a
8 changed files with 15 additions and 21 deletions

View File

@ -61,7 +61,7 @@ public:
/// Indicate reception of UL grant (only TBS is provided). Buffer for resulting MAC PDU is provided by MAC and is /// Indicate reception of UL grant (only TBS is provided). Buffer for resulting MAC PDU is provided by MAC and is
/// passed as pointer to PHY during tx_reuqest /// passed as pointer to PHY during tx_reuqest
virtual void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant) = 0; virtual void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t phy_tx_pdu) = 0;
/** /**
* @brief Indicate the successful transmission of a PRACH. * @brief Indicate the successful transmission of a PRACH.

View File

@ -217,7 +217,8 @@ int srslte_basic_vnf::handle_ul_ind(basic_vnf_api::ul_ind_msg_t* msg)
ul_grant.tti = msg->tti; ul_grant.tti = msg->tti;
ul_grant.tbs = msg->pdus.length; ul_grant.tbs = msg->pdus.length;
ul_grant.rnti = msg->rnti; ul_grant.rnti = msg->rnti;
m_ue_stack->new_grant_ul(cc_idx, ul_grant); srslte::unique_byte_buffer_t tx_pdu = srslte::make_byte_buffer();
m_ue_stack->new_grant_ul(cc_idx, ul_grant, std::move(tx_pdu));
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }

View File

@ -52,7 +52,7 @@ public:
int sf_indication(const uint32_t tti); int sf_indication(const uint32_t tti);
void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant); void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant);
void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant); void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t tx_pdu);
void prach_sent(const uint32_t tti, void prach_sent(const uint32_t tti,
const uint32_t s_id, const uint32_t s_id,
const uint32_t t_id, const uint32_t t_id,
@ -95,7 +95,7 @@ public:
private: private:
void write_pcap(const uint32_t cc_idx, mac_nr_grant_dl_t& grant); // If PCAPs are enabled for this MAC void write_pcap(const uint32_t cc_idx, mac_nr_grant_dl_t& grant); // If PCAPs are enabled for this MAC
void handle_pdu(srslte::unique_byte_buffer_t pdu); void handle_pdu(srslte::unique_byte_buffer_t pdu);
void get_ul_data(const mac_nr_grant_ul_t& grant, phy_interface_stack_nr::tx_request_t* tx_request); void get_ul_data(const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t tx_pdu);
// temporary helper // temporary helper
void handle_rar_pdu(mac_nr_grant_dl_t& grant); void handle_rar_pdu(mac_nr_grant_dl_t& grant);

View File

@ -126,7 +126,7 @@ public:
int sf_indication(const uint32_t tti) final { return SRSLTE_SUCCESS; } int sf_indication(const uint32_t tti) final { return SRSLTE_SUCCESS; }
void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant) final { mac_nr.tb_decoded(cc_idx, grant); } void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant) final { mac_nr.tb_decoded(cc_idx, grant); }
void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant) final { mac_nr.new_grant_ul(cc_idx, grant); } void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t tx_pdu) final { mac_nr.new_grant_ul(cc_idx, grant, std::move(tx_pdu)); }
void run_tti(const uint32_t tti) final void run_tti(const uint32_t tti) final
{ {

View File

@ -82,7 +82,7 @@ public:
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }
void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant) final { mac->tb_decoded(cc_idx, grant); } void tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant) final { mac->tb_decoded(cc_idx, grant); }
void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant) final { mac->new_grant_ul(cc_idx, grant); } void new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t phy_tx_pdu) final { mac->new_grant_ul(cc_idx, grant, std::move(phy_tx_pdu)); }
void prach_sent(uint32_t tti, uint32_t s_id, uint32_t t_id, uint32_t f_id, uint32_t ul_carrier_id) void prach_sent(uint32_t tti, uint32_t s_id, uint32_t t_id, uint32_t f_id, uint32_t ul_carrier_id)
{ {
mac->prach_sent(tti, s_id, t_id, f_id, ul_carrier_id); mac->prach_sent(tti, s_id, t_id, f_id, ul_carrier_id);

View File

@ -288,7 +288,7 @@ bool cc_worker::work_ul()
mac_ul_grant.tti = ul_slot_cfg.idx; mac_ul_grant.tti = ul_slot_cfg.idx;
mac_ul_grant.tbs = pusch_cfg.grant.tb[0].tbs; mac_ul_grant.tbs = pusch_cfg.grant.tb[0].tbs;
srslte::unique_byte_buffer_t tx_pdu = srslte::make_byte_buffer(); srslte::unique_byte_buffer_t tx_pdu = srslte::make_byte_buffer();
phy->stack->new_grant_ul(0, mac_ul_grant, tx_pdu.get()); phy->stack->new_grant_ul(0, mac_ul_grant, std::move(tx_pdu));
// Provisional reset and assign Tx softbuffer // Provisional reset and assign Tx softbuffer
srslte_softbuffer_tx_reset(&softbuffer_tx); srslte_softbuffer_tx_reset(&softbuffer_tx);
pusch_cfg.grant.tb[0].softbuffer.tx = &softbuffer_tx; pusch_cfg.grant.tb[0].softbuffer.tx = &softbuffer_tx;

View File

@ -198,23 +198,15 @@ void mac_nr::tb_decoded(const uint32_t cc_idx, mac_nr_grant_dl_t& grant)
stack_task_dispatch_queue.push([this]() { process_pdus(); }); stack_task_dispatch_queue.push([this]() { process_pdus(); });
} }
void mac_nr::new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant) void mac_nr::new_grant_ul(const uint32_t cc_idx, const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t phy_tx_pdu)
{ {
phy_interface_stack_nr::tx_request_t tx_request = {}; get_ul_data(grant, std::move(phy_tx_pdu));
get_ul_data(grant, &tx_request);
// send TX.request
phy->tx_request(tx_request);
metrics[cc_idx].tx_pkts++; metrics[cc_idx].tx_pkts++;
} }
void mac_nr::get_ul_data(const mac_nr_grant_ul_t& grant, phy_interface_stack_nr::tx_request_t* tx_request) void mac_nr::get_ul_data(const mac_nr_grant_ul_t& grant, srslte::unique_byte_buffer_t phy_tx_pdu)
{ {
// Todo: delegate to mux class
tx_request->tb_len = grant.tbs;
// initialize MAC PDU // initialize MAC PDU
tx_buffer->clear(); tx_buffer->clear();
tx_pdu.init_tx(tx_buffer.get(), grant.tbs, true); tx_pdu.init_tx(tx_buffer.get(), grant.tbs, true);
@ -256,11 +248,11 @@ void mac_nr::get_ul_data(const mac_nr_grant_ul_t& grant, phy_interface_stack_nr:
logger.info(tx_buffer->msg, tx_buffer->N_bytes, "Generated MAC PDU (%d B)", tx_buffer->N_bytes); logger.info(tx_buffer->msg, tx_buffer->N_bytes, "Generated MAC PDU (%d B)", tx_buffer->N_bytes);
tx_request->data = tx_buffer->msg; memcpy(phy_tx_pdu.get()->msg, tx_buffer->msg, tx_buffer->N_bytes);
tx_request->tb_len = tx_buffer->N_bytes; phy_tx_pdu.get()->N_bytes = tx_buffer->N_bytes;
if (pcap) { if (pcap) {
pcap->write_ul_crnti_nr(tx_request->data, tx_request->tb_len, grant.rnti, grant.pid, grant.tti); pcap->write_ul_crnti_nr(tx_buffer->msg, tx_buffer->N_bytes, grant.rnti, grant.pid, grant.tti);
} }
} }

View File

@ -177,6 +177,7 @@ void proc_ra_nr::ra_response_reception(const mac_interface_phy_nr::mac_nr_grant_
for (auto& subpdu : pdu.get_subpdus()) { for (auto& subpdu : pdu.get_subpdus()) {
if (subpdu.has_rapid() && subpdu.get_rapid() == preamble_index) { if (subpdu.has_rapid() && subpdu.get_rapid() == preamble_index) {
logger.info("PROC RA NR: Setting ul grant and prepare msg3");
phy->set_ul_grant(subpdu.get_ul_grant()); phy->set_ul_grant(subpdu.get_ul_grant());
// reset all parameters that are used before rar // reset all parameters that are used before rar
rar_rnti = SRSLTE_INVALID_RNTI; rar_rnti = SRSLTE_INVALID_RNTI;