diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h index 0e44a7f8bd6f184923f7798791b933422768fc7f..695a9b3e31640d0f94fff458c58f6ada0d01504a 100644 --- a/openair1/PHY/defs.h +++ b/openair1/PHY/defs.h @@ -332,8 +332,12 @@ typedef struct RU_proc_t_s { int instance_cnt_fep; /// \internal This variable is protected by \ref mutex_fep int instance_cnt_feptx; + /// \internal This variable is protected by \ref mutex_ru_thread + int instance_cnt_ru; /// pthread structure for RU FH processing thread pthread_t pthread_FH; + /// pthread structure for RU control thread + pthread_t pthread_ctrl; /// pthread structure for RU prach processing thread pthread_t pthread_prach; #ifdef Rel14 @@ -354,6 +358,8 @@ typedef struct RU_proc_t_s { int first_tx; /// pthread attributes for RU FH processing thread pthread_attr_t attr_FH; + /// pthread attributes for RU control thread + pthread_attr_t attr_ctrl; /// pthread attributes for RU prach pthread_attr_t attr_prach; #ifdef Rel14 @@ -398,6 +404,8 @@ typedef struct RU_proc_t_s { pthread_cond_t cond_feptx; /// condition variable for eNB signal pthread_cond_t cond_eNBs; + /// condition variable for ru_thread + pthread_cond_t cond_ru_thread; /// mutex for RU FH pthread_mutex_t mutex_FH; /// mutex for RU prach @@ -416,6 +424,8 @@ typedef struct RU_proc_t_s { pthread_mutex_t mutex_fep; /// mutex for fep TX worker thread pthread_mutex_t mutex_feptx; + /// mutex for ru_thread + pthread_mutex_t mutex_ru_thread; /// symbol mask for IF4p5 reception per subframe uint32_t symbol_mask[10]; /// number of slave threads @@ -773,6 +783,8 @@ typedef struct RU_t_s{ uint8_t seqno; /// initial timestamp used as an offset make first real timestamp 0 openair0_timestamp ts_offset; + /// Current state of the RU + rru_state_t state; /// process scheduling variables RU_proc_t proc; /// stats thread pthread descriptor @@ -1457,9 +1469,19 @@ typedef enum { RAU_tick=0, RRU_capabilities=1, RRU_config=2, - RRU_MSG_max_num=3 + RRU_MSG_max_num=3, + RRU_config_ok=4, + RRU_start=5, + RRU_stop=6 } rru_config_msg_type_t; +typedef enum { + RU_IDLE=0, + RU_CONFIG=1, + RU_READY=2, + RU_RUN=3 +} rru_state_t; + typedef struct RRU_CONFIG_msg_s { rru_config_msg_type_t type; ssize_t len;