Commit 57982e79 authored by lfq's avatar lfq

add rnti in measurement and separate initial access 231130

parent 4e6db871
......@@ -41,14 +41,27 @@ rrc_gNB_to_UE = [
schedule_data = collections.OrderedDict()
rrc_data = []
random_access_data = dict()
random_access_data["msg1"] = []
random_access_data["msg2"] = []
random_access_data["msg3"] = []
random_access_data["msg4"] = []
random_access_data["msg1_frame"] = 0
random_access_data["msg1_slot"] = 0
random_access_data["msg2_frame"] = 0
random_access_data["msg2_slot"] = 0
random_access_data["msg3_frame"] = 0
random_access_data["msg3_slot"] = 0
random_access_data["msg4_frame"] = 0
random_access_data["msg4_slot"] = 0
random_access_data["rnti"] = 0
# 0 is first tag
schedule_data["ssb"] = []
schedule_data["sib1"] = []
schedule_data["msg1"] = []
schedule_data["msg2"] = []
schedule_data["msg3"] = []
schedule_data["msg4"] = []
schedule_data["ssb"] = []
schedule_data["sib1"] = []
schedule_data["pdcch"] = []
schedule_data["pdsch"] = []
schedule_data["csirs"] = []
......@@ -80,7 +93,7 @@ dl_recv_bytes_last = 0
ul_recv_bytes_last = 0
frame_last = 0
time_last = 0
msg1_get = 0
while True:
data, client_address = server_socket.recvfrom(BUFFER_SIZE)
if DEBUG_PRINT:
......@@ -100,8 +113,8 @@ while True:
print("Send:gNB, Receive:UE(rnti:%x), RRC signaling:%s"%(rnti, rrc_gNB_to_UE[rrc_signaling_type-1]))
# print(rrc_data)
elif (message == 3):
dl_recv_bytes_high16,dl_recv_bytes_low16,ul_recv_bytes_high16,ul_recv_bytes_low16, \
dl_mcs,ul_mcs,dl_bler,ul_bler,pucch_snr,pusch_snr,rsrp = struct.unpack("8H3h", data[4:4+22])
rnti, dl_recv_bytes_high16,dl_recv_bytes_low16,ul_recv_bytes_high16,ul_recv_bytes_low16, \
dl_mcs,ul_mcs,dl_bler,ul_bler,pucch_snr,pusch_snr,rsrp = struct.unpack("9H3h", data[4:4+24])
dl_recv_bytes = (dl_recv_bytes_high16<<16) + dl_recv_bytes_low16
ul_recv_bytes = (ul_recv_bytes_high16<<16) + ul_recv_bytes_low16
if DEBUG_PRINT:
......@@ -127,7 +140,7 @@ while True:
dl_recv_bytes_last = dl_recv_bytes
ul_recv_bytes_last = ul_recv_bytes
elif (message == 2):
CC_id,frame,slot,pbch_sched_flag,random_access_sched_flag,dl_sched_flag,ul_sched_flag = struct.unpack("7H", data[4:18])
rnti,frame,slot,pbch_sched_flag,random_access_sched_flag,dl_sched_flag,ul_sched_flag = struct.unpack("7H", data[4:18])
if DEBUG_PRINT:
print("%d.%d pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x"%(frame,slot,pbch_sched_flag,random_access_sched_flag,dl_sched_flag,ul_sched_flag))
schedule_timing = struct.unpack("30H", data[18:78])
......@@ -160,7 +173,31 @@ while True:
if DEBUG_PRINT:
print (schedule_data[map_type])
count = count + 1
if (random_access_sched_flag != 0):
random_access_data["rnti"] = rnti
msg1_get = 1
for i in range(4):
if (random_access_sched_flag >> (i + 1)) & 1:
random_access_data["msg"+str(i+2)+"_frame"] = schedule_timing[(i+1)*2]
random_access_data["msg"+str(i+2)+"_slot"] = schedule_timing[(i+1)*2+1]
random_access_data["msg"+str(i+2)] = schedule_data["msg"+str(i+2)]
count = 0
for time_pos in random_access_data["msg"+str(i+2)]:
time_pos[0] = time_pos[0] + (280-random_access_data["msg1_slot"]*14) + \
(schedule_timing[(i+1)*2] - random_access_data["msg1_frame"]-1)*280
time_pos[2] = i + 1
if ((ul_sched_flag & 0x20) and msg1_get == 0):
random_access_data["msg1_frame"] = schedule_timing[18]
random_access_data["msg1_slot"] = schedule_timing[19]
random_access_data["msg1"] = schedule_data["prach"]
for time_pos in random_access_data["msg1"]:
time_pos[0] = time_pos[0] - random_access_data["msg1_slot"]*14
time_pos[2] = 0
print(random_access_data)
frame_last = frame
# shared_value_lock.acquire()
# socket_value = schedule_data
......
......@@ -213,7 +213,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
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.slot = slot;
sim_socket_manager.frame = frame;
// sim_socket_manager.acknack_frame = sim_socket_manager.acknack_slot
......@@ -227,7 +226,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
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);
LOG_D(NR_MAC, "Frame.Slot %d.%d\n%s\n", frame, slot, stats_output);
}
......@@ -294,17 +293,17 @@ 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);
if (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){
if (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);
message_flag = 2;
// gnbSendToManager_buf = &sim_socket_manager;
sim_socket_manager.data_len = sizeof(sim_socket_t);
sim_socket_manager.message = 2;
// gnbSendToManager_len = sim_socket_manager.data_len;
#ifdef VRB_MAP_TEST_MANAGER
LOG_I(NR_MAC,"data_len %d\n", sim_socket_manager.data_len);
LOG_I(NR_MAC,"[%d.%d]pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x "
#if 0
LOG_D(NR_MAC,"data_len %d\n", sim_socket_manager.data_len);
LOG_D(NR_MAC,"[%d.%d]pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x "
"ssb %d.%d sib1 %d.%d msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
"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.frame, sim_socket_manager.slot,sim_socket_manager.pbch_sched_flag,
......
......@@ -666,6 +666,9 @@ void nr_initiate_ra_proc(module_id_t module_idP,
ra->Msg2_frame = msg2_frame;
ra->Msg2_slot = msg2_slot;
sim_socket_manager.msg1_frame = frameP;
sim_socket_manager.msg1_slot = slotP;
sim_socket_manager.random_access_sched_flag |= 0x01;
LOG_D(NR_MAC, "%s() Msg2[%04d%d] SFN/SF:%04d%d\n", __FUNCTION__, ra->Msg2_frame, ra->Msg2_slot, frameP, slotP);
......@@ -1119,6 +1122,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
sim_socket_manager.msg3_frame = ra->Msg3_frame;
sim_socket_manager.msg3_slot = ra->Msg3_slot;
sim_socket_manager.random_access_sched_flag |= 0x04;
sim_socket_manager.rnti = ra->rnti;
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",
......@@ -1449,6 +1453,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
sim_socket_manager.msg2_frame = frameP;
sim_socket_manager.msg2_slot = slotP;
sim_socket_manager.random_access_sched_flag |= 0x02;
sim_socket_manager.rnti = ra->rnti;
// Mark the corresponding symbols RBs as used
fill_pdcch_vrb_map(nr_mac,
CC_id,
......@@ -1916,6 +1921,7 @@ static void nr_generate_Msg4(module_id_t module_idP,
sim_socket_manager.pdcch_frame = frameP;
sim_socket_manager.pdcch_slot = slotP;
sim_socket_manager.dl_sched_flag |= 0x10;
sim_socket_manager.rnti = ra->rnti;
// Mark the corresponding symbols and RBs as used
fill_pdcch_vrb_map(nr_mac,
......
......@@ -108,6 +108,7 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
message_flag = 3;
sim_measurement_manager.data_len = sizeof(sim_measurement_t);
sim_measurement_manager.message = 3;
sim_measurement_manager.rnti = UE->rnti;
sim_measurement_manager.dl_recv_bytes_high16 = (stats->dl.total_bytes>>16)&0x0000ffff;
sim_measurement_manager.dl_recv_bytes_low16 = stats->dl.total_bytes&0x0000ffff;
sim_measurement_manager.ul_recv_bytes_high16 = (stats->ul.total_bytes>>16)&0x0000ffff;
......
......@@ -17,7 +17,7 @@
typedef struct {
uint16_t data_len;
uint16_t message;
uint16_t CC_id;
uint16_t rnti;
uint16_t frame;
uint16_t slot;
/*LSB -> MSB : ssb || sib1*/
......@@ -29,11 +29,6 @@ typedef struct {
/*LSB -> MSB : ulsch || acknack || csi-report || sr || srs || prach */
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_slot;
uint16_t msg2_frame;
......@@ -43,6 +38,11 @@ typedef struct {
uint16_t msg4_frame;
uint16_t msg4_slot;
uint16_t ssb_frame;
uint16_t ssb_slot;
uint16_t sib1_frame;
uint16_t sib1_slot;
uint16_t pdcch_frame;
uint16_t pdcch_slot;
uint16_t pdsch_frame;
......@@ -63,12 +63,12 @@ typedef struct {
uint16_t srs_frame;
uint16_t srs_slot;
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_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_ssb_socket[RB_TOTAL_MAP_SOCKET];
uint16_t vrb_map_sib1_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];
......@@ -84,6 +84,7 @@ typedef struct {
typedef struct{
uint16_t data_len;
uint16_t message;
uint16_t rnti;
uint16_t dl_recv_bytes_high16;
uint16_t dl_recv_bytes_low16;
uint16_t ul_recv_bytes_high16;
......
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