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 @@
#include <semaphore.h>
#include "nr-softmodem-common.h"
#include "../openair2/LAYER2/NR_MAC_gNB/slotmap.h"
#include "../openair2/RRC/NR/rrc_signaling_socket.h"
#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_IP "127.0.0.1"
#define GNBSENDTOMANAGER_IP "192.168.199.231"
//#define GNBSENDTOMANAGER_MAX_LEN 65536
sem_t gnbSendToManager_sem;
uint8_t *gnbSendToManager_buf;
unsigned int gnbSendToManager_len;
pthread_mutex_t sim_mutex_socket;
uint16_t message_flag;
void *gnbSendToManager_task(void *args_p)
{
struct sockaddr_in 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)
{
perror("error socket");
......@@ -50,24 +54,15 @@ void *gnbSendToManager_task(void *args_p)
while(1)
{
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];
// UE_id = gnbSendToManager_buf[1];
// frame = gnbSendToManager_buf[2];
// slot = gnbSendToManager_buf[3];
// printf("%d.%d:\n", frame, slot);
// for (int rb = 0; rb < 106; rb++){
// for (int symbol = 0; symbol < 14; symbol++){
// printf("%d ", gnbSendToManager_buf[4+count]);
// count++;
// }
// printf("\n");
// }
send_len = send(sockfd, gnbSendToManager_buf, GNBSENDTOMANAGER_MAX_LEN, 0);
printf("message_flag %d\n", message_flag);
if (message_flag == 1){
printf("data_len %d\n", sim_rrc_signaling_socket.data_len);
send_len = write(sockfd, &sim_rrc_signaling_socket, GNBSENDTOMANAGER_MAX_RRC_SIGNALING_LEN);
}
else if (message_flag == 2){
send_len = write(sockfd, &sim_socket_manager, GNBSENDTOMANAGER_MAX_RE_SCHDULE_LEN);
}
printf("send_len=%d\n", send_len);
}
......
No preview for this file type
......@@ -161,4 +161,6 @@ extern sem_t gnbSendToManager_sem;
extern uint8_t *gnbSendToManager_buf;
extern unsigned int gnbSendToManager_len;
extern void *gnbSendToManager_task(void *args_p);
extern pthread_mutex_t sim_mutex_socket;
extern uint16_t message_flag;
#endif
......@@ -635,9 +635,11 @@ int main( int argc, char **argv ) {
#endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
pthread_mutex_init(&sim_mutex_socket, NULL);
sem_init(&gnbSendToManager_sem,0,0);
pthread_t ntid;
int gnb_flag = 1;
message_flag = 0;
if (pthread_create(&ntid, NULL, gnbSendToManager_task, &gnb_flag) < 0) {
fprintf(stderr, "gnbSendToManager_task: Failed to create thread: %s\n",
strerror(errno));
......
This diff is collapsed.
......@@ -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)
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);
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,
index, table_6_3_3_2_3_prachConfig_Index[index][6],
pointa,
......
......@@ -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);
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 vrb_maps
memset(sim_socket_manager.vrb_map_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET*SYMBOL_PER_SLOT_MAP_SOCKET);
// clear last scheduled slot's content (only)!
const int num_slots = nr_slots_per_frame[*scc->ssbSubcarrierSpacing];
const int size = gNB->vrb_map_UL_size;
const int prev_slot = frame * num_slots + slot + size - 1;
uint16_t *vrb_map_UL = sim_socket_manager.vrb_map_ul_socket;
memcpy(&vrb_map_UL[prev_slot % size * RB_TOTAL_MAP_SOCKET], &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
sim_socket_manager.UE_id = UE_id_map;
// clear sim_socket_manager
memset(&sim_socket_manager, 0, sizeof(sim_socket_manager));
memcpy(&sim_socket_manager.vrb_map_msg1_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
// memset(&sim_socket_manager.vrb_map_msg2_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
memcpy(&sim_socket_manager.vrb_map_msg3_socket, &gNB->ulprbbl, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
// memset(&sim_socket_manager.vrb_map_msg4_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
// memset(&sim_socket_manager.vrb_map_pdcch_socket, 0, sizeof(uint16_t) * RB_TOTAL_MAP_SOCKET);
// memset(&sim_socket_manager.vrb_map_pdsch_socket, 0, 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);
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.frame = frame;
sim_socket_manager.data_len = 0;
sim_socket_manager.ulsch_frame = sim_socket_manager.ulsch_slot = 0;
sim_socket_manager.acknack_frame = sim_socket_manager.acknack_slot = 0;
sim_socket_manager.csi_report_frame = sim_socket_manager.csi_report_slot = 0;
sim_socket_manager.sr_frame = sim_socket_manager.sr_slot = 0;
sim_socket_manager.srs_frame = sim_socket_manager.srs_slot = 0;
sim_socket_manager.ul_sched_flag = 0;
// sim_socket_manager.acknack_frame = sim_socket_manager.acknack_slot
LOG_I(NR_MAC, "frame %d slot %d\n", sim_socket_manager.frame, sim_socket_manager.slot);
// if (RC.nrmac[module_idP]->UE_info.list[0]){
// sim_socket_manager.dl_recv_bytes = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.dl.total_bytes;
// sim_socket_manager.ul_recv_bytes = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.ul.total_bytes;
// }
}
if ((slot == 0) && (frame & 127) == 0) {
if ((slot == 0) && (frame & 100) == 0) {
char stats_output[16000] = {0};
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);
}
nr_mac_update_timers(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_
NR_SCHED_UNLOCK(&gNB->sched_lock);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT);
// for (int rb = 0; rb < 5; rb++){
// printf("In[%s] gnbSendToManager_buf[%d+0]= %d\n",__FUNCTION__,rb,gnbSendToManager_buf[rb+0]);
// }
if (RC.nrmac[module_idP]->UE_info.list[0]!=NULL){
gnbSendToManager_buf = &sim_socket_manager;
if (sim_socket_manager.measurement_flag || sim_socket_manager.prach_sched_flag || sim_socket_manager.dl_sched_flag ||sim_socket_manager.ul_sched_flag){
pthread_mutex_lock(&sim_mutex_socket);
message_flag = 2;
// gnbSendToManager_buf = &sim_socket_manager;
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);
sim_socket_manager.dl_velocity = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.dl.current_bytes*8*2;
sim_socket_manager.ul_velocity = RC.nrmac[module_idP]->UE_info.list[0]->mac_stats.ul.current_bytes*8*2;
sim_socket_manager.dl_mcs = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.dl_bler_stats.mcs;
sim_socket_manager.ul_mcs = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.ul_bler_stats.mcs;
sim_socket_manager.dl_bler = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.dl_bler_stats.bler*100;
sim_socket_manager.ul_bler = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.ul_bler_stats.bler*100;
sim_socket_manager.pucch_snr = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.pucch_snrx10/10;
sim_socket_manager.pusch_snr = RC.nrmac[module_idP]->UE_info.list[0]->UE_sched_ctrl.pusch_snrx10/10;
NR_mac_stats_t *stats = &RC.nrmac[module_idP]->UE_info.list[0]->mac_stats;
sim_socket_manager.rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0;
printf("[%d.%d] ul_sched_flag %x ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n",
frame, slot, sim_socket_manager.ul_sched_flag,
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.srs_frame, sim_socket_manager.srs_slot);
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 "
"csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d\n",
sim_socket_manager.frame, sim_socket_manager.slot,
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.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.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.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.srs_frame, sim_socket_manager.srs_slot);
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);
pthread_mutex_unlock(&sim_mutex_socket);
sem_post(&gnbSendToManager_sem);
}
}
}
......@@ -46,6 +46,7 @@
#include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h"
#include <executables/softmodem-common.h>
#include "slotmap.h"
extern RAN_CONTEXT_t RC;
extern const uint8_t nr_slots_per_frame[5];
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
prach_pdu->num_cs = get_NCS(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig,
format0,
scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig);
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_frame = frameP;
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,
prach_occasion_id, prach_pdu->num_ra,
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
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);
uint16_t *vrb_map_UL = &cc->vrb_map_UL[index * MAX_BWP_SIZE];
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);
for (int i = 0; i < N_RA_RB * fdm; ++i){
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
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);
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) {
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",
......@@ -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_slot);
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);
......@@ -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 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,
slotP,
ra->Msg3_frame,
......@@ -1406,7 +1443,12 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req->SFN = frameP;
TX_req->Number_of_PDUs++;
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
fill_pdcch_vrb_map(nr_mac,
CC_id,
......@@ -1414,7 +1456,22 @@ static void nr_generate_Msg2(module_id_t module_idP,
CCEIndex,
aggregation_level);
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;
......@@ -1853,6 +1910,12 @@ static void nr_generate_Msg4(module_id_t module_idP,
TX_req->Number_of_PDUs++;
TX_req->Slot = 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
fill_pdcch_vrb_map(nr_mac,
......@@ -1861,7 +1924,22 @@ static void nr_generate_Msg4(module_id_t module_idP,
CCEIndex,
aggregation_level);
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;
......
......@@ -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++){
uint16_t slbitmap = SL_to_bitmap(retInfo->tda_info.startSymbolIndex, retInfo->tda_info.nrOfSymbols);
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
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){
......@@ -828,7 +828,7 @@ static void pf_dl(module_id_t module_id,
for (int rb = 0; rb < sched_pdsch->rbSize; rb++){
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
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){
......@@ -1016,6 +1016,10 @@ void nr_schedule_ue_spec(module_id_t module_id,
harq->feedback_slot = pucch->ul_slot;
harq->is_waiting = true;
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,
"%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,
......
......@@ -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);
for (int i = 0; i < srs_pdu->bwp_size; ++i){
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
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){
......
......@@ -324,7 +324,7 @@ void nr_csi_meas_reporting(int Mod_idP,
}
else{
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
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){
......@@ -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)
{
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++) {
uint16_t symb = SL_to_bitmap(pucch->start_symb+l, 1);
int prb;
......@@ -1176,7 +1177,7 @@ static void set_pucch0_vrb_occupation(const NR_sched_pucch_t *pucch, uint16_t *v
else
prb = pucch->prb_start;
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
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){
......
......@@ -1615,7 +1615,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
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);;
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
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){
......@@ -1780,6 +1780,9 @@ static void pf_ul(module_id_t module_id,
}
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,
CC_id,
&sched_ctrl->sched_pdcch,
......@@ -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++){
// 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
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){
......@@ -1939,6 +1942,9 @@ static void pf_ul(module_id_t module_id,
/* Mark the corresponding RBs as used */
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,
CC_id,
&sched_ctrl->sched_pdcch,
......
......@@ -44,6 +44,8 @@
#include "common/ran_context.h"
#include "executables/softmodem-common.h"
#include "executables/nr-softmodem-common.h"
#include "slotmap.h"
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
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
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;
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,
end - output,
"UE RNTI %04x (%d) PH %d dB PCMAX %d dBm, average RSRP %d (%d meas)\n",
......
......@@ -16,12 +16,34 @@
typedef struct {
uint16_t data_len;
uint16_t UE_id;
uint16_t message;
uint16_t CC_id;
uint16_t frame;
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*/
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 sr_frame;
uint16_t srs_frame;
......@@ -33,8 +55,10 @@ typedef struct {
uint16_t acknack_slot;
uint16_t ulsch_slot;
uint16_t dl_velocity;
uint16_t ul_velocity;
uint16_t dl_recv_bytes_high16;
uint16_t dl_recv_bytes_low16;
uint16_t ul_recv_bytes_high16;
uint16_t ul_recv_bytes_low16;
uint16_t dl_mcs;
uint16_t ul_mcs;
uint16_t dl_bler;
......@@ -42,9 +66,19 @@ typedef struct {
int16_t pucch_snr;
int16_t pusch_snr;
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;
extern sim_socket_t sim_socket_manager;
......
......@@ -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) {
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;
pcch_msg.message.present = NR_PCCH_MessageType_PR_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) {
INT32_TO_BIT_STRING(tmsi, &paging_record_p->ue_Identity.choice.ng_5G_S_TMSI);
/* 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);
asn_enc_rval_t enc_rval = uper_encode_to_buffer(
&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 =
////////// AMF parameters:
amf_ip_address = ( { ipv4 = "192.168.70.132";
amf_ip_address = ( { ipv4 = "192.168.200.14";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
......@@ -171,10 +171,10 @@ gNBs =
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24";
GNB_INTERFACE_NAME_FOR_NG_AMF = "eno4";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.199.231/24";
GNB_INTERFACE_NAME_FOR_NGU = "eno4";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.199.231/24";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
......
# uicc0 = {
# imsi = "2089900007487";
# key = "fec86ba6eb707ed08905757b1bb44b8f";
# opc= "1006020f0a478bf6b699f15c062e42b3";//"C42449363BBAD02B66D16BC975D77CC1";
# dnn= "oai";
# nssai_sst=1;
# nssai_sd=1;
# }
uicc0 = {
imsi = "466920000000001";
key = "00112233445566778899aabbccddeeff";
......@@ -5,4 +13,8 @@ opc= "000102030405060708090a0b0c0d0e0f";
dnn= "internet";
nssai_sst=1;
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