Commit 4e6683d6 authored by liuxu's avatar liuxu

re rrc_signaling measurement data (no dmrs) 231115

parent 394ab219
This diff is collapsed.
...@@ -9,23 +9,27 @@ ...@@ -9,23 +9,27 @@
#include <semaphore.h> #include <semaphore.h>
#include "nr-softmodem-common.h" #include "nr-softmodem-common.h"
#include "../openair2/LAYER2/NR_MAC_gNB/slotmap.h" #include "../openair2/LAYER2/NR_MAC_gNB/slotmap.h"
#include "../openair2/RRC/NR/rrc_signaling_socket.h"
#define GNBSENDTOMANAGER_PORT 7788 #define GNBSENDTOMANAGER_PORT 7788
#define GNBSENDTOMANAGER_MAX_LEN (sizeof(sim_socket_t)) #define GNBSENDTOMANAGER_MAX_RE_SCHDULE_LEN (sizeof(sim_socket_t))
#define GNBSENDTOMANAGER_MAX_RRC_SIGNALING_LEN (sizeof(sim_rrc_signaling_socket))
// #define GNBSENDTOMANAGER_UPLINK_LEN 3*14*106*2 // #define GNBSENDTOMANAGER_UPLINK_LEN 3*14*106*2
#define GNBSENDTOMANAGER_IP "127.0.0.1" #define GNBSENDTOMANAGER_IP "192.168.199.231"
//#define GNBSENDTOMANAGER_MAX_LEN 65536 //#define GNBSENDTOMANAGER_MAX_LEN 65536
sem_t gnbSendToManager_sem; sem_t gnbSendToManager_sem;
uint8_t *gnbSendToManager_buf; uint8_t *gnbSendToManager_buf;
unsigned int gnbSendToManager_len; unsigned int gnbSendToManager_len;
pthread_mutex_t sim_mutex_socket;
uint16_t message_flag;
void *gnbSendToManager_task(void *args_p) void *gnbSendToManager_task(void *args_p)
{ {
struct sockaddr_in addr; struct sockaddr_in addr;
int len=sizeof(addr); int len=sizeof(addr);
int sockfd=socket(AF_INET,SOCK_STREAM,0); int sockfd=socket(AF_INET,SOCK_DGRAM,0);//IPV4 UDP
if(sockfd==-1) if(sockfd==-1)
{ {
perror("error socket"); perror("error socket");
...@@ -50,24 +54,15 @@ void *gnbSendToManager_task(void *args_p) ...@@ -50,24 +54,15 @@ void *gnbSendToManager_task(void *args_p)
while(1) while(1)
{ {
sem_wait(&gnbSendToManager_sem); sem_wait(&gnbSendToManager_sem);
// printf("client send...\n");
// for (int rb = 0; rb < 5; rb++){
// printf("gnbSendToManager_buf[%d+0]= %d\n",rb,gnbSendToManager_buf[rb+0]);
// }
// data_len = gnbSendToManager_buf[0]; printf("message_flag %d\n", message_flag);
// UE_id = gnbSendToManager_buf[1]; if (message_flag == 1){
// frame = gnbSendToManager_buf[2]; printf("data_len %d\n", sim_rrc_signaling_socket.data_len);
// slot = gnbSendToManager_buf[3]; send_len = write(sockfd, &sim_rrc_signaling_socket, GNBSENDTOMANAGER_MAX_RRC_SIGNALING_LEN);
// printf("%d.%d:\n", frame, slot); }
// for (int rb = 0; rb < 106; rb++){ else if (message_flag == 2){
// for (int symbol = 0; symbol < 14; symbol++){ send_len = write(sockfd, &sim_socket_manager, GNBSENDTOMANAGER_MAX_RE_SCHDULE_LEN);
// printf("%d ", gnbSendToManager_buf[4+count]); }
// count++;
// }
// printf("\n");
// }
send_len = send(sockfd, gnbSendToManager_buf, GNBSENDTOMANAGER_MAX_LEN, 0);
printf("send_len=%d\n", send_len); printf("send_len=%d\n", send_len);
} }
......
No preview for this file type
...@@ -161,4 +161,6 @@ extern sem_t gnbSendToManager_sem; ...@@ -161,4 +161,6 @@ extern sem_t gnbSendToManager_sem;
extern uint8_t *gnbSendToManager_buf; extern uint8_t *gnbSendToManager_buf;
extern unsigned int gnbSendToManager_len; extern unsigned int gnbSendToManager_len;
extern void *gnbSendToManager_task(void *args_p); extern void *gnbSendToManager_task(void *args_p);
extern pthread_mutex_t sim_mutex_socket;
extern uint16_t message_flag;
#endif #endif
...@@ -635,9 +635,11 @@ int main( int argc, char **argv ) { ...@@ -635,9 +635,11 @@ int main( int argc, char **argv ) {
#endif #endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION); LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
pthread_mutex_init(&sim_mutex_socket, NULL);
sem_init(&gnbSendToManager_sem,0,0); sem_init(&gnbSendToManager_sem,0,0);
pthread_t ntid; pthread_t ntid;
int gnb_flag = 1; int gnb_flag = 1;
message_flag = 0;
if (pthread_create(&ntid, NULL, gnbSendToManager_task, &gnb_flag) < 0) { if (pthread_create(&ntid, NULL, gnbSendToManager_task, &gnb_flag) < 0) {
fprintf(stderr, "gnbSendToManager_task: Failed to create thread: %s\n", fprintf(stderr, "gnbSendToManager_task: Failed to create thread: %s\n",
strerror(errno)); strerror(errno));
......
This diff is collapsed.
...@@ -1941,7 +1941,7 @@ int get_nr_prach_info_from_index(uint8_t index, ...@@ -1941,7 +1941,7 @@ int get_nr_prach_info_from_index(uint8_t index,
if (table_6_3_3_2_3_prachConfig_Index[index][1] != -1) if (table_6_3_3_2_3_prachConfig_Index[index][1] != -1)
format2 = (uint8_t) table_6_3_3_2_3_prachConfig_Index[index][1]; format2 = (uint8_t) table_6_3_3_2_3_prachConfig_Index[index][1];
*format = ((uint8_t) table_6_3_3_2_3_prachConfig_Index[index][0]) | (format2<<8); *format = ((uint8_t) table_6_3_3_2_3_prachConfig_Index[index][0]) | (format2<<8);
LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d (col 6 %lu) absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u N_RA_slot %u RA_sfn_index %u \n", frame, LOG_I(MAC,"Frame %d slot %d: Getting PRACH info from index %d (col 6 %lu) absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u N_RA_slot %u RA_sfn_index %u \n", frame,
slot, slot,
index, table_6_3_3_2_3_prachConfig_Index[index][6], index, table_6_3_3_2_3_prachConfig_Index[index][6],
pointa, pointa,
......
...@@ -196,36 +196,41 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_ ...@@ -196,36 +196,41 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
memcpy(&vrb_map_UL[prev_slot % size * MAX_BWP_SIZE], &gNB->ulprbbl, sizeof(uint16_t) * MAX_BWP_SIZE); memcpy(&vrb_map_UL[prev_slot % size * MAX_BWP_SIZE], &gNB->ulprbbl, sizeof(uint16_t) * MAX_BWP_SIZE);
clear_nr_nfapi_information(gNB, CC_id, frame, slot, &sched_info->DL_req, &sched_info->TX_req, &sched_info->UL_dci_req); clear_nr_nfapi_information(gNB, CC_id, frame, slot, &sched_info->DL_req, &sched_info->TX_req, &sched_info->UL_dci_req);
}
for (int UE_id_map = 0; UE_id_map < MAX_NUM_CCs; UE_id_map++){ // clear sim_socket_manager
// clear vrb_maps memset(&sim_socket_manager, 0, sizeof(sim_socket_manager));
memset(sim_socket_manager.vrb_map_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET*SYMBOL_PER_SLOT_MAP_SOCKET); memcpy(&sim_socket_manager.vrb_map_msg1_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
// clear last scheduled slot's content (only)! // memset(&sim_socket_manager.vrb_map_msg2_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
const int num_slots = nr_slots_per_frame[*scc->ssbSubcarrierSpacing]; memcpy(&sim_socket_manager.vrb_map_msg3_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
const int size = gNB->vrb_map_UL_size; // memset(&sim_socket_manager.vrb_map_msg4_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
const int prev_slot = frame * num_slots + slot + size - 1; // memset(&sim_socket_manager.vrb_map_pdcch_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
uint16_t *vrb_map_UL = sim_socket_manager.vrb_map_ul_socket; // memset(&sim_socket_manager.vrb_map_pdsch_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&vrb_map_UL[prev_slot % size * RB_TOTAL_MAP_SOCKET], &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET); // memset(&sim_socket_manager.vrb_map_csirs_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&sim_socket_manager.vrb_map_pusch_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
sim_socket_manager.UE_id = UE_id_map; memcpy(&sim_socket_manager.vrb_map_acknack_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_srs_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
sim_socket_manager.CC_id = CC_id;
sim_socket_manager.slot = slot; sim_socket_manager.slot = slot;
sim_socket_manager.frame = frame; sim_socket_manager.frame = frame;
sim_socket_manager.data_len = 0; // sim_socket_manager.acknack_frame = sim_socket_manager.acknack_slot
sim_socket_manager.ulsch_frame = sim_socket_manager.ulsch_slot = 0; LOG_I(NR_MAC, "frame %d slot %d\n", sim_socket_manager.frame, sim_socket_manager.slot);
sim_socket_manager.acknack_frame = sim_socket_manager.acknack_slot = 0; // if (RC.nrmac[module_idP]->UE_info.list[0]){
sim_socket_manager.csi_report_frame = sim_socket_manager.csi_report_slot = 0; // sim_socket_manager.dl_recv_bytes = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.dl.total_bytes;
sim_socket_manager.sr_frame = sim_socket_manager.sr_slot = 0; // sim_socket_manager.ul_recv_bytes = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.ul.total_bytes;
sim_socket_manager.srs_frame = sim_socket_manager.srs_slot = 0; // }
sim_socket_manager.ul_sched_flag = 0;
} }
if ((slot == 0) && (frame & 127) == 0) { if ((slot == 0) && (frame & 100) == 0) {
char stats_output[16000] = {0}; char stats_output[16000] = {0};
dump_mac_stats(gNB, stats_output, sizeof(stats_output), true); dump_mac_stats(gNB, stats_output, sizeof(stats_output), true);
LOG_I(NR_MAC, "Frame.Slot %d.%d\n%s\n", frame, slot, stats_output); LOG_I(NR_MAC, "Frame.Slot %d.%d\n%s\n", frame, slot, stats_output);
} }
nr_mac_update_timers(module_idP, frame, slot); nr_mac_update_timers(module_idP, frame, slot);
schedule_nr_bwp_switch(module_idP, frame, slot); schedule_nr_bwp_switch(module_idP, frame, slot);
...@@ -289,31 +294,32 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_ ...@@ -289,31 +294,32 @@ 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){
// for (int rb = 0; rb < 5; rb++){ pthread_mutex_lock(&sim_mutex_socket);
// printf("In[%s] gnbSendToManager_buf[%d+0]= %d\n",__FUNCTION__,rb,gnbSendToManager_buf[rb+0]); message_flag = 2;
// } // gnbSendToManager_buf = &sim_socket_manager;
if (RC.nrmac[module_idP]->UE_info.list[0]!=NULL){
gnbSendToManager_buf = &sim_socket_manager;
sim_socket_manager.data_len = sizeof(sim_socket_t); sim_socket_manager.data_len = sizeof(sim_socket_t);
gnbSendToManager_len = sim_socket_manager.data_len; sim_socket_manager.message = 2;
// gnbSendToManager_len = sim_socket_manager.data_len;
printf("data_len %d\n", sim_socket_manager.data_len); printf("data_len %d\n", sim_socket_manager.data_len);
sim_socket_manager.dl_velocity = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.dl.current_bytes*8*2; printf("[%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 "
sim_socket_manager.ul_velocity = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.ul.current_bytes*8*2; "csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n",
sim_socket_manager.dl_mcs = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.dl_bler_stats.mcs; sim_socket_manager.frame, sim_socket_manager.slot,
sim_socket_manager.ul_mcs = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.ul_bler_stats.mcs; 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.dl_bler = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.dl_bler_stats.bler*100; sim_socket_manager.msg1_frame, sim_socket_manager.msg1_slot,sim_socket_manager.msg2_frame, sim_socket_manager.msg2_slot,
sim_socket_manager.ul_bler = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.ul_bler_stats.bler*100; sim_socket_manager.msg3_frame, sim_socket_manager.msg3_slot, sim_socket_manager.msg4_frame, sim_socket_manager.msg4_slot,
sim_socket_manager.pucch_snr = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.pucch_snrx10/10; sim_socket_manager.pdcch_frame, sim_socket_manager.pdcch_slot, sim_socket_manager.pdsch_frame, sim_socket_manager.pdsch_slot,
sim_socket_manager.pusch_snr = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.pusch_snrx10/10; sim_socket_manager.csirs_frame, sim_socket_manager.csirs_slot,
NR_mac_stats_t *stats = &RC.nrmac[module_idP]->UE_info.list[0]->mac_stats; sim_socket_manager.ulsch_frame, sim_socket_manager.ulsch_slot, sim_socket_manager.acknack_frame, sim_socket_manager.acknack_slot,
sim_socket_manager.rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0; sim_socket_manager.csi_report_frame, sim_socket_manager.csi_report_slot, sim_socket_manager.sr_frame, sim_socket_manager.sr_slot,
printf("[%d.%d] ul_sched_flag %x ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n", sim_socket_manager.srs_frame, sim_socket_manager.srs_slot);
frame, slot, sim_socket_manager.ul_sched_flag, printf("%d.%d: dl_recv_bytes %dbytes, ul_recv_bytes %dbytes, dl_mcs %d, ul_mcs %d, dl_bler %d, ul_bler %d, pucch_snr %ddB, pusch_snr %ddB, rsrp %ddBm\n",
sim_socket_manager.ulsch_frame, sim_socket_manager.ulsch_slot, sim_socket_manager.acknack_frame, sim_socket_manager.acknack_slot, sim_socket_manager.frame, sim_socket_manager.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.dl_recv_bytes_high16<<16)+sim_socket_manager.dl_recv_bytes_low16,
sim_socket_manager.srs_frame, sim_socket_manager.srs_slot); (sim_socket_manager.ul_recv_bytes_high16<<16)+sim_socket_manager.ul_recv_bytes_low16,
sim_socket_manager.dl_mcs, sim_socket_manager.ul_mcs, sim_socket_manager.dl_bler,sim_socket_manager.ul_bler, sim_socket_manager.pucch_snr,
sim_socket_manager.pusch_snr,sim_socket_manager.rsrp);
pthread_mutex_unlock(&sim_mutex_socket);
sem_post(&gnbSendToManager_sem); sem_post(&gnbSendToManager_sem);
} }
} }
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h" #include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
#include <executables/softmodem-common.h> #include <executables/softmodem-common.h>
#include "slotmap.h"
extern RAN_CONTEXT_t RC; extern RAN_CONTEXT_t RC;
extern const uint8_t nr_slots_per_frame[5]; extern const uint8_t nr_slots_per_frame[5];
extern uint16_t sl_ahead; extern uint16_t sl_ahead;
...@@ -340,8 +341,10 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP ...@@ -340,8 +341,10 @@ 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;
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", sim_socket_manager.msg1_slot = slotP;
sim_socket_manager.prach_sched_flag |= 0x01;
LOG_I(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,
prach_pdu->prach_start_symbol, prach_pdu->prach_start_symbol,
...@@ -414,8 +417,24 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP ...@@ -414,8 +417,24 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
const int16_t N_RA_RB = get_N_RA_RB(cfg->prach_config.prach_sub_c_spacing.value, mu_pusch); const int16_t N_RA_RB = get_N_RA_RB(cfg->prach_config.prach_sub_c_spacing.value, mu_pusch);
index = ul_buffer_index(frameP, slotP, mu, gNB->vrb_map_UL_size); index = ul_buffer_index(frameP, slotP, mu, gNB->vrb_map_UL_size);
uint16_t *vrb_map_UL = &cc->vrb_map_UL[index * MAX_BWP_SIZE]; uint16_t *vrb_map_UL = &cc->vrb_map_UL[index * MAX_BWP_SIZE];
for (int i = 0; i < N_RA_RB * fdm; ++i) for (int i = 0; i < N_RA_RB * fdm; ++i){
vrb_map_UL[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= 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;
sim_socket_manager.vrb_map_msg1_socket[bwp_start + rach_ConfigGeneric->msg1_FrequencyStart + i] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
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){
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
}
} }
} }
} }
...@@ -1097,6 +1116,9 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f ...@@ -1097,6 +1116,9 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
const uint16_t mask = SL_to_bitmap(ra->msg3_startsymb, ra->msg3_nrsymb); const uint16_t mask = SL_to_bitmap(ra->msg3_startsymb, ra->msg3_nrsymb);
int buffer_index = ul_buffer_index(ra->Msg3_frame, ra->Msg3_slot, scs, mac->vrb_map_UL_size); int buffer_index = ul_buffer_index(ra->Msg3_frame, ra->Msg3_slot, scs, mac->vrb_map_UL_size);
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_slot = ra->Msg3_slot;
sim_socket_manager.prach_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",
...@@ -1104,6 +1126,21 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f ...@@ -1104,6 +1126,21 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
ra->Msg3_frame, ra->Msg3_frame,
ra->Msg3_slot); ra->Msg3_slot);
vrb_map_UL[i + ra->msg3_first_rb + ra->msg3_bwp_start] |= mask; vrb_map_UL[i + ra->msg3_first_rb + ra->msg3_bwp_start] |= mask;
uint16_t slbitmap = mask;
sim_socket_manager.vrb_map_msg3_socket[i + ra->msg3_first_rb + ra->msg3_bwp_start] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",i + ra->msg3_first_rb + ra->msg3_bwp_start, __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
} }
LOG_D(NR_MAC, "[gNB %d][RAPROC] Frame %d, Slot %d : CC_id %d RA is active, Msg3 in (%d,%d)\n", module_idP, frameP, slotP, CC_id, ra->Msg3_frame, ra->Msg3_slot); LOG_D(NR_MAC, "[gNB %d][RAPROC] Frame %d, Slot %d : CC_id %d RA is active, Msg3 in (%d,%d)\n", module_idP, frameP, slotP, CC_id, ra->Msg3_frame, ra->Msg3_slot);
...@@ -1126,7 +1163,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f ...@@ -1126,7 +1163,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
const int startSymbolAndLength = ul_bwp->tdaList_Common->list.array[ra->Msg3_tda_id]->startSymbolAndLength; const int startSymbolAndLength = ul_bwp->tdaList_Common->list.array[ra->Msg3_tda_id]->startSymbolAndLength;
const int mappingtype = ul_bwp->tdaList_Common->list.array[ra->Msg3_tda_id]->mappingType; const int mappingtype = ul_bwp->tdaList_Common->list.array[ra->Msg3_tda_id]->mappingType;
LOG_D(NR_MAC, "Frame %d, Slot %d Adding Msg3 UL Config Request for (%d,%d) : (%d,%d,%d) for rnti: %d\n", LOG_I(NR_MAC, "Frame %d, Slot %d Adding Msg3 UL Config Request for (%d,%d) : (%d,%d,%d) for rnti: %d\n",
frameP, frameP,
slotP, slotP,
ra->Msg3_frame, ra->Msg3_frame,
...@@ -1406,7 +1443,12 @@ static void nr_generate_Msg2(module_id_t module_idP, ...@@ -1406,7 +1443,12 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req->SFN = frameP; TX_req->SFN = frameP;
TX_req->Number_of_PDUs++; TX_req->Number_of_PDUs++;
TX_req->Slot = slotP; TX_req->Slot = slotP;
sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager.pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x01;
sim_socket_manager.msg2_frame = frameP;
sim_socket_manager.msg2_slot = slotP;
sim_socket_manager.prach_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,
...@@ -1414,7 +1456,22 @@ static void nr_generate_Msg2(module_id_t module_idP, ...@@ -1414,7 +1456,22 @@ static void nr_generate_Msg2(module_id_t module_idP,
CCEIndex, CCEIndex,
aggregation_level); aggregation_level);
for (int rb = 0; rb < rbSize; rb++) { for (int rb = 0; rb < rbSize; rb++) {
vrb_map[BWPStart + 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[BWPStart + rb + rbStart] |= slbitmap;
sim_socket_manager.vrb_map_msg2_socket[BWPStart + rb + rbStart] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",BWPStart + rb + rbStart, __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
} }
ra->state = WAIT_Msg3; ra->state = WAIT_Msg3;
...@@ -1853,6 +1910,12 @@ static void nr_generate_Msg4(module_id_t module_idP, ...@@ -1853,6 +1910,12 @@ static void nr_generate_Msg4(module_id_t module_idP,
TX_req->Number_of_PDUs++; TX_req->Number_of_PDUs++;
TX_req->Slot = slotP; TX_req->Slot = slotP;
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_slot = slotP;
sim_socket_manager.prach_sched_flag |= 0x08;
sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager.pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x01;
// 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,
...@@ -1861,7 +1924,22 @@ static void nr_generate_Msg4(module_id_t module_idP, ...@@ -1861,7 +1924,22 @@ static void nr_generate_Msg4(module_id_t module_idP,
CCEIndex, CCEIndex,
aggregation_level); aggregation_level);
for (int rb = 0; rb < rbSize; rb++) { for (int rb = 0; rb < rbSize; rb++) {
vrb_map[BWPStart + rb + rbStart] |= SL_to_bitmap(msg4_tda.startSymbolIndex, msg4_tda.nrOfSymbols); uint16_t slbitmap = SL_to_bitmap(msg4_tda.startSymbolIndex, msg4_tda.nrOfSymbols);
vrb_map[BWPStart + rb + rbStart] |= slbitmap;
sim_socket_manager.vrb_map_msg4_socket[i + ra->msg3_first_rb + ra->msg3_bwp_start] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",i + ra->msg3_first_rb + ra->msg3_bwp_start, __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
} }
ra->state = WAIT_Msg4_ACK; ra->state = WAIT_Msg4_ACK;
......
...@@ -572,7 +572,7 @@ static bool allocate_dl_retransmission(module_id_t module_id, ...@@ -572,7 +572,7 @@ static bool allocate_dl_retransmission(module_id_t module_id,
for (int rb = 0; rb < sched_ctrl->sched_pdsch.rbSize; rb++){ for (int rb = 0; rb < sched_ctrl->sched_pdsch.rbSize; rb++){
uint16_t slbitmap = SL_to_bitmap(retInfo->tda_info.startSymbolIndex, retInfo->tda_info.nrOfSymbols); uint16_t slbitmap = SL_to_bitmap(retInfo->tda_info.startSymbolIndex, retInfo->tda_info.nrOfSymbols);
rballoc_mask[rb + sched_ctrl->sched_pdsch.rbStart] ^= slbitmap; rballoc_mask[rb + sched_ctrl->sched_pdsch.rbStart] ^= slbitmap;
sim_socket_manager.vrb_map_socket[rb + sched_ctrl->sched_pdsch.rbStart] |= slbitmap; sim_socket_manager.vrb_map_pdsch_socket[rb + sched_ctrl->sched_pdsch.rbStart] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pdsch.rbStart, __FUNCTION__, __LINE__, slbitmap); printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pdsch.rbStart, __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){
...@@ -828,7 +828,7 @@ static void pf_dl(module_id_t module_id, ...@@ -828,7 +828,7 @@ static void pf_dl(module_id_t module_id,
for (int rb = 0; rb < sched_pdsch->rbSize; rb++){ for (int rb = 0; rb < sched_pdsch->rbSize; rb++){
rballoc_mask[rb + sched_pdsch->rbStart] ^= slbitmap; rballoc_mask[rb + sched_pdsch->rbStart] ^= slbitmap;
sim_socket_manager.vrb_map_socket[rb + sched_pdsch->rbStart] |= slbitmap; sim_socket_manager.vrb_map_pdsch_socket[rb + sched_pdsch->rbStart] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_pdsch->rbStart, __FUNCTION__, __LINE__, slbitmap); printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_pdsch->rbStart, __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){
...@@ -1016,6 +1016,10 @@ void nr_schedule_ue_spec(module_id_t module_id, ...@@ -1016,6 +1016,10 @@ void nr_schedule_ue_spec(module_id_t module_id,
harq->feedback_slot = pucch->ul_slot; harq->feedback_slot = pucch->ul_slot;
harq->is_waiting = true; harq->is_waiting = true;
UE->mac_stats.dl.rounds[harq->round]++; UE->mac_stats.dl.rounds[harq->round]++;
sim_socket_manager.pdcch_frame = sim_socket_manager.pdsch_frame = frame;
sim_socket_manager.dl_sched_flag |= 0x01;
sim_socket_manager.pdcch_slot = sim_socket_manager.pdsch_slot = slot;
sim_socket_manager.dl_sched_flag |= 0x02;
LOG_I(NR_MAC, LOG_I(NR_MAC,
"%4d.%2d [DLSCH/PDSCH/PUCCH] RNTI %04x DCI L %d start %3d RBs %3d startSymbol %2d nb_symbol %2d dmrspos %x MCS %2d nrOfLayers %d TBS %4d HARQ PID %2d round %d RV %d NDI %d dl_data_to_ULACK %d (%d.%d) PUCCH allocation %d TPC %d\n", "%4d.%2d [DLSCH/PDSCH/PUCCH] RNTI %04x DCI L %d start %3d RBs %3d startSymbol %2d nb_symbol %2d dmrspos %x MCS %2d nrOfLayers %d TBS %4d HARQ PID %2d round %d RV %d NDI %d dl_data_to_ULACK %d (%d.%d) PUCCH allocation %d TPC %d\n",
frame, frame,
......
...@@ -474,7 +474,7 @@ static void nr_configure_srs(nfapi_nr_srs_pdu_t *srs_pdu, ...@@ -474,7 +474,7 @@ static void nr_configure_srs(nfapi_nr_srs_pdu_t *srs_pdu,
uint64_t mask = SL_to_bitmap(13 - srs_pdu->time_start_position, srs_pdu->num_symbols); uint64_t mask = SL_to_bitmap(13 - srs_pdu->time_start_position, srs_pdu->num_symbols);
for (int i = 0; i < srs_pdu->bwp_size; ++i){ for (int i = 0; i < srs_pdu->bwp_size; ++i){
vrb_map_UL[i + srs_pdu->bwp_start] |= mask; vrb_map_UL[i + srs_pdu->bwp_start] |= mask;
sim_socket_manager.vrb_map_ul_socket[sim_socket_manager.srs_slot*RB_TOTAL_MAP_SOCKET+ i + srs_pdu->bwp_start] |= mask; sim_socket_manager.vrb_map_srs_socket[i + srs_pdu->bwp_start] |= mask;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",i + srs_pdu->bwp_start, __FUNCTION__, __LINE__, mask); printf("RB:%d [%s %d] slbitmap %d\n",i + srs_pdu->bwp_start, __FUNCTION__, __LINE__, mask);
for (int symbol = mask, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){ for (int symbol = mask, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
......
...@@ -324,7 +324,7 @@ void nr_csi_meas_reporting(int Mod_idP, ...@@ -324,7 +324,7 @@ void nr_csi_meas_reporting(int Mod_idP,
} }
else{ else{
vrb_map_UL[i+bwp_start] |= mask; vrb_map_UL[i+bwp_start] |= mask;
sim_socket_manager.vrb_map_ul_socket[sim_socket_manager.csi_report_slot*RB_TOTAL_MAP_SOCKET+ i + bwp_start] |= mask; sim_socket_manager.vrb_map_csi_report_socket[i + bwp_start] |= mask;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",i + bwp_start, __FUNCTION__, __LINE__, mask); printf("RB:%d [%s %d] slbitmap %d\n",i + bwp_start, __FUNCTION__, __LINE__, mask);
for (int symbol = mask, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){ for (int symbol = mask, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
...@@ -1168,6 +1168,7 @@ static bool test_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t * ...@@ -1168,6 +1168,7 @@ static bool test_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *
static void set_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *vrb_map_UL, const int bwp_start, int flag) static void set_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *vrb_map_UL, const int bwp_start, int flag)
{ {
uint16_t slot = flag ? sim_socket_manager.acknack_slot : sim_socket_manager.sr_slot; uint16_t slot = flag ? sim_socket_manager.acknack_slot : sim_socket_manager.sr_slot;
uint16_t *vrb_map_socket = flag ? &sim_socket_manager.vrb_map_acknack_socket[0] : &sim_socket_manager.vrb_map_sr_report_socket[0];
for (int l=0; l<pucch->nr_of_symb; l++) { for (int l=0; l<pucch->nr_of_symb; l++) {
uint16_t symb = SL_to_bitmap(pucch->start_symb+l, 1); uint16_t symb = SL_to_bitmap(pucch->start_symb+l, 1);
int prb; int prb;
...@@ -1176,7 +1177,7 @@ static void set_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *v ...@@ -1176,7 +1177,7 @@ static void set_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *v
else else
prb = pucch->prb_start; prb = pucch->prb_start;
vrb_map_UL[bwp_start+prb] |= symb; vrb_map_UL[bwp_start+prb] |= symb;
sim_socket_manager.vrb_map_ul_socket[slot*RB_TOTAL_MAP_SOCKET+ prb + bwp_start] |= symb; vrb_map_socket[prb + bwp_start] |= symb;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",prb + bwp_start, __FUNCTION__, __LINE__, symb); printf("RB:%d [%s %d] slbitmap %d\n",prb + bwp_start, __FUNCTION__, __LINE__, symb);
for (int symbol = symb, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){ for (int symbol = symb, i = 0; i < SYMBOL_PER_SLOT_MAP_SOCKET; i++, symbol = symbol>>1){
......
...@@ -1615,7 +1615,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac, ...@@ -1615,7 +1615,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
for (int rb = 0; rb < sched_ctrl->sched_pusch.rbSize; rb++){ for (int rb = 0; rb < sched_ctrl->sched_pusch.rbSize; rb++){
uint16_t slbitmap = SL_to_bitmap(sched_pusch->tda_info.startSymbolIndex, sched_pusch->tda_info.nrOfSymbols);; uint16_t slbitmap = SL_to_bitmap(sched_pusch->tda_info.startSymbolIndex, sched_pusch->tda_info.nrOfSymbols);;
rballoc_mask[rb + sched_ctrl->sched_pusch.rbStart] ^= slbitmap; rballoc_mask[rb + sched_ctrl->sched_pusch.rbStart] ^= slbitmap;
sim_socket_manager.vrb_map_ul_socket[sched_pusch->slot*RB_TOTAL_MAP_SOCKET+ rb + sched_ctrl->sched_pusch.rbStart] |= slbitmap; sim_socket_manager.vrb_map_pusch_socket[rb + sched_ctrl->sched_pusch.rbStart] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pusch.rbStart, __FUNCTION__, __LINE__, slbitmap); printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pusch.rbStart, __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){
...@@ -1780,6 +1780,9 @@ static void pf_ul(module_id_t module_id, ...@@ -1780,6 +1780,9 @@ 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_slot = slot;
sim_socket_manager.dl_sched_flag |= 0x01;
fill_pdcch_vrb_map(nrmac, fill_pdcch_vrb_map(nrmac,
CC_id, CC_id,
&sched_ctrl->sched_pdcch, &sched_ctrl->sched_pdcch,
...@@ -1807,7 +1810,7 @@ static void pf_ul(module_id_t module_id, ...@@ -1807,7 +1810,7 @@ static void pf_ul(module_id_t module_id,
// for (int symbol = sched_pusch->tda_info.startSymbolIndex; symbol < sched_pusch->tda_info.nrOfSymbols + sched_pusch->tda_info.startSymbolIndex; symbol++){ // for (int symbol = sched_pusch->tda_info.startSymbolIndex; symbol < sched_pusch->tda_info.nrOfSymbols + sched_pusch->tda_info.startSymbolIndex; symbol++){
// sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol] = 1; // sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol] = 1;
// } // }
sim_socket_manager.vrb_map_ul_socket[sched_pusch->slot*RB_TOTAL_MAP_SOCKET+ rb + sched_ctrl->sched_pusch.rbStart] |= slbitmap; sim_socket_manager.vrb_map_pusch_socket[rb + sched_ctrl->sched_pusch.rbStart] |= slbitmap;
#ifdef VRB_MAP_TEST_MANAGER #ifdef VRB_MAP_TEST_MANAGER
printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pusch.rbStart, __FUNCTION__, __LINE__, slbitmap); printf("RB:%d [%s %d] slbitmap %d\n",rb + sched_ctrl->sched_pusch.rbStart, __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){
...@@ -1939,6 +1942,9 @@ static void pf_ul(module_id_t module_id, ...@@ -1939,6 +1942,9 @@ static void pf_ul(module_id_t module_id,
/* Mark the corresponding RBs as used */ /* Mark the corresponding RBs as used */
sched_ctrl->cce_index = CCEIndex; sched_ctrl->cce_index = CCEIndex;
sim_socket_manager.pdcch_frame = frame;
sim_socket_manager.pdcch_slot = slot;
sim_socket_manager.dl_sched_flag |= 0x01;
fill_pdcch_vrb_map(nrmac, fill_pdcch_vrb_map(nrmac,
CC_id, CC_id,
&sched_ctrl->sched_pdcch, &sched_ctrl->sched_pdcch,
......
...@@ -44,6 +44,8 @@ ...@@ -44,6 +44,8 @@
#include "common/ran_context.h" #include "common/ran_context.h"
#include "executables/softmodem-common.h" #include "executables/softmodem-common.h"
#include "executables/nr-softmodem-common.h"
#include "slotmap.h"
extern RAN_CONTEXT_t RC; extern RAN_CONTEXT_t RC;
...@@ -101,7 +103,28 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset ...@@ -101,7 +103,28 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl; NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
NR_mac_stats_t *stats = &UE->mac_stats; NR_mac_stats_t *stats = &UE->mac_stats;
const int avg_rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0; const int avg_rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0;
printf("stats->dl.total_bytes %ld stats->ul.total_bytes %ld\n", stats->dl.total_bytes, stats->ul.total_bytes);
sim_socket_manager.dl_recv_bytes_high16 = (stats->dl.total_bytes>>16)&0x0000ffff;
sim_socket_manager.dl_recv_bytes_low16 = stats->dl.total_bytes&0x0000ffff;
sim_socket_manager.ul_recv_bytes_high16 = (stats->ul.total_bytes>>16)&0x0000ffff;
sim_socket_manager.ul_recv_bytes_low16 = stats->ul.total_bytes&0x0000ffff;
printf("sim_socket_manager.dl_recv_bytes_high16 %d sim_socket_manager.dl_recv_bytes_low16 %d sim_socket_manager.ul_recv_bytes_high16 %d sim_socket_manager.ul_recv_bytes_low16 %d\n",
sim_socket_manager.dl_recv_bytes_high16,sim_socket_manager.dl_recv_bytes_low16,
sim_socket_manager.ul_recv_bytes_high16,sim_socket_manager.ul_recv_bytes_low16);
sim_socket_manager.dl_mcs = sched_ctrl->dl_bler_stats.mcs;
sim_socket_manager.ul_mcs = sched_ctrl->ul_bler_stats.mcs;
sim_socket_manager.dl_bler = sched_ctrl->dl_bler_stats.bler*10000;
sim_socket_manager.ul_bler = sched_ctrl->ul_bler_stats.bler*10000;
sim_socket_manager.pucch_snr = sched_ctrl->pucch_snrx10/10;
sim_socket_manager.pusch_snr = sched_ctrl->pusch_snrx10/10;
sim_socket_manager.rsrp = avg_rsrp;
sim_socket_manager.measurement_flag |= 0x01;
printf("%d.%d: dl_recv_bytes %dbytes, ul_recv_bytes %dbytes, dl_mcs %d, ul_mcs %d, dl_bler %d, ul_bler %d, pucch_snr %ddB, pusch_snr %ddB, rsrp %ddBm\n",
sim_socket_manager.frame, sim_socket_manager.slot,
(sim_socket_manager.dl_recv_bytes_high16<<16)+sim_socket_manager.dl_recv_bytes_low16,
(sim_socket_manager.ul_recv_bytes_high16<<16)+sim_socket_manager.ul_recv_bytes_low16,
sim_socket_manager.dl_mcs, sim_socket_manager.ul_mcs, sim_socket_manager.dl_bler,sim_socket_manager.ul_bler, sim_socket_manager.pucch_snr,
sim_socket_manager.pusch_snr,sim_socket_manager.rsrp);
output += snprintf(output, output += snprintf(output,
end - output, end - output,
"UE RNTI %04x (%d) PH %d dB PCMAX %d dBm, average RSRP %d (%d meas)\n", "UE RNTI %04x (%d) PH %d dB PCMAX %d dBm, average RSRP %d (%d meas)\n",
......
...@@ -16,12 +16,34 @@ ...@@ -16,12 +16,34 @@
typedef struct { typedef struct {
uint16_t data_len; uint16_t data_len;
uint16_t UE_id; uint16_t message;
uint16_t CC_id;
uint16_t frame; uint16_t frame;
uint16_t slot; uint16_t slot;
uint16_t measurement_flag;
/*LSB -> MSB : masg1 || masg2 || masg3 || masg4*/
uint16_t prach_sched_flag;
/*LSB -> MSB : pdcch || pdsch || csirs*/
uint16_t dl_sched_flag;
/*LSB -> MSB : ulsch || acknack || csi-report || sr || srs*/ /*LSB -> MSB : ulsch || acknack || csi-report || sr || srs*/
uint8_t ul_sched_flag; uint16_t ul_sched_flag;
uint16_t msg1_frame;
uint16_t msg1_slot;
uint16_t msg2_frame;
uint16_t msg2_slot;
uint16_t msg3_frame;
uint16_t msg3_slot;
uint16_t msg4_frame;
uint16_t msg4_slot;
uint16_t pdcch_frame;
uint16_t pdcch_slot;
uint16_t pdsch_frame;
uint16_t pdsch_slot;
uint16_t csirs_frame;
uint16_t csirs_slot;
uint16_t csi_report_frame; uint16_t csi_report_frame;
uint16_t sr_frame; uint16_t sr_frame;
uint16_t srs_frame; uint16_t srs_frame;
...@@ -33,8 +55,10 @@ typedef struct { ...@@ -33,8 +55,10 @@ typedef struct {
uint16_t acknack_slot; uint16_t acknack_slot;
uint16_t ulsch_slot; uint16_t ulsch_slot;
uint16_t dl_velocity; uint16_t dl_recv_bytes_high16;
uint16_t ul_velocity; uint16_t dl_recv_bytes_low16;
uint16_t ul_recv_bytes_high16;
uint16_t ul_recv_bytes_low16;
uint16_t dl_mcs; uint16_t dl_mcs;
uint16_t ul_mcs; uint16_t ul_mcs;
uint16_t dl_bler; uint16_t dl_bler;
...@@ -42,9 +66,19 @@ typedef struct { ...@@ -42,9 +66,19 @@ typedef struct {
int16_t pucch_snr; int16_t pucch_snr;
int16_t pusch_snr; int16_t pusch_snr;
int16_t rsrp; int16_t rsrp;
uint16_t vrb_map_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_ul_socket[SLOT_PER_FRAME_MAP_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_msg3_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_msg4_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_csirs_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_csi_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];
}sim_socket_t; }sim_socket_t;
extern sim_socket_t sim_socket_manager; extern sim_socket_t sim_socket_manager;
......
...@@ -1213,7 +1213,7 @@ void free_defaultMeasConfig(NR_MeasConfig_t *mc) ...@@ -1213,7 +1213,7 @@ void free_defaultMeasConfig(NR_MeasConfig_t *mc)
} }
uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi) { uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi) {
LOG_D(NR_RRC, "[gNB %d] do_NR_Paging start\n", Mod_id); LOG_I(NR_RRC, "[gNB %d] do_NR_Paging start\n", Mod_id);
NR_PCCH_Message_t pcch_msg; NR_PCCH_Message_t pcch_msg;
pcch_msg.message.present = NR_PCCH_MessageType_PR_c1; pcch_msg.message.present = NR_PCCH_MessageType_PR_c1;
asn1cCalloc(pcch_msg.message.choice.c1, c1); asn1cCalloc(pcch_msg.message.choice.c1, c1);
...@@ -1233,7 +1233,7 @@ uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi) { ...@@ -1233,7 +1233,7 @@ uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi) {
INT32_TO_BIT_STRING(tmsi, &paging_record_p->ue_Identity.choice.ng_5G_S_TMSI); INT32_TO_BIT_STRING(tmsi, &paging_record_p->ue_Identity.choice.ng_5G_S_TMSI);
/* add to list */ /* add to list */
LOG_D(NR_RRC, "[gNB %d] do_Paging paging_record: PagingRecordList.count %d\n", LOG_I(NR_RRC, "[gNB %d] do_Paging paging_record: PagingRecordList.count %d\n",
Mod_id, c1->choice.paging->pagingRecordList->list.count); Mod_id, c1->choice.paging->pagingRecordList->list.count);
asn_enc_rval_t enc_rval = uper_encode_to_buffer( asn_enc_rval_t enc_rval = uper_encode_to_buffer(
&asn_DEF_NR_PCCH_Message, NULL, (void *)&pcch_msg, buffer, RRC_BUF_SIZE); &asn_DEF_NR_PCCH_Message, NULL, (void *)&pcch_msg, buffer, RRC_BUF_SIZE);
......
This diff is collapsed.
#ifndef __RRC_SIGNALING_SOCKET__
#define __RRC_SIGNALING_SOCKET__
typedef enum{
RRC_SetupRequest_manager,
RRC_ReestablishmentRequest_manager,
RRC_ReconfigurationComplete_manager,
RRC_SetupComplete_manager,
RRC_MeasurementReport_manager,
RRC_ReestablishmentComplete_manager,
RRC_ulInformationTransfer_manager,
RRC_securityModeComplete_manager,
RRC_securityModeFailure_manager,
RRC_ueCapabilityInformation_manager
}rrc_sigaling_fromUE_t;
typedef enum{
RRC_Reject_manager,
RRC_SETUP_manager,
RRC_Reestablishment_manager,
RRC_REESTABLISH_COMPLETE_manager,
RRC_DEFAULT_RECONF_manager,
RRC_DEDICATED_RECONF_manager,
RRC_PDUSESSION_ESTABLISH_manager,
RRC_PDUSESSION_MODIFY_manager,
RRC_PDUSESSION_RELEASE_manager,
RRC_UECapabilityEnquiry_manager
}rrc_sigaling_fromgNB_t;
typedef struct {
uint16_t data_len;
/*if exist rrc sigaling*/
uint16_t message;
/*UE identity*/
uint16_t rnti;
/*0 represents recv(UE->GNB), 1 represents send(GNB->UE)*/
uint16_t recv_send_flag;
/*rrc sigaling type*/
rrc_sigaling_fromgNB_t rrc_signaling_type;
/*rrc sigaling request type*/
rrc_sigaling_fromUE_t rrc_signaling_request_type;
}sim_rrc_t;
extern sim_rrc_t sim_rrc_signaling_socket;
#endif
\ No newline at end of file
...@@ -161,7 +161,7 @@ gNBs = ...@@ -161,7 +161,7 @@ gNBs =
////////// AMF parameters: ////////// AMF parameters:
amf_ip_address = ( { ipv4 = "192.168.70.132"; amf_ip_address = ( { ipv4 = "192.168.200.14";
ipv6 = "192:168:30::17"; ipv6 = "192:168:30::17";
active = "yes"; active = "yes";
preference = "ipv4"; preference = "ipv4";
...@@ -171,10 +171,10 @@ gNBs = ...@@ -171,10 +171,10 @@ gNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; GNB_INTERFACE_NAME_FOR_NG_AMF = "eno4";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.199.231/24";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; GNB_INTERFACE_NAME_FOR_NGU = "eno4";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24"; GNB_IPV4_ADDRESS_FOR_NGU = "192.168.199.231/24";
GNB_PORT_FOR_S1U = 2152; # Spec 2152 GNB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
......
# uicc0 = {
# imsi = "2089900007487";
# key = "fec86ba6eb707ed08905757b1bb44b8f";
# opc= "1006020f0a478bf6b699f15c062e42b3";//"C42449363BBAD02B66D16BC975D77CC1";
# dnn= "oai";
# nssai_sst=1;
# nssai_sd=1;
# }
uicc0 = { uicc0 = {
imsi = "466920000000001"; imsi = "466920000000001";
key = "00112233445566778899aabbccddeeff"; key = "00112233445566778899aabbccddeeff";
...@@ -5,4 +13,8 @@ opc= "000102030405060708090a0b0c0d0e0f"; ...@@ -5,4 +13,8 @@ opc= "000102030405060708090a0b0c0d0e0f";
dnn= "internet"; dnn= "internet";
nssai_sst=1; nssai_sst=1;
nssai_sd=0; nssai_sd=0;
<<<<<<< HEAD
} }
=======
}
>>>>>>> f7c7f0be8f... re rrc_signaling measurement data (no dmrs) 231115
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