From cae6a91e0d073b768858d2c8be37378ce25c3d9c Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Fri, 13 Dec 2013 08:02:20 +0000 Subject: [PATCH] Added ITTI message polling in PHY procedures. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4700 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair1/SCHED/phy_procedures_lte_eNb.c | 32 ++++++++++++++++++++ openair1/SCHED/phy_procedures_lte_ue.c | 39 ++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 53127d166..8e30a7201 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -65,6 +65,10 @@ #include "assertions.h" +#if defined(ENABLE_ITTI) +# include "intertask_interface.h" +#endif + //#define DIAG_PHY #define NS_PER_SLOT 500000 @@ -3510,6 +3514,12 @@ int phy_procedures_RN_eNB_TX(unsigned char last_slot, unsigned char next_slot, r #endif void phy_procedures_eNB_lte(unsigned char last_slot, unsigned char next_slot,PHY_VARS_eNB *phy_vars_eNB,u8 abstraction_flag, relaying_type_t r_type, PHY_VARS_RN *phy_vars_rn) { +#if defined(ENABLE_ITTI) + MessageDef *msg_p; + const char *msg_name; + instance_t instance; + unsigned int Mod_id; +#endif /* if (phy_vars_eNB->frame >= 1000) mac_xface->macphy_exit("Exiting after 1000 Frames\n"); @@ -3518,6 +3528,28 @@ void phy_procedures_eNB_lte(unsigned char last_slot, unsigned char next_slot,PHY vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_ENB, phy_vars_eNB->frame); vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE,1); +#if defined(ENABLE_ITTI) + do { + // Checks if a message has been sent to PHY sub-task + itti_poll_msg ( TASK_PHY_ENB, &msg_p); + + if (msg_p != NULL) { + msg_name = ITTI_MSG_NAME (msg_p); + instance = ITTI_MSG_INSTANCE (msg_p); + Mod_id = instance; + + switch (ITTI_MSG_ID(msg_p)) { + + default: + LOG_E(PHY, "[ENB %d] Received unexpected message %s\n", Mod_id, msg_name); + break; + } + + itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p); + } + } while(msg_p != NULL); +#endif + if ((((phy_vars_eNB->lte_frame_parms.frame_type == TDD)&&(subframe_select(&phy_vars_eNB->lte_frame_parms,next_slot>>1)==SF_DL))|| (phy_vars_eNB->lte_frame_parms.frame_type == FDD)) && ((next_slot&1)==0)) { #ifdef Rel10 diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index 091afe622..89d1879a8 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -82,6 +82,10 @@ fifo_dump_emos_UE emos_dump_UE; #include "UTIL/LOG/vcd_signal_dumper.h" +#if defined(ENABLE_ITTI) +# include "intertask_interface.h" +#endif + #ifndef OPENAIR2 //#define DIAG_PHY #endif @@ -2229,7 +2233,7 @@ int lte_ue_pdcch_procedures(u8 eNB_id,u8 last_slot, PHY_VARS_UE *phy_vars_ue,u8 int eNB_id_i = 1; u8 dual_stream_UE = 0; int ret=0; - u8 harq_pid; + u8 harq_pid = -1; int timing_advance; u8 pilot1,pilot2,pilot3; u8 i_mod = 0; @@ -3164,6 +3168,12 @@ int phy_procedures_RN_UE_RX(u8 last_slot, u8 next_slot, relaying_type_t r_type) #endif void phy_procedures_UE_lte(u8 last_slot, u8 next_slot, PHY_VARS_UE *phy_vars_ue,u8 eNB_id,u8 abstraction_flag,runmode_t mode, relaying_type_t r_type, PHY_VARS_RN *phy_vars_rn) { +#if defined(ENABLE_ITTI) + MessageDef *msg_p; + const char *msg_name; + instance_t instance; + unsigned int Mod_id; +#endif #undef DEBUG_PHY_PROC @@ -3187,6 +3197,33 @@ int phy_procedures_RN_UE_RX(u8 last_slot, u8 next_slot, relaying_type_t r_type) #endif #endif +#if defined(ENABLE_ITTI) + do { + // Checks if a message has been sent to PHY sub-task + itti_poll_msg ( TASK_PHY_UE, &msg_p); + + if (msg_p != NULL) { + msg_name = ITTI_MSG_NAME (msg_p); + instance = ITTI_MSG_INSTANCE (msg_p); + Mod_id = instance - NB_eNB_INST; + + switch (ITTI_MSG_ID(msg_p)) { + case PHY_FIND_CELL_REQ: + LOG_I(PHY, "[UE %d] Received %s from %s\n", Mod_id, msg_name); + + /* TODO process the message */ + break; + + default: + LOG_E(PHY, "[UE %d] Received unexpected message %s\n", Mod_id, msg_name); + break; + } + + itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p); + } + } while(msg_p != NULL); +#endif + if ((subframe_select(&phy_vars_ue->lte_frame_parms,next_slot>>1)==SF_UL)|| (phy_vars_ue->lte_frame_parms.frame_type == 0)){ phy_procedures_UE_TX(next_slot,phy_vars_ue,eNB_id,abstraction_flag,mode,r_type); -- GitLab