Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
6a77dcd6
Commit
6a77dcd6
authored
Jul 21, 2020
by
Javier Morgade
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fembms: code cleanup
Signed-off-by:
Javier Morgade
<
javier.morgade@ieee.org
>
parent
ae37ee2c
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
351 additions
and
31 deletions
+351
-31
openair2/LAYER2/MAC/eNB_scheduler_mch.c
openair2/LAYER2/MAC/eNB_scheduler_mch.c
+1
-1
openair2/LAYER2/MAC/ue_procedures.c
openair2/LAYER2/MAC/ue_procedures.c
+3
-3
openair2/M2AP/m2ap_MCE_interface_management.c
openair2/M2AP/m2ap_MCE_interface_management.c
+133
-10
openair2/M2AP/m2ap_MCE_interface_management.h
openair2/M2AP/m2ap_MCE_interface_management.h
+2
-8
openair2/M2AP/m2ap_eNB.c
openair2/M2AP/m2ap_eNB.c
+18
-0
openair2/M2AP/m2ap_eNB_interface_management.c
openair2/M2AP/m2ap_eNB_interface_management.c
+191
-7
openair2/MCE_APP/mce_app.c
openair2/MCE_APP/mce_app.c
+3
-2
No files found.
openair2/LAYER2/MAC/eNB_scheduler_mch.c
View file @
6a77dcd6
...
...
@@ -921,7 +921,7 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP,
((
MSI_ELEMENT
*
)
msi_ptr
)
->
stop_sf_LSB
=
0xFF
;
msi_pmch_stop
=
0
;
}
LOG_I
(
MAC
,
"frameP %d, subframeP %d LCID %
l
d rlc_status.bytes_in_buffer %d stop_sf_LSB %d stop_sf_MSB %d msi_pmch_stop %d sf_AllocEnd_r9 %ld, msi_length %d
\n
"
,
frameP
,
subframeP
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
lcid
,
rlc_status
.
bytes_in_buffer
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
stop_sf_LSB
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
stop_sf_MSB
,
msi_pmch_stop
,
cc
->
pmch_Config
[
mbms_mch_i
]
->
sf_AllocEnd_r9
,
msi_length
);
LOG_I
(
MAC
,
"frameP %d, subframeP %d LCID %d rlc_status.bytes_in_buffer %d stop_sf_LSB %d stop_sf_MSB %d msi_pmch_stop %d sf_AllocEnd_r9 %ld, msi_length %d
\n
"
,
frameP
,
subframeP
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
lcid
,
rlc_status
.
bytes_in_buffer
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
stop_sf_LSB
,((
MSI_ELEMENT
*
)
msi_ptr
)
->
stop_sf_MSB
,
msi_pmch_stop
,
cc
->
pmch_Config
[
mbms_mch_i
]
->
sf_AllocEnd_r9
,
msi_length
);
}
memcpy
((
char
*
)
buffer_pointer
,
...
...
openair2/LAYER2/MAC/ue_procedures.c
View file @
6a77dcd6
...
...
@@ -74,7 +74,7 @@ extern module_id_t next_Mod_id;
int
mbms_rab_id
=
2047
;
//[8] = {2047,2047,2047,2047,2047,2047,2047,2047};
static
int
mbms_mch_i
=
0
;
static
int
num_msi_per_CSA
[
28
];
//
static int num_msi_per_CSA[28];
/*
...
...
@@ -995,14 +995,14 @@ int ue_query_p_mch_info(module_id_t module_idP, uint32_t frameP, uint32_t subfra
//static int common_num_sf_alloc=0;
//static int x=0;
int
ue_query_mch_fembms
(
module_id_t
module_idP
,
uint8_t
CC_id
,
uint32_t
frameP
,
uint32_t
subframe
,
uint8_t
eNB_index
,
uint8_t
*
sync_area
,
uint8_t
*
mcch_active
)
{
int
i
=
0
,
j
=
0
,
/* ii = 0,*/
msi_pos
=
-
1
,
mcch_mcs
=
-
1
,
mtch_mcs
=
-
1
,
l
=
0
,
ii
=
0
;
int
i
=
0
,
j
=
0
,
/* ii = 0,*/
msi_pos
=
-
1
,
mcch_mcs
=
-
1
,
mtch_mcs
=
-
1
,
l
=
0
/*,ii=0*/
;
int
mcch_flag
=
0
,
mtch_flag
=
0
,
msi_flag
=
0
;
int
alloc_offset
=
0
;
uint32_t
period
;
//uint16_t num_non_mbsfn_SubframeConfig=0;
long
mch_scheduling_period
=
-
1
;
uint8_t
mch_lcid
=
0
;
int
first_pos
=
0
;
//
int first_pos=0;
if
(
UE_mac_inst
[
module_idP
].
non_mbsfn_SubframeConfig
==
NULL
)
return
-
1
;
...
...
openair2/M2AP/m2ap_MCE_interface_management.c
View file @
6a77dcd6
...
...
@@ -521,6 +521,7 @@ int MCE_send_MBMS_SCHEDULING_INFORMATION(instance_t instance, /*uint32_t assoc_i
mbsfn_subframe_configuration
->
radioframeAllocationPeriod
=
m2ap_mbms_scheduling_information
->
mbms_area_config_list
[
i
].
mbms_sf_config_list
[
j
].
radioframe_allocation_period
;
mbsfn_subframe_configuration
->
radioframeAllocationOffset
=
m2ap_mbms_scheduling_information
->
mbms_area_config_list
[
i
].
mbms_sf_config_list
[
j
].
radioframe_allocation_offset
;
if
(
m2ap_mbms_scheduling_information
->
mbms_area_config_list
[
i
].
mbms_sf_config_list
[
j
].
is_four_sf
){
LOG_I
(
M2AP
,
"is_four_sf
\n
"
);
mbsfn_subframe_configuration
->
subframeAllocation
.
present
=
M2AP_MBSFN_Subframe_Configuration__subframeAllocation_PR_fourFrames
;
mbsfn_subframe_configuration
->
subframeAllocation
.
choice
.
oneFrame
.
buf
=
MALLOC
(
3
);
mbsfn_subframe_configuration
->
subframeAllocation
.
choice
.
oneFrame
.
buf
[
2
]
=
((
m2ap_mbms_scheduling_information
->
mbms_area_config_list
[
i
].
mbms_sf_config_list
[
j
].
subframe_allocation
)
&
0xFF
);
...
...
@@ -530,6 +531,7 @@ int MCE_send_MBMS_SCHEDULING_INFORMATION(instance_t instance, /*uint32_t assoc_i
mbsfn_subframe_configuration
->
subframeAllocation
.
choice
.
oneFrame
.
bits_unused
=
0
;
}
else
{
LOG_I
(
M2AP
,
"is_one_sf
\n
"
);
mbsfn_subframe_configuration
->
subframeAllocation
.
present
=
M2AP_MBSFN_Subframe_Configuration__subframeAllocation_PR_oneFrame
;
mbsfn_subframe_configuration
->
subframeAllocation
.
choice
.
oneFrame
.
buf
=
MALLOC
(
1
);
mbsfn_subframe_configuration
->
subframeAllocation
.
choice
.
oneFrame
.
size
=
1
;
...
...
@@ -1357,11 +1359,10 @@ int MCE_handle_MBMS_SESSION_UPDATE_RESPONSE(instance_t instance,
int
MCE_handle_MBMS_SESSION_UPDATE_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
){
int
MCE_handle_MBMS_SESSION_UPDATE_FAILURE
(
instance_t
instance
,
module_id_t
du_mod_idP
){
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
}
/*
...
...
@@ -1378,16 +1379,138 @@ int MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE(instance_t instance,
uint32_t
assoc_id
,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
){
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
//int i;
//AssertFatal(1==0,"Not implemented yet\n");
LOG_D
(
M2AP
,
"MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE
\n
"
);
AssertFatal
(
pdu
->
present
==
M2AP_M2AP_PDU_PR_successfulOutcome
,
"pdu->present != M2AP_M2AP_PDU_PR_successfulOutcome
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
.
procedureCode
==
M2AP_ProcedureCode_id_mbmsServiceCounting
,
"pdu->choice.successfulOutcome->procedureCode != M2AP_ProcedureCode_id_mbmsServiceCounting
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
.
criticality
==
M2AP_Criticality_reject
,
"pdu->choice.successfulOutcome->criticality != M2AP_Criticality_reject
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
.
value
.
present
==
M2AP_SuccessfulOutcome__value_PR_MbmsServiceCountingResponse
,
"pdu->choice.successfulOutcome.value.present != M2AP_SuccessfulOutcome__value_PR_MbmsServiceCountingResponse
\n
"
);
M2AP_MbmsServiceCountingResponse_t
*
in
=
&
pdu
->
choice
.
successfulOutcome
.
value
.
choice
.
MbmsServiceCountingResponse
;
//M2AP_MbmsServiceCountingResponse_Ies_t *ie;
//int MCE_MBMS_M2AP_ID=-1;
//int ENB_MBMS_M2AP_ID=-1;
MessageDef
*
msg_g
=
itti_alloc_new_message
(
TASK_M2AP_MCE
,
M2AP_MBMS_SERVICE_COUNTING_RESP
);
//TODO
LOG_D
(
M2AP
,
"M2AP: MbmsServiceCounting-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
for
(
int
i
=
0
;
i
<
in
->
protocolIEs
.
list
.
count
;
i
++
)
{
//ie = in->protocolIEs.list.array[i];
// switch (ie->id) {
// case M2AP_ProtocolIE_ID_id_MCE_MBMS_M2AP_ID:
// AssertFatal(ie->criticality == M2AP_Criticality_reject,
// "ie->criticality != M2AP_Criticality_reject\n");
// AssertFatal(ie->value.present == M2AP_SessionStartResponse_Ies__value_PR_MCE_MBMS_M2AP_ID,
// "ie->value.present != M2AP_sessionStartResponse_IEs__value_PR_MCE_MBMS_M2AP_ID\n");
// MCE_MBMS_M2AP_ID=ie->value.choice.MCE_MBMS_M2AP_ID;
// LOG_D(M2AP, "M2AP: SessionStart-Resp: MCE_MBMS_M2AP_ID %d\n",
// MCE_MBMS_M2AP_ID);
// break;
// case M2AP_ProtocolIE_ID_id_ENB_MBMS_M2AP_ID:
// AssertFatal(ie->criticality == M2AP_Criticality_reject,
// "ie->criticality != M2AP_Criticality_reject\n");
// AssertFatal(ie->value.present == M2AP_SessionStartResponse_Ies__value_PR_ENB_MBMS_M2AP_ID,
// "ie->value.present != M2AP_sessionStartResponse_Ies__value_PR_ENB_MBMS_M2AP_ID\n");
// ENB_MBMS_M2AP_ID=ie->value.choice.ENB_MBMS_M2AP_ID;
// LOG_D(M2AP, "M2AP: SessionStart-Resp: ENB_MBMS_M2AP_ID %d\n",
// ENB_MBMS_M2AP_ID);
// break;
// }
}
//AssertFatal(MCE_MBMS_M2AP_ID!=-1,"MCE_MBMS_M2AP_ID was not sent\n");
//AssertFatal(ENB_MBMS_M2AP_ID!=-1,"ENB_MBMS_M2AP_ID was not sent\n");
//M2AP_SESSION_START_RESP(msg_p).
// MSC_LOG_RX_MESSAGE(
// MSC_M2AP_MCE,
// MSC_M2AP_ENB,
//return 0;
// 0,
// 0,
// MSC_AS_TIME_FMT" MCE_handle_M2_SESSION_START_RESPONSE successfulOutcome assoc_id %d",
// 0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
// assoc_id);
//
//LOG_D(M2AP, "Sending ITTI message to ENB_APP with assoc_id (%d->%d)\n",
//assoc_id,ENB_MODULE_ID_TO_INSTANCE(assoc_id));
itti_send_msg_to_task
(
TASK_MCE_APP
,
ENB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_g
);
return
0
;
}
int
MCE_handle_MBMS_SESSION_COUNTING_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
){
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
int
MCE_handle_MBMS_SESSION_COUNTING_FAILURE
(
instance_t
instance
,
module_id_t
du_mod_idP
){
M2AP_M2AP_PDU_t
pdu
;
M2AP_MbmsServiceCountingRequest_t
*
out
;
M2AP_MbmsServiceCountingRequest_Ies_t
*
ie
;
uint8_t
*
buffer
;
uint32_t
len
;
//int i=0;
//int j=0;
/* Create */
/* 0. pdu Type */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
pdu
.
present
=
M2AP_M2AP_PDU_PR_initiatingMessage
;
//pdu.choice.initiatingMessage = (M2AP_InitiatingMessage_t *)calloc(1, sizeof(M2AP_InitiatingMessage_t));
pdu
.
choice
.
initiatingMessage
.
procedureCode
=
M2AP_ProcedureCode_id_mbmsServiceCounting
;
pdu
.
choice
.
initiatingMessage
.
criticality
=
M2AP_Criticality_reject
;
pdu
.
choice
.
initiatingMessage
.
value
.
present
=
M2AP_InitiatingMessage__value_PR_MbmsServiceCountingRequest
;
out
=
&
pdu
.
choice
.
initiatingMessage
.
value
.
choice
.
MbmsServiceCountingRequest
;
/* mandatory */
/* c1. MCCH_Update_Time */
//long
ie
=
(
M2AP_MbmsServiceCountingRequest_Ies_t
*
)
calloc
(
1
,
sizeof
(
M2AP_MbmsSchedulingInformation_Ies_t
));
ie
->
id
=
M2AP_ProtocolIE_ID_id_MCCH_Update_Time
;
ie
->
criticality
=
M2AP_Criticality_reject
;
ie
->
value
.
present
=
M2AP_MbmsServiceCountingRequest_Ies__value_PR_MCCH_Update_Time
;
//ie->value.choice.MCCH_Update_Time = ;
//ie->value.choice.MCCH_Update_Time = m2ap_mbms_scheduling_information->mcch_update_time;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c1. MCE_MBMS_M2AP_ID (integer value) */
//long
ie
=
(
M2AP_MbmsServiceCountingRequest_Ies_t
*
)
calloc
(
1
,
sizeof
(
M2AP_MbmsServiceCountingRequest_Ies_t
));
ie
->
id
=
M2AP_ProtocolIE_ID_id_MBSFN_Area_ID
;
ie
->
criticality
=
M2AP_Criticality_reject
;
ie
->
value
.
present
=
M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBSFN_Area_ID
;
//ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //?
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c2. TMGI (integrer value) */
ie
=
(
M2AP_MbmsServiceCountingRequest_Ies_t
*
)
calloc
(
1
,
sizeof
(
M2AP_MbmsServiceCountingRequest_Ies_t
));
ie
->
id
=
M2AP_ProtocolIE_ID_id_MBMS_Counting_Request_Session
;
ie
->
criticality
=
M2AP_Criticality_reject
;
ie
->
value
.
present
=
M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBMS_Counting_Request_Session
;
//M2AP_MBMS_Counting_Request_Session_t * m2ap_mbms_counting_request_session = &ie->value.choice.MBMS_Counting_Request_Session;
//&ie->choice.TMGI.pLMN_Identity);
//INT16_TO_OCTET_STRING(0,&ie->choice.TMGI.serviceId);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
if
(
m2ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
M2AP
,
"Failed to encode MBMS Service Counting Results Report
\n
"
);
return
-
1
;
}
return
0
;
}
...
...
openair2/M2AP/m2ap_MCE_interface_management.h
View file @
6a77dcd6
...
...
@@ -150,10 +150,7 @@ int MCE_handle_MBMS_SESSION_UPDATE_RESPONSE(instance_t instance,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
);
int
MCE_handle_MBMS_SESSION_UPDATE_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
);
int
MCE_handle_MBMS_SESSION_UPDATE_FAILURE
(
instance_t
instance
,
module_id_t
du_mod_idP
);
/*
* Service Counting Request
...
...
@@ -165,10 +162,7 @@ int MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE(instance_t instance,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
);
int
MCE_handle_MBMS_SESSION_COUNTING_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
M2AP_M2AP_PDU_t
*
pdu
);
int
MCE_handle_MBMS_SESSION_COUNTING_FAILURE
(
instance_t
instance
,
module_id_t
du_mod_idP
);
/*
* Service Counting Results Report
*/
...
...
openair2/M2AP/m2ap_eNB.c
View file @
6a77dcd6
...
...
@@ -142,6 +142,22 @@ void m2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
sctp_new_association_resp
->
ulp_cnx_id
);
//m2ap_handle_m2_setup_message(instance_p, m2ap_enb_data_p,
// sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
sleep
(
4
);
int
index
;
/* Trying to connect to the provided list of eNB ip address */
for
(
index
=
0
;
index
<
instance_p
->
nb_m2
;
index
++
)
{
//M2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n",
// instance_id, instance->eNB_id);
m2ap_eNB_register_eNB
(
instance_p
,
&
instance_p
->
target_mce_m2_ip_address
[
index
],
&
instance_p
->
enb_m2_ip_address
,
instance_p
->
sctp_in_streams
,
instance_p
->
sctp_out_streams
,
instance_p
->
enb_port_for_M2C
,
instance_p
->
multi_sd
);
}
return
;
}
...
...
@@ -304,6 +320,8 @@ void m2ap_eNB_handle_register_eNB(instance_t instance,
DevCheck
(
new_instance
->
mcc
==
m2ap_register_eNB
->
mcc
,
new_instance
->
mcc
,
m2ap_register_eNB
->
mcc
,
0
);
DevCheck
(
new_instance
->
mnc
==
m2ap_register_eNB
->
mnc
,
new_instance
->
mnc
,
m2ap_register_eNB
->
mnc
,
0
);
M2AP_WARN
(
"eNB[%d] already registered
\n
"
,
instance
);
}
else
{
new_instance
=
calloc
(
1
,
sizeof
(
m2ap_eNB_instance_t
));
DevAssert
(
new_instance
!=
NULL
);
...
...
openair2/M2AP/m2ap_eNB_interface_management.c
View file @
6a77dcd6
This diff is collapsed.
Click to expand it.
openair2/MCE_APP/mce_app.c
View file @
6a77dcd6
...
...
@@ -372,7 +372,8 @@ void *MCE_app_task(void *args_p) {
// /* Try to register each MCE with MCE each other */
if
(
is_m3ap_MCE_enabled
()
/*&& !NODE_IS_DU(RC.rrc[0]->node_type)*/
)
{
///*m3_register_mce_pending =*/ MCE_app_register_m3 (mce_id_start, mce_id_end);
///*m3_register_mce_pending =*/
MCE_app_register_m3
(
mce_id_start
,
mce_id_end
);
}
do
{
...
...
@@ -627,7 +628,7 @@ void *MCE_app_task(void *args_p) {
//}
/*m3_register_mce_pending =*/
MCE_app_register_m3
(
mce_id_start
,
mce_id_end
);
/*m3_register_mce_pending =*/
//
MCE_app_register_m3 (mce_id_start, mce_id_end);
//MCE_app_send_m2ap_session_start_req(0);
break
;
...
...
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