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
Michael Black
OpenXG-RAN
Commits
61f49be3
Commit
61f49be3
authored
Mar 09, 2023
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dead-code-f1-removal
parent
ff1749a5
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
29 additions
and
347 deletions
+29
-347
CMakeLists.txt
CMakeLists.txt
+0
-1
doc/Doxyfile
doc/Doxyfile
+0
-1
openair2/F1AP/f1ap_common.c
openair2/F1AP/f1ap_common.c
+17
-18
openair2/F1AP/f1ap_common.h
openair2/F1AP/f1ap_common.h
+3
-5
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+0
-4
openair2/F1AP/f1ap_cu_system_information.c
openair2/F1AP/f1ap_cu_system_information.c
+0
-31
openair2/F1AP/f1ap_cu_system_information.h
openair2/F1AP/f1ap_cu_system_information.h
+0
-31
openair2/F1AP/f1ap_cu_task.c
openair2/F1AP/f1ap_cu_task.c
+2
-2
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+2
-14
openair2/F1AP/f1ap_default_values.h
openair2/F1AP/f1ap_default_values.h
+0
-7
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+4
-4
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+0
-178
openair2/F1AP/f1ap_du_rrc_message_transfer.h
openair2/F1AP/f1ap_du_rrc_message_transfer.h
+0
-1
openair2/F1AP/f1ap_du_task.c
openair2/F1AP/f1ap_du_task.c
+1
-2
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+0
-1
openair2/F1AP/f1ap_itti_messaging.h
openair2/F1AP/f1ap_itti_messaging.h
+0
-3
openair2/F1AP/f1ap_messaging.h
openair2/F1AP/f1ap_messaging.h
+0
-44
No files found.
CMakeLists.txt
View file @
61f49be3
...
...
@@ -448,7 +448,6 @@ add_library(f1ap
${
F1AP_DIR
}
/f1ap_cu_interface_management.c
${
F1AP_DIR
}
/f1ap_cu_paging.c
${
F1AP_DIR
}
/f1ap_cu_rrc_message_transfer.c
${
F1AP_DIR
}
/f1ap_cu_system_information.c
${
F1AP_DIR
}
/f1ap_cu_task.c
${
F1AP_DIR
}
/f1ap_cu_ue_context_management.c
${
F1AP_DIR
}
/f1ap_cu_warning_message_transmission.c
...
...
doc/Doxyfile
View file @
61f49be3
...
...
@@ -1024,7 +1024,6 @@ INPUT = \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_encoder.h \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_du_task.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_du_system_information.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_cu_system_information.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_cu_rrc_message_transfer.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_cu_interface_management.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/F1AP/f1ap_handlers.c \
...
...
openair2/F1AP/f1ap_common.c
View file @
61f49be3
...
...
@@ -32,15 +32,14 @@
#include "f1ap_common.h"
static
f1ap_cudu_inst_t
*
f1_du_inst
[
NUMBER_OF_eNB_MAX
]
=
{
0
};
static
f1ap_cudu_inst_t
*
f1_cu_inst
[
NUMBER_OF_eNB_MAX
]
=
{
0
};
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
enb_mod_idP
,
instance_t
cu_mod_idP
)
{
static
uint8_t
transaction_identifier
[
NUMBER_OF_eNB_MAX
];
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
]
=
(
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
]
+
1
)
%
F1AP_TRANSACTION_IDENTIFIER_NUMBER
;
//LOG_T(F1AP,"generated xid is %d\n",transaction_identifier[enb_mod_idP+cu_mod_idP]);
return
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
];
static
f1ap_cudu_inst_t
*
f1_du_inst
[
NUMBER_OF_gNB_MAX
]
=
{
0
};
static
f1ap_cudu_inst_t
*
f1_cu_inst
[
NUMBER_OF_gNB_MAX
]
=
{
0
};
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
mod_idP
,
instance_t
cu_mod_idP
)
{
static
uint8_t
transaction_identifier
[
NUMBER_OF_gNB_MAX
];
transaction_identifier
[
mod_idP
+
cu_mod_idP
]
=
(
transaction_identifier
[
mod_idP
+
cu_mod_idP
]
+
1
)
%
F1AP_TRANSACTION_IDENTIFIER_NUMBER
;
return
transaction_identifier
[
mod_idP
+
cu_mod_idP
];
}
f1ap_cudu_inst_t
*
getCxt
(
F1_t
isCU
,
instance_t
instanceP
)
{
...
...
@@ -72,7 +71,7 @@ int f1ap_add_ue(F1_t isCu,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
f1_inst
->
f1ap_ue
[
i
].
f1ap_uid
=
i
;
LOG_I
(
F1AP
,
"Updating the index of UE with RNTI %x and du_ue_f1ap_id %ld
\n
"
,
f1_inst
->
f1ap_ue
[
i
].
rnti
,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
);
...
...
@@ -81,7 +80,7 @@ int f1ap_add_ue(F1_t isCu,
}
// We didn't find the rnti
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
0
)
{
f1_inst
->
f1ap_ue
[
i
].
rnti
=
rntiP
;
f1_inst
->
f1ap_ue
[
i
].
f1ap_uid
=
i
;
...
...
@@ -101,7 +100,7 @@ int f1ap_remove_ue(F1_t isCu, instance_t instanceP,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
f1_inst
->
f1ap_ue
[
i
].
rnti
=
0
;
break
;
...
...
@@ -116,7 +115,7 @@ int f1ap_get_du_ue_f1ap_id(F1_t isCu, instance_t instanceP,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
return
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
;
}
...
...
@@ -129,7 +128,7 @@ int f1ap_get_cu_ue_f1ap_id(F1_t isCu, instance_t instanceP,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
return
f1_inst
->
f1ap_ue
[
i
].
cu_ue_f1ap_id
;
}
...
...
@@ -142,7 +141,7 @@ int f1ap_get_rnti_by_du_id(F1_t isCu, instance_t instanceP,
instance_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
==
du_ue_f1ap_id
)
{
return
f1_inst
->
f1ap_ue
[
i
].
rnti
;
}
...
...
@@ -155,7 +154,7 @@ int f1ap_get_rnti_by_cu_id(F1_t isCu, instance_t instanceP,
instance_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instanceP
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
cu_ue_f1ap_id
==
cu_ue_f1ap_id
)
{
return
f1_inst
->
f1ap_ue
[
i
].
rnti
;
}
...
...
@@ -170,14 +169,14 @@ int f1ap_du_add_cu_ue_id(instance_t instanceP,
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
DUtype
,
instanceP
);
instance_t
f1ap_uid
=-
1
;
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
E
NB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_
G
NB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
==
du_ue_f1ap_id
)
{
f1ap_uid
=
i
;
break
;
}
}
if
(
f1ap_uid
<
0
||
f1ap_uid
>=
MAX_MOBILES_PER_
E
NB
)
if
(
f1ap_uid
<
0
||
f1ap_uid
>=
MAX_MOBILES_PER_
G
NB
)
return
-
1
;
f1_inst
->
f1ap_ue
[
f1ap_uid
].
cu_ue_f1ap_id
=
cu_ue_f1ap_id
;
...
...
openair2/F1AP/f1ap_common.h
View file @
61f49be3
...
...
@@ -404,7 +404,7 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
const
uint8_t
*
const
data
,
const
uint32_t
data_length
);
typedef
struct
f1ap_cudu_ue_inst_s
{
// used for
e
NB stats generation
// used for NB stats generation
rnti_t
rnti
;
instance_t
f1ap_uid
;
instance_t
du_ue_f1ap_id
;
...
...
@@ -419,7 +419,7 @@ typedef struct f1ap_cudu_inst_s {
instance_t
gtpInst
;
uint64_t
gNB_DU_id
;
uint16_t
num_ues
;
f1ap_cudu_ue_t
f1ap_ue
[
MAX_MOBILES_PER_
E
NB
];
f1ap_cudu_ue_t
f1ap_ue
[
MAX_MOBILES_PER_
G
NB
];
}
f1ap_cudu_inst_t
;
typedef
enum
{
...
...
@@ -429,7 +429,7 @@ typedef enum {
static
const
int
nrb_lut
[
29
]
=
{
11
,
18
,
24
,
25
,
31
,
32
,
38
,
51
,
52
,
65
,
66
,
78
,
79
,
93
,
106
,
107
,
121
,
132
,
133
,
135
,
160
,
162
,
189
,
216
,
217
,
245
,
264
,
270
,
273
};
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
enb_
mod_idP
,
instance_t
cu_mod_idP
);
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
mod_idP
,
instance_t
cu_mod_idP
);
f1ap_cudu_inst_t
*
getCxt
(
F1_t
isCU
,
instance_t
instanceP
);
...
...
@@ -465,8 +465,6 @@ static inline f1ap_setup_req_t *f1ap_req(F1_t isCu, instance_t instanceP) {
return
&
getCxt
(
isCu
,
instanceP
)
->
setupReq
;
}
#define TASK_F1APP f1ap_req(false, instance)->cell_type==CELL_MACRO_GNB?TASK_GNB_APP:TASK_ENB_APP
//lts: C struct type is not homogeneous, so we need macros instead of functions
#define addnRCGI(nRCGi, servedCelL) \
MCC_MNC_TO_PLMNID((servedCelL)->mcc,(servedCelL)-> mnc,(servedCelL)->mnc_digit_length, \
...
...
openair2/F1AP/f1ap_cu_interface_management.c
View file @
61f49be3
...
...
@@ -257,11 +257,7 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
memcpy
(
&
F1AP_SETUP_REQ
(
message_p
),
req
,
sizeof
(
f1ap_setup_req_t
)
);
if
(
req
->
num_cells_available
>
0
)
{
if
(
f1ap_req
(
true
,
instance
)
->
cell_type
==
CELL_MACRO_GNB
)
{
itti_send_msg_to_task
(
TASK_RRC_GNB
,
GNB_MODULE_ID_TO_INSTANCE
(
instance
),
message_p
);
}
else
{
itti_send_msg_to_task
(
TASK_RRC_ENB
,
ENB_MODULE_ID_TO_INSTANCE
(
instance
),
message_p
);
}
}
else
{
CU_send_F1_SETUP_FAILURE
(
instance
);
itti_free
(
TASK_CU_F1
,
message_p
);
...
...
openair2/F1AP/f1ap_cu_system_information.c
deleted
100644 → 0
View file @
ff1749a5
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file f1ap_du_interface_management.h
* \brief f1ap interface management for DU
* \author EURECOM/NTUST
* \date 2018
* \version 0.1
* \company Eurecom
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
* \note
* \warning
*/
openair2/F1AP/f1ap_cu_system_information.h
deleted
100644 → 0
View file @
ff1749a5
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file f1ap_du_interface_management.h
* \brief f1ap interface management for DU
* \author EURECOM/NTUST
* \date 2018
* \version 0.1
* \company Eurecom
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
* \note
* \warning
*/
\ No newline at end of file
openair2/F1AP/f1ap_cu_task.c
View file @
61f49be3
...
...
@@ -92,8 +92,8 @@ static void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *s
}
static
void
cu_task_send_sctp_init_req
(
instance_t
instance
,
char
*
my_addr
)
{
// 1. get the itti msg, and retrive the
e
nb_id from the message
// 2. use RC.rrc[
e
nb_id] to fill the sctp_init_t with the ip, port
// 1. get the itti msg, and retrive the nb_id from the message
// 2. use RC.rrc[nb_id] to fill the sctp_init_t with the ip, port
// 3. creat an itti message to init
LOG_I
(
F1AP
,
"F1AP_CU_SCTP_REQ(create socket)
\n
"
);
MessageDef
*
message_p
=
NULL
;
...
...
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
61f49be3
...
...
@@ -38,9 +38,6 @@
#include <string.h>
#include "rrc_extern.h"
#include "rrc_eNB_UE_context.h"
#include "rrc_eNB_S1AP.h"
#include "rrc_eNB_GTPV1U.h"
#include "openair2/RRC/NR/rrc_gNB_NGAP.h"
#include <openair3/ocp-gtpu/gtp_itf.h>
...
...
@@ -826,16 +823,7 @@ int CU_handle_UE_CONTEXT_RELEASE_REQUEST(instance_t instance,
if
(
f1ap_req
(
true
,
instance
)
->
cell_type
==
CELL_MACRO_GNB
)
{
AssertFatal
(
false
,
"must be devlopped
\n
"
);
}
else
{
struct
rrc_eNB_ue_context_s
*
ue_context_pP
;
ue_context_pP
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
instance
],
rnti
);
rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ
(
instance
,
ue_context_pP
,
S1AP_CAUSE_RADIO_NETWORK
,
21
);
// send cause 21: connection with ue lost
}
}
return
0
;
}
...
...
@@ -956,7 +944,7 @@ int CU_handle_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
}
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
instance
,
E
NB_FLAG_YES
,
rnti
,
0
,
0
,
instance
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
instance
,
G
NB_FLAG_YES
,
rnti
,
0
,
0
,
instance
);
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
rrc_gNB_get_ue_context
(
RC
.
nrrrc
[
instance
],
rnti
);
...
...
openair2/F1AP/f1ap_default_values.h
View file @
61f49be3
...
...
@@ -33,13 +33,6 @@
#ifndef F1AP_DEFAULT_VALUES_H_
#define F1AP_DEFAULT_VALUES_H_
#define ENB_TAC (1)
#define ENB_MCC (208)
#define ENB_MNC (92)
#define ENB_NAME "Eurecom ENB"
#define ENB_NAME_FORMAT (ENB_NAME" %u")
#define F1AP_PORT_NUMBER (38472)
#define F1AP_SCTP_PPID (62)
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
61f49be3
...
...
@@ -95,7 +95,7 @@ int DU_handle_ERROR_INDICATION(instance_t instance,
// SETUP REQUEST
int
DU_send_F1_SETUP_REQUEST
(
instance_t
instance
)
{
instance_t
e
nb_mod_idP
=
0
;
instance_t
nb_mod_idP
=
0
;
instance_t
du_mod_idP
=
0
;
F1AP_F1AP_PDU_t
pdu
=
{
0
};
uint8_t
*
buffer
;
...
...
@@ -114,7 +114,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
ieC1
->
id
=
F1AP_ProtocolIE_ID_id_TransactionID
;
ieC1
->
criticality
=
F1AP_Criticality_reject
;
ieC1
->
value
.
present
=
F1AP_F1SetupRequestIEs__value_PR_TransactionID
;
ieC1
->
value
.
choice
.
TransactionID
=
F1AP_get_next_transaction_identifier
(
e
nb_mod_idP
,
du_mod_idP
);
ieC1
->
value
.
choice
.
TransactionID
=
F1AP_get_next_transaction_identifier
(
nb_mod_idP
,
du_mod_idP
);
/* mandatory */
/* c2. GNB_DU_ID (integer value) */
asn1cSequenceAdd
(
f1Setup
->
protocolIEs
.
list
,
F1AP_F1SetupRequestIEs_t
,
ieC2
);
...
...
@@ -515,7 +515,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
num_SI
>
0
,
"System Information %d is missing"
,
i
);
LOG_D
(
F1AP
,
"Sending F1AP_SETUP_RESP ITTI message
\n
"
);
itti_send_msg_to_task
(
TASK_
F1
APP
,
GNB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
itti_send_msg_to_task
(
TASK_
GNB_
APP
,
GNB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
return
0
;
}
...
...
@@ -936,7 +936,7 @@ int DU_handle_gNB_CU_CONFIGURATION_UPDATE(instance_t instance,
LOG_D
(
F1AP
,
"F1AP: num_cells_to_activate %d
\n
"
,
num_cells_to_activate
);
F1AP_GNB_CU_CONFIGURATION_UPDATE
(
msg_p
).
num_cells_to_activate
=
num_cells_to_activate
;
LOG_D
(
F1AP
,
"Sending F1AP_GNB_CU_CONFIGURATION_UPDATE ITTI message
\n
"
);
itti_send_msg_to_task
(
TASK_
F1
APP
,
GNB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
itti_send_msg_to_task
(
TASK_
GNB_
APP
,
GNB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
return
0
;
}
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
61f49be3
...
...
@@ -37,11 +37,6 @@
#include "f1ap_du_rrc_message_transfer.h"
#include "LTE_DL-CCCH-Message.h"
#include "LTE_DL-DCCH-Message.h"
#include "LTE_UL-DCCH-Message.h"
#include "NR_DL-CCCH-Message.h"
#include "NR_UL-CCCH-Message.h"
#include "NR_DL-DCCH-Message.h"
...
...
@@ -50,7 +45,6 @@
#include "rrc_extern.h"
#include "common/ran_context.h"
#include "rrc_eNB_UE_context.h"
#include "openair2/RRC/NR/rrc_gNB_UE_context.h"
#include "asn1_msg.h"
#include "intertask_interface.h"
...
...
@@ -161,178 +155,6 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
return
0
;
}
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
const
f1ap_ul_rrc_message_t
*
msg
)
{
const
rnti_t
rnti
=
msg
->
rnti
;
F1AP_F1AP_PDU_t
pdu
;
F1AP_ULRRCMessageTransfer_t
*
out
;
F1AP_ULRRCMessageTransferIEs_t
*
ie
;
uint8_t
*
buffer
=
NULL
;
uint32_t
len
;
LOG_I
(
F1AP
,
"[DU %ld] %s: size %d UE RNTI %x in SRB %d
\n
"
,
instance
,
__func__
,
msg
->
rrc_container_length
,
rnti
,
msg
->
srb_id
);
//LOG_I(F1AP, "%s() RRCContainer size %d: ", __func__, msg->rrc_container_length);
//for (int i = 0;i < msg->rrc_container_length; i++)
// printf("%02x ", msg->rrc_container[i]);
//printf("\n");
/* Create */
/* 0. Message Type */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
pdu
.
present
=
F1AP_F1AP_PDU_PR_initiatingMessage
;
pdu
.
choice
.
initiatingMessage
=
(
F1AP_InitiatingMessage_t
*
)
calloc
(
1
,
sizeof
(
F1AP_InitiatingMessage_t
));
pdu
.
choice
.
initiatingMessage
->
procedureCode
=
F1AP_ProcedureCode_id_ULRRCMessageTransfer
;
pdu
.
choice
.
initiatingMessage
->
criticality
=
F1AP_Criticality_ignore
;
pdu
.
choice
.
initiatingMessage
->
value
.
present
=
F1AP_InitiatingMessage__value_PR_ULRRCMessageTransfer
;
out
=
&
pdu
.
choice
.
initiatingMessage
->
value
.
choice
.
ULRRCMessageTransfer
;
/* mandatory */
/* c1. GNB_CU_UE_F1AP_ID */
ie
=
(
F1AP_ULRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ULRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_get_cu_ue_f1ap_id
(
DUtype
,
instance
,
rnti
);
asn1cSeqAdd
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
ie
=
(
F1AP_ULRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ULRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
rnti
);
asn1cSeqAdd
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c3. SRBID */
ie
=
(
F1AP_ULRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ULRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_SRBID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_SRBID
;
ie
->
value
.
choice
.
SRBID
=
msg
->
srb_id
;
asn1cSeqAdd
(
&
out
->
protocolIEs
.
list
,
ie
);
// issue in here
/* mandatory */
/* c4. RRCContainer */
ie
=
(
F1AP_ULRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ULRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_RRCContainer
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_ULRRCMessageTransferIEs__value_PR_RRCContainer
;
OCTET_STRING_fromBuf
(
&
ie
->
value
.
choice
.
RRCContainer
,
(
const
char
*
)
msg
->
rrc_container
,
msg
->
rrc_container_length
);
asn1cSeqAdd
(
&
out
->
protocolIEs
.
list
,
ie
);
if
(
msg
->
srb_id
==
1
||
msg
->
srb_id
==
2
)
{
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
instance
],
rnti
);
LTE_UL_DCCH_Message_t
*
ul_dcch_msg
=
NULL
;
asn_dec_rval_t
dec_rval
;
dec_rval
=
uper_decode
(
NULL
,
&
asn_DEF_LTE_UL_DCCH_Message
,
(
void
**
)
&
ul_dcch_msg
,
&
ie
->
value
.
choice
.
RRCContainer
.
buf
[
1
],
// buf[0] includes the pdcp header
msg
->
rrc_container_length
,
0
,
0
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
LOG_E
(
F1AP
,
" Failed to decode UL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
else
LOG_I
(
F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
ul_dcch_msg
->
message
.
present
,
ul_dcch_msg
->
message
.
choice
.
c1
.
present
);
if
(
ul_dcch_msg
->
message
.
present
==
LTE_UL_DCCH_MessageType_PR_c1
)
{
switch
(
ul_dcch_msg
->
message
.
choice
.
c1
.
present
)
{
case
LTE_UL_DCCH_MessageType__c1_PR_NOTHING
:
/* No components present */
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_csfbParametersRequestCDMA2000
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_measurementReport
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete
:
LOG_I
(
F1AP
,
"[MSG] RRC UL rrcConnectionReconfigurationComplete
\n
"
);
/* CDRX: activated when RRC Connection Reconfiguration Complete is received */
int
UE_id_mac
=
find_UE_id
(
instance
,
rnti
);
if
(
UE_id_mac
==
-
1
)
{
LOG_E
(
F1AP
,
"Can't find UE_id(MAC) of UE rnti %x
\n
"
,
rnti
);
break
;
}
UE_sched_ctrl_t
*
UE_scheduling_control
=
&
(
RC
.
mac
[
instance
]
->
UE_info
.
UE_sched_ctrl
[
UE_id_mac
]);
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
true
)
{
UE_scheduling_control
->
cdrx_waiting_ack
=
false
;
UE_scheduling_control
->
cdrx_configured
=
true
;
// Set to TRUE when RRC Connection Reconfiguration Complete is received
LOG_I
(
F1AP
,
"CDRX configuration activated after RRC Connection Reconfiguration Complete reception
\n
"
);
}
/* End of CDRX processing */
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete
:
LOG_I
(
F1AP
,
"[MSG] RRC UL rrcConnectionSetupComplete
\n
"
);
if
(
!
ue_context_p
)
{
LOG_E
(
F1AP
,
"Did not find the UE context associated with UE RNTOI %x, ue_context_p is NULL
\n
"
,
rnti
);
}
else
{
LOG_I
(
F1AP
,
"Processing RRCConnectionSetupComplete UE %x
\n
"
,
rnti
);
ue_context_p
->
ue_context
.
StatusRrc
=
RRC_CONNECTED
;
}
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeComplete
:
LOG_I
(
F1AP
,
"[MSG] RRC securityModeComplete
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeFailure
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation
:
LOG_I
(
F1AP
,
"[MSG] RRC ueCapabilityInformation
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
LOG_I
(
F1AP
,
"[MSG] RRC UL Information Transfer
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_counterCheckResponse
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_proximityIndication_r9
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rnReconfigurationComplete_r10
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10
:
break
;
}
}
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
F1AP
,
"Failed to encode F1 UL RRC MESSAGE TRANSFER
\n
"
);
return
-
1
;
}
ASN_STRUCT_RESET
(
asn_DEF_F1AP_F1AP_PDU
,
&
pdu
);
f1ap_itti_send_sctp_data_req
(
false
,
instance
,
buffer
,
len
,
getCxt
(
DUtype
,
instance
)
->
default_sctp_stream_id
);
return
0
;
}
/* UL RRC Message Transfer */
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instanceP
,
int
CC_idP
,
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.h
View file @
61f49be3
...
...
@@ -41,7 +41,6 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
const
f1ap_ul_rrc_message_t
*
msg
);
int
DU_send_UL_NR_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
const
f1ap_ul_rrc_message_t
*
msg
);
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instanceP
,
...
...
openair2/F1AP/f1ap_du_task.c
View file @
61f49be3
...
...
@@ -99,7 +99,6 @@ void du_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_dat
void
*
F1AP_DU_task
(
void
*
arg
)
{
//sctp_cu_init();
LOG_I
(
F1AP
,
"Starting F1AP at DU
\n
"
);
//f1ap_eNB_prepare_internal_data();
itti_mark_task_ready
(
TASK_DU_F1
);
// SCTP
...
...
@@ -111,7 +110,7 @@ void *F1AP_DU_task(void *arg) {
ITTI_MSG_NAME
(
msg
),
myInstance
);
switch
(
ITTI_MSG_ID
(
msg
))
{
case
F1AP_SETUP_REQ
:
{
// this is not a true F1 message, but rather an ITTI message sent by
e
nb_app
// this is not a true F1 message, but rather an ITTI message sent by
g
nb_app
// 1. save the itti msg so that you can use it to sen f1ap_setup_req, fill the f1ap_setup_req message,
// 2. store the message in f1ap context, that is also stored in RC
// 2. send a sctp_association req
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
61f49be3
...
...
@@ -37,7 +37,6 @@
#include "f1ap_du_ue_context_management.h"
#include "rrc_extern.h"
#include "rrc_eNB_UE_context.h"
#include "openair2/RRC/NR/rrc_gNB_UE_context.h"
#include "openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h"
#include <openair3/ocp-gtpu/gtp_itf.h>
...
...
openair2/F1AP/f1ap_itti_messaging.h
View file @
61f49be3
...
...
@@ -25,7 +25,4 @@
void
f1ap_itti_send_sctp_data_req
(
bool
isCu
,
instance_t
instance
,
uint8_t
*
buffer
,
uint32_t
buffer_length
,
uint16_t
stream
);
void
f1ap_eNB_itti_send_sctp_close_association
(
bool
isCu
,
instance_t
instance
);
#endif
/* F1AP_ITTI_MESSAGING_H_ */
openair2/F1AP/f1ap_messaging.h
deleted
100644 → 0
View file @
ff1749a5
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file f1ap_messaging.h
* \brief f1ap procedures
* \author EURECOM/NTUST
* \date 2018
* \version 0.1
* \company Eurecom
* \email: navid.nikaein@eurecom.fr, bing-kai.hong@eurecom.fr
* \note
* \warning
*/
#ifndef F1AP_MESSAGING_H_
#define F1AP_MESSAGING_H_
void
f1ap_send_sctp_data_req
(
instance_t
instance
,
int32_t
assoc_id
,
uint8_t
*
buffer
,
uint32_t
buffer_length
,
uint16_t
stream
);
void
f1ap_send_sctp_close_association
(
instance_t
instance
,
int32_t
assoc_id
);
#endif
/* F1AP_MESSAGING_H_ */
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