diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c index eb19052476440de195ffdd250e08169d9b03ae58..51d7161b586e7472f1a3e030aade39a17ed7172a 100644 --- a/openair2/ENB_APP/enb_agent_common.c +++ b/openair2/ENB_APP/enb_agent_common.c @@ -781,29 +781,28 @@ int get_tpc(mid_t mod_id, mid_t ue_id) return tpc; } -int get_harq(mid_t mod_id,uint8_t CC_id,mid_t ue_id, int frame, uint8_t subframe, int flag_id_status) //flag_id_status = 0 then id, else status +int get_harq(const mid_t mod_id, const uint8_t CC_id, const mid_t ue_id, const int frame, const uint8_t subframe, int *id, int *status) //flag_id_status = 0 then id, else status { /*TODO: Add int TB in function parameters to get the status of the second TB. This can be done to by editing in * get_ue_active_harq_pid function in line 272 file: phy_procedures_lte_eNB.c to add * DLSCH_ptr = PHY_vars_eNB_g[Mod_id][CC_id]->dlsch_eNB[(uint32_t)UE_id][1];*/ - uint8_t *harq_pid = malloc(sizeof(uint8_t)); - uint8_t *round = malloc(sizeof(uint8_t)); + uint8_t harq_pid; + uint8_t round; + - uint16_t rnti = get_ue_crnti(mod_id,ue_id); + uint16_t rnti = get_ue_crnti(mod_id,ue_id); - mac_xface->get_ue_active_harq_pid(mod_id,CC_id,rnti,frame,subframe,&harq_pid,&round,0); + mac_xface->get_ue_active_harq_pid(mod_id,CC_id,rnti,frame,subframe,&harq_pid,&round,0); - if(flag_id_status == 0) - return *harq_pid; - else if(flag_id_status == 1) - { - if(*round > 0) - return 1; - else - return 0; - } - return 150; + *id = harq_pid; + if (round > 0) { + *status = 1; + } else { + *status = 0; + } + + return 0; } diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h index f45f68ef9a4b9c4f8c981120edda4694ab2a7e4c..6a310944176d55f57b91d5dab4a1faa0404bdd1f 100644 --- a/openair2/ENB_APP/enb_agent_common.h +++ b/openair2/ENB_APP/enb_agent_common.h @@ -204,7 +204,8 @@ int get_num_pdcch_symb(mid_t mod_id, int CC_id); int get_tpc(mid_t mod_id, mid_t ue_id); -int get_harq(mid_t mod_id,uint8_t CC_id,mid_t ue_id, int frame, uint8_t subframe, int flag_id_status); +int get_harq(const mid_t mod_id, const uint8_t CC_id, const mid_t ue_id, + const int frame, const uint8_t subframe, int *id, int *status); /******************* * timer primitves diff --git a/openair2/ENB_APP/enb_agent_mac.c b/openair2/ENB_APP/enb_agent_mac.c index a780c0b6c860031993a4a71b3337a234ca3ada63..dfe29bcc3edd75e42cc6b43b1d1737f786bd3d7d 100644 --- a/openair2/ENB_APP/enb_agent_mac.c +++ b/openair2/ENB_APP/enb_agent_mac.c @@ -926,13 +926,17 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran dl_info[i]->rnti = get_ue_crnti(mod_id, i); dl_info[i]->has_rnti = 1; /*TODO: fill in the right id of this round's HARQ process for this UE*/ - dl_info[i]->harq_process_id = get_harq(mod_id,UE_PCCID(mod_id,i),i,get_current_frame(mod_id),get_current_subframe(mod_id),0); + int harq_id; + int harq_status; + get_harq(mod_id,UE_PCCID(mod_id,i),i,get_current_frame(mod_id),get_current_subframe(mod_id),&harq_id, &harq_status); + dl_info[i]->harq_process_id = harq_id; dl_info[i]->has_harq_process_id = 1; /*TODO: fill in the status of the HARQ process (2 TBs)*/ dl_info[i]->n_harq_status = 2; dl_info[i]->harq_status = malloc(sizeof(uint32_t) * dl_info[i]->n_harq_status); for (j = 0; j < dl_info[j]->n_harq_status; j++) { - dl_info[i]->harq_status[j] = get_harq(mod_id,UE_PCCID(mod_id,i),i,get_current_frame(mod_id),get_current_subframe(mod_id),1); + // TODO: This should be different per TB + dl_info[i]->harq_status[j] = harq_status; } /*TODO: fill in the serving cell index for this UE */ dl_info[i]->serv_cell_index = UE_PCCID(mod_id,i);