mirror of https://github.com/PentHertz/srsLTE.git
adopt PDCP NR to use new timer class
This commit is contained in:
parent
ac9ee9d863
commit
2d126371f6
|
@ -91,7 +91,7 @@ public:
|
|||
|
||||
protected:
|
||||
srslte::log* log = nullptr;
|
||||
srslte::timers* timers = nullptr;
|
||||
srslte::timer_handler* timers = nullptr;
|
||||
|
||||
bool active = false;
|
||||
uint32_t lcid = 0;
|
||||
|
@ -136,5 +136,7 @@ inline uint32_t pdcp_entity_base::COUNT(uint32_t hfn, uint32_t sn)
|
|||
{
|
||||
return (hfn << cfg.sn_len) | sn;
|
||||
}
|
||||
|
||||
} // namespace srslte
|
||||
|
||||
#endif // SRSLTE_PDCP_ENTITY_BASE_H
|
||||
|
|
|
@ -45,7 +45,7 @@ public:
|
|||
void init(srsue::rlc_interface_pdcp* rlc_,
|
||||
srsue::rrc_interface_pdcp* rrc_,
|
||||
srsue::gw_interface_pdcp* gw_,
|
||||
srslte::timers* timers_,
|
||||
srslte::timer_handler* timers_,
|
||||
srslte::log* log_,
|
||||
uint32_t lcid_,
|
||||
pdcp_config_t cfg_);
|
||||
|
@ -85,8 +85,7 @@ private:
|
|||
|
||||
// Reordering Queue / Timers
|
||||
std::map<uint32_t, unique_byte_buffer_t> reorder_queue;
|
||||
srslte::timers::timer* reordering_timer = nullptr;
|
||||
uint32_t reordering_timer_id = 0;
|
||||
timer_handler::unique_timer reordering_timer;
|
||||
|
||||
// Packing/Unpacking Helper functions
|
||||
uint32_t read_data_header(const unique_byte_buffer_t& sdu);
|
||||
|
@ -99,6 +98,7 @@ private:
|
|||
void pass_to_upper_layers(unique_byte_buffer_t pdu);
|
||||
|
||||
// Reodering callback (t-Reordering)
|
||||
|
||||
class reordering_callback;
|
||||
std::unique_ptr<reordering_callback> reordering_fnc;
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ pdcp_entity_nr::~pdcp_entity_nr() {}
|
|||
void pdcp_entity_nr::init(srsue::rlc_interface_pdcp* rlc_,
|
||||
srsue::rrc_interface_pdcp* rrc_,
|
||||
srsue::gw_interface_pdcp* gw_,
|
||||
srslte::timers* timers_,
|
||||
srslte::timer_handler* timers_,
|
||||
srslte::log* log_,
|
||||
uint32_t lcid_,
|
||||
pdcp_config_t cfg_)
|
||||
|
@ -51,10 +51,14 @@ void pdcp_entity_nr::init(srsue::rlc_interface_pdcp* rlc_,
|
|||
window_size = 1 << (cfg.sn_len - 1);
|
||||
|
||||
// Timers
|
||||
reordering_timer_id = timers->get_unique_id();
|
||||
reordering_timer = timers->get(reordering_timer_id);
|
||||
reordering_timer->set(reordering_fnc.get(), (uint32_t)cfg.t_reordering);
|
||||
|
||||
reordering_timer = timers_->get_unique_timer();
|
||||
|
||||
// configure timer
|
||||
if (static_cast<uint32_t>(cfg.t_reordering) > 0) {
|
||||
reordering_timer.set(static_cast<uint32_t>(cfg.t_reordering),
|
||||
[this](uint32_t tid) { reordering_fnc->timer_expired(tid); });
|
||||
}
|
||||
|
||||
// Mark entity as initialized
|
||||
initialized = true;
|
||||
}
|
||||
|
@ -203,14 +207,13 @@ void pdcp_entity_nr::write_pdu(unique_byte_buffer_t pdu)
|
|||
}
|
||||
|
||||
// Handle reordering timers
|
||||
if (reordering_timer->is_running() and rx_deliv >= rx_reord) {
|
||||
reordering_timer->stop();
|
||||
reordering_timer->reset();
|
||||
if (reordering_timer.is_running() and rx_deliv >= rx_reord) {
|
||||
reordering_timer.stop();
|
||||
}
|
||||
|
||||
if (not reordering_timer->is_running() and rx_deliv < rx_next) {
|
||||
if (not reordering_timer.is_running() and rx_deliv < rx_next) {
|
||||
rx_reord = rx_next;
|
||||
reordering_timer->run();
|
||||
reordering_timer.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -346,7 +349,7 @@ void pdcp_entity_nr::reordering_callback::timer_expired(uint32_t timer_id)
|
|||
|
||||
if (parent->rx_deliv < parent->rx_next) {
|
||||
parent->rx_reord = parent->rx_next;
|
||||
parent->reordering_timer->run();
|
||||
parent->reordering_timer.run();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -126,7 +126,7 @@ int test_rx(std::vector<pdcp_test_event_t> events,
|
|||
pdcp_nr_test_helper pdcp_hlp_rx(cfg_rx, sec_cfg, log);
|
||||
srslte::pdcp_entity_nr* pdcp_rx = &pdcp_hlp_rx.pdcp;
|
||||
gw_dummy* gw_rx = &pdcp_hlp_rx.gw;
|
||||
srslte::timers* timers_rx = &pdcp_hlp_rx.timers;
|
||||
srslte::timer_handler* timers_rx = &pdcp_hlp_rx.timers;
|
||||
pdcp_hlp_rx.set_pdcp_initial_state(init_state);
|
||||
|
||||
// Generate test message and encript/decript SDU.
|
||||
|
@ -457,7 +457,7 @@ int run_all_tests(srslte::byte_buffer_pool* pool)
|
|||
{
|
||||
// Setup log
|
||||
srslte::log_filter log("PDCP NR Test");
|
||||
log.set_level(srslte::LOG_LEVEL_DEBUG);
|
||||
// log.set_level(srslte::LOG_LEVEL_DEBUG);
|
||||
log.set_hex_limit(128);
|
||||
|
||||
TESTASSERT(test_tx_all(pool, &log) == 0);
|
||||
|
@ -474,6 +474,11 @@ int run_all_tests(srslte::byte_buffer_pool* pool)
|
|||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
run_all_tests(srslte::byte_buffer_pool::get_instance());
|
||||
if (run_all_tests(srslte::byte_buffer_pool::get_instance()) != SRSLTE_SUCCESS) {
|
||||
fprintf(stderr, "pdcp_nr_tests() failed\n");
|
||||
return SRSLTE_ERROR;
|
||||
}
|
||||
srslte::byte_buffer_pool::cleanup();
|
||||
|
||||
return SRSLTE_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -165,11 +165,11 @@ public:
|
|||
pdcp.set_rx_reord(init_state.rx_reord);
|
||||
}
|
||||
|
||||
srslte::timer_handler timers;
|
||||
srslte::pdcp_entity_nr pdcp;
|
||||
rlc_dummy rlc;
|
||||
rrc_dummy rrc;
|
||||
gw_dummy gw;
|
||||
srslte::timers timers;
|
||||
};
|
||||
|
||||
// Helper function to generate PDUs
|
||||
|
|
Loading…
Reference in New Issue