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
spbro
OpenXG-RAN
Commits
e7ef1f68
Commit
e7ef1f68
authored
1 year ago
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement UE Context Modification using F1AP
parent
26352018
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
5 deletions
+60
-5
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
+32
-3
openair2/RRC/NR/mac_rrc_dl_f1ap.c
openair2/RRC/NR/mac_rrc_dl_f1ap.c
+28
-2
No files found.
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
View file @
e7ef1f68
...
...
@@ -62,9 +62,38 @@ static void ue_context_setup_response_f1ap(const f1ap_ue_context_setup_t *req, c
static
void
ue_context_modification_response_f1ap
(
const
f1ap_ue_context_modif_req_t
*
req
,
const
f1ap_ue_context_modif_resp_t
*
resp
)
{
(
void
)
req
;
(
void
)
resp
;
AssertFatal
(
false
,
"not implemented
\n
"
);
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_MAC_GNB
,
0
,
F1AP_UE_CONTEXT_MODIFICATION_RESP
);
f1ap_ue_context_modif_resp_t
*
f1ap_msg
=
&
F1AP_UE_CONTEXT_MODIFICATION_RESP
(
msg
);
/* copy all fields, but reallocate rrc_containers! */
*
f1ap_msg
=
*
resp
;
if
(
resp
->
srbs_to_be_setup_length
>
0
)
{
DevAssert
(
resp
->
srbs_to_be_setup
!=
NULL
);
f1ap_msg
->
srbs_to_be_setup_length
=
resp
->
srbs_to_be_setup_length
;
f1ap_msg
->
srbs_to_be_setup
=
calloc
(
f1ap_msg
->
srbs_to_be_setup_length
,
sizeof
(
*
f1ap_msg
->
srbs_to_be_setup
));
for
(
int
i
=
0
;
i
<
f1ap_msg
->
srbs_to_be_setup_length
;
++
i
)
f1ap_msg
->
srbs_to_be_setup
[
i
]
=
resp
->
srbs_to_be_setup
[
i
];
}
if
(
resp
->
drbs_to_be_setup_length
>
0
)
{
DevAssert
(
resp
->
drbs_to_be_setup
!=
NULL
);
f1ap_msg
->
drbs_to_be_setup_length
=
resp
->
drbs_to_be_setup_length
;
f1ap_msg
->
drbs_to_be_setup
=
calloc
(
f1ap_msg
->
drbs_to_be_setup_length
,
sizeof
(
*
f1ap_msg
->
drbs_to_be_setup
));
for
(
int
i
=
0
;
i
<
f1ap_msg
->
drbs_to_be_setup_length
;
++
i
)
f1ap_msg
->
drbs_to_be_setup
[
i
]
=
resp
->
drbs_to_be_setup
[
i
];
}
if
(
resp
->
du_to_cu_rrc_information
!=
NULL
)
{
f1ap_msg
->
du_to_cu_rrc_information
=
calloc
(
1
,
sizeof
(
*
resp
->
du_to_cu_rrc_information
));
AssertFatal
(
f1ap_msg
->
du_to_cu_rrc_information
!=
NULL
,
"out of memory
\n
"
);
f1ap_msg
->
du_to_cu_rrc_information_length
=
resp
->
du_to_cu_rrc_information_length
;
du_to_cu_rrc_information_t
*
du2cu
=
f1ap_msg
->
du_to_cu_rrc_information
;
du2cu
->
cellGroupConfig_length
=
resp
->
du_to_cu_rrc_information
->
cellGroupConfig_length
;
du2cu
->
cellGroupConfig
=
calloc
(
du2cu
->
cellGroupConfig_length
,
sizeof
(
*
du2cu
->
cellGroupConfig
));
AssertFatal
(
du2cu
->
cellGroupConfig
!=
NULL
,
"out of memory
\n
"
);
memcpy
(
du2cu
->
cellGroupConfig
,
resp
->
du_to_cu_rrc_information
->
cellGroupConfig
,
du2cu
->
cellGroupConfig_length
);
}
itti_send_msg_to_task
(
TASK_DU_F1
,
0
,
msg
);
}
static
void
ue_context_release_request_f1ap
(
const
f1ap_ue_context_release_req_t
*
req
)
...
...
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/mac_rrc_dl_f1ap.c
View file @
e7ef1f68
...
...
@@ -30,6 +30,8 @@ static void ue_context_setup_request_f1ap(const f1ap_ue_context_setup_t *req)
f1ap_ue_context_setup_t
*
f1ap_msg
=
&
F1AP_UE_CONTEXT_SETUP_REQ
(
msg
);
*
f1ap_msg
=
*
req
;
AssertFatal
(
req
->
cu_to_du_rrc_information
==
NULL
,
"cu_to_du_rrc_information not supported yet
\n
"
);
AssertFatal
(
req
->
drbs_to_be_setup
==
NULL
,
"drbs_to_be_setup not supported yet
\n
"
);
AssertFatal
(
req
->
srbs_to_be_setup
==
NULL
,
"drbs_to_be_setup not supported yet
\n
"
);
if
(
req
->
rrc_container_length
>
0
)
{
f1ap_msg
->
rrc_container
=
calloc
(
req
->
rrc_container_length
,
sizeof
(
*
f1ap_msg
->
rrc_container
));
AssertFatal
(
f1ap_msg
->
rrc_container
!=
NULL
,
"out of memory
\n
"
);
...
...
@@ -41,8 +43,32 @@ static void ue_context_setup_request_f1ap(const f1ap_ue_context_setup_t *req)
static
void
ue_context_modification_request_f1ap
(
const
f1ap_ue_context_modif_req_t
*
req
)
{
(
void
)
req
;
AssertFatal
(
false
,
"not implemented yet
\n
"
);
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
F1AP_UE_CONTEXT_MODIFICATION_REQ
);
f1ap_ue_context_modif_req_t
*
f1ap_msg
=
&
F1AP_UE_CONTEXT_MODIFICATION_REQ
(
msg
);
*
f1ap_msg
=
*
req
;
AssertFatal
(
req
->
cu_to_du_rrc_information
==
NULL
,
"cu_to_du_rrc_information not supported yet
\n
"
);
AssertFatal
(
req
->
drbs_to_be_modified_length
==
0
,
"drbs_to_be_modified not supported yet
\n
"
);
if
(
req
->
drbs_to_be_setup_length
>
0
)
{
int
n
=
req
->
drbs_to_be_setup_length
;
f1ap_msg
->
drbs_to_be_setup_length
=
n
;
f1ap_msg
->
drbs_to_be_setup
=
calloc
(
n
,
sizeof
(
*
f1ap_msg
->
drbs_to_be_setup
));
AssertFatal
(
f1ap_msg
->
drbs_to_be_setup
!=
NULL
,
"out of memory
\n
"
);
memcpy
(
f1ap_msg
->
drbs_to_be_setup
,
req
->
drbs_to_be_setup
,
n
*
sizeof
(
*
f1ap_msg
->
drbs_to_be_setup
));
}
if
(
req
->
srbs_to_be_setup_length
>
0
)
{
int
n
=
req
->
srbs_to_be_setup_length
;
f1ap_msg
->
srbs_to_be_setup_length
=
n
;
f1ap_msg
->
srbs_to_be_setup
=
calloc
(
n
,
sizeof
(
*
f1ap_msg
->
srbs_to_be_setup
));
AssertFatal
(
f1ap_msg
->
srbs_to_be_setup
!=
NULL
,
"out of memory
\n
"
);
memcpy
(
f1ap_msg
->
srbs_to_be_setup
,
req
->
srbs_to_be_setup
,
n
*
sizeof
(
*
f1ap_msg
->
srbs_to_be_setup
));
}
if
(
req
->
rrc_container_length
>
0
)
{
f1ap_msg
->
rrc_container
=
calloc
(
req
->
rrc_container_length
,
sizeof
(
*
f1ap_msg
->
rrc_container
));
AssertFatal
(
f1ap_msg
->
rrc_container
!=
NULL
,
"out of memory
\n
"
);
f1ap_msg
->
rrc_container_length
=
req
->
rrc_container_length
;
memcpy
(
f1ap_msg
->
rrc_container
,
req
->
rrc_container
,
req
->
rrc_container_length
);
}
itti_send_msg_to_task
(
TASK_CU_F1
,
0
,
msg
);
}
static
void
ue_context_release_command_f1ap
(
const
f1ap_ue_context_release_cmd_t
*
cmd
)
...
...
This diff is collapsed.
Click to expand it.
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