mirror of https://github.com/PentHertz/srsLTE.git
101 lines
2.6 KiB
C++
101 lines
2.6 KiB
C++
/**
|
|
*
|
|
* \section COPYRIGHT
|
|
*
|
|
* Copyright 2013-2021 Software Radio Systems Limited
|
|
*
|
|
* By using this file, you agree to the terms and conditions set
|
|
* forth in the LICENSE file which can be found at the top level of
|
|
* the distribution.
|
|
*
|
|
*/
|
|
|
|
#include "srsenb/hdr/stack/rrc/rrc_nr.h"
|
|
#include "srsenb/test/common/dummy_classes_common.h"
|
|
#include "srsenb/test/common/dummy_classes_nr.h"
|
|
#include "srsran/common/test_common.h"
|
|
#include <iostream>
|
|
|
|
using namespace asn1::rrc_nr;
|
|
|
|
namespace srsenb {
|
|
|
|
int test_cell_cfg(const srsenb::sched_interface::cell_cfg_t& cellcfg)
|
|
{
|
|
// SIB1 must exist and have period 16rf
|
|
TESTASSERT(cellcfg.sibs[0].len > 0);
|
|
TESTASSERT(cellcfg.sibs[0].period_rf == 16);
|
|
|
|
TESTASSERT(cellcfg.si_window_ms > 0);
|
|
return SRSRAN_SUCCESS;
|
|
}
|
|
|
|
/*
|
|
* Test 1 - Test default SIB generation
|
|
* Description: Check whether the SIBs were set correctly
|
|
*/
|
|
int test_sib_generation()
|
|
{
|
|
srsran::task_scheduler task_sched;
|
|
|
|
mac_dummy mac_obj;
|
|
rlc_dummy rlc_obj;
|
|
pdcp_dummy pdcp_obj;
|
|
rrc_nr rrc_obj(&task_sched);
|
|
|
|
// set cfg
|
|
rrc_nr_cfg_t default_cfg = {};
|
|
rrc_nr_cfg_t rrc_cfg = rrc_obj.update_default_cfg(default_cfg);
|
|
auto& sched_elem = rrc_cfg.sib1.si_sched_info.sched_info_list[0];
|
|
|
|
TESTASSERT(rrc_obj.init(rrc_cfg, nullptr, &mac_obj, &rlc_obj, &pdcp_obj, nullptr, nullptr, nullptr) ==
|
|
SRSRAN_SUCCESS);
|
|
|
|
TESTASSERT(test_cell_cfg(mac_obj.cellcfgobj) == SRSRAN_SUCCESS);
|
|
// TEMP tests
|
|
TESTASSERT(mac_obj.cellcfgobj.sibs[1].len > 0);
|
|
TESTASSERT(mac_obj.cellcfgobj.sibs[1].period_rf == sched_elem.si_periodicity.to_number());
|
|
for (int i = 2; i < 16; ++i) {
|
|
TESTASSERT(mac_obj.cellcfgobj.sibs[i].len == 0);
|
|
}
|
|
TESTASSERT(mac_obj.cellcfgobj.cell.nof_prb == 25);
|
|
|
|
return SRSRAN_SUCCESS;
|
|
}
|
|
|
|
int test_rrc_setup()
|
|
{
|
|
srsran::task_scheduler task_sched;
|
|
|
|
mac_dummy mac_obj;
|
|
rlc_dummy rlc_obj;
|
|
pdcp_dummy pdcp_obj;
|
|
rrc_nr rrc_obj(&task_sched);
|
|
|
|
// set cfg
|
|
rrc_nr_cfg_t default_cfg = {};
|
|
rrc_nr_cfg_t rrc_cfg = rrc_obj.update_default_cfg(default_cfg);
|
|
TESTASSERT(rrc_obj.init(rrc_cfg, nullptr, &mac_obj, &rlc_obj, &pdcp_obj, nullptr, nullptr, nullptr) ==
|
|
SRSRAN_SUCCESS);
|
|
|
|
for (uint32_t n = 0; n < 2; ++n) {
|
|
uint32_t timeout = 5500;
|
|
for (uint32_t i = 0; i < timeout and rlc_obj.last_sdu == nullptr; ++i) {
|
|
task_sched.tic();
|
|
}
|
|
// TODO: trigger proper RRC Setup procedure (not timer based)
|
|
// TESTASSERT(rlc_obj.last_sdu != nullptr);
|
|
}
|
|
return SRSRAN_SUCCESS;
|
|
}
|
|
|
|
} // namespace srsenb
|
|
|
|
int main()
|
|
{
|
|
TESTASSERT(srsenb::test_sib_generation() == SRSRAN_SUCCESS);
|
|
TESTASSERT(srsenb::test_rrc_setup() == SRSRAN_SUCCESS);
|
|
|
|
return SRSRAN_SUCCESS;
|
|
}
|