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
canghaiwuhen
OpenXG-RAN
Commits
6db9fca1
Commit
6db9fca1
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
3aaa152e
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 @
6db9fca1
...
...
@@ -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 @
6db9fca1
...
...
@@ -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 @
6db9fca1
...
...
@@ -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 @
6db9fca1
...
...
@@ -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 @
6db9fca1
...
...
@@ -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 @
6db9fca1
This diff is collapsed.
Click to expand it.
openair2/MCE_APP/mce_app.c
View file @
6db9fca1
...
...
@@ -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