From 78bc736c19584dcac9106ad33cbaa39e0b9d05d2 Mon Sep 17 00:00:00 2001 From: Xenofon Foukas <x.foukas@sms.ed.ac.uk> Date: Tue, 19 Jan 2016 14:51:20 +0000 Subject: [PATCH] Fixed frame-subframe numbering bug --- openair2/ENB_APP/enb_agent_common.c | 25 +++++++++++++++++-------- openair2/ENB_APP/enb_agent_common.h | 10 ++++++++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c index 8d9997e746..ce838766ee 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 f4add1ae2e..4762637b66 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*/ -- GitLab