|
|
@ -152,11 +152,15 @@ void slot_cc_worker::postprocess_decisions()
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (ue.h_ul != nullptr and ue.h_ul->harq_slot_tx() == ue.pusch_slot) {
|
|
|
|
if (uci_cfg.ack.count == 0 and uci_cfg.nof_csi == 0 and uci_cfg.o_sr == 0) {
|
|
|
|
// PUSCH was allocated. Insert UCI in PUSCH
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool has_pusch = false;
|
|
|
|
for (auto& pusch : bwp_slot.puschs) {
|
|
|
|
for (auto& pusch : bwp_slot.puschs) {
|
|
|
|
if (pusch.sch.grant.rnti == ue.rnti) {
|
|
|
|
if (pusch.sch.grant.rnti == ue.rnti) {
|
|
|
|
// Put UCI configuration in PUSCH config
|
|
|
|
// Put UCI configuration in PUSCH config
|
|
|
|
|
|
|
|
has_pusch = true;
|
|
|
|
if (not ue.cfg->phy().get_pusch_uci_cfg(slot_cfg, uci_cfg, pusch.sch)) {
|
|
|
|
if (not ue.cfg->phy().get_pusch_uci_cfg(slot_cfg, uci_cfg, pusch.sch)) {
|
|
|
|
logger.error("Error setting UCI configuration in PUSCH");
|
|
|
|
logger.error("Error setting UCI configuration in PUSCH");
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -164,9 +168,8 @@ void slot_cc_worker::postprocess_decisions()
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (not has_pusch) {
|
|
|
|
// If any UCI information is triggered, schedule PUCCH
|
|
|
|
// If any UCI information is triggered, schedule PUCCH
|
|
|
|
if (uci_cfg.ack.count > 0 || uci_cfg.nof_csi > 0 || uci_cfg.o_sr > 0) {
|
|
|
|
|
|
|
|
bwp_slot.pucch.emplace_back();
|
|
|
|
bwp_slot.pucch.emplace_back();
|
|
|
|
mac_interface_phy_nr::pucch_t& pucch = bwp_slot.pucch.back();
|
|
|
|
mac_interface_phy_nr::pucch_t& pucch = bwp_slot.pucch.back();
|
|
|
|
|
|
|
|
|
|
|
@ -189,15 +192,13 @@ void slot_cc_worker::postprocess_decisions()
|
|
|
|
// Append new resource
|
|
|
|
// Append new resource
|
|
|
|
pucch.candidates.emplace_back();
|
|
|
|
pucch.candidates.emplace_back();
|
|
|
|
pucch.candidates.back().uci_cfg = uci_cfg;
|
|
|
|
pucch.candidates.back().uci_cfg = uci_cfg;
|
|
|
|
if (not ue.cfg->phy().get_pucch_uci_cfg(
|
|
|
|
if (not ue.cfg->phy().get_pucch_uci_cfg(slot_cfg, uci_cfg, pucch.pucch_cfg, pucch.candidates.back().resource)) {
|
|
|
|
slot_cfg, uci_cfg, pucch.pucch_cfg, pucch.candidates.back().resource)) {
|
|
|
|
|
|
|
|
logger.error("Error getting UCI CFG");
|
|
|
|
logger.error("Error getting UCI CFG");
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|