fix nr stack activation

This commit is contained in:
Francisco Paisana 2020-06-19 12:27:17 +01:00
parent e6418b4b39
commit 86adbfceae
4 changed files with 6 additions and 11 deletions

View File

@ -37,8 +37,7 @@ class txrx final : public srslte::thread
{ {
public: public:
txrx(); txrx();
bool init(stack_interface_phy_lte* stack_, bool init(srslte::radio_interface_phy* radio_handler,
srslte::radio_interface_phy* radio_handler,
srslte::thread_pool* _workers_pool, srslte::thread_pool* _workers_pool,
phy_common* worker_com, phy_common* worker_com,
prach_worker_pool* prach_, prach_worker_pool* prach_,
@ -49,7 +48,6 @@ public:
private: private:
void run_thread() override; void run_thread() override;
stack_interface_phy_lte* stack = nullptr;
srslte::radio_interface_phy* radio_h = nullptr; srslte::radio_interface_phy* radio_h = nullptr;
srslte::log* log_h = nullptr; srslte::log* log_h = nullptr;
srslte::thread_pool* workers_pool = nullptr; srslte::thread_pool* workers_pool = nullptr;

View File

@ -130,7 +130,7 @@ int phy::init(const phy_args_t& args,
prach.set_max_prach_offset_us(args.max_prach_offset_us); prach.set_max_prach_offset_us(args.max_prach_offset_us);
// Warning this must be initialized after all workers have been added to the pool // Warning this must be initialized after all workers have been added to the pool
tx_rx.init(stack_, radio, &workers_pool, &workers_common, &prach, log_vec.at(0).get(), SF_RECV_THREAD_PRIO); tx_rx.init(radio, &workers_pool, &workers_common, &prach, log_vec.at(0).get(), SF_RECV_THREAD_PRIO);
initialized = true; initialized = true;

View File

@ -139,6 +139,9 @@ void phy_common::worker_end(void* tx_sem_id,
// Always transmit on single radio // Always transmit on single radio
radio->tx(buffer, tx_time); radio->tx(buffer, tx_time);
// Trigger MAC clock
stack->tti_clock();
// Allow next TTI to transmit // Allow next TTI to transmit
semaphore.release(); semaphore.release();
} }

View File

@ -50,15 +50,13 @@ txrx::txrx() : thread("TXRX")
/* Do nothing */ /* Do nothing */
} }
bool txrx::init(stack_interface_phy_lte* stack_, bool txrx::init(srslte::radio_interface_phy* radio_h_,
srslte::radio_interface_phy* radio_h_,
srslte::thread_pool* workers_pool_, srslte::thread_pool* workers_pool_,
phy_common* worker_com_, phy_common* worker_com_,
prach_worker_pool* prach_, prach_worker_pool* prach_,
srslte::log* log_h_, srslte::log* log_h_,
uint32_t prio_) uint32_t prio_)
{ {
stack = stack_;
radio_h = radio_h_; radio_h = radio_h_;
log_h = log_h_; log_h = log_h_;
workers_pool = workers_pool_; workers_pool = workers_pool_;
@ -163,10 +161,6 @@ void txrx::run_thread()
for (uint32_t cc = 0; cc < worker_com->get_nof_carriers(); cc++) { for (uint32_t cc = 0; cc < worker_com->get_nof_carriers(); cc++) {
prach->new_tti(cc, tti, buffer.get(worker_com->get_rf_port(cc), 0, worker_com->get_nof_ports(0))); prach->new_tti(cc, tti, buffer.get(worker_com->get_rf_port(cc), 0, worker_com->get_nof_ports(0)));
} }
// Advance stack in time
stack->tti_clock();
} else { } else {
// wait_worker() only returns NULL if it's being closed. Quit now to avoid unnecessary loops here // wait_worker() only returns NULL if it's being closed. Quit now to avoid unnecessary loops here
running = false; running = false;