mirror of https://github.com/PentHertz/srsLTE.git
Implement override_lcid() function in ttcn3_sys_interface
Fixes: TC_7_1_1_1 (#6)
This commit is contained in:
parent
3633859d09
commit
1314b8f653
|
@ -68,8 +68,9 @@ public:
|
||||||
const ttcn3_helpers::pdcp_count_map_t bearers) = 0;
|
const ttcn3_helpers::pdcp_count_map_t bearers) = 0;
|
||||||
virtual void release_as_security(const ttcn3_helpers::timing_info_t timing) = 0;
|
virtual void release_as_security(const ttcn3_helpers::timing_info_t timing) = 0;
|
||||||
|
|
||||||
virtual ttcn3_helpers::pdcp_count_map_t get_pdcp_count() = 0;
|
virtual ttcn3_helpers::pdcp_count_map_t get_pdcp_count() = 0;
|
||||||
virtual uint32_t get_tti() = 0;
|
virtual uint32_t get_tti() = 0;
|
||||||
|
virtual void set_forced_lcid(int lcid) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ss_srb_interface
|
class ss_srb_interface
|
||||||
|
|
|
@ -286,7 +286,21 @@ private:
|
||||||
if (id.HasMember("Srb")) {
|
if (id.HasMember("Srb")) {
|
||||||
const Value& config = (*itr)["Config"];
|
const Value& config = (*itr)["Config"];
|
||||||
if (config.HasMember("AddOrReconfigure")) {
|
if (config.HasMember("AddOrReconfigure")) {
|
||||||
uint32_t lcid = id["Srb"].GetInt();
|
uint32_t lcid = id["Srb"].GetInt();
|
||||||
|
const Value& aor = config["AddOrReconfigure"];
|
||||||
|
if (aor.HasMember("Mac") && aor["Mac"].HasMember("TestMode") && aor["Mac"]["TestMode"].HasMember("Info") &&
|
||||||
|
aor["Mac"]["TestMode"]["Info"].HasMember("DiffLogChId")) {
|
||||||
|
uint32_t force_lcid = 0;
|
||||||
|
const Value& dlcid = aor["Mac"]["TestMode"]["Info"]["DiffLogChId"];
|
||||||
|
assert(dlcid.HasMember("LogChId"));
|
||||||
|
force_lcid = dlcid["LogChId"].GetInt();
|
||||||
|
log->info("TestMode: lcid overridden: %d\n", force_lcid);
|
||||||
|
syssim->set_forced_lcid(force_lcid);
|
||||||
|
} else {
|
||||||
|
// Unset override function to use different lcid
|
||||||
|
log->info("TestMode: lcid reset\n");
|
||||||
|
syssim->set_forced_lcid(-1);
|
||||||
|
}
|
||||||
if (lcid > 0) {
|
if (lcid > 0) {
|
||||||
pdcp_config_t pdcp_cfg = {.bearer_id = static_cast<uint8_t>(lcid),
|
pdcp_config_t pdcp_cfg = {.bearer_id = static_cast<uint8_t>(lcid),
|
||||||
.rb_type = PDCP_RB_IS_SRB,
|
.rb_type = PDCP_RB_IS_SRB,
|
||||||
|
|
|
@ -139,6 +139,8 @@ public:
|
||||||
return SRSLTE_SUCCESS;
|
return SRSLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_forced_lcid(int lcid) { force_lcid = lcid; }
|
||||||
|
|
||||||
int add_port_handler()
|
int add_port_handler()
|
||||||
{
|
{
|
||||||
// UT port
|
// UT port
|
||||||
|
@ -313,6 +315,8 @@ public:
|
||||||
msg3_tti = -1;
|
msg3_tti = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool has_single_sdu = false;
|
||||||
|
|
||||||
// allocate SDUs
|
// allocate SDUs
|
||||||
while (buf_state > 0) { // there is pending SDU to allocate
|
while (buf_state > 0) { // there is pending SDU to allocate
|
||||||
if (mac_msg_dl.new_subh()) {
|
if (mac_msg_dl.new_subh()) {
|
||||||
|
@ -324,13 +328,27 @@ public:
|
||||||
|
|
||||||
// update buffer state
|
// update buffer state
|
||||||
buf_state = rlc.get_buffer_state(lcid);
|
buf_state = rlc.get_buffer_state(lcid);
|
||||||
|
|
||||||
|
if (mac_msg_dl.nof_subh() == 1) {
|
||||||
|
has_single_sdu = true;
|
||||||
|
} else {
|
||||||
|
has_single_sdu = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assemble entire MAC PDU
|
// Assemble entire MAC PDU
|
||||||
uint8_t* mac_pdu_ptr = mac_msg_dl.write_packet(&log);
|
uint8_t* mac_pdu_ptr = mac_msg_dl.write_packet(&log);
|
||||||
|
|
||||||
if (mac_pdu_ptr != nullptr) {
|
if (mac_pdu_ptr != nullptr) {
|
||||||
|
if (force_lcid != -1 && lcid == 0) {
|
||||||
|
if (has_single_sdu) {
|
||||||
|
log.info("Patched lcid in mac header to: %d\n", force_lcid);
|
||||||
|
mac_pdu_ptr[0] = (mac_pdu_ptr[0] & 0xe0) | (force_lcid & 0x1f);
|
||||||
|
} else if (mac_msg_dl.nof_subh() > 1) {
|
||||||
|
log.warning(
|
||||||
|
"Not patching lcid to %d in mac header (nof_subh == %d)\n", force_lcid, mac_msg_dl.nof_subh());
|
||||||
|
}
|
||||||
|
}
|
||||||
log.info_hex(mac_pdu_ptr, mac_msg_dl.get_pdu_len(), "DL MAC PDU (%d B):\n", mac_msg_dl.get_pdu_len());
|
log.info_hex(mac_pdu_ptr, mac_msg_dl.get_pdu_len(), "DL MAC PDU (%d B):\n", mac_msg_dl.get_pdu_len());
|
||||||
|
|
||||||
// Prepare MAC grant for CCCH
|
// Prepare MAC grant for CCCH
|
||||||
|
@ -1188,6 +1206,7 @@ private:
|
||||||
uint32_t prach_preamble_index = 0;
|
uint32_t prach_preamble_index = 0;
|
||||||
uint16_t dl_rnti = 0;
|
uint16_t dl_rnti = 0;
|
||||||
uint16_t crnti = TTCN3_CRNTI;
|
uint16_t crnti = TTCN3_CRNTI;
|
||||||
|
int force_lcid = -1;
|
||||||
srslte::timer_handler timers;
|
srslte::timer_handler timers;
|
||||||
bool last_dl_ndi[2 * FDD_HARQ_DELAY_MS] = {};
|
bool last_dl_ndi[2 * FDD_HARQ_DELAY_MS] = {};
|
||||||
bool last_ul_ndi[2 * FDD_HARQ_DELAY_MS] = {};
|
bool last_ul_ndi[2 * FDD_HARQ_DELAY_MS] = {};
|
||||||
|
|
Loading…
Reference in New Issue