From 3e824f6370135cbed5f93b10dd364bc18d581804 Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Thu, 10 Sep 2020 14:54:31 +0200 Subject: [PATCH] ttcn3: convert TTI action vector to queue this makes sures queued events are executed FIFO --- srsue/test/ttcn3/hdr/ttcn3_syssim.h | 4 ++-- srsue/test/ttcn3/src/ttcn3_syssim.cc | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/srsue/test/ttcn3/hdr/ttcn3_syssim.h b/srsue/test/ttcn3/hdr/ttcn3_syssim.h index c56877afd..1d53091fd 100644 --- a/srsue/test/ttcn3/hdr/ttcn3_syssim.h +++ b/srsue/test/ttcn3/hdr/ttcn3_syssim.h @@ -259,8 +259,8 @@ private: bool last_ul_ndi[SRSLTE_FDD_NOF_HARQ] = {}; // For events/actions that need to be carried out in a specific TTI - typedef std::vector task_list_t; - typedef std::map tti_action_map_t; + typedef std::queue task_queue_t; + typedef std::map tti_action_map_t; tti_action_map_t tti_actions; // Map between the cellId (name) used by 3GPP test suite and srsLTE cell struct diff --git a/srsue/test/ttcn3/src/ttcn3_syssim.cc b/srsue/test/ttcn3/src/ttcn3_syssim.cc index 4856f7939..7f1e2a944 100644 --- a/srsue/test/ttcn3/src/ttcn3_syssim.cc +++ b/srsue/test/ttcn3/src/ttcn3_syssim.cc @@ -210,9 +210,9 @@ void ttcn3_syssim::new_tti_indication(uint64_t res) if (tti_actions.find(tti) != tti_actions.end()) { while (!tti_actions[tti].empty()) { log->debug("Running scheduled action\n"); - move_task_t task = std::move(tti_actions[tti].back()); + move_task_t task = std::move(tti_actions[tti].front()); task(); - tti_actions[tti].pop_back(); + tti_actions[tti].pop(); } } @@ -764,7 +764,7 @@ void ttcn3_syssim::set_cell_config(const ttcn3_helpers::timing_info_t timing, co set_cell_config_impl(cell); } else { log->debug("Scheduling Cell configuration of %s for TTI=%d\n", cell.name.c_str(), timing.tti); - tti_actions[timing.tti].push_back([this, cell]() { set_cell_config_impl(cell); }); + tti_actions[timing.tti].push([this, cell]() { set_cell_config_impl(cell); }); } } @@ -827,7 +827,7 @@ void ttcn3_syssim::set_cell_attenuation(const ttcn3_helpers::timing_info_t timin set_cell_attenuation_impl(cell_name, value); } else { log->debug("Scheduling Cell attenuation reconfiguration of %s for TTI=%d\n", cell_name.c_str(), timing.tti); - tti_actions[timing.tti].push_back([this, cell_name, value]() { set_cell_attenuation_impl(cell_name, value); }); + tti_actions[timing.tti].push([this, cell_name, value]() { set_cell_attenuation_impl(cell_name, value); }); } } @@ -889,7 +889,7 @@ void ttcn3_syssim::add_ccch_pdu(const ttcn3_helpers::timing_info_t timing, } else { log->debug("Scheduling CCCH PDU for TTI=%d\n", timing.tti); auto task = [this, cell_name](srslte::unique_byte_buffer_t& pdu) { add_ccch_pdu_impl(cell_name, std::move(pdu)); }; - tti_actions[timing.tti].push_back(std::bind(task, std::move(pdu))); + tti_actions[timing.tti].push(std::bind(task, std::move(pdu))); } } @@ -918,7 +918,7 @@ void ttcn3_syssim::add_dcch_pdu(const ttcn3_helpers::timing_info_t timing, auto task = [this, cell_name](uint32_t lcid, srslte::unique_byte_buffer_t& pdu, bool follow_on_flag) { add_dcch_pdu_impl(cell_name, lcid, std::move(pdu), follow_on_flag); }; - tti_actions[timing.tti].push_back(std::bind(task, lcid, std::move(pdu), follow_on_flag)); + tti_actions[timing.tti].push(std::bind(task, lcid, std::move(pdu), follow_on_flag)); } } @@ -969,7 +969,7 @@ void ttcn3_syssim::add_srb(const ttcn3_helpers::timing_info_t timing, add_srb_impl(cell_name, lcid, pdcp_config); } else { log->debug("Scheduling SRB%d addition for TTI=%d\n", lcid, timing.tti); - tti_actions[timing.tti].push_back( + tti_actions[timing.tti].push( [this, cell_name, lcid, pdcp_config]() { add_srb_impl(cell_name, lcid, pdcp_config); }); } } @@ -1008,7 +1008,7 @@ void ttcn3_syssim::del_srb(const ttcn3_helpers::timing_info_t timing, const std: del_srb_impl(cell_name, lcid); } else { log->debug("Scheduling SRB%d deletion for TTI=%d\n", lcid, timing.tti); - tti_actions[timing.tti].push_back([this, cell_name, lcid]() { del_srb_impl(cell_name, lcid); }); + tti_actions[timing.tti].push([this, cell_name, lcid]() { del_srb_impl(cell_name, lcid); }); } } @@ -1038,7 +1038,7 @@ void ttcn3_syssim::add_drb(const ttcn3_helpers::timing_info_t timing, add_drb_impl(cell_name, lcid, pdcp_config); } else { log->debug("Scheduling DRB%d addition for TTI=%d\n", lcid - 2, timing.tti); - tti_actions[timing.tti].push_back( + tti_actions[timing.tti].push( [this, cell_name, lcid, pdcp_config]() { add_drb_impl(cell_name, lcid, pdcp_config); }); } } @@ -1065,7 +1065,7 @@ void ttcn3_syssim::del_drb(const ttcn3_helpers::timing_info_t timing, const std: del_drb_impl(cell_name, lcid); } else { log->debug("Scheduling DRB%d deletion for TTI=%d\n", lcid - 2, timing.tti); - tti_actions[timing.tti].push_back([this, cell_name, lcid]() { del_drb_impl(cell_name, lcid); }); + tti_actions[timing.tti].push([this, cell_name, lcid]() { del_drb_impl(cell_name, lcid); }); } } @@ -1182,7 +1182,7 @@ void ttcn3_syssim::set_as_security(const ttcn3_helpers::timing_info_t tim set_as_security_impl(cell_name, k_rrc_enc_, k_rrc_int_, k_up_enc_, cipher_algo_, integ_algo_, bearers_); } else { log->debug("Scheduling AS security configuration for TTI=%d\n", timing.tti); - tti_actions[timing.tti].push_back( + tti_actions[timing.tti].push( [this, cell_name, k_rrc_enc_, k_rrc_int_, k_up_enc_, cipher_algo_, integ_algo_, bearers_]() { set_as_security_impl(cell_name, k_rrc_enc_, k_rrc_int_, k_up_enc_, cipher_algo_, integ_algo_, bearers_); }); @@ -1229,7 +1229,7 @@ void ttcn3_syssim::release_as_security(const ttcn3_helpers::timing_info_t timing release_as_security_impl(cell_name); } else { log->debug("Scheduling Release of AS security for TTI=%d\n", timing.tti); - tti_actions[timing.tti].push_back([this, cell_name]() { release_as_security_impl(cell_name); }); + tti_actions[timing.tti].push([this, cell_name]() { release_as_security_impl(cell_name); }); } }