Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alex037yang
OpenXG-RAN
Commits
b702b415
Commit
b702b415
authored
Oct 24, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Split enb_config_reply->cell_conf message to PHY, MAC, RRC
parent
2623e3f2
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
209 additions
and
175 deletions
+209
-175
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+14
-0
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
+4
-0
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
+118
-2
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
+4
-0
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
+54
-1
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
+4
-0
openair2/ENB_APP/flexran_agent_common.c
openair2/ENB_APP/flexran_agent_common.c
+11
-172
No files found.
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
View file @
b702b415
...
@@ -1358,6 +1358,20 @@ int flexran_agent_register_mac_xface(mid_t mod_id)
...
@@ -1358,6 +1358,20 @@ int flexran_agent_register_mac_xface(mid_t mod_id)
return
0
;
return
0
;
}
}
void
flexran_agent_fill_mac_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
Protocol__FlexCellConfig
*
conf
)
{
if
(
!
conf
->
si_config
)
{
conf
->
si_config
=
malloc
(
sizeof
(
Protocol__FlexSiConfig
));
if
(
conf
->
si_config
)
protocol__flex_si_config__init
(
conf
->
si_config
);
}
if
(
conf
->
si_config
)
{
conf
->
si_config
->
sfn
=
flexran_get_current_system_frame_num
(
mod_id
);
conf
->
si_config
->
has_sfn
=
1
;
}
}
int
flexran_agent_unregister_mac_xface
(
mid_t
mod_id
)
int
flexran_agent_unregister_mac_xface
(
mid_t
mod_id
)
{
{
if
(
!
agent_mac_xface
[
mod_id
])
{
if
(
!
agent_mac_xface
[
mod_id
])
{
...
...
openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h
View file @
b702b415
...
@@ -83,6 +83,10 @@ void flexran_agent_send_update_mac_stats(mid_t mod_id);
...
@@ -83,6 +83,10 @@ void flexran_agent_send_update_mac_stats(mid_t mod_id);
/// Provide to the scheduler a pending dl_mac_config message
/// Provide to the scheduler a pending dl_mac_config message
void
flexran_agent_get_pending_dl_mac_config
(
mid_t
mod_id
,
Protocol__FlexranMessage
**
msg
);
void
flexran_agent_get_pending_dl_mac_config
(
mid_t
mod_id
,
Protocol__FlexranMessage
**
msg
);
/* Fill the MAC part of an cell_config message */
void
flexran_agent_fill_mac_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
Protocol__FlexCellConfig
*
conf
);
/*Register technology specific interface callbacks*/
/*Register technology specific interface callbacks*/
int
flexran_agent_register_mac_xface
(
mid_t
mod_id
);
int
flexran_agent_register_mac_xface
(
mid_t
mod_id
);
...
...
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.c
View file @
b702b415
...
@@ -26,17 +26,133 @@
...
@@ -26,17 +26,133 @@
*/
*/
#include "flexran_agent_phy.h"
#include "flexran_agent_phy.h"
#include "flexran_agent_ran_api.h"
/* Array containing the Agent-PHY interfaces */
/* Array containing the Agent-PHY interfaces */
AGENT_PHY_xface
*
agent_phy_xface
[
NUM_MAX_ENB
];
AGENT_PHY_xface
*
agent_phy_xface
[
NUM_MAX_ENB
];
int
flexran_agent_register_phy_xface
(
mid_t
mod_id
)
void
flexran_agent_fill_phy_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
{
Protocol__FlexCellConfig
*
conf
)
{
conf
->
phy_cell_id
=
flexran_get_cell_id
(
mod_id
,
cc_id
);
conf
->
has_phy_cell_id
=
1
;
conf
->
pusch_hopping_offset
=
flexran_get_hopping_offset
(
mod_id
,
cc_id
);
conf
->
has_pusch_hopping_offset
=
1
;
conf
->
hopping_mode
=
flexran_get_hopping_mode
(
mod_id
,
cc_id
);
conf
->
has_hopping_mode
=
1
;
conf
->
n_sb
=
flexran_get_n_SB
(
mod_id
,
cc_id
);
conf
->
has_n_sb
=
1
;
conf
->
phich_resource
=
flexran_get_phich_resource
(
mod_id
,
cc_id
);
conf
->
has_phich_resource
=
1
;
conf
->
phich_duration
=
flexran_get_phich_duration
(
mod_id
,
cc_id
);
conf
->
has_phich_duration
=
1
;
conf
->
init_nr_pdcch_ofdm_sym
=
flexran_get_num_pdcch_symb
(
mod_id
,
cc_id
);
conf
->
has_init_nr_pdcch_ofdm_sym
=
1
;
conf
->
dl_bandwidth
=
flexran_get_N_RB_DL
(
mod_id
,
cc_id
);
conf
->
has_dl_bandwidth
=
1
;
conf
->
ul_bandwidth
=
flexran_get_N_RB_UL
(
mod_id
,
cc_id
);
conf
->
has_ul_bandwidth
=
1
;
conf
->
ul_cyclic_prefix_length
=
flexran_get_ul_cyclic_prefix_length
(
mod_id
,
cc_id
);
conf
->
has_ul_cyclic_prefix_length
=
1
;
conf
->
dl_cyclic_prefix_length
=
flexran_get_dl_cyclic_prefix_length
(
mod_id
,
cc_id
);
conf
->
has_dl_cyclic_prefix_length
=
1
;
conf
->
antenna_ports_count
=
flexran_get_antenna_ports
(
mod_id
,
cc_id
);
conf
->
has_antenna_ports_count
=
1
;
conf
->
duplex_mode
=
flexran_get_duplex_mode
(
mod_id
,
cc_id
);
conf
->
has_duplex_mode
=
1
;
conf
->
subframe_assignment
=
flexran_get_subframe_assignment
(
mod_id
,
cc_id
);
conf
->
has_subframe_assignment
=
1
;
conf
->
special_subframe_patterns
=
flexran_get_special_subframe_assignment
(
mod_id
,
cc_id
);
conf
->
has_special_subframe_patterns
=
1
;
//TODO: Fill in with actual value, The MBSFN radio frame period
conf
->
n_mbsfn_subframe_config_rfperiod
=
0
;
uint32_t
*
elem_rfperiod
=
malloc
(
sizeof
(
uint32_t
)
*
conf
->
n_mbsfn_subframe_config_rfperiod
);
if
(
elem_rfperiod
)
for
(
int
j
=
0
;
j
<
conf
->
n_mbsfn_subframe_config_rfperiod
;
j
++
)
elem_rfperiod
[
j
]
=
1
;
conf
->
mbsfn_subframe_config_rfperiod
=
elem_rfperiod
;
//TODO: Fill in with actual value, The MBSFN radio frame offset
conf
->
n_mbsfn_subframe_config_rfoffset
=
0
;
uint32_t
*
elem_rfoffset
=
malloc
(
sizeof
(
uint32_t
)
*
conf
->
n_mbsfn_subframe_config_rfoffset
);
if
(
elem_rfoffset
)
for
(
int
j
=
0
;
j
<
conf
->
n_mbsfn_subframe_config_rfoffset
;
j
++
)
elem_rfoffset
[
j
]
=
1
;
conf
->
mbsfn_subframe_config_rfoffset
=
elem_rfoffset
;
//TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
conf
->
n_mbsfn_subframe_config_sfalloc
=
0
;
uint32_t
*
elem_sfalloc
=
malloc
(
sizeof
(
uint32_t
)
*
conf
->
n_mbsfn_subframe_config_sfalloc
);
if
(
elem_sfalloc
)
for
(
int
j
=
0
;
j
<
conf
->
n_mbsfn_subframe_config_sfalloc
;
j
++
)
elem_sfalloc
[
j
]
=
1
;
conf
->
mbsfn_subframe_config_sfalloc
=
elem_sfalloc
;
conf
->
prach_config_index
=
flexran_get_prach_ConfigIndex
(
mod_id
,
cc_id
);
conf
->
has_prach_config_index
=
1
;
conf
->
prach_freq_offset
=
flexran_get_prach_FreqOffset
(
mod_id
,
cc_id
);
conf
->
has_prach_freq_offset
=
1
;
conf
->
max_harq_msg3tx
=
flexran_get_maxHARQ_Msg3Tx
(
mod_id
,
cc_id
);
conf
->
has_max_harq_msg3tx
=
1
;
conf
->
n1pucch_an
=
flexran_get_n1pucch_an
(
mod_id
,
cc_id
);
conf
->
has_n1pucch_an
=
1
;
conf
->
deltapucch_shift
=
flexran_get_deltaPUCCH_Shift
(
mod_id
,
cc_id
);
conf
->
has_deltapucch_shift
=
1
;
conf
->
nrb_cqi
=
flexran_get_nRB_CQI
(
mod_id
,
cc_id
);
conf
->
has_nrb_cqi
=
1
;
conf
->
srs_subframe_config
=
flexran_get_srs_SubframeConfig
(
mod_id
,
cc_id
);
conf
->
has_srs_subframe_config
=
1
;
conf
->
srs_bw_config
=
flexran_get_srs_BandwidthConfig
(
mod_id
,
cc_id
);
conf
->
has_srs_bw_config
=
1
;
conf
->
srs_mac_up_pts
=
flexran_get_srs_MaxUpPts
(
mod_id
,
cc_id
);
conf
->
has_srs_mac_up_pts
=
1
;
conf
->
dl_freq
=
flexran_agent_get_operating_dl_freq
(
mod_id
,
cc_id
);
conf
->
has_dl_freq
=
1
;
conf
->
ul_freq
=
flexran_agent_get_operating_ul_freq
(
mod_id
,
cc_id
);
conf
->
has_ul_freq
=
1
;
conf
->
eutra_band
=
flexran_agent_get_operating_eutra_band
(
mod_id
,
cc_id
);
conf
->
has_eutra_band
=
1
;
conf
->
dl_pdsch_power
=
flexran_agent_get_operating_pdsch_refpower
(
mod_id
,
cc_id
);
conf
->
has_dl_pdsch_power
=
1
;
conf
->
enable_64qam
=
flexran_get_enable64QAM
(
mod_id
,
cc_id
);
conf
->
has_enable_64qam
=
1
;
}
int
flexran_agent_register_phy_xface
(
mid_t
mod_id
)
{
if
(
agent_phy_xface
[
mod_id
])
{
if
(
agent_phy_xface
[
mod_id
])
{
LOG_E
(
PHY
,
"PHY agent for eNB %d is already registered
\n
"
,
mod_id
);
LOG_E
(
PHY
,
"PHY agent for eNB %d is already registered
\n
"
,
mod_id
);
return
-
1
;
return
-
1
;
}
}
AGENT_PHY_xface
*
xface
=
malloc
(
sizeof
(
AGENT_PHY_xface
));
AGENT_PHY_xface
*
xface
=
malloc
(
sizeof
(
AGENT_PHY_xface
));
if
(
!
xface
)
{
if
(
!
xface
)
{
LOG_E
(
FLEXRAN_AGENT
,
"could not allocate memory for PHY agent xface %d
\n
"
,
mod_id
);
LOG_E
(
FLEXRAN_AGENT
,
"could not allocate memory for PHY agent xface %d
\n
"
,
mod_id
);
return
-
1
;
return
-
1
;
...
...
openair2/ENB_APP/CONTROL_MODULES/PHY/flexran_agent_phy.h
View file @
b702b415
...
@@ -45,6 +45,10 @@
...
@@ -45,6 +45,10 @@
* FlexRAN agent - technology PHY API
* FlexRAN agent - technology PHY API
**********************************/
**********************************/
/* Fill the PHY part of an cell_config message */
void
flexran_agent_fill_phy_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
Protocol__FlexCellConfig
*
conf
);
/* Register technology specific interface callbacks */
/* Register technology specific interface callbacks */
int
flexran_agent_register_phy_xface
(
mid_t
mod_id
);
int
flexran_agent_register_phy_xface
(
mid_t
mod_id
);
...
...
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
View file @
b702b415
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
*/
*/
#include "flexran_agent_rrc.h"
#include "flexran_agent_rrc.h"
#include "flexran_agent_ran_api.h"
#include "liblfds700.h"
#include "liblfds700.h"
...
@@ -662,6 +662,59 @@ int flexran_agent_register_rrc_xface(mid_t mod_id)
...
@@ -662,6 +662,59 @@ int flexran_agent_register_rrc_xface(mid_t mod_id)
return
0
;
return
0
;
}
}
void
flexran_agent_fill_rrc_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
Protocol__FlexCellConfig
*
conf
)
{
conf
->
cell_id
=
cc_id
;
conf
->
has_cell_id
=
1
;
if
(
!
conf
->
si_config
)
{
conf
->
si_config
=
malloc
(
sizeof
(
Protocol__FlexSiConfig
));
if
(
conf
->
si_config
)
protocol__flex_si_config__init
(
conf
->
si_config
);
}
if
(
conf
->
si_config
)
{
// TODO THIS IS DU RRC
conf
->
si_config
->
sib1_length
=
flexran_get_sib1_length
(
mod_id
,
cc_id
);
conf
->
si_config
->
has_sib1_length
=
1
;
conf
->
si_config
->
si_window_length
=
(
uint32_t
)
flexran_get_si_window_length
(
mod_id
,
cc_id
);
conf
->
si_config
->
has_si_window_length
=
1
;
conf
->
si_config
->
n_si_message
=
0
;
/* Protocol__FlexSiMessage **si_message; */
/* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
/* if(si_message == NULL) */
/* goto error; */
/* for(j = 0; j < si_config->n_si_message; j++){ */
/* si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
/* if(si_message[j] == NULL) */
/* goto error; */
/* protocol__flex_si_message__init(si_message[j]); */
/* //TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
/* si_message[j]->periodicity = 1; //SIPeriod */
/* si_message[j]->has_periodicity = 1; */
/* //TODO: Fill in with actual value, rhe length of the SI message in bytes */
/* si_message[j]->length = 10; */
/* si_message[j]->has_length = 1; */
/* } */
/* if(si_config->n_si_message > 0){ */
/* si_config->si_message = si_message; */
/* } */
}
conf
->
ra_response_window_size
=
flexran_get_ra_ResponseWindowSize
(
mod_id
,
cc_id
);
conf
->
has_ra_response_window_size
=
1
;
// belongs to MAC but is read in RRC
conf
->
mac_contention_resolution_timer
=
flexran_get_mac_ContentionResolutionTimer
(
mod_id
,
cc_id
);
conf
->
has_mac_contention_resolution_timer
=
1
;
conf
->
ul_pusch_power
=
flexran_agent_get_operating_pusch_p0
(
mod_id
,
cc_id
);
conf
->
has_ul_pusch_power
=
1
;
}
int
flexran_agent_unregister_rrc_xface
(
mid_t
mod_id
)
int
flexran_agent_unregister_rrc_xface
(
mid_t
mod_id
)
{
{
if
(
!
agent_rrc_xface
[
mod_id
])
{
if
(
!
agent_rrc_xface
[
mod_id
])
{
...
...
openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.h
View file @
b702b415
...
@@ -60,6 +60,10 @@ void flexran_trigger_rrc_measurements (mid_t mod_id, MeasResults_t *);
...
@@ -60,6 +60,10 @@ void flexran_trigger_rrc_measurements (mid_t mod_id, MeasResults_t *);
int
flexran_agent_rrc_stats_reply
(
mid_t
mod_id
,
const
report_config_t
*
report_config
,
Protocol__FlexUeStatsReport
**
ue_report
,
Protocol__FlexCellStatsReport
**
cell_report
);
int
flexran_agent_rrc_stats_reply
(
mid_t
mod_id
,
const
report_config_t
*
report_config
,
Protocol__FlexUeStatsReport
**
ue_report
,
Protocol__FlexCellStatsReport
**
cell_report
);
int
flexran_agent_rrc_destroy_stats_reply
(
Protocol__FlexranMessage
*
msg
);
int
flexran_agent_rrc_destroy_stats_reply
(
Protocol__FlexranMessage
*
msg
);
/* Fill the RRC part of an cell_config message */
void
flexran_agent_fill_rrc_cell_config
(
mid_t
mod_id
,
uint8_t
cc_id
,
Protocol__FlexCellConfig
*
conf
);
/*Register technology specific interface callbacks*/
/*Register technology specific interface callbacks*/
int
flexran_agent_register_rrc_xface
(
mid_t
mod_id
);
int
flexran_agent_register_rrc_xface
(
mid_t
mod_id
);
...
...
openair2/ENB_APP/flexran_agent_common.c
View file @
b702b415
...
@@ -35,6 +35,9 @@
...
@@ -35,6 +35,9 @@
#include "flexran_agent_extern.h"
#include "flexran_agent_extern.h"
#include "flexran_agent_net_comm.h"
#include "flexran_agent_net_comm.h"
#include "flexran_agent_ran_api.h"
#include "flexran_agent_ran_api.h"
#include "flexran_agent_phy.h"
#include "flexran_agent_mac.h"
#include "flexran_agent_rrc.h"
//#include "PHY/extern.h"
//#include "PHY/extern.h"
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/log.h"
...
@@ -807,8 +810,6 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
...
@@ -807,8 +810,6 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
Protocol__FlexEnbConfigRequest
*
enb_config_req_msg
=
input
->
enb_config_request_msg
;
Protocol__FlexEnbConfigRequest
*
enb_config_req_msg
=
input
->
enb_config_request_msg
;
xid
=
(
enb_config_req_msg
->
header
)
->
xid
;
xid
=
(
enb_config_req_msg
->
header
)
->
xid
;
int
i
,
j
;
Protocol__FlexEnbConfigReply
*
enb_config_reply_msg
;
Protocol__FlexEnbConfigReply
*
enb_config_reply_msg
;
enb_config_reply_msg
=
malloc
(
sizeof
(
Protocol__FlexEnbConfigReply
));
enb_config_reply_msg
=
malloc
(
sizeof
(
Protocol__FlexEnbConfigReply
));
if
(
enb_config_reply_msg
==
NULL
)
if
(
enb_config_reply_msg
==
NULL
)
...
@@ -827,178 +828,16 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
...
@@ -827,178 +828,16 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
cell_conf
=
malloc
(
sizeof
(
Protocol__FlexCellConfig
*
)
*
enb_config_reply_msg
->
n_cell_config
);
cell_conf
=
malloc
(
sizeof
(
Protocol__FlexCellConfig
*
)
*
enb_config_reply_msg
->
n_cell_config
);
if
(
cell_conf
==
NULL
)
if
(
cell_conf
==
NULL
)
goto
error
;
goto
error
;
for
(
i
=
0
;
i
<
enb_config_reply_msg
->
n_cell_config
;
i
++
){
for
(
i
nt
i
=
0
;
i
<
enb_config_reply_msg
->
n_cell_config
;
i
++
){
cell_conf
[
i
]
=
malloc
(
sizeof
(
Protocol__FlexCellConfig
));
cell_conf
[
i
]
=
malloc
(
sizeof
(
Protocol__FlexCellConfig
));
if
(
!
cell_conf
[
i
])
goto
error
;
protocol__flex_cell_config__init
(
cell_conf
[
i
]);
protocol__flex_cell_config__init
(
cell_conf
[
i
]);
if
(
flexran_agent_get_phy_xface
(
mod_id
))
cell_conf
[
i
]
->
phy_cell_id
=
1
;
flexran_agent_fill_phy_cell_config
(
mod_id
,
i
,
cell_conf
[
i
]);
cell_conf
[
i
]
->
has_phy_cell_id
=
flexran_get_cell_id
(
mod_id
,
i
);
if
(
flexran_agent_get_rrc_xface
(
mod_id
))
flexran_agent_fill_rrc_cell_config
(
mod_id
,
i
,
cell_conf
[
i
]);
cell_conf
[
i
]
->
cell_id
=
i
;
if
(
flexran_agent_get_mac_xface
(
mod_id
))
cell_conf
[
i
]
->
has_cell_id
=
1
;
flexran_agent_fill_mac_cell_config
(
mod_id
,
i
,
cell_conf
[
i
]);
cell_conf
[
i
]
->
pusch_hopping_offset
=
flexran_get_hopping_offset
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_pusch_hopping_offset
=
1
;
cell_conf
[
i
]
->
hopping_mode
=
flexran_get_hopping_mode
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_hopping_mode
=
1
;
cell_conf
[
i
]
->
n_sb
=
flexran_get_n_SB
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_n_sb
=
1
;
cell_conf
[
i
]
->
phich_resource
=
flexran_get_phich_resource
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_phich_resource
=
1
;
cell_conf
[
i
]
->
phich_duration
=
flexran_get_phich_duration
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_phich_duration
=
1
;
cell_conf
[
i
]
->
init_nr_pdcch_ofdm_sym
=
flexran_get_num_pdcch_symb
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_init_nr_pdcch_ofdm_sym
=
1
;
Protocol__FlexSiConfig
*
si_config
;
si_config
=
malloc
(
sizeof
(
Protocol__FlexSiConfig
));
if
(
si_config
==
NULL
)
goto
error
;
protocol__flex_si_config__init
(
si_config
);
si_config
->
sfn
=
flexran_get_current_system_frame_num
(
mod_id
);
si_config
->
has_sfn
=
1
;
si_config
->
sib1_length
=
flexran_get_sib1_length
(
mod_id
,
i
);
si_config
->
has_sib1_length
=
1
;
si_config
->
si_window_length
=
(
uint32_t
)
flexran_get_si_window_length
(
mod_id
,
i
);
si_config
->
has_si_window_length
=
1
;
si_config
->
n_si_message
=
0
;
/* Protocol__FlexSiMessage **si_message; */
/* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
/* if(si_message == NULL) */
/* goto error; */
/* for(j = 0; j < si_config->n_si_message; j++){ */
/* si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
/* if(si_message[j] == NULL) */
/* goto error; */
/* protocol__flex_si_message__init(si_message[j]); */
/* //TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
/* si_message[j]->periodicity = 1; //SIPeriod */
/* si_message[j]->has_periodicity = 1; */
/* //TODO: Fill in with actual value, rhe length of the SI message in bytes */
/* si_message[j]->length = 10; */
/* si_message[j]->has_length = 1; */
/* } */
/* if(si_config->n_si_message > 0){ */
/* si_config->si_message = si_message; */
/* } */
cell_conf
[
i
]
->
si_config
=
si_config
;
cell_conf
[
i
]
->
dl_bandwidth
=
flexran_get_N_RB_DL
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_dl_bandwidth
=
1
;
cell_conf
[
i
]
->
ul_bandwidth
=
flexran_get_N_RB_UL
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_ul_bandwidth
=
1
;
cell_conf
[
i
]
->
ul_cyclic_prefix_length
=
flexran_get_ul_cyclic_prefix_length
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_ul_cyclic_prefix_length
=
1
;
cell_conf
[
i
]
->
dl_cyclic_prefix_length
=
flexran_get_dl_cyclic_prefix_length
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_dl_cyclic_prefix_length
=
1
;
cell_conf
[
i
]
->
antenna_ports_count
=
flexran_get_antenna_ports
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_antenna_ports_count
=
1
;
cell_conf
[
i
]
->
duplex_mode
=
flexran_get_duplex_mode
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_duplex_mode
=
1
;
cell_conf
[
i
]
->
subframe_assignment
=
flexran_get_subframe_assignment
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_subframe_assignment
=
1
;
cell_conf
[
i
]
->
special_subframe_patterns
=
flexran_get_special_subframe_assignment
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_special_subframe_patterns
=
1
;
//TODO: Fill in with actual value, The MBSFN radio frame period
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfperiod
=
0
;
uint32_t
*
elem_rfperiod
;
elem_rfperiod
=
(
uint32_t
*
)
malloc
(
sizeof
(
uint32_t
)
*
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfperiod
);
if
(
elem_rfperiod
==
NULL
)
goto
error
;
for
(
j
=
0
;
j
<
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfperiod
;
j
++
){
elem_rfperiod
[
j
]
=
1
;
}
cell_conf
[
i
]
->
mbsfn_subframe_config_rfperiod
=
elem_rfperiod
;
//TODO: Fill in with actual value, The MBSFN radio frame offset
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfoffset
=
0
;
uint32_t
*
elem_rfoffset
;
elem_rfoffset
=
(
uint32_t
*
)
malloc
(
sizeof
(
uint32_t
)
*
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfoffset
);
if
(
elem_rfoffset
==
NULL
)
goto
error
;
for
(
j
=
0
;
j
<
cell_conf
[
i
]
->
n_mbsfn_subframe_config_rfoffset
;
j
++
){
elem_rfoffset
[
j
]
=
1
;
}
cell_conf
[
i
]
->
mbsfn_subframe_config_rfoffset
=
elem_rfoffset
;
//TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
cell_conf
[
i
]
->
n_mbsfn_subframe_config_sfalloc
=
0
;
uint32_t
*
elem_sfalloc
;
elem_sfalloc
=
(
uint32_t
*
)
malloc
(
sizeof
(
uint32_t
)
*
cell_conf
[
i
]
->
n_mbsfn_subframe_config_sfalloc
);
if
(
elem_sfalloc
==
NULL
)
goto
error
;
for
(
j
=
0
;
j
<
cell_conf
[
i
]
->
n_mbsfn_subframe_config_sfalloc
;
j
++
){
elem_sfalloc
[
j
]
=
1
;
}
cell_conf
[
i
]
->
mbsfn_subframe_config_sfalloc
=
elem_sfalloc
;
cell_conf
[
i
]
->
prach_config_index
=
flexran_get_prach_ConfigIndex
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_prach_config_index
=
1
;
cell_conf
[
i
]
->
prach_freq_offset
=
flexran_get_prach_FreqOffset
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_prach_freq_offset
=
1
;
cell_conf
[
i
]
->
ra_response_window_size
=
flexran_get_ra_ResponseWindowSize
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_ra_response_window_size
=
1
;
cell_conf
[
i
]
->
mac_contention_resolution_timer
=
flexran_get_mac_ContentionResolutionTimer
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_mac_contention_resolution_timer
=
1
;
cell_conf
[
i
]
->
max_harq_msg3tx
=
flexran_get_maxHARQ_Msg3Tx
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_max_harq_msg3tx
=
1
;
cell_conf
[
i
]
->
n1pucch_an
=
flexran_get_n1pucch_an
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_n1pucch_an
=
1
;
cell_conf
[
i
]
->
deltapucch_shift
=
flexran_get_deltaPUCCH_Shift
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_deltapucch_shift
=
1
;
cell_conf
[
i
]
->
nrb_cqi
=
flexran_get_nRB_CQI
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_nrb_cqi
=
1
;
cell_conf
[
i
]
->
srs_subframe_config
=
flexran_get_srs_SubframeConfig
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_srs_subframe_config
=
1
;
cell_conf
[
i
]
->
srs_bw_config
=
flexran_get_srs_BandwidthConfig
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_srs_bw_config
=
1
;
cell_conf
[
i
]
->
srs_mac_up_pts
=
flexran_get_srs_MaxUpPts
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_srs_mac_up_pts
=
1
;
cell_conf
[
i
]
->
dl_freq
=
flexran_agent_get_operating_dl_freq
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_dl_freq
=
1
;
cell_conf
[
i
]
->
ul_freq
=
flexran_agent_get_operating_ul_freq
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_ul_freq
=
1
;
cell_conf
[
i
]
->
eutra_band
=
flexran_agent_get_operating_eutra_band
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_eutra_band
=
1
;
cell_conf
[
i
]
->
dl_pdsch_power
=
flexran_agent_get_operating_pdsch_refpower
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_dl_pdsch_power
=
1
;
cell_conf
[
i
]
->
ul_pusch_power
=
flexran_agent_get_operating_pusch_p0
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_ul_pusch_power
=
1
;
cell_conf
[
i
]
->
enable_64qam
=
flexran_get_enable64QAM
(
mod_id
,
i
);
cell_conf
[
i
]
->
has_enable_64qam
=
1
;
cell_conf
[
i
]
->
carrier_index
=
i
;
cell_conf
[
i
]
->
carrier_index
=
i
;
cell_conf
[
i
]
->
has_carrier_index
=
1
;
cell_conf
[
i
]
->
has_carrier_index
=
1
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment