diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c index 8d9997e7460559a48ffd27fc1b06c0067da83a50..ce838766ee457c82ef8e484408e7a70ff9783ba7 100644 --- a/openair2/ENB_APP/enb_agent_common.c +++ b/openair2/ENB_APP/enb_agent_common.c @@ -292,13 +292,18 @@ int get_current_time_ms (mid_t mod_id, int subframe_flag){ } -int get_current_frame (mid_t mod_id) { - +unsigned int get_current_frame (mid_t mod_id) { + + #warning "SFN will not be in [0-1023] when oaisim is used" return ((eNB_MAC_INST *)enb[mod_id])->frame; } -int get_current_subframe (mid_t mod_id) { +unsigned int get_current_system_frame_num(mid_t mod_id) { + return (get_current_frame(mod_id) %1024); +} + +unsigned int get_current_subframe (mid_t mod_id) { return ((eNB_MAC_INST *)enb[mod_id])->subframe; @@ -306,12 +311,16 @@ int get_current_subframe (mid_t mod_id) { uint16_t get_sfn_sf (mid_t mod_id) { - uint16_t frame, subframe; - uint16_t sfn_sf; + frame_t frame; + sub_frame_t subframe; + uint16_t sfn_sf, frame_mask, sf_mask; + + frame = (frame_t) get_current_system_frame_num(mod_id); + subframe = (sub_frame_t) get_current_subframe(mod_id); + frame_mask = ((1<<12) - 1); + sf_mask = ((1<<4) -1); + sfn_sf = (subframe & sf_mask) | ((frame & frame_mask) << 4); - frame = (uint16_t) get_current_frame(mod_id); - subframe = (uint16_t) get_current_subframe(mod_id); - sfn_sf = (subframe << 12) | frame; return sfn_sf; } diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h index f4add1ae2e2816bf607f46d5acfea86030ed62c8..4762637b66d5a19b37d6c71695bf31e687239da8 100644 --- a/openair2/ENB_APP/enb_agent_common.h +++ b/openair2/ENB_APP/enb_agent_common.h @@ -109,9 +109,15 @@ void set_enb_vars(mid_t mod_id, ran_name_t ran); int get_current_time_ms (mid_t mod_id, int subframe_flag); -int get_current_frame(mid_t mod_id); +/*Return the current frame number + *Could be using implementation specific numbering of frames + */ +unsigned int get_current_frame(mid_t mod_id); + +/*Return the current SFN (0-1023)*/ +unsigned int get_current_system_frame_num(mid_t mod_id); -int get_current_subframe(mid_t mod_id); +unsigned int get_current_subframe(mid_t mod_id); /*Return the frame and subframe number in compact 16-bit format. Bits 0-3 subframe, rest for frame. Required by progRAN protocol*/