commit before merge with develop
This commit is contained in:
@@ -261,7 +261,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
x_im[1] = table_5_2_2_2_2_Im[u[1]];
|
x_im[1] = table_5_2_2_2_2_Im[u[1]];
|
||||||
|
|
||||||
int16_t xr[1+frame_parms->nb_antennas_rx][1+pucch_pdu->nr_of_symbols][24] __attribute__((aligned(32)));
|
int16_t xr[1+frame_parms->nb_antennas_rx][1+pucch_pdu->nr_of_symbols][24] __attribute__((aligned(32)));
|
||||||
int64_t xrtmag=0;
|
int64_t xrtmag=0,xrtmag_next=0;
|
||||||
uint8_t maxpos=0;
|
uint8_t maxpos=0;
|
||||||
uint8_t index=0;
|
uint8_t index=0;
|
||||||
for (l=0; l<pucch_pdu->nr_of_symbols; l++) {
|
for (l=0; l<pucch_pdu->nr_of_symbols; l++) {
|
||||||
@@ -355,6 +355,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
|
|
||||||
av_corr+=temp;
|
av_corr+=temp;
|
||||||
if (temp>xrtmag) {
|
if (temp>xrtmag) {
|
||||||
|
xrtmag_next = xrtmag;
|
||||||
xrtmag=temp;
|
xrtmag=temp;
|
||||||
maxpos=i;
|
maxpos=i;
|
||||||
uci_stats->current_pucch0_stat0 = 0;
|
uci_stats->current_pucch0_stat0 = 0;
|
||||||
@@ -371,7 +372,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
av_corr/=nr_sequences/l;
|
av_corr/=nr_sequences/l;
|
||||||
|
|
||||||
int xrtmag_dBtimes10 = 10*(int)dB_fixed64(xrtmag/frame_parms->nb_antennas_rx);
|
int xrtmag_dBtimes10 = 10*(int)dB_fixed64(xrtmag/frame_parms->nb_antennas_rx);
|
||||||
|
int xrtmag_next_dBtimes10 = 10*(int)dB_fixed64(xrtmag_next/frame_parms->nb_antennas_rx);
|
||||||
#ifdef DEBUG_NR_PUCCH_RX
|
#ifdef DEBUG_NR_PUCCH_RX
|
||||||
printf("PUCCH 0 : maxpos %d\n",maxpos);
|
printf("PUCCH 0 : maxpos %d\n",maxpos);
|
||||||
#endif
|
#endif
|
||||||
@@ -393,10 +394,10 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
else if (SNRtimes10 > 635) cqi=255;
|
else if (SNRtimes10 > 635) cqi=255;
|
||||||
else cqi=(640+SNRtimes10)/5;
|
else cqi=(640+SNRtimes10)/5;
|
||||||
|
|
||||||
uci_stats->pucch0_thres = gNB->pucch0_thres + (10*max_n0);
|
uci_stats->pucch0_thres = gNB->pucch0_thres; /* + (10*max_n0);*/
|
||||||
bool no_conf=false;
|
bool no_conf=false;
|
||||||
if (nr_sequences>1) {
|
if (nr_sequences>1) {
|
||||||
if (xrtmag_dBtimes10 < uci_stats->pucch0_thres)
|
if (xrtmag_dBtimes10 < uci_stats->pucch0_thres+xrtmag_next_dBtimes10)
|
||||||
no_conf=true;
|
no_conf=true;
|
||||||
}
|
}
|
||||||
gNB->bad_pucch += no_conf;
|
gNB->bad_pucch += no_conf;
|
||||||
@@ -426,8 +427,8 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
uci_pdu->harq->harq_confidence_level = no_conf ? 1 : 0;
|
uci_pdu->harq->harq_confidence_level = no_conf ? 1 : 0;
|
||||||
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(1);
|
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(1);
|
||||||
uci_pdu->harq->harq_list[0].harq_value = index&0x01;
|
uci_pdu->harq->harq_list[0].harq_value = index&0x01;
|
||||||
LOG_I(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ value %d with confidence level (0 is good, 1 is bad) %d xrt_mag %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d\n",
|
LOG_I(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ value %d with confidence level (0 is good, 1 is bad) %d xrt_mag %d srt_mag_next %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d\n",
|
||||||
frame,slot,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10);
|
frame,slot,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10);
|
||||||
if (pucch_pdu->sr_flag == 1) {
|
if (pucch_pdu->sr_flag == 1) {
|
||||||
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
||||||
uci_pdu->sr->sr_indication = (index>1) ? 1 : 0;
|
uci_pdu->sr->sr_indication = (index>1) ? 1 : 0;
|
||||||
@@ -443,8 +444,8 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(2);
|
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(2);
|
||||||
uci_pdu->harq->harq_list[1].harq_value = index&0x01;
|
uci_pdu->harq->harq_list[1].harq_value = index&0x01;
|
||||||
uci_pdu->harq->harq_list[0].harq_value = (index>>1)&0x01;
|
uci_pdu->harq->harq_list[0].harq_value = (index>>1)&0x01;
|
||||||
LOG_D(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ values %d and %d with confidence level (0 is good, 1 is bad) %d, xrt_mag %d\n",
|
LOG_D(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ values %d and %d with confidence level (0 is good, 1 is bad) %d, xrt_mag %d xrt_mag_next %d\n",
|
||||||
frame,slot,uci_pdu->harq->harq_list[1].harq_value,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10);
|
frame,slot,uci_pdu->harq->harq_list[1].harq_value,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10);
|
||||||
if (pucch_pdu->sr_flag == 1) {
|
if (pucch_pdu->sr_flag == 1) {
|
||||||
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
||||||
uci_pdu->sr->sr_indication = (index>3) ? 1 : 0;
|
uci_pdu->sr->sr_indication = (index>3) ? 1 : 0;
|
||||||
|
|||||||
@@ -1286,24 +1286,30 @@ int64_t *get_prach_config_info(frequency_range_t freq_range,
|
|||||||
|
|
||||||
void find_aggregation_candidates(uint8_t *aggregation_level,
|
void find_aggregation_candidates(uint8_t *aggregation_level,
|
||||||
uint8_t *nr_of_candidates,
|
uint8_t *nr_of_candidates,
|
||||||
NR_SearchSpace_t *ss) {
|
NR_SearchSpace_t *ss,
|
||||||
|
int maxL) {
|
||||||
|
AssertFatal(maxL>=1,"maxL %d not ok\n",maxL);
|
||||||
if (ss->nrofCandidates->aggregationLevel1 != NR_SearchSpace__nrofCandidates__aggregationLevel1_n0) {
|
if (ss->nrofCandidates->aggregationLevel1 != NR_SearchSpace__nrofCandidates__aggregationLevel1_n0) {
|
||||||
*aggregation_level = 1;
|
*aggregation_level = 1;
|
||||||
*nr_of_candidates = ss->nrofCandidates->aggregationLevel1;
|
*nr_of_candidates = ss->nrofCandidates->aggregationLevel1;
|
||||||
}
|
}
|
||||||
|
if (maxL == 1) return;
|
||||||
if (ss->nrofCandidates->aggregationLevel2 != NR_SearchSpace__nrofCandidates__aggregationLevel2_n0) {
|
if (ss->nrofCandidates->aggregationLevel2 != NR_SearchSpace__nrofCandidates__aggregationLevel2_n0) {
|
||||||
*aggregation_level = 2;
|
*aggregation_level = 2;
|
||||||
*nr_of_candidates = ss->nrofCandidates->aggregationLevel2;
|
*nr_of_candidates = ss->nrofCandidates->aggregationLevel2;
|
||||||
}
|
}
|
||||||
|
if (maxL == 2) return;
|
||||||
if (ss->nrofCandidates->aggregationLevel4 != NR_SearchSpace__nrofCandidates__aggregationLevel4_n0) {
|
if (ss->nrofCandidates->aggregationLevel4 != NR_SearchSpace__nrofCandidates__aggregationLevel4_n0) {
|
||||||
*aggregation_level = 4;
|
*aggregation_level = 4;
|
||||||
*nr_of_candidates = ss->nrofCandidates->aggregationLevel4;
|
*nr_of_candidates = ss->nrofCandidates->aggregationLevel4;
|
||||||
}
|
}
|
||||||
|
if (maxL == 4) return;
|
||||||
if (ss->nrofCandidates->aggregationLevel8 != NR_SearchSpace__nrofCandidates__aggregationLevel8_n0) {
|
if (ss->nrofCandidates->aggregationLevel8 != NR_SearchSpace__nrofCandidates__aggregationLevel8_n0) {
|
||||||
*aggregation_level = 8;
|
*aggregation_level = 8;
|
||||||
*nr_of_candidates = ss->nrofCandidates->aggregationLevel8;
|
*nr_of_candidates = ss->nrofCandidates->aggregationLevel8;
|
||||||
}
|
}
|
||||||
|
if (maxL == 8) return;
|
||||||
|
|
||||||
if (ss->nrofCandidates->aggregationLevel16 != NR_SearchSpace__nrofCandidates__aggregationLevel16_n0) {
|
if (ss->nrofCandidates->aggregationLevel16 != NR_SearchSpace__nrofCandidates__aggregationLevel16_n0) {
|
||||||
*aggregation_level = 16;
|
*aggregation_level = 16;
|
||||||
*nr_of_candidates = ss->nrofCandidates->aggregationLevel16;
|
*nr_of_candidates = ss->nrofCandidates->aggregationLevel16;
|
||||||
|
|||||||
@@ -64,7 +64,8 @@ uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDLBWP,
|
|||||||
|
|
||||||
void find_aggregation_candidates(uint8_t *aggregation_level,
|
void find_aggregation_candidates(uint8_t *aggregation_level,
|
||||||
uint8_t *nr_of_candidates,
|
uint8_t *nr_of_candidates,
|
||||||
NR_SearchSpace_t *ss);
|
NR_SearchSpace_t *ss,
|
||||||
|
int maxL);
|
||||||
|
|
||||||
void find_monitoring_periodicity_offset_common(NR_SearchSpace_t *ss,
|
void find_monitoring_periodicity_offset_common(NR_SearchSpace_t *ss,
|
||||||
uint16_t *slot_period,
|
uint16_t *slot_period,
|
||||||
|
|||||||
@@ -614,6 +614,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
|||||||
}
|
}
|
||||||
UE_info->UE_sched_ctrl->search_space = get_searchspace(scc, bwpd, target_ss);
|
UE_info->UE_sched_ctrl->search_space = get_searchspace(scc, bwpd, target_ss);
|
||||||
UE_info->UE_sched_ctrl->coreset = get_coreset(scc, bwpd, UE_info->UE_sched_ctrl->search_space, target_ss);
|
UE_info->UE_sched_ctrl->coreset = get_coreset(scc, bwpd, UE_info->UE_sched_ctrl->search_space, target_ss);
|
||||||
|
UE_info->UE_sched_ctrl->maxL = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
|
||||||
|
|||||||
@@ -979,7 +979,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
|
|
||||||
uint8_t aggregation_level;
|
uint8_t aggregation_level;
|
||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss);
|
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss,8);
|
||||||
int CCEIndex = allocate_nr_CCEs(nr_mac, bwp, coreset, aggregation_level,0,0,nr_of_candidates);
|
int CCEIndex = allocate_nr_CCEs(nr_mac, bwp, coreset, aggregation_level,0,0,nr_of_candidates);
|
||||||
if (CCEIndex < 0) {
|
if (CCEIndex < 0) {
|
||||||
LOG_E(NR_MAC, "%s(): cannot find free CCE for RA RNTI %04x!\n", __func__, ra->rnti);
|
LOG_E(NR_MAC, "%s(): cannot find free CCE for RA RNTI %04x!\n", __func__, ra->rnti);
|
||||||
@@ -1245,7 +1245,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
|
|||||||
// get CCEindex, needed also for PUCCH and then later for PDCCH
|
// get CCEindex, needed also for PUCCH and then later for PDCCH
|
||||||
uint8_t aggregation_level;
|
uint8_t aggregation_level;
|
||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss);
|
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss,8);
|
||||||
int CCEIndex = allocate_nr_CCEs(nr_mac, bwp, coreset, aggregation_level,0,0,nr_of_candidates);
|
int CCEIndex = allocate_nr_CCEs(nr_mac, bwp, coreset, aggregation_level,0,0,nr_of_candidates);
|
||||||
if (CCEIndex < 0) {
|
if (CCEIndex < 0) {
|
||||||
LOG_E(NR_MAC, "%s(): cannot find free CCE for RA RNTI %04x!\n", __func__, ra->rnti);
|
LOG_E(NR_MAC, "%s(): cannot find free CCE for RA RNTI %04x!\n", __func__, ra->rnti);
|
||||||
|
|||||||
@@ -349,8 +349,8 @@ uint32_t schedule_control_sib1(module_id_t module_id,
|
|||||||
gNB_mac->sched_ctrlCommon->num_total_bytes = num_total_bytes;
|
gNB_mac->sched_ctrlCommon->num_total_bytes = num_total_bytes;
|
||||||
|
|
||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&gNB_mac->sched_ctrlCommon->aggregation_level, &nr_of_candidates, gNB_mac->sched_ctrlCommon->search_space);
|
find_aggregation_candidates(&gNB_mac->sched_ctrlCommon->aggregation_level, &nr_of_candidates, gNB_mac->sched_ctrlCommon->search_space,8);
|
||||||
|
AssertFatal(nr_of_candidates>0,"nr_of_candidates is 0\n");
|
||||||
gNB_mac->sched_ctrlCommon->cce_index = allocate_nr_CCEs(RC.nrmac[module_id],
|
gNB_mac->sched_ctrlCommon->cce_index = allocate_nr_CCEs(RC.nrmac[module_id],
|
||||||
NULL,
|
NULL,
|
||||||
gNB_mac->sched_ctrlCommon->coreset,
|
gNB_mac->sched_ctrlCommon->coreset,
|
||||||
|
|||||||
@@ -743,7 +743,7 @@ void nr_fr1_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
|
|||||||
if (UE_info->num_UEs == 0)
|
if (UE_info->num_UEs == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (slot!=1) return;
|
if (slot!=1 && slot!=11) return;
|
||||||
|
|
||||||
const int CC_id = 0;
|
const int CC_id = 0;
|
||||||
|
|
||||||
@@ -887,11 +887,12 @@ void nr_schedule_ue_spec(module_id_t module_id,
|
|||||||
UE_info->mac_stats[UE_id].dlsch_rounds[harq->round]++;
|
UE_info->mac_stats[UE_id].dlsch_rounds[harq->round]++;
|
||||||
|
|
||||||
LOG_I(NR_MAC,
|
LOG_I(NR_MAC,
|
||||||
"%4d.%2d [DLSCH/PDSCH/PUCCH] UE %d RNTI %04x start %3d RBs %3d startSymbol %2d nb_symbol %2d dmrspos %x MCS %2d TBS %4d HARQ PID %2d round %d RV %d NDI %d dl_data_to_ULACK %d (%d.%d) TPC %d\n",
|
"%4d.%2d [DLSCH/PDSCH/PUCCH] UE %d RNTI %04x DCI L %d start %3d RBs %3d startSymbol %2d nb_symbol %2d dmrspos %x MCS %2d TBS %4d HARQ PID %2d round %d RV %d NDI %d dl_data_to_ULACK %d (%d.%d) TPC %d\n",
|
||||||
frame,
|
frame,
|
||||||
slot,
|
slot,
|
||||||
UE_id,
|
UE_id,
|
||||||
rnti,
|
rnti,
|
||||||
|
sched_ctrl->aggregation_level,
|
||||||
sched_pdsch->rbStart,
|
sched_pdsch->rbStart,
|
||||||
sched_pdsch->rbSize,
|
sched_pdsch->rbSize,
|
||||||
ps->startSymbolIndex,
|
ps->startSymbolIndex,
|
||||||
|
|||||||
@@ -326,7 +326,8 @@ void nr_preprocessor_phytest(module_id_t module_id,
|
|||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
||||||
&nr_of_candidates,
|
&nr_of_candidates,
|
||||||
sched_ctrl->search_space);
|
sched_ctrl->search_space,
|
||||||
|
sched_ctrl->maxL);
|
||||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||||
const uint16_t Y = UE_info->Y[UE_id][cid][slot];
|
const uint16_t Y = UE_info->Y[UE_id][cid][slot];
|
||||||
const int m = UE_info->num_pdcch_cand[UE_id][cid];
|
const int m = UE_info->num_pdcch_cand[UE_id][cid];
|
||||||
@@ -483,7 +484,8 @@ bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_
|
|||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
||||||
&nr_of_candidates,
|
&nr_of_candidates,
|
||||||
sched_ctrl->search_space);
|
sched_ctrl->search_space,
|
||||||
|
sched_ctrl->maxL);
|
||||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||||
const uint16_t Y = UE_info->Y[UE_id][cid][slot];
|
const uint16_t Y = UE_info->Y[UE_id][cid][slot];
|
||||||
const int m = UE_info->num_pdcch_cand[UE_id][cid];
|
const int m = UE_info->num_pdcch_cand[UE_id][cid];
|
||||||
|
|||||||
@@ -2328,7 +2328,8 @@ bool find_free_CCE(module_id_t module_id,
|
|||||||
uint8_t nr_of_candidates;
|
uint8_t nr_of_candidates;
|
||||||
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
||||||
&nr_of_candidates,
|
&nr_of_candidates,
|
||||||
sched_ctrl->search_space);
|
sched_ctrl->search_space,
|
||||||
|
sched_ctrl->maxL);
|
||||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||||
const uint16_t Y = RC.nrmac[module_id]->UE_info.Y[UE_id][cid][slot];
|
const uint16_t Y = RC.nrmac[module_id]->UE_info.Y[UE_id][cid][slot];
|
||||||
const int m = RC.nrmac[module_id]->UE_info.num_pdcch_cand[UE_id][cid];
|
const int m = RC.nrmac[module_id]->UE_info.num_pdcch_cand[UE_id][cid];
|
||||||
|
|||||||
@@ -1449,13 +1449,14 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
|
|||||||
sched_ctrl->last_ul_frame = sched_pusch->frame;
|
sched_ctrl->last_ul_frame = sched_pusch->frame;
|
||||||
sched_ctrl->last_ul_slot = sched_pusch->slot;
|
sched_ctrl->last_ul_slot = sched_pusch->slot;
|
||||||
|
|
||||||
LOG_D(NR_MAC,
|
LOG_I(NR_MAC,
|
||||||
"ULSCH/PUSCH: %4d.%2d RNTI %04x UL sched %4d.%2d start %2d RBS %3d startSymbol %2d nb_symbol %2d dmrs_pos %x MCS %2d TBS %4d HARQ PID %2d round %d RV %d NDI %d est %6d sched %6d est BSR %6d TPC %d\n",
|
"ULSCH/PUSCH: %4d.%2d RNTI %04x UL sched %4d.%2d DCI L %d start %2d RBS %3d startSymbol %2d nb_symbol %2d dmrs_pos %x MCS %2d TBS %4d HARQ PID %2d round %d RV %d NDI %d est %6d sched %6d est BSR %6d TPC %d\n",
|
||||||
frame,
|
frame,
|
||||||
slot,
|
slot,
|
||||||
rnti,
|
rnti,
|
||||||
sched_pusch->frame,
|
sched_pusch->frame,
|
||||||
sched_pusch->slot,
|
sched_pusch->slot,
|
||||||
|
sched_ctrl->aggregation_level,
|
||||||
sched_pusch->rbStart,
|
sched_pusch->rbStart,
|
||||||
sched_pusch->rbSize,
|
sched_pusch->rbSize,
|
||||||
ps->startSymbolIndex,
|
ps->startSymbolIndex,
|
||||||
|
|||||||
@@ -527,7 +527,8 @@ typedef struct {
|
|||||||
/// corresponding to the sched_pusch/sched_pdsch structures below
|
/// corresponding to the sched_pusch/sched_pdsch structures below
|
||||||
int cce_index;
|
int cce_index;
|
||||||
uint8_t aggregation_level;
|
uint8_t aggregation_level;
|
||||||
|
/// maximum aggregation level for UE, can be used to select level
|
||||||
|
int maxL;
|
||||||
/// PUCCH scheduling information. Array of two: HARQ+SR in the first field,
|
/// PUCCH scheduling information. Array of two: HARQ+SR in the first field,
|
||||||
/// CSI in second. This order is important for nr_acknack_scheduling()!
|
/// CSI in second. This order is important for nr_acknack_scheduling()!
|
||||||
NR_sched_pucch_t sched_pucch[2];
|
NR_sched_pucch_t sched_pucch[2];
|
||||||
|
|||||||
@@ -1311,6 +1311,19 @@ void fill_initial_SpCellConfig(rnti_t rnti,
|
|||||||
ASN_SEQUENCE_ADD(&bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList->list,tcic);
|
ASN_SEQUENCE_ADD(&bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList->list,tcic);
|
||||||
|
|
||||||
SpCellConfig->spCellConfigDedicated->tag_Id=0;
|
SpCellConfig->spCellConfigDedicated->tag_Id=0;
|
||||||
|
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig=calloc(1,sizeof(*SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig));
|
||||||
|
NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig = calloc(1,sizeof(*pdsch_servingcellconfig));
|
||||||
|
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->present = NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup;
|
||||||
|
SpCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup = pdsch_servingcellconfig;
|
||||||
|
pdsch_servingcellconfig->codeBlockGroupTransmission = NULL;
|
||||||
|
pdsch_servingcellconfig->xOverhead = NULL;
|
||||||
|
pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = calloc(1, sizeof(*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH));
|
||||||
|
*pdsch_servingcellconfig->nrofHARQ_ProcessesForPDSCH = NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16;
|
||||||
|
pdsch_servingcellconfig->pucch_Cell= NULL;
|
||||||
|
pdsch_servingcellconfig->ext1=calloc(1,sizeof(*pdsch_servingcellconfig->ext1));
|
||||||
|
pdsch_servingcellconfig->ext1->maxMIMO_Layers = calloc(1,sizeof(*pdsch_servingcellconfig->ext1->maxMIMO_Layers));
|
||||||
|
*pdsch_servingcellconfig->ext1->maxMIMO_Layers = 2;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_mastercellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, NR_CellGroupConfig_t *ue_context_mastercellGroup) {
|
void fill_mastercellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, NR_CellGroupConfig_t *ue_context_mastercellGroup) {
|
||||||
|
|||||||
Reference in New Issue
Block a user