#include "IF_Module_L2_primitives_NB_IoT.h"

// Sched_INFO as a input for the scheduler
void UL_indication(UL_IND_t *UL_INFO)
{
    int i=0;

      /*If there is a preamble, do the initiate RA procedure*/
      if(UL_INFO->NRACH.number_of_initial_scs_detected>0)
        {
          for(i=0;i<UL_INFO->NRACH.number_of_initial_scs_detected;i++)
            {
              NB_initiate_ra_proc(UL_INFO->module_id,
                                  UL_INFO->CC_id,
                                  UL_INFO->frame,
                                  (UL_INFO->NRACH.nrach_pdu_list+i)->nrach_indication_rel13.initial_sc,
                                  //timing_offset = Timing_advance * 16
                                  (UL_INFO->NRACH.nrach_pdu_list+i)->nrach_indication_rel13.timing_advance * 16,
                                  UL_INFO->subframe
                                  );
            }
        }
        if(UL_INFO->RX_NPUSCH.number_of_pdus>0)
          {
            /*If there is a Uplink SDU (even MSG3, NAK) need to send to MAC*/
            for(i=0;i<UL_INFO->RX_NPUSCH.number_of_pdus;i++)
              {
                /*For MSG3, Normal Uplink Data, NAK*/
                NB_rx_sdu(UL_INFO->module_id,
                          UL_INFO->CC_id,
                          UL_INFO->frame,
                          UL_INFO->subframe,
                          (UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti,
                          (UL_INFO->RX_NPUSCH.rx_pdu_list+i)->data,
                          (UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_indication_rel8.length,
                          (UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.harq_pid
                          );


              }

          }

    //NB_eNB_dlsch_ulsch_scheduler(UL_INFO.module_id,0,UL_INFO.frame,UL_INFO.subframe); TODO: to be implemented
}