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
lizhongxiao
OpenXG-RAN
Commits
defea03a
Commit
defea03a
authored
May 20, 2020
by
s.rampalli
Committed by
Rigiel
Jun 09, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Required changes/modifications are done at both eNB and gNB side
parent
2f48b925
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
2356 additions
and
2570 deletions
+2356
-2570
openair2/RRC/LTE/rrc_defs.h
openair2/RRC/LTE/rrc_defs.h
+9
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+428
-422
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+51
-91
openair2/RRC/NR/rrc_gNB_internode.c
openair2/RRC/NR/rrc_gNB_internode.c
+41
-39
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+116
-130
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+1711
-1887
No files found.
openair2/RRC/LTE/rrc_defs.h
View file @
defea03a
...
@@ -40,6 +40,10 @@
...
@@ -40,6 +40,10 @@
#include "rrc_types.h"
#include "rrc_types.h"
//#include "PHY/phy_defs.h"
//#include "PHY/phy_defs.h"
#include "LAYER2/RLC/rlc.h"
#include "LAYER2/RLC/rlc.h"
#include "RRC/NR/nr_rrc_types.h"
#include "NR_UE-MRDC-Capability.h"
#include "NR_UE-NR-Capability.h"
#include "COMMON/platform_constants.h"
#include "COMMON/platform_constants.h"
#include "COMMON/platform_types.h"
#include "COMMON/platform_types.h"
...
@@ -569,6 +573,10 @@ typedef struct eNB_RRC_UE_s {
...
@@ -569,6 +573,10 @@ typedef struct eNB_RRC_UE_s {
LTE_UE_EUTRA_Capability_t
*
UE_Capability
;
LTE_UE_EUTRA_Capability_t
*
UE_Capability
;
int
UE_Capability_size
;
int
UE_Capability_size
;
NR_UE_MRDC_Capability_t
*
UE_Capability_MRDC
;
int
UE_MRDC_Capability_size
;
NR_UE_NR_Capability_t
*
UE_Capability_nr
;
int
UE_NR_Capability_size
;
ImsiMobileIdentity_t
imsi
;
ImsiMobileIdentity_t
imsi
;
/* KeNB as derived from KASME received from EPC */
/* KeNB as derived from KASME received from EPC */
...
@@ -614,7 +622,7 @@ typedef struct eNB_RRC_UE_s {
...
@@ -614,7 +622,7 @@ typedef struct eNB_RRC_UE_s {
/* Number of e_rab to be modified in the list */
/* Number of e_rab to be modified in the list */
uint8_t
nb_of_modify_e_rabs
;
uint8_t
nb_of_modify_e_rabs
;
uint8_t
nb_of_failed_e_rabs
;
uint8_t
nb_of_failed_e_rabs
;
uint8_t
nb_of_modify_endc_e_rabs
;
uint8_t
nb_of_modify_endc_e_rabs
;
e_rab_param_t
modify_e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
e_rab_param_t
modify_e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
/* list of e_rab to be setup by RRC layers */
/* list of e_rab to be setup by RRC layers */
e_rab_param_t
e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
e_rab_param_t
e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
defea03a
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB.c
View file @
defea03a
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_internode.c
View file @
defea03a
...
@@ -39,47 +39,48 @@
...
@@ -39,47 +39,48 @@
#include "NR_CG-Config.h"
#include "NR_CG-Config.h"
int
parse_CG_ConfigInfo
(
gNB_RRC_INST
*
rrc
,
NR_CG_ConfigInfo_t
*
CG_ConfigInfo
,
x2ap_ENDC_sgnb_addition_req_t
*
m
)
{
int
parse_CG_ConfigInfo
(
gNB_RRC_INST
*
rrc
,
NR_CG_ConfigInfo_t
*
CG_ConfigInfo
,
x2ap_ENDC_sgnb_addition_req_t
*
m
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
present
==
NR_CG_ConfigInfo__criticalExtensions_PR_c1
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
present
==
NR_CG_ConfigInfo__criticalExtensions_PR_c1
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
present
==
NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo
)
{
if
(
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
present
==
NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo
)
{
NR_CG_ConfigInfo_IEs_t
*
cg_ConfigInfo
=
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
;
NR_CG_ConfigInfo_IEs_t
*
cg_ConfigInfo
=
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
;
if
(
cg_ConfigInfo
->
ue_CapabilityInfo
)
{
// Decode UE-CapabilityRAT-ContainerList
if
(
cg_ConfigInfo
->
ue_CapabilityInfo
)
{
// Decode UE-CapabilityRAT-ContainerList
LTE_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
=
NULL
;
LTE_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
=
NULL
;
asn_dec_rval_t
dec_rval
=
uper_decode
(
NULL
,
UE_CapabilityRAT_ContainerList
=
calloc
(
1
,
sizeof
(
LTE_UE_CapabilityRAT_ContainerList_t
));
&
asn_DEF_LTE_UE_CapabilityRAT_ContainerList
,
asn_dec_rval_t
dec_rval
=
uper_decode
(
NULL
,
(
void
**
)
&
UE_CapabilityRAT_ContainerList
,
&
asn_DEF_LTE_UE_CapabilityRAT_ContainerList
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
buf
,
(
void
**
)
&
UE_CapabilityRAT_ContainerList
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
size
,
0
,
0
);
cg_ConfigInfo
->
ue_CapabilityInfo
->
buf
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
size
,
0
,
0
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
AssertFatal
(
1
==
0
,
"[InterNode] Failed to decode NR_UE_CapabilityRAT_ContainerList (%zu bits), size of OCTET_STRING %lu
\n
"
,
AssertFatal
(
1
==
0
,
"[InterNode] Failed to decode NR_UE_CapabilityRAT_ContainerList (%zu bits), size of OCTET_STRING %lu
\n
"
,
dec_rval
.
consumed
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
size
);
dec_rval
.
consumed
,
cg_ConfigInfo
->
ue_CapabilityInfo
->
size
);
}
}
rrc_parse_ue_capabilities
(
rrc
,
UE_CapabilityRAT_ContainerList
,
m
,
cg_ConfigInfo
);
}
rrc_parse_ue_capabilities
(
rrc
,
UE_CapabilityRAT_ContainerList
,
m
,
cg_ConfigInfo
);
if
(
cg_ConfigInfo
->
candidateCellInfoListMN
)
AssertFatal
(
1
==
0
,
"Can't handle candidateCellInfoListMN yet
\n
"
);
}
}
else
AssertFatal
(
1
==
0
,
"c1 extension is not cg_ConfigInfo, returning
\n
"
);
if
(
cg_ConfigInfo
->
candidateCellInfoListMN
)
AssertFatal
(
1
==
0
,
"Can't handle candidateCellInfoListMN yet
\n
"
);
}
}
else
AssertFatal
(
1
==
0
,
"c1 extension is not cg_ConfigInfo, returning
\n
"
);
else
{
}
else
{
LOG_E
(
RRC
,
"c1 extension not found, returning
\n
"
);
LOG_E
(
RRC
,
"c1 extension not found, returning
\n
"
);
return
(
-
1
);
return
(
-
1
);
}
}
}
else
{
}
else
{
LOG_E
(
RRC
,
"Ignoring unknown CG_ConfigInfo extensions
\n
"
);
LOG_E
(
RRC
,
"Ignoring unknown CG_ConfigInfo extensions
\n
"
);
return
(
-
1
);
return
(
-
1
);
}
}
return
(
0
);
}
return
(
0
);
int
generate_CG_Config
(
gNB_RRC_INST
*
rrc
,
}
NR_CG_Config_t
*
cg_Config
,
NR_RRCReconfiguration_t
*
reconfig
,
NR_RadioBearerConfig_t
*
rbconfig
)
{
int
generate_CG_Config
(
gNB_RRC_INST
*
rrc
,
NR_CG_Config_t
*
cg_Config
,
NR_RRCReconfiguration_t
*
reconfig
,
NR_RadioBearerConfig_t
*
rbconfig
)
{
cg_Config
->
criticalExtensions
.
present
=
NR_CG_Config__criticalExtensions_PR_c1
;
cg_Config
->
criticalExtensions
.
present
=
NR_CG_Config__criticalExtensions_PR_c1
;
cg_Config
->
criticalExtensions
.
choice
.
c1
=
calloc
(
1
,
sizeof
(
*
cg_Config
->
criticalExtensions
.
choice
.
c1
));
cg_Config
->
criticalExtensions
.
choice
.
c1
=
calloc
(
1
,
sizeof
(
*
cg_Config
->
criticalExtensions
.
choice
.
c1
));
cg_Config
->
criticalExtensions
.
choice
.
c1
->
present
=
NR_CG_Config__criticalExtensions__c1_PR_cg_Config
;
cg_Config
->
criticalExtensions
.
choice
.
c1
->
present
=
NR_CG_Config__criticalExtensions__c1_PR_cg_Config
;
...
@@ -91,36 +92,37 @@ int generate_CG_Config(gNB_RRC_INST *rrc,
...
@@ -91,36 +92,37 @@ int generate_CG_Config(gNB_RRC_INST *rrc,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_CellGroupConfig
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_CellGroupConfig
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
OCTET_STRING_fromBuf
(
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_CellGroupConfig
,
OCTET_STRING_fromBuf
(
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_CellGroupConfig
,
(
const
char
*
)
buffer
,
(
const
char
*
)
buffer
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
(
enc_rval
.
encoded
+
7
)
>>
3
);
total_size
=
(
enc_rval
.
encoded
+
7
)
>>
3
;
total_size
=
(
enc_rval
.
encoded
+
7
)
>>
3
;
LOG_I
(
RRC
,
"Dumping NR_RRCReconfiguration message (%jd bytes)
\n
"
,(
enc_rval
.
encoded
+
7
)
>>
3
);
LOG_I
(
RRC
,
"Dumping NR_RRCReconfiguration message (%jd bytes)
\n
"
,(
enc_rval
.
encoded
+
7
)
>>
3
);
for
(
int
i
=
0
;
i
<
(
enc_rval
.
encoded
+
7
)
>>
3
;
i
++
)
{
for
(
int
i
=
0
;
i
<
(
enc_rval
.
encoded
+
7
)
>>
3
;
i
++
)
{
printf
(
"%02x"
,((
uint8_t
*
)
buffer
)[
i
]);
printf
(
"%02x"
,((
uint8_t
*
)
buffer
)[
i
]);
}
}
printf
(
"
\n
"
);
printf
(
"
\n
"
);
FILE
*
fd
=
fopen
(
"reconfig.raw"
,
"w"
);
FILE
*
fd
=
fopen
(
"reconfig.raw"
,
"w"
);
fwrite
((
void
*
)
buffer
,
1
,(
size_t
)((
enc_rval
.
encoded
+
7
)
>>
3
),
fd
);
fwrite
((
void
*
)
buffer
,
1
,(
size_t
)((
enc_rval
.
encoded
+
7
)
>>
3
),
fd
);
fclose
(
fd
);
fclose
(
fd
);
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_RadioBearerConfig
,
NULL
,
(
void
*
)
rbconfig
,
buffer
,
1024
);
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_RadioBearerConfig
,
NULL
,
(
void
*
)
rbconfig
,
buffer
,
1024
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_RB_Config
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_RB_Config
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
OCTET_STRING_fromBuf
(
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_RB_Config
,
OCTET_STRING_fromBuf
(
cg_Config
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_Config
->
scg_RB_Config
,
(
const
char
*
)
buffer
,
(
const
char
*
)
buffer
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
(
enc_rval
.
encoded
+
7
)
>>
3
);
LOG_I
(
RRC
,
"Dumping scg_RB_Config message (%jd bytes)
\n
"
,(
enc_rval
.
encoded
+
7
)
>>
3
);
LOG_I
(
RRC
,
"Dumping scg_RB_Config message (%jd bytes)
\n
"
,(
enc_rval
.
encoded
+
7
)
>>
3
);
for
(
int
i
=
0
;
i
<
(
enc_rval
.
encoded
+
7
)
>>
3
;
i
++
)
{
printf
(
"%02x"
,((
uint8_t
*
)
buffer
)[
i
]);
for
(
int
i
=
0
;
i
<
(
enc_rval
.
encoded
+
7
)
>>
3
;
i
++
)
{
printf
(
"%02x"
,((
uint8_t
*
)
buffer
)[
i
]);
}
}
printf
(
"
\n
"
);
printf
(
"
\n
"
);
fd
=
fopen
(
"rbconfig.raw"
,
"w"
);
fd
=
fopen
(
"rbconfig.raw"
,
"w"
);
fwrite
((
void
*
)
buffer
,
1
,(
size_t
)((
enc_rval
.
encoded
+
7
)
>>
3
),
fd
);
fwrite
((
void
*
)
buffer
,
1
,(
size_t
)((
enc_rval
.
encoded
+
7
)
>>
3
),
fd
);
fclose
(
fd
);
fclose
(
fd
);
total_size
=
total_size
+
((
enc_rval
.
encoded
+
7
)
>>
3
);
total_size
=
total_size
+
((
enc_rval
.
encoded
+
7
)
>>
3
);
return
(
total_size
);
return
(
total_size
);
}
}
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
defea03a
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
defea03a
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