Commit 67a0851b authored by liuxu's avatar liuxu

add pbch and simplify sever_manager.py231120

parent 259d50f0
This diff is collapsed.
...@@ -211,7 +211,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_ ...@@ -211,7 +211,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
memcpy(&sim_socket_manager.vrb_map_csi_report_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET); memcpy(&sim_socket_manager.vrb_map_csi_report_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&sim_socket_manager.vrb_map_sr_report_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET); memcpy(&sim_socket_manager.vrb_map_sr_report_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&sim_socket_manager.vrb_map_srs_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET); memcpy(&sim_socket_manager.vrb_map_srs_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&sim_socket_manager.vrb_map_prach_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
sim_socket_manager.CC_id = CC_id; sim_socket_manager.CC_id = CC_id;
sim_socket_manager.slot = slot; sim_socket_manager.slot = slot;
...@@ -294,7 +294,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_ ...@@ -294,7 +294,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
NR_SCHED_UNLOCK(&gNB->sched_lock); NR_SCHED_UNLOCK(&gNB->sched_lock);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT);
if (sim_socket_manager.measurement_flag || sim_socket_manager.prach_sched_flag || sim_socket_manager.dl_sched_flag ||sim_socket_manager.ul_sched_flag){ if (sim_socket_manager.measurement_flag || sim_socket_manager.random_access_sched_flag || \
sim_socket_manager.dl_sched_flag ||sim_socket_manager.ul_sched_flag || sim_socket_manager.pbch_sched_flag){
pthread_mutex_lock(&sim_mutex_socket); pthread_mutex_lock(&sim_mutex_socket);
message_flag = 2; message_flag = 2;
// gnbSendToManager_buf = &sim_socket_manager; // gnbSendToManager_buf = &sim_socket_manager;
...@@ -302,14 +303,16 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_ ...@@ -302,14 +303,16 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
sim_socket_manager.message = 2; sim_socket_manager.message = 2;
// gnbSendToManager_len = sim_socket_manager.data_len; // gnbSendToManager_len = sim_socket_manager.data_len;
LOG_D(NR_MAC,"data_len %d\n", sim_socket_manager.data_len); LOG_D(NR_MAC,"data_len %d\n", sim_socket_manager.data_len);
LOG_D(NR_MAC,"[%d.%d] measurement_flag %x prach_sched_flag %x dl_sched_flag %x ul_sched_flag %x msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d " LOG_I(NR_MAC,"[%d.%d] measurement_flag %x pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x "
"csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n", "ssb %d.%d sib1 %d.%d msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
sim_socket_manager.frame, sim_socket_manager.slot, "csirs %d.%d prach %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n",
sim_socket_manager.measurement_flag, sim_socket_manager.prach_sched_flag,sim_socket_manager.dl_sched_flag, sim_socket_manager.ul_sched_flag, sim_socket_manager.frame, sim_socket_manager.slot,sim_socket_manager.measurement_flag, sim_socket_manager.pbch_sched_flag,
sim_socket_manager.random_access_sched_flag,sim_socket_manager.dl_sched_flag, sim_socket_manager.ul_sched_flag,
sim_socket_manager.ssb_frame, sim_socket_manager.ssb_slot, sim_socket_manager.sib1_frame, sim_socket_manager.sib1_slot,
sim_socket_manager.msg1_frame, sim_socket_manager.msg1_slot,sim_socket_manager.msg2_frame, sim_socket_manager.msg2_slot, sim_socket_manager.msg1_frame, sim_socket_manager.msg1_slot,sim_socket_manager.msg2_frame, sim_socket_manager.msg2_slot,
sim_socket_manager.msg3_frame, sim_socket_manager.msg3_slot, sim_socket_manager.msg4_frame, sim_socket_manager.msg4_slot, sim_socket_manager.msg3_frame, sim_socket_manager.msg3_slot, sim_socket_manager.msg4_frame, sim_socket_manager.msg4_slot,
sim_socket_manager.pdcch_frame, sim_socket_manager.pdcch_slot, sim_socket_manager.pdsch_frame, sim_socket_manager.pdsch_slot, sim_socket_manager.pdcch_frame, sim_socket_manager.pdcch_slot, sim_socket_manager.pdsch_frame, sim_socket_manager.pdsch_slot,
sim_socket_manager.csirs_frame, sim_socket_manager.csirs_slot, sim_socket_manager.csirs_frame, sim_socket_manager.csirs_slot,sim_socket_manager.prach_frame, sim_socket_manager.prach_slot,
sim_socket_manager.ulsch_frame, sim_socket_manager.ulsch_slot, sim_socket_manager.acknack_frame, sim_socket_manager.acknack_slot, sim_socket_manager.ulsch_frame, sim_socket_manager.ulsch_slot, sim_socket_manager.acknack_frame, sim_socket_manager.acknack_slot,
sim_socket_manager.csi_report_frame, sim_socket_manager.csi_report_slot, sim_socket_manager.sr_frame, sim_socket_manager.sr_slot, sim_socket_manager.csi_report_frame, sim_socket_manager.csi_report_slot, sim_socket_manager.sr_frame, sim_socket_manager.sr_slot,
sim_socket_manager.srs_frame, sim_socket_manager.srs_slot); sim_socket_manager.srs_frame, sim_socket_manager.srs_slot);
......
...@@ -341,9 +341,9 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP ...@@ -341,9 +341,9 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
prach_pdu->num_cs = get_NCS(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig, prach_pdu->num_cs = get_NCS(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig,
format0, format0,
scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig); scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig);
sim_socket_manager.msg1_frame = frameP; sim_socket_manager.prach_frame = frameP;
sim_socket_manager.msg1_slot = slotP; sim_socket_manager.prach_slot = slotP;
sim_socket_manager.prach_sched_flag |= 0x01; sim_socket_manager.ul_sched_flag |= 0x20;
LOG_D(NR_MAC, "Frame %d, Slot %d: Prach Occasion id = %u fdm index = %u start symbol = %u slot index = %u subframe index = %u \n", LOG_D(NR_MAC, "Frame %d, Slot %d: Prach Occasion id = %u fdm index = %u start symbol = %u slot index = %u subframe index = %u \n",
frameP, slotP, frameP, slotP,
prach_occasion_id, prach_pdu->num_ra, prach_occasion_id, prach_pdu->num_ra,
...@@ -420,7 +420,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP ...@@ -420,7 +420,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
for (int i = 0; i < N_RA_RB * fdm; ++i){ for (int i = 0; i < N_RA_RB * fdm; ++i){
uint16_t slbitmap = SL_to_bitmap(start_symbol, N_t_slot*N_dur); uint16_t slbitmap = SL_to_bitmap(start_symbol, N_t_slot*N_dur);
vrb_map_UL[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= slbitmap; vrb_map_UL[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= slbitmap;
sim_socket_manager.vrb_map_msg1_socket[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= slbitmap; sim_socket_manager.vrb_map_prach_socket[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i, __FUNCTION__, __LINE__, slbitmap); printf("RB:%d [%s %d] slbitmap %d\n",bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i, __FUNCTION__, __LINE__, slbitmap);
for (int symbol = slbitmap, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){ for (int symbol = slbitmap, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
...@@ -1118,7 +1118,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f ...@@ -1118,7 +1118,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
uint16_t *vrb_map_UL = &RC.nrmac[module_idP]->common_channels[CC_id].vrb_map_UL[buffer_index * MAX_BWP_SIZE]; uint16_t *vrb_map_UL = &RC.nrmac[module_idP]->common_channels[CC_id].vrb_map_UL[buffer_index * MAX_BWP_SIZE];
sim_socket_manager.msg3_frame = ra->Msg3_frame; sim_socket_manager.msg3_frame = ra->Msg3_frame;
sim_socket_manager.msg3_slot = ra->Msg3_slot; sim_socket_manager.msg3_slot = ra->Msg3_slot;
sim_socket_manager.prach_sched_flag |= 0x04; sim_socket_manager.random_access_sched_flag |= 0x04;
for (int i = 0; i < ra->msg3_nb_rb; ++i) { for (int i = 0; i < ra->msg3_nb_rb; ++i) {
AssertFatal(!(vrb_map_UL[i + ra->msg3_first_rb + ra->msg3_bwp_start] & mask), AssertFatal(!(vrb_map_UL[i + ra->msg3_first_rb + ra->msg3_bwp_start] & mask),
"RB %d in %4d.%2d is already taken, cannot allocate Msg3!\n", "RB %d in %4d.%2d is already taken, cannot allocate Msg3!\n",
...@@ -1445,10 +1445,10 @@ static void nr_generate_Msg2(module_id_t module_idP, ...@@ -1445,10 +1445,10 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req->Slot = slotP; TX_req->Slot = slotP;
sim_socket_manager.pdcch_frame = frameP; sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager.pdcch_slot = slotP; sim_socket_manager.pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x01; sim_socket_manager.dl_sched_flag |= 0x08;
sim_socket_manager.msg2_frame = frameP; sim_socket_manager.msg2_frame = frameP;
sim_socket_manager.msg2_slot = slotP; sim_socket_manager.msg2_slot = slotP;
sim_socket_manager.prach_sched_flag |= 0x02; sim_socket_manager.random_access_sched_flag |= 0x02;
// Mark the corresponding symbols RBs as used // Mark the corresponding symbols RBs as used
fill_pdcch_vrb_map(nr_mac, fill_pdcch_vrb_map(nr_mac,
CC_id, CC_id,
...@@ -1912,10 +1912,10 @@ static void nr_generate_Msg4(module_id_t module_idP, ...@@ -1912,10 +1912,10 @@ static void nr_generate_Msg4(module_id_t module_idP,
LOG_I(PHY, "Msg4 send %d.%d\n", frameP, slotP); LOG_I(PHY, "Msg4 send %d.%d\n", frameP, slotP);
sim_socket_manager.msg4_frame = frameP; sim_socket_manager.msg4_frame = frameP;
sim_socket_manager.msg4_slot = slotP; sim_socket_manager.msg4_slot = slotP;
sim_socket_manager.prach_sched_flag |= 0x08; sim_socket_manager.random_access_sched_flag |= 0x08;
sim_socket_manager.pdcch_frame = frameP; sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager.pdcch_slot = slotP; sim_socket_manager.pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x01; sim_socket_manager.dl_sched_flag |= 0x10;
// Mark the corresponding symbols and RBs as used // Mark the corresponding symbols and RBs as used
fill_pdcch_vrb_map(nr_mac, fill_pdcch_vrb_map(nr_mac,
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include "common/ran_context.h" #include "common/ran_context.h"
#include "executables/softmodem-common.h" #include "executables/softmodem-common.h"
#include "slotmap.h"
extern RAN_CONTEXT_t RC; extern RAN_CONTEXT_t RC;
...@@ -89,8 +90,10 @@ static void schedule_ssb(frame_t frame, ...@@ -89,8 +90,10 @@ static void schedule_ssb(frame_t frame,
dl_config_pdu->ssb_pdu.ssb_pdu_rel15.precoding_and_beamforming.prgs_list[0].pm_idx = 0; dl_config_pdu->ssb_pdu.ssb_pdu_rel15.precoding_and_beamforming.prgs_list[0].pm_idx = 0;
dl_config_pdu->ssb_pdu.ssb_pdu_rel15.precoding_and_beamforming.prgs_list[0].dig_bf_interface_list[0].beam_idx = beam_index; dl_config_pdu->ssb_pdu.ssb_pdu_rel15.precoding_and_beamforming.prgs_list[0].dig_bf_interface_list[0].beam_idx = beam_index;
dl_req->nPDUs++; dl_req->nPDUs++;
sim_socket_manager.ssb_frame = frame;
LOG_D(MAC,"Scheduling ssb %d at frame %d and slot %d\n",i_ssb,frame,slot); sim_socket_manager.ssb_slot = slot;
sim_socket_manager.pbch_sched_flag |= 0x01;
LOG_I(MAC,"Scheduling ssb %d at frame %d and slot %d\n",i_ssb,frame,slot);
} }
static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subcarrier_offset, uint16_t symStart, int CC_id) static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subcarrier_offset, uint16_t symStart, int CC_id)
...@@ -101,8 +104,24 @@ static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subc ...@@ -101,8 +104,24 @@ static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subc
uint16_t *vrb_map = cc[CC_id].vrb_map; uint16_t *vrb_map = cc[CC_id].vrb_map;
const int extra_prb = ssb_subcarrier_offset > 0; const int extra_prb = ssb_subcarrier_offset > 0;
for (int rb = 0; rb < 20 + extra_prb; rb++) for (int rb = 0; rb < 20 + extra_prb; rb++){
vrb_map[rbStart + rb] = SL_to_bitmap(symStart % NR_SYMBOLS_PER_SLOT, 4); uint16_t slbitmap = SL_to_bitmap(symStart % NR_SYMBOLS_PER_SLOT, 4);
vrb_map[rbStart + rb] = slbitmap;
sim_socket_manager.vrb_map_ssb_socket[rbStart + rb] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rbStart + rb, __FUNCTION__, __LINE__, slbitmap);
for (int symbol = slbitmap, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
if (symbol&1){
printf("1 ");
}
else{
printf("0 ");
}
// printf("%d ",sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol]);
}
printf("\n");
#endif
}
} }
static int encode_mib(NR_BCCH_BCH_Message_t *mib, frame_t frame, uint8_t *buffer, int buf_size) static int encode_mib(NR_BCCH_BCH_Message_t *mib, frame_t frame, uint8_t *buffer, int buf_size)
...@@ -381,7 +400,22 @@ static uint32_t schedule_control_sib1(module_id_t module_id, ...@@ -381,7 +400,22 @@ static uint32_t schedule_control_sib1(module_id_t module_id,
gNB_mac->sched_ctrlCommon->cce_index, gNB_mac->sched_ctrlCommon->cce_index,
gNB_mac->sched_ctrlCommon->aggregation_level); gNB_mac->sched_ctrlCommon->aggregation_level);
for (int rb = 0; rb < pdsch->rbSize; rb++) { for (int rb = 0; rb < pdsch->rbSize; rb++) {
vrb_map[rb + rbStart] |= SL_to_bitmap(tda_info->startSymbolIndex, tda_info->nrOfSymbols); uint16_t slbitmap = SL_to_bitmap(tda_info->startSymbolIndex, tda_info->nrOfSymbols);
vrb_map[rb + rbStart] |= slbitmap;
sim_socket_manager.vrb_map_sib1_socket[rbStart + rb] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rbStart + rb, __FUNCTION__, __LINE__, slbitmap);
for (int symbol = slbitmap, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
if (symbol&1){
printf("1 ");
}
else{
printf("0 ");
}
// printf("%d ",sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol]);
}
printf("\n");
#endif
} }
return TBS; return TBS;
} }
...@@ -566,7 +600,13 @@ void schedule_nr_sib1(module_id_t module_idP, ...@@ -566,7 +600,13 @@ void schedule_nr_sib1(module_id_t module_idP,
(slotP == type0_PDCCH_CSS_config->n_0) && (slotP == type0_PDCCH_CSS_config->n_0) &&
(type0_PDCCH_CSS_config->num_rbs > 0) && (type0_PDCCH_CSS_config->num_rbs > 0) &&
(type0_PDCCH_CSS_config->active == true)) { (type0_PDCCH_CSS_config->active == true)) {
sim_socket_manager.sib1_frame = frameP;
sim_socket_manager.sib1_slot = slotP;
sim_socket_manager.pbch_sched_flag |= 0x02;
sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager. pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x80;
LOG_D(NR_MAC,"(%d.%d) SIB1 transmission: ssb_index %d\n", frameP, slotP, type0_PDCCH_CSS_config->ssb_index); LOG_D(NR_MAC,"(%d.%d) SIB1 transmission: ssb_index %d\n", frameP, slotP, type0_PDCCH_CSS_config->ssb_index);
default_table_type_t table_type = get_default_table_type(type0_PDCCH_CSS_config->type0_pdcch_ss_mux_pattern); default_table_type_t table_type = get_default_table_type(type0_PDCCH_CSS_config->type0_pdcch_ss_mux_pattern);
......
...@@ -547,19 +547,22 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot) ...@@ -547,19 +547,22 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
if ((sched_ctrl->ul_failure && !get_softmodem_params()->phy_test) || sched_ctrl->rrc_processing_timer > 0) { if ((sched_ctrl->ul_failure && !get_softmodem_params()->phy_test) || sched_ctrl->rrc_processing_timer > 0) {
continue; continue;
} }
LOG_D(NR_MAC," %d.%d pass2 \n", frame, slot);
NR_SRS_Config_t *srs_config = current_BWP->srs_Config; NR_SRS_Config_t *srs_config = current_BWP->srs_Config;
if (!srs_config) if (!srs_config)
continue; continue;
LOG_D(NR_MAC," %d.%d pass3 \n", frame, slot);
for(int rs = 0; rs < srs_config->srs_ResourceSetToAddModList->list.count; rs++) { for(int rs = 0; rs < srs_config->srs_ResourceSetToAddModList->list.count; rs++) {
// Find periodic resource set // Find periodic resource set
NR_SRS_ResourceSet_t *srs_resource_set = srs_config->srs_ResourceSetToAddModList->list.array[rs]; NR_SRS_ResourceSet_t *srs_resource_set = srs_config->srs_ResourceSetToAddModList->list.array[rs];
if (srs_resource_set->resourceType.present != NR_SRS_ResourceSet__resourceType_PR_periodic) { if (srs_resource_set->resourceType.present != NR_SRS_ResourceSet__resourceType_PR_periodic) {
LOG_D(NR_MAC," %d.%d pass5 rs %d srs_resource_set->resourceType.present %d \n", frame, slot,rs, srs_resource_set->resourceType.present);
continue; continue;
} }
LOG_D(NR_MAC," %d.%d pass4 \n", frame, slot);
// Find the corresponding srs resource // Find the corresponding srs resource
NR_SRS_Resource_t *srs_resource = NULL; NR_SRS_Resource_t *srs_resource = NULL;
for (int r1 = 0; r1 < srs_resource_set->srs_ResourceIdList->list.count; r1++) { for (int r1 = 0; r1 < srs_resource_set->srs_ResourceIdList->list.count; r1++) {
...@@ -577,6 +580,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot) ...@@ -577,6 +580,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
if (srs_resource == NULL) { if (srs_resource == NULL) {
continue; continue;
} }
LOG_D(NR_MAC," %d.%d pass5 \n", frame, slot);
NR_PUSCH_TimeDomainResourceAllocationList_t *tdaList = get_ul_tdalist(current_BWP, sched_ctrl->coreset->controlResourceSetId, sched_ctrl->search_space->searchSpaceType->present, NR_RNTI_C); NR_PUSCH_TimeDomainResourceAllocationList_t *tdaList = get_ul_tdalist(current_BWP, sched_ctrl->coreset->controlResourceSetId, sched_ctrl->search_space->searchSpaceType->present, NR_RNTI_C);
const int num_tda = tdaList->list.count; const int num_tda = tdaList->list.count;
...@@ -594,7 +598,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot) ...@@ -594,7 +598,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
const uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present]; const uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
const uint16_t offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p); const uint16_t offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p);
LOG_D(NR_MAC," %d.%d pass1 Scheduling SRS reception for %d.%d\n", frame, slot, sched_frame, sched_slot);
// Check if UE will transmit the SRS in this frame // Check if UE will transmit the SRS in this frame
if ((sched_frame * n_slots_frame + sched_slot - offset) % period == 0) { if ((sched_frame * n_slots_frame + sched_slot - offset) % period == 0) {
LOG_I(NR_MAC," %d.%d Scheduling SRS reception for %d.%d\n", frame, slot, sched_frame, sched_slot); LOG_I(NR_MAC," %d.%d Scheduling SRS reception for %d.%d\n", frame, slot, sched_frame, sched_slot);
......
...@@ -1782,7 +1782,7 @@ static void pf_ul(module_id_t module_id, ...@@ -1782,7 +1782,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl->cce_index = CCEIndex; sched_ctrl->cce_index = CCEIndex;
sim_socket_manager.pdcch_frame = frame; sim_socket_manager.pdcch_frame = frame;
sim_socket_manager.pdcch_slot = slot; sim_socket_manager.pdcch_slot = slot;
sim_socket_manager.dl_sched_flag |= 0x01; sim_socket_manager.dl_sched_flag |= 0x20;
fill_pdcch_vrb_map(nrmac, fill_pdcch_vrb_map(nrmac,
CC_id, CC_id,
&sched_ctrl->sched_pdcch, &sched_ctrl->sched_pdcch,
...@@ -1944,7 +1944,7 @@ static void pf_ul(module_id_t module_id, ...@@ -1944,7 +1944,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl->cce_index = CCEIndex; sched_ctrl->cce_index = CCEIndex;
sim_socket_manager.pdcch_frame = frame; sim_socket_manager.pdcch_frame = frame;
sim_socket_manager.pdcch_slot = slot; sim_socket_manager.pdcch_slot = slot;
sim_socket_manager.dl_sched_flag |= 0x01; sim_socket_manager.dl_sched_flag |= 0x20;
fill_pdcch_vrb_map(nrmac, fill_pdcch_vrb_map(nrmac,
CC_id, CC_id,
&sched_ctrl->sched_pdcch, &sched_ctrl->sched_pdcch,
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#define MAX_UE_NUMBER_MAP_SOCKET 1 #define MAX_UE_NUMBER_MAP_SOCKET 1
// #define VRB_MAP_TEST_MANAGER #define VRB_MAP_TEST_MANAGER
typedef struct { typedef struct {
uint16_t data_len; uint16_t data_len;
...@@ -21,13 +21,20 @@ typedef struct { ...@@ -21,13 +21,20 @@ typedef struct {
uint16_t frame; uint16_t frame;
uint16_t slot; uint16_t slot;
uint16_t measurement_flag; uint16_t measurement_flag;
/*LSB -> MSB : masg1 || masg2 || masg3 || masg4*/ /*LSB -> MSB : ssb || sib1*/
uint16_t prach_sched_flag; uint16_t pbch_sched_flag;
/*LSB -> MSB : pdcch || pdsch || csirs*/ /*LSB -> MSB : msg1 || msg2 || msg3 || msg4*/
uint16_t random_access_sched_flag;
/*LSB -> MSB : pdcch_to_pdsch || pdsch || csirs || pdcch_to_msg2 || pdcch_to_msg4 || pdcch_to_pusch || pdcch_to_sib1*/
uint16_t dl_sched_flag; uint16_t dl_sched_flag;
/*LSB -> MSB : ulsch || acknack || csi-report || sr || srs*/ /*LSB -> MSB : ulsch || acknack || csi-report || sr || srs || prach */
uint16_t ul_sched_flag; uint16_t ul_sched_flag;
uint16_t ssb_frame;
uint16_t ssb_slot;
uint16_t sib1_frame;
uint16_t sib1_slot;
uint16_t msg1_frame; uint16_t msg1_frame;
uint16_t msg1_slot; uint16_t msg1_slot;
uint16_t msg2_frame; uint16_t msg2_frame;
...@@ -44,16 +51,18 @@ typedef struct { ...@@ -44,16 +51,18 @@ typedef struct {
uint16_t csirs_frame; uint16_t csirs_frame;
uint16_t csirs_slot; uint16_t csirs_slot;
uint16_t csi_report_frame; uint16_t prach_frame;
uint16_t sr_frame; uint16_t prach_slot;
uint16_t srs_frame;
uint16_t acknack_frame;
uint16_t ulsch_frame; uint16_t ulsch_frame;
uint16_t ulsch_slot;
uint16_t acknack_frame;
uint16_t acknack_slot;
uint16_t csi_report_frame;
uint16_t csi_report_slot; uint16_t csi_report_slot;
uint16_t sr_frame;
uint16_t sr_slot; uint16_t sr_slot;
uint16_t srs_frame;
uint16_t srs_slot; uint16_t srs_slot;
uint16_t acknack_slot;
uint16_t ulsch_slot;
uint16_t dl_recv_bytes_high16; uint16_t dl_recv_bytes_high16;
uint16_t dl_recv_bytes_low16; uint16_t dl_recv_bytes_low16;
...@@ -67,6 +76,8 @@ typedef struct { ...@@ -67,6 +76,8 @@ typedef struct {
int16_t pusch_snr; int16_t pusch_snr;
int16_t rsrp; int16_t rsrp;
uint16_t vrb_map_ssb_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_sib1_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_msg1_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_msg1_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_msg2_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_msg2_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_msg3_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_msg3_socket[RB_TOTAL_MAP_SOCKET];
...@@ -74,11 +85,13 @@ typedef struct { ...@@ -74,11 +85,13 @@ typedef struct {
uint16_t vrb_map_pdcch_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_pdcch_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_pdsch_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_pdsch_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_csirs_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_csirs_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_prach_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_pusch_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_pusch_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_acknack_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_acknack_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_csi_report_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_csi_report_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_sr_report_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_sr_report_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_srs_socket[RB_TOTAL_MAP_SOCKET]; uint16_t vrb_map_srs_socket[RB_TOTAL_MAP_SOCKET];
}sim_socket_t; }sim_socket_t;
extern sim_socket_t sim_socket_manager; extern sim_socket_t sim_socket_manager;
......
...@@ -651,6 +651,7 @@ static void config_srs(const NR_ServingCellConfigCommon_t *scc, ...@@ -651,6 +651,7 @@ static void config_srs(const NR_ServingCellConfigCommon_t *scc,
NR_SRS_Resource_t *srs_res0=calloc(1,sizeof(*srs_res0)); NR_SRS_Resource_t *srs_res0=calloc(1,sizeof(*srs_res0));
srs_res0->srs_ResourceId = res_id; srs_res0->srs_ResourceId = res_id;
srs_res0->nrofSRS_Ports = NR_SRS_Resource__nrofSRS_Ports_port1; srs_res0->nrofSRS_Ports = NR_SRS_Resource__nrofSRS_Ports_port1;
LOG_I(NR_RRC, "do_srs %d\n", do_srs);
if (do_srs) { if (do_srs) {
long nrofSRS_Ports = 1; long nrofSRS_Ports = 1;
if (uecap && if (uecap &&
...@@ -2220,7 +2221,7 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid, ...@@ -2220,7 +2221,7 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
// We are using do_srs = 0 here because the periodic SRS will only be enabled in update_cellGroupConfig() if do_srs == 1 // We are using do_srs = 0 here because the periodic SRS will only be enabled in update_cellGroupConfig() if do_srs == 1
initialUplinkBWP->srs_Config = calloc(1, sizeof(*initialUplinkBWP->srs_Config)); initialUplinkBWP->srs_Config = calloc(1, sizeof(*initialUplinkBWP->srs_Config));
config_srs(scc, initialUplinkBWP->srs_Config, NULL, curr_bwp, uid, 0, maxMIMO_Layers, 0); config_srs(scc, initialUplinkBWP->srs_Config, NULL, curr_bwp, uid, 0, maxMIMO_Layers, 0);//configuration->do_SRS
scheduling_request_config(scc, pucch_Config, scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing); scheduling_request_config(scc, pucch_Config, scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment