Commit 606403cf authored by Nick Ho's avatar Nick Ho

adjust trigger timing and RU allocation problem fixed

parent b969ef8f
...@@ -477,7 +477,7 @@ void schedule_response_NB_IoT(Sched_Rsp_NB_IoT_t *Sched_INFO) ...@@ -477,7 +477,7 @@ void schedule_response_NB_IoT(Sched_Rsp_NB_IoT_t *Sched_INFO)
//nulsch_harq->rep_tmp = ; //nulsch_harq->rep_tmp = ;
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
LOG_I(PHY,"IF module proceed UL config NULSCH pdu\n"); LOG_I(PHY,"subframe = %d (TX timing), IF module proceed UL config NULSCH pdu, will trigger npusch in next subframe\n",subframe);
break; break;
case NFAPI_UL_CONFIG_NRACH_PDU_TYPE: case NFAPI_UL_CONFIG_NRACH_PDU_TYPE:
//TODO just for update the nprach configuration (given at the beginning through phy_config_sib2) //TODO just for update the nprach configuration (given at the beginning through phy_config_sib2)
......
...@@ -182,20 +182,22 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){ ...@@ -182,20 +182,22 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){
rep = 0; rep = 0;
uint32_t Iru = 0, mcs, Nru; uint32_t Iru = 0, mcs, Nru;
uint32_t Nrep_UL = 0; // need a table here
uint32_t mappedMcsIndex = 4; // assume all ue supported multi-tone uint32_t mappedMcsIndex = 4; // assume all ue supported multi-tone
mcs = mapped_mcs[msg2_nodes->ce_level][mappedMcsIndex]; // assume all ue supported multi-tone //mcs = mapped_mcs[msg2_nodes->ce_level][mappedMcsIndex]; // assume all ue supported multi-tone
mcs = 2;
Nrep_UL = ULrep[rep];
TBS = get_TBS_UL_NB_IoT(mcs,1,Iru); TBS = get_TBS_UL_NB_IoT(mcs,1,Iru);
while((TBS<11)&&(Iru<=7)){ // 88 bits while((TBS<11)&&(Iru<=7)){ // 88 bits
Iru++; Iru++;
TBS=get_TBS_UL_NB_IoT(mcs,1,Iru); TBS=get_TBS_UL_NB_IoT(mcs,1,Iru);
} }
Nru = RU_table[Iru]; //Nru = RU_table[Iru];
Nru = RU_table_msg3[mcs];
for(msg3_scheduling_delay=0; msg3_scheduling_delay<4; ++msg3_scheduling_delay){ for(msg3_scheduling_delay=0; msg3_scheduling_delay<4; ++msg3_scheduling_delay){
// 36.213 Table 16.3.3-1 Imcs=3'b000 Nru=4 // 36.213 Table 16.3.3-1 Imcs=3'b000 Nru=4
msg3_subframe = msg2_end_subframe+msg3_scheduling_delay_table[msg3_scheduling_delay]+1; msg3_subframe = msg2_end_subframe+msg3_scheduling_delay_table[msg3_scheduling_delay]+1;
if(0==Check_UL_resource(msg3_subframe, Nru*rep, &npusch_info, 0, 0)){ //1: multi-tones 0: single-tone. 1: format 2(ack/nack) 0: format 1 if(0==Check_UL_resource(msg3_subframe, Nru*Nrep_UL, &npusch_info, 0, 0)){ //1: multi-tones 0: single-tone. 1: format 2(ack/nack) 0: format 1
break; break;
} }
} }
...@@ -282,7 +284,7 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){ ...@@ -282,7 +284,7 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){
//msg2_nodes->ue_rnti = tc_rnti; //msg2_nodes->ue_rnti = tc_rnti;
LOG_I(MAC,"[%04d][RA scheduler][MSG2] RARDCI %d-%d RAR %d-%d MSG3 %d-%d\n", abs_subframe-1, dci_first_subframe, dci_end_subframe, msg2_first_subframe, msg2_end_subframe, npusch_info.sf_start, npusch_info.sf_end); LOG_I(MAC,"[%04d][RA scheduler][MSG2] RARDCI %d-%d RAR %d-%d MSG3 %d-%d Nru = %d, Nrep = %d\n", abs_subframe-1, dci_first_subframe, dci_end_subframe, msg2_first_subframe, msg2_end_subframe, npusch_info.sf_start, npusch_info.sf_end,Nru,Nrep_UL);
LOG_D(MAC,"[%04d][RA scheduler][MSG2][CE%d] Change RA-RNTI %d->T-CRNTI %d\n", abs_subframe-1, msg2_nodes->ce_level, msg2_nodes->ra_rnti, msg2_nodes->ue_rnti); LOG_D(MAC,"[%04d][RA scheduler][MSG2][CE%d] Change RA-RNTI %d->T-CRNTI %d\n", abs_subframe-1, msg2_nodes->ce_level, msg2_nodes->ra_rnti, msg2_nodes->ue_rnti);
LOG_D(MAC,"[%04d][RA scheduler][MSG2][CE%d] RAR DCI %d-%d RAR %d-%d MSG3 %d-%d\n", abs_subframe-1, msg2_nodes->ce_level, dci_first_subframe, dci_end_subframe, msg2_first_subframe, msg2_end_subframe, npusch_info.sf_start, npusch_info.sf_end); LOG_D(MAC,"[%04d][RA scheduler][MSG2][CE%d] RAR DCI %d-%d RAR %d-%d MSG3 %d-%d\n", abs_subframe-1, msg2_nodes->ce_level, dci_first_subframe, dci_end_subframe, msg2_first_subframe, msg2_end_subframe, npusch_info.sf_start, npusch_info.sf_end);
...@@ -296,7 +298,7 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){ ...@@ -296,7 +298,7 @@ void schedule_rar_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe){
fill_resource_DL(mac_inst, msg2_node, msg2_first_subframe, msg2_end_subframe, msg2_result); fill_resource_DL(mac_inst, msg2_node, msg2_first_subframe, msg2_end_subframe, msg2_result);
// fill msg3 resource // fill msg3 resource
generate_scheduling_result_UL(-1, -1, npusch_info.sf_start, npusch_info.sf_end, dci_n0, tc_rnti, str11, (void *)0); generate_scheduling_result_UL(-1, -1, npusch_info.sf_start+3, npusch_info.sf_end+3, dci_n0, tc_rnti, str11, (void *)0);
adjust_UL_resource_list(&npusch_info); adjust_UL_resource_list(&npusch_info);
//simulate_rx(&simulate_rx_msg3_list, tc_rnti, npusch_info.sf_start); //simulate_rx(&simulate_rx_msg3_list, tc_rnti, npusch_info.sf_start);
......
...@@ -78,6 +78,7 @@ extern const int UL_TBS_Table[14][8]; ...@@ -78,6 +78,7 @@ extern const int UL_TBS_Table[14][8];
const int UL_TBS_Table_msg3[8]; const int UL_TBS_Table_msg3[8];
extern const int ULrep[8];
extern const int rachperiod[8]; extern const int rachperiod[8];
extern const int rachstart[8]; extern const int rachstart[8];
extern const int rachrepeat[8]; extern const int rachrepeat[8];
...@@ -90,6 +91,7 @@ extern const double gvalue[8]; ...@@ -90,6 +91,7 @@ extern const double gvalue[8];
extern const double pdcchoffset[4]; extern const double pdcchoffset[4];
extern const uint32_t RU_table[8]; extern const uint32_t RU_table[8];
extern const uint32_t RU_table_msg3[8];
extern const uint32_t scheduling_delay[4]; extern const uint32_t scheduling_delay[4];
extern const uint32_t msg3_scheduling_delay_table[4]; extern const uint32_t msg3_scheduling_delay_table[4];
......
...@@ -78,7 +78,7 @@ const int UL_TBS_Table[14][8]= ...@@ -78,7 +78,7 @@ const int UL_TBS_Table[14][8]=
const int UL_TBS_Table_msg3[8]={88,88,88,0,0,0,0,0}; const int UL_TBS_Table_msg3[8]={88,88,88,0,0,0,0,0};
const int ULrep[8] = {1,2,4,8,16,32,64,128};
const int rachperiod[8]={40,80,160,240,320,640,1280,2560}; const int rachperiod[8]={40,80,160,240,320,640,1280,2560};
const int rachstart[8]={8,16,32,64,128,256,512,1024}; const int rachstart[8]={8,16,32,64,128,256,512,1024};
const int rachrepeat[8]={1,2,4,8,16,32,64,128}; const int rachrepeat[8]={1,2,4,8,16,32,64,128};
...@@ -93,7 +93,7 @@ const double pdcchoffset[4] = {0, 0.125f, 0.25f, 0.375f}; ...@@ -93,7 +93,7 @@ const double pdcchoffset[4] = {0, 0.125f, 0.25f, 0.375f};
const int dlrepeat[16] = {1, 2, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048}; const int dlrepeat[16] = {1, 2, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048};
const uint32_t RU_table[8]={1,2,3,4,5,6,8,10}; const uint32_t RU_table[8]={1,2,3,4,5,6,8,10};
const uint32_t RU_table_msg3[8]={4,3,1,1,1,1,1,1};
const uint32_t scheduling_delay[4]={8,16,32,64}; const uint32_t scheduling_delay[4]={8,16,32,64};
const uint32_t msg3_scheduling_delay_table[4] = {12,16,32,64}; const uint32_t msg3_scheduling_delay_table[4] = {12,16,32,64};
......
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