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
wangjie
OpenXG-RAN
Commits
7b1ee53a
Commit
7b1ee53a
authored
Feb 22, 2016
by
Xenofon Foukas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented UE config message (dummy)
parent
b6c9a4a7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
177 additions
and
2 deletions
+177
-2
openair2/ENB_APP/enb_agent_common.c
openair2/ENB_APP/enb_agent_common.c
+177
-2
No files found.
openair2/ENB_APP/enb_agent_common.c
View file @
7b1ee53a
...
...
@@ -293,13 +293,188 @@ int enb_agent_destroy_enb_config_reply(Protocol__ProgranMessage *msg) {
}
int
enb_agent_ue_config_reply
(
mid_t
mod_id
,
const
void
*
params
,
Protocol__ProgranMessage
**
msg
)
{
/* TODO: Create a reply progRAN message with the current UE configurations */
xid_t
xid
;
Protocol__ProgranMessage
*
input
=
(
Protocol__ProgranMessage
*
)
params
;
Protocol__PrpUeConfigRequest
*
ue_config_request_msg
=
input
->
ue_config_request_msg
;
xid
=
(
ue_config_request_msg
->
header
)
->
xid
;
int
i
;
Protocol__PrpHeader
*
header
;
if
(
prp_create_header
(
xid
,
PROTOCOL__PRP_TYPE__PRPT_GET_UE_CONFIG_REPLY
,
&
header
)
!=
0
)
goto
error
;
Protocol__PrpUeConfigReply
*
ue_config_reply_msg
;
ue_config_reply_msg
=
malloc
(
sizeof
(
Protocol__PrpUeConfigReply
));
if
(
ue_config_reply_msg
==
NULL
)
goto
error
;
protocol__prp_enb_config_reply__init
(
ue_config_reply_msg
);
ue_config_reply_msg
->
header
=
header
;
//TODO: Fill in the actual number of UEs that are currently connected
ue_config_reply_msg
->
n_ue_config
=
1
;
Protocol__PrpUeConfig
**
ue_config
;
if
(
ue_config_reply_msg
->
n_ue_config
>
0
)
{
ue_config
=
malloc
(
sizeof
(
Protocol__PrpUeConfig
*
)
*
ue_config_reply_msg
->
n_ue_config
);
if
(
ue_config
==
NULL
)
{
goto
error
;
}
for
(
i
=
0
;
i
<
ue_config_reply_msg
->
n_ue_config
;
i
++
)
{
ue_config
[
i
]
=
malloc
(
sizeof
(
Protocol__PrpUeConfig
*
));
protocol__prp_ue_config__init
(
ue_config
[
i
]);
//TODO: Set the RNTI of the ue with id i
ue_config
[
i
]
->
rnti
=
1
;
ue_config
[
i
]
->
has_rnti
=
1
;
//TODO: Set the DRX configuration (optional)
//Not supported for now, so we do not set it
//TODO: Set the time_alignment_timer
ue_config
[
i
]
->
time_alignment_timer
=
1
;
ue_config
[
i
]
->
has_time_alignment_timer
=
1
;
//TODO: Set the measurement gap configuration pattern
ue_config
[
i
]
->
meas_gap_config_pattern
=
1
;
ue_config
[
i
]
->
has_meas_gap_config_pattern
=
1
;
//TODO: Set the measurement gap offset if applicable
ue_config
[
i
]
->
meas_gap_config_sf_offset
=
1
;
ue_config
[
i
]
->
has_meas_gap_config_sf_offset
=
1
;
//TODO: Set the SPS configuration (Optional)
//Not supported for noe, so we do not set it
//TODO: Set the SR configuration (Optional)
//We do not set it for now
//TODO: Set the CQI configuration (Optional)
//We do not set it for now
//TODO: Set the transmission mode
ue_config
[
i
]
->
transmission_mode
=
1
;
ue_config
[
i
]
->
has_transmission_mode
=
1
;
//TODO: Set the aggregated bit-rate of the non-gbr bearer (UL)
ue_config
[
i
]
->
ue_aggregated_max_bitrate_ul
=
1
;
ue_config
[
i
]
->
has_ue_aggregated_max_bitrate_ul
=
1
;
//TODO: Set the aggregated bit-rate of the non-gbr bearer (DL)
ue_config
[
i
]
->
ue_aggregated_max_bitrate_dl
=
1
;
ue_config
[
i
]
->
has_ue_aggregated_max_bitrate_dl
=
1
;
//TODO: Set the UE capabilities
Protocol__PrpUeCapabilities
*
capabilities
;
capabilities
=
malloc
(
sizeof
(
Protocol__PrpUeCapabilities
));
protocol__prp_ue_capabilities__init
(
capabilities
);
//TODO: Set half duplex (FDD operation)
capabilities
->
has_half_duplex
=
1
;
capabilities
->
half_duplex
=
1
;
//TODO: Set intra-frame hopping flag
capabilities
->
has_intra_sf_hopping
=
1
;
capabilities
->
intra_sf_hopping
=
1
;
//TODO: Set support for type 2 hopping with n_sb > 1
capabilities
->
has_type2_sb_1
=
1
;
capabilities
->
type2_sb_1
=
1
;
//TODO: Set ue category
capabilities
->
has_ue_category
=
1
;
capabilities
->
ue_category
=
1
;
//TODO: Set UE support for resource allocation type 1
capabilities
->
has_res_alloc_type1
=
1
;
capabilities
->
res_alloc_type1
=
1
;
//Set the capabilites to the message
ue_config
[
i
]
->
capabilities
=
capabilities
;
//TODO: Set UE transmission antenna. One of the PRUTA_* values
ue_config
[
i
]
->
has_ue_transmission_antenna
=
1
;
ue_config
[
i
]
->
ue_transmission_antenna
=
PROTOCOL__PRP_UE_TRANSMISSION_ANTENNA__PRUTA_OPEN_LOOP
;
//TODO: Set tti bundling flag (See ts 36.321)
ue_config
[
i
]
->
has_tti_bundling
=
1
;
ue_config
[
i
]
->
tti_bundling
=
1
;
//TODO: Set the max HARQ retransmission for the UL
ue_config
[
i
]
->
has_max_harq_tx
=
1
;
ue_config
[
i
]
->
max_harq_tx
=
1
;
//TODO: Fill beta_offset_ack_index (TS 36.213)
ue_config
[
i
]
->
has_beta_offset_ack_index
=
1
;
ue_config
[
i
]
->
beta_offset_ack_index
=
1
;
//TODO: Fill beta_offset_ri_index (TS 36.213)
ue_config
[
i
]
->
has_beta_offset_ri_index
=
1
;
ue_config
[
i
]
->
beta_offset_ri_index
=
1
;
//TODO: Fill beta_offset_cqi_index (TS 36.213)
ue_config
[
i
]
->
has_beta_offset_cqi_index
=
1
;
ue_config
[
i
]
->
beta_offset_cqi_index
=
1
;
//TODO: Fill ack_nack_simultaneous_trans (TS 36.213)
ue_config
[
i
]
->
has_ack_nack_simultaneous_trans
=
1
;
ue_config
[
i
]
->
ack_nack_simultaneous_trans
=
1
;
//TODO: Fill simultaneous_ack_nack_cqi (TS 36.213)
ue_config
[
i
]
->
has_simultaneous_ack_nack_cqi
=
1
;
ue_config
[
i
]
->
simultaneous_ack_nack_cqi
=
1
;
//TODO: Set PRACRM_* value regarding aperiodic cqi report mode
ue_config
[
i
]
->
has_aperiodic_cqi_rep_mode
=
1
;
ue_config
[
i
]
->
aperiodic_cqi_rep_mode
=
PROTOCOL__PRP_APERIODIC_CQI_REPORT_MODE__PRACRM_RM12
;
//TODO: Set tdd_ack_nack_feedback
ue_config
[
i
]
->
has_tdd_ack_nack_feedback
=
1
;
ue_config
[
i
]
->
tdd_ack_nack_feedback
=
1
;
//TODO: Set ack_nack_repetition factor
ue_config
[
i
]
->
has_ack_nack_repetition_factor
=
1
;
ue_config
[
i
]
->
ack_nack_repetition_factor
=
1
;
//TODO: Set extended BSR size
ue_config
[
i
]
->
has_extended_bsr_size
=
1
;
ue_config
[
i
]
->
extended_bsr_size
=
1
;
//TODO: Set carrier aggregation support (boolean)
ue_config
[
i
]
->
has_ca_support
=
1
;
ue_config
[
i
]
->
ca_support
=
0
;
//TODO: Set cross carrier scheduling support (boolean)
ue_config
[
i
]
->
has_cross_carrier_sched_support
=
1
;
ue_config
[
i
]
->
cross_carrier_sched_support
=
0
;
//TODO: Set index of primary cell
ue_config
[
i
]
->
has_pcell_carrier_index
=
1
;
ue_config
[
i
]
->
pcell_carrier_index
=
1
;
//TODO: Set secondary cells configuration
// We do not set it for now. No carrier aggregation support
//TODO: Set deactivation timer for secondary cell
ue_config
[
i
]
->
has_scell_deactivation_timer
=
1
;
ue_config
[
i
]
->
scell_deactivation_timer
=
1
;
}
ue_config_reply_msg
->
ue_config
=
ue_config
;
}
*
msg
=
malloc
(
sizeof
(
Protocol__ProgranMessage
));
if
(
*
msg
==
NULL
)
goto
error
;
protocol__progran_message__init
(
*
msg
);
(
*
msg
)
->
msg_case
=
PROTOCOL__PROGRAN_MESSAGE__MSG_UE_CONFIG_REPLY_MSG
;
(
*
msg
)
->
msg_dir
=
PROTOCOL__PROGRAN_DIRECTION__SUCCESSFUL_OUTCOME
;
(
*
msg
)
->
ue_config_reply_msg
=
ue_config_reply_msg
;
return
0
;
error:
// TODO: Need to make proper error handling
if
(
header
!=
NULL
)
free
(
header
);
if
(
ue_config_reply_msg
!=
NULL
)
free
(
ue_config_reply_msg
);
if
(
*
msg
!=
NULL
)
free
(
*
msg
);
//LOG_E(MAC, "%s: an error occured\n", __FUNCTION__);
return
-
1
;
}
int
enb_agent_destroy_ue_config_reply
(
Protocol__ProgranMessage
*
msg
)
{
/*TODO: Deallocate memory for a dynamically allocated UE config message */
if
(
msg
->
msg_case
!=
PROTOCOL__PROGRAN_MESSAGE__MSG_UE_CONFIG_REPLY_MSG
)
goto
error
;
free
(
msg
->
ue_config_reply_msg
->
header
);
int
i
,
j
;
Protocol__PrpUeConfigReply
*
reply
=
msg
->
ue_config_reply_msg
;
for
(
i
=
0
;
i
<
reply
->
n_ue_config
;
i
++
){
free
(
reply
->
ue_config
[
i
]
->
capabilities
);
free
(
reply
->
ue_config
[
i
]);
}
free
(
reply
->
ue_config
);
free
(
reply
);
free
(
msg
);
return
0
;
error:
//LOG_E(MAC, "%s: an error occured\n", __FUNCTION__);
return
-
1
;
}
int
enb_agent_lc_config_reply
(
mid_t
mod_id
,
const
void
*
params
,
Protocol__ProgranMessage
**
msg
)
{
...
...
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