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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
85d89164
Commit
85d89164
authored
Jul 17, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor F1 Setup Req: Move radio info into cell
parent
7456cf94
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
180 deletions
+108
-180
openair2/COMMON/f1ap_messages_types.h
openair2/COMMON/f1ap_messages_types.h
+30
-46
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+30
-38
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+32
-70
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+16
-26
No files found.
openair2/COMMON/f1ap_messages_types.h
View file @
85d89164
...
...
@@ -90,6 +90,30 @@ typedef struct f1ap_plmn_t {
uint8_t
mnc_digit_length
;
}
f1ap_plmn_t
;
typedef
enum
f1ap_mode_t
{
F1AP_MODE_TDD
=
0
,
F1AP_MODE_FDD
=
1
}
f1ap_mode_t
;
typedef
struct
f1ap_nr_frequency_info_t
{
uint32_t
arfcn
;
int
band
;
}
f1ap_nr_frequency_info_t
;
typedef
struct
f1ap_transmission_bandwidth_t
{
uint8_t
scs
;
uint16_t
nrb
;
}
f1ap_transmission_bandwidth_t
;
typedef
struct
f1ap_fdd_info_t
{
f1ap_nr_frequency_info_t
ul_freqinfo
;
f1ap_nr_frequency_info_t
dl_freqinfo
;
f1ap_transmission_bandwidth_t
ul_tbw
;
f1ap_transmission_bandwidth_t
dl_tbw
;
}
f1ap_fdd_info_t
;
typedef
struct
f1ap_tdd_info_t
{
f1ap_nr_frequency_info_t
freqinfo
;
f1ap_transmission_bandwidth_t
tbw
;
}
f1ap_tdd_info_t
;
typedef
struct
f1ap_served_cell_info_t
{
// NR CGI
f1ap_plmn_t
plmn
;
...
...
@@ -105,6 +129,12 @@ typedef struct f1ap_served_cell_info_t {
uint16_t
num_ssi
;
uint8_t
sst
;
uint8_t
sd
;
f1ap_mode_t
mode
;
union
{
f1ap_fdd_info_t
fdd
;
f1ap_tdd_info_t
tdd
;
};
}
f1ap_served_cell_info_t
;
typedef
struct
f1ap_setup_req_s
{
...
...
@@ -119,52 +149,6 @@ typedef struct f1ap_setup_req_s {
f1ap_served_cell_info_t
info
;
}
cell
[
F1AP_MAX_NB_CELLS
];
// fdd_flag = 1 means FDD, 0 means TDD
int
fdd_flag
;
union
{
struct
fdd_s
{
uint32_t
ul_nr_arfcn
;
uint8_t
ul_scs
;
uint16_t
ul_nrb
;
uint32_t
dl_nr_arfcn
;
uint8_t
dl_scs
;
uint16_t
dl_nrb
;
uint32_t
sul_active
;
uint32_t
sul_nr_arfcn
;
uint8_t
sul_scs
;
uint16_t
sul_nrb
;
uint8_t
ul_num_frequency_bands
;
uint16_t
ul_nr_band
[
32
];
uint8_t
ul_num_sul_frequency_bands
;
uint16_t
ul_nr_sul_band
[
32
];
uint8_t
dl_num_frequency_bands
;
uint16_t
dl_nr_band
[
32
];
uint8_t
dl_num_sul_frequency_bands
;
uint16_t
dl_nr_sul_band
[
32
];
}
fdd
;
struct
tdd_s
{
uint32_t
nr_arfcn
;
uint8_t
scs
;
uint16_t
nrb
;
uint32_t
sul_active
;
uint32_t
sul_nr_arfcn
;
uint8_t
sul_scs
;
uint16_t
sul_nrb
;
uint8_t
num_frequency_bands
;
uint16_t
nr_band
[
32
];
uint8_t
num_sul_frequency_bands
;
uint16_t
nr_sul_band
[
32
];
}
tdd
;
}
nr_mode_info
[
F1AP_MAX_NB_CELLS
];
char
*
measurement_timing_information
[
F1AP_MAX_NB_CELLS
];
uint8_t
ranac
[
F1AP_MAX_NB_CELLS
];
...
...
openair2/F1AP/f1ap_cu_interface_management.c
View file @
85d89164
...
...
@@ -146,53 +146,45 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
// FDD Cells
if
(
servedCellInformation
->
nR_Mode_Info
.
present
==
F1AP_NR_Mode_Info_PR_fDD
)
{
struct
fdd_s
*
FDDs
=&
req
->
nr_mode_info
[
i
].
fdd
;
req
->
cell
[
i
].
info
.
mode
=
F1AP_MODE_FDD
;
f1ap_fdd_info_t
*
FDDs
=
&
req
->
cell
[
i
].
info
.
fdd
;
F1AP_FDD_Info_t
*
fDD_Info
=
servedCellInformation
->
nR_Mode_Info
.
choice
.
fDD
;
FDDs
->
ul_
nr_arfcn
=
fDD_Info
->
uL_NRFreqInfo
.
nRARFCN
;
FDDs
->
ul_num_frequency_bands
=
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
.
count
;
FDDs
->
ul_
freqinfo
.
arfcn
=
fDD_Info
->
uL_NRFreqInfo
.
nRARFCN
;
AssertFatal
(
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
.
count
==
1
,
"cannot handle more than one frequency band
\n
"
)
;
for
(
int
f
=
0
;
f
<
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
.
count
;
f
++
)
{
F1AP_FreqBandNrItem_t
*
FreqItem
=
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
.
array
[
f
];
FDDs
->
ul_nr_band
[
f
]
=
FreqItem
->
freqBandIndicatorNr
;
int
num_available_supported_SULBands
=
FreqItem
->
supportedSULBandList
.
list
.
count
;
for
(
int
sul
=
0
;
sul
<
num_available_supported_SULBands
;
sul
++
)
{
F1AP_SupportedSULFreqBandItem_t
*
SulItem
=
FreqItem
->
supportedSULBandList
.
list
.
array
[
sul
];
FDDs
->
ul_nr_sul_band
[
sul
]
=
SulItem
->
freqBandIndicatorNr
;
}
F1AP_FreqBandNrItem_t
*
FreqItem
=
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
.
array
[
f
];
FDDs
->
ul_freqinfo
.
band
=
FreqItem
->
freqBandIndicatorNr
;
AssertFatal
(
FreqItem
->
supportedSULBandList
.
list
.
count
==
0
,
"cannot handle SUL bands!
\n
"
);
}
FDDs
->
dl_
nr_arfcn
=
fDD_Info
->
dL_NRFreqInfo
.
nRARFCN
;
FDDs
->
dl_
freqinfo
.
arfcn
=
fDD_Info
->
dL_NRFreqInfo
.
nRARFCN
;
int
dlBands
=
fDD_Info
->
dL_NRFreqInfo
.
freqBandListNr
.
list
.
count
;
AssertFatal
(
dlBands
==
0
,
"cannot handled more than one frequency band
\n
"
);
for
(
int
dlB
=
0
;
dlB
<
dlBands
;
dlB
++
)
{
F1AP_FreqBandNrItem_t
*
FreqItem
=
fDD_Info
->
dL_NRFreqInfo
.
freqBandListNr
.
list
.
array
[
dlB
];
FDDs
->
dl_nr_band
[
dlB
]
=
FreqItem
->
freqBandIndicatorNr
;
int
num_available_supported_SULBands
=
FreqItem
->
supportedSULBandList
.
list
.
count
;
for
(
int
sul
=
0
;
sul
<
num_available_supported_SULBands
;
sul
++
)
{
F1AP_SupportedSULFreqBandItem_t
*
SulItem
=
FreqItem
->
supportedSULBandList
.
list
.
array
[
sul
];
FDDs
->
ul_nr_sul_band
[
sul
]
=
SulItem
->
freqBandIndicatorNr
;
}
FDDs
->
dl_freqinfo
.
band
=
FreqItem
->
freqBandIndicatorNr
;
int
num_available_supported_SULBands
=
FreqItem
->
supportedSULBandList
.
list
.
count
;
AssertFatal
(
num_available_supported_SULBands
==
0
,
"cannot handle SUL bands!
\n
"
);
}
FDDs
->
ul_scs
=
fDD_Info
->
uL_Transmission_Bandwidth
.
nRSCS
;
FDDs
->
ul_nrb
=
nrb_lut
[
fDD_Info
->
uL_Transmission_Bandwidth
.
nRNRB
];
FDDs
->
dl_scs
=
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
;
FDDs
->
dl_nrb
=
nrb_lut
[
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
];
}
// TDD
if
(
servedCellInformation
->
nR_Mode_Info
.
present
==
F1AP_NR_Mode_Info_PR_tDD
)
{
struct
tdd_s
*
TDDs
=&
req
->
nr_mode_info
[
i
].
tdd
;
F1AP_TDD_Info_t
*
tDD_Info
=
servedCellInformation
->
nR_Mode_Info
.
choice
.
tDD
;
TDDs
->
nr_arfcn
=
tDD_Info
->
nRFreqInfo
.
nRARFCN
;
TDDs
->
num_frequency_bands
=
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
.
count
;
FDDs
->
ul_tbw
.
scs
=
fDD_Info
->
uL_Transmission_Bandwidth
.
nRSCS
;
FDDs
->
ul_tbw
.
nrb
=
nrb_lut
[
fDD_Info
->
uL_Transmission_Bandwidth
.
nRNRB
];
FDDs
->
dl_tbw
.
scs
=
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
;
FDDs
->
dl_tbw
.
nrb
=
nrb_lut
[
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
];
}
else
if
(
servedCellInformation
->
nR_Mode_Info
.
present
==
F1AP_NR_Mode_Info_PR_tDD
)
{
req
->
cell
[
i
].
info
.
mode
=
F1AP_MODE_TDD
;
f1ap_tdd_info_t
*
TDDs
=
&
req
->
cell
[
i
].
info
.
tdd
;
F1AP_TDD_Info_t
*
tDD_Info
=
servedCellInformation
->
nR_Mode_Info
.
choice
.
tDD
;
TDDs
->
freqinfo
.
arfcn
=
tDD_Info
->
nRFreqInfo
.
nRARFCN
;
AssertFatal
(
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
.
count
==
1
,
"cannot handle more than one frequency band
\n
"
);
for
(
int
f
=
0
;
f
<
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
.
count
;
f
++
)
{
struct
F1AP_FreqBandNrItem
*
FreqItem
=
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
.
array
[
f
];
TDDs
->
nr_band
[
f
]
=
FreqItem
->
freqBandIndicatorNr
;
int
num_available_supported_SULBands
=
FreqItem
->
supportedSULBandList
.
list
.
count
;
for
(
int
sul
=
0
;
sul
<
num_available_supported_SULBands
;
sul
++
)
{
struct
F1AP_SupportedSULFreqBandItem
*
SulItem
=
FreqItem
->
supportedSULBandList
.
list
.
array
[
sul
];
TDDs
->
nr_sul_band
[
sul
]
=
SulItem
->
freqBandIndicatorNr
;
}
struct
F1AP_FreqBandNrItem
*
FreqItem
=
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
.
array
[
f
];
TDDs
->
freqinfo
.
band
=
FreqItem
->
freqBandIndicatorNr
;
int
num_available_supported_SULBands
=
FreqItem
->
supportedSULBandList
.
list
.
count
;
AssertFatal
(
num_available_supported_SULBands
==
0
,
"cannot hanlde SUL bands!
\n
"
);
}
TDDs
->
scs
=
tDD_Info
->
transmission_Bandwidth
.
nRSCS
;
TDDs
->
nrb
=
nrb_lut
[
tDD_Info
->
transmission_Bandwidth
.
nRNRB
];
TDDs
->
tbw
.
scs
=
tDD_Info
->
transmission_Bandwidth
.
nRSCS
;
TDDs
->
tbw
.
nrb
=
nrb_lut
[
tDD_Info
->
transmission_Bandwidth
.
nRNRB
];
}
else
{
AssertFatal
(
false
,
"unknown NR Mode info %d
\n
"
,
servedCellInformation
->
nR_Mode_Info
.
present
);
}
struct
F1AP_GNB_DU_System_Information
*
DUsi
=
served_cells_item
->
gNB_DU_System_Information
;
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
85d89164
...
...
@@ -206,115 +206,73 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance, f1ap_setup_req_t *setup_req)
}
}
if
(
setup_req
->
fdd_flag
)
{
// FDD
if
(
setup_req
->
cell
[
i
].
info
.
mode
==
F1AP_MODE_FDD
)
{
// FDD
const
f1ap_fdd_info_t
*
fdd
=
&
setup_req
->
cell
[
i
].
info
.
fdd
;
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_fDD
;
asn1cCalloc
(
nR_Mode_Info
->
choice
.
fDD
,
fDD_Info
);
/* FDD.1 UL NRFreqInfo */
/* FDD.1.1 UL NRFreqInfo ARFCN */
fDD_Info
->
uL_NRFreqInfo
.
nRARFCN
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_nr_
arfcn
;
// Integer
fDD_Info
->
uL_NRFreqInfo
.
nRARFCN
=
fdd
->
ul_freqinfo
.
arfcn
;
// Integer
/* FDD.1.2 F1AP_SUL_Information */
if
(
0
)
{
// Optional
asn1cCalloc
(
fDD_Info
->
uL_NRFreqInfo
.
sul_Information
,
fdd_sul_info
);
fdd_sul_info
->
sUL_NRARFCN
=
0
;
fdd_sul_info
->
sUL_transmission_Bandwidth
.
nRSCS
=
0
;
fdd_sul_info
->
sUL_transmission_Bandwidth
.
nRNRB
=
0
;
}
/* FDD.1.3 freqBandListNr */
int
fdd_ul_num_available_freq_Bands
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_num_frequency_bands
;
LOG_D
(
F1AP
,
"fdd_ul_num_available_freq_Bands = %d
\n
"
,
fdd_ul_num_available_freq_Bands
);
int
fdd_ul_num_available_freq_Bands
=
1
;
for
(
int
fdd_ul_j
=
0
;
fdd_ul_j
<
fdd_ul_num_available_freq_Bands
;
fdd_ul_j
++
)
{
asn1cSequenceAdd
(
fDD_Info
->
uL_NRFreqInfo
.
freqBandListNr
.
list
,
F1AP_FreqBandNrItem_t
,
nr_freqBandNrItem
);
/* FDD.1.3.1 freqBandIndicatorNr*/
nr_freqBandNrItem
->
freqBandIndicatorNr
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_nr_band
[
fdd_ul_j
];
//
nr_freqBandNrItem
->
freqBandIndicatorNr
=
fdd
->
ul_freqinfo
.
band
;
/* FDD.1.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_num_sul_frequency_bands
;
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
for
(
int
fdd_ul_k
=
0
;
fdd_ul_k
<
num_available_supported_SULBands
;
fdd_ul_k
++
)
{
asn1cSequenceAdd
(
nr_freqBandNrItem
->
supportedSULBandList
.
list
,
F1AP_SupportedSULFreqBandItem_t
,
nr_supportedSULFreqBandItem
);
/* FDD.1.3.2.1 freqBandIndicatorNr */
nr_supportedSULFreqBandItem
->
freqBandIndicatorNr
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_nr_sul_band
[
fdd_ul_k
];
//
}
// for FDD : UL supported_SULBands
}
// for FDD : UL freq_Bands
/* FDD.2 DL NRFreqInfo */
/* FDD.2.1 DL NRFreqInfo ARFCN */
fDD_Info
->
dL_NRFreqInfo
.
nRARFCN
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_nr_
arfcn
;
// Integer
fDD_Info
->
dL_NRFreqInfo
.
nRARFCN
=
fdd
->
dl_freqinfo
.
arfcn
;
// Integer
/* FDD.2.2 F1AP_SUL_Information */
if
(
0
)
{
// Optional
F1AP_SUL_Information_t
*
fdd_sul_info
=
fDD_Info
->
dL_NRFreqInfo
.
sul_Information
;
fdd_sul_info
->
sUL_NRARFCN
=
0
;
fdd_sul_info
->
sUL_transmission_Bandwidth
.
nRSCS
=
0
;
fdd_sul_info
->
sUL_transmission_Bandwidth
.
nRNRB
=
0
;
}
/* FDD.2.3 freqBandListNr */
int
fdd_dl_num_available_freq_Bands
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_num_frequency_bands
;
LOG_D
(
F1AP
,
"fdd_dl_num_available_freq_Bands = %d
\n
"
,
fdd_dl_num_available_freq_Bands
);
int
fdd_dl_num_available_freq_Bands
=
1
;
for
(
int
fdd_dl_j
=
0
;
fdd_dl_j
<
fdd_dl_num_available_freq_Bands
;
fdd_dl_j
++
)
{
asn1cSequenceAdd
(
fDD_Info
->
dL_NRFreqInfo
.
freqBandListNr
.
list
,
F1AP_FreqBandNrItem_t
,
nr_freqBandNrItem
);
/* FDD.2.3.1 freqBandIndicatorNr*/
nr_freqBandNrItem
->
freqBandIndicatorNr
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_nr_band
[
fdd_dl_j
];
//
nr_freqBandNrItem
->
freqBandIndicatorNr
=
fdd
->
dl_freqinfo
.
band
;
/* FDD.2.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_num_sul_frequency_bands
;
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
for
(
int
fdd_dl_k
=
0
;
fdd_dl_k
<
num_available_supported_SULBands
;
fdd_dl_k
++
)
{
asn1cSequenceAdd
(
nr_freqBandNrItem
->
supportedSULBandList
.
list
,
F1AP_SupportedSULFreqBandItem_t
,
nr_supportedSULFreqBandItem
);
/* FDD.2.3.2.1 freqBandIndicatorNr */
nr_supportedSULFreqBandItem
->
freqBandIndicatorNr
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_nr_sul_band
[
fdd_dl_k
];
//
}
// for FDD : DL supported_SULBands
}
// for FDD : DL freq_Bands
/* FDD.3 UL Transmission Bandwidth */
fDD_Info
->
uL_Transmission_Bandwidth
.
nRSCS
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_
scs
;
fDD_Info
->
uL_Transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
setup_req
->
nr_mode_info
[
i
].
fdd
.
ul_
nrb
);
fDD_Info
->
uL_Transmission_Bandwidth
.
nRSCS
=
fdd
->
ul_tbw
.
scs
;
fDD_Info
->
uL_Transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
fdd
->
ul_tbw
.
nrb
);
/* FDD.4 DL Transmission Bandwidth */
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
=
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_scs
;
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
setup_req
->
nr_mode_info
[
i
].
fdd
.
dl_nrb
);
}
else
{
// TDD
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
=
fdd
->
dl_tbw
.
scs
;
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
fdd
->
dl_tbw
.
nrb
);
}
else
if
(
setup_req
->
cell
[
i
].
info
.
mode
==
F1AP_MODE_TDD
)
{
// TDD
const
f1ap_tdd_info_t
*
tdd
=
&
setup_req
->
cell
[
i
].
info
.
tdd
;
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_tDD
;
asn1cCalloc
(
nR_Mode_Info
->
choice
.
tDD
,
tDD_Info
);
/* TDD.1 nRFreqInfo */
/* TDD.1.1 nRFreqInfo ARFCN */
tDD_Info
->
nRFreqInfo
.
nRARFCN
=
setup_req
->
nr_mode_info
[
i
].
tdd
.
nr_
arfcn
;
// Integer
tDD_Info
->
nRFreqInfo
.
nRARFCN
=
tdd
->
freqinfo
.
arfcn
;
// Integer
/* TDD.1.2 F1AP_SUL_Information */
if
(
0
)
{
// Optional
F1AP_SUL_Information_t
*
tdd_sul_info
=
tDD_Info
->
nRFreqInfo
.
sul_Information
;
tdd_sul_info
->
sUL_NRARFCN
=
0
;
tdd_sul_info
->
sUL_transmission_Bandwidth
.
nRSCS
=
0
;
tdd_sul_info
->
sUL_transmission_Bandwidth
.
nRNRB
=
0
;
}
/* TDD.1.3 freqBandListNr */
int
tdd_num_available_freq_Bands
=
setup_req
->
nr_mode_info
[
i
].
tdd
.
num_frequency_bands
;
LOG_D
(
F1AP
,
"tdd_num_available_freq_Bands = %d
\n
"
,
tdd_num_available_freq_Bands
);
int
tdd_num_available_freq_Bands
=
1
;
for
(
int
j
=
0
;
j
<
tdd_num_available_freq_Bands
;
j
++
)
{
asn1cSequenceAdd
(
tDD_Info
->
nRFreqInfo
.
freqBandListNr
.
list
,
F1AP_FreqBandNrItem_t
,
nr_freqBandNrItem
);
/* TDD.1.3.1 freqBandIndicatorNr*/
nr_freqBandNrItem
->
freqBandIndicatorNr
=
*
setup_req
->
nr_mode_info
[
i
].
tdd
.
nr_band
;
//
nr_freqBandNrItem
->
freqBandIndicatorNr
=
tdd
->
freqinfo
.
band
;
/* TDD.1.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
setup_req
->
nr_mode_info
[
i
].
tdd
.
num_sul_frequency_bands
;
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
for
(
int
k
=
0
;
k
<
num_available_supported_SULBands
;
k
++
)
{
asn1cSequenceAdd
(
nr_freqBandNrItem
->
supportedSULBandList
.
list
,
F1AP_SupportedSULFreqBandItem_t
,
nr_supportedSULFreqBandItem
);
/* TDD.1.3.2.1 freqBandIndicatorNr */
nr_supportedSULFreqBandItem
->
freqBandIndicatorNr
=
*
setup_req
->
nr_mode_info
[
i
].
tdd
.
nr_sul_band
;
//
}
// for TDD : supported_SULBands
}
// for TDD : freq_Bands
/* TDD.2 transmission_Bandwidth */
tDD_Info
->
transmission_Bandwidth
.
nRSCS
=
setup_req
->
nr_mode_info
[
i
].
tdd
.
scs
;
tDD_Info
->
transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
setup_req
->
nr_mode_info
[
i
].
tdd
.
nrb
);
}
// if nR_Mode_Info
tDD_Info
->
transmission_Bandwidth
.
nRSCS
=
tdd
->
tbw
.
scs
;
tDD_Info
->
transmission_Bandwidth
.
nRNRB
=
to_NRNRB
(
tdd
->
tbw
.
nrb
);
}
else
{
AssertFatal
(
false
,
"unknown mode %d
\n
"
,
setup_req
->
cell
[
i
].
info
.
mode
);
}
/* - measurementTimingConfiguration */
char
*
measurementTimingConfiguration
=
setup_req
->
measurement_timing_information
[
i
];
// sept. 2018
...
...
@@ -617,7 +575,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
F1AP_NR_Mode_Info_t
*
nR_Mode_Info
=&
served_cell_information
->
nR_Mode_Info
;
LOG_E
(
F1AP
,
"Here hardcoded values instead of values from configuration file
\n
"
);
if
(
f1ap_setup_req
->
fdd_flag
)
{
if
(
cell
->
mode
==
F1AP_MODE_FDD
)
{
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_fDD
;
/* > FDD >> FDD Info */
asn1cCalloc
(
nR_Mode_Info
->
choice
.
fDD
,
fDD_Info
);
...
...
@@ -639,7 +597,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
/* >>> DL Transmission Bandwidth */
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
=
F1AP_NRSCS_scs15
;
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
=
F1AP_NRNRB_nrb11
;
}
else
{
// TDD
}
else
if
(
cell
->
mode
==
F1AP_MODE_TDD
)
{
// TDD
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_tDD
;
/* > TDD >> TDD Info */
asn1cCalloc
(
nR_Mode_Info
->
choice
.
tDD
,
tDD_Info
);
...
...
@@ -651,6 +609,8 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
nr_supportedSULFreqBandItem
->
freqBandIndicatorNr
=
444L
;
tDD_Info
->
transmission_Bandwidth
.
nRSCS
=
F1AP_NRSCS_scs15
;
tDD_Info
->
transmission_Bandwidth
.
nRNRB
=
F1AP_NRNRB_nrb11
;
}
else
{
AssertFatal
(
false
,
"illegal mode %d
\n
"
,
cell
->
mode
);
}
/* - measurementTimingConfiguration */
...
...
@@ -710,7 +670,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
*
nR_Mode_Info
=
&
served_cell_information
->
nR_Mode_Info
;
if
(
f1ap_setup_req
->
fdd_flag
)
{
if
(
cell
->
mode
==
F1AP_MODE_FDD
)
{
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_fDD
;
/* > FDD >> FDD Info */
asn1cCalloc
(
nR_Mode_Info
->
choice
.
fDD
,
fDD_Info
);
...
...
@@ -733,7 +693,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
/* >>> DL Transmission Bandwidth */
fDD_Info
->
dL_Transmission_Bandwidth
.
nRSCS
=
F1AP_NRSCS_scs15
;
fDD_Info
->
dL_Transmission_Bandwidth
.
nRNRB
=
F1AP_NRNRB_nrb11
;
}
else
{
// TDD
}
else
if
(
cell
->
mode
==
F1AP_MODE_TDD
)
{
// TDD
nR_Mode_Info
->
present
=
F1AP_NR_Mode_Info_PR_tDD
;
/* > TDD >> TDD Info */
asn1cCalloc
(
nR_Mode_Info
->
choice
.
tDD
,
tDD_Info
);
...
...
@@ -745,6 +705,8 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
nr_supportedSULFreqBandItem
->
freqBandIndicatorNr
=
444L
;
tDD_Info
->
transmission_Bandwidth
.
nRSCS
=
F1AP_NRSCS_scs15
;
tDD_Info
->
transmission_Bandwidth
.
nRNRB
=
F1AP_NRNRB_nrb11
;
}
else
{
AssertFatal
(
false
,
"unknown mode %d
\n
"
,
cell
->
mode
);
}
/* - measurementTimingConfiguration */
...
...
openair2/GNB_APP/gnb_config.c
View file @
85d89164
...
...
@@ -1987,35 +1987,25 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i) {
if
(
rrc
->
configuration
.
scc
->
tdd_UL_DL_ConfigurationCommon
)
{
LOG_I
(
GNB_APP
,
"ngran_DU: Configuring Cell %d for TDD
\n
"
,
k
);
f1Setup
->
fdd_flag
=
0
;
f1Setup
->
nr_mode_info
[
k
].
tdd
.
nr_arfcn
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
;
f1Setup
->
nr_mode_info
[
k
].
tdd
.
scs
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
subcarrierSpacing
;
f1Setup
->
nr_mode_info
[
k
].
tdd
.
nrb
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
carrierBandwidth
;
f1Setup
->
nr_mode_info
[
k
].
tdd
.
num_frequency_bands
=
1
;
f1Setup
->
nr_mode_info
[
k
].
tdd
.
nr_band
[
0
]
=
*
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
f1Setup
->
nr_mode_info
[
k
].
tdd
.
sul_active
=
0
;
f1Setup
->
cell
[
k
].
info
.
mode
=
F1AP_MODE_TDD
;
f1ap_tdd_info_t
*
tdd
=
&
f1Setup
->
cell
[
k
].
info
.
tdd
;
tdd
->
freqinfo
.
arfcn
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
;
tdd
->
tbw
.
scs
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
subcarrierSpacing
;
tdd
->
tbw
.
nrb
=
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
carrierBandwidth
;
tdd
->
freqinfo
.
band
=
*
rrc
->
configuration
.
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
}
else
{
/***************** for test *****************/
LOG_I
(
GNB_APP
,
"ngran_DU: Configuring Cell %d for FDD
\n
"
,
k
);
f1Setup
->
fdd_flag
=
1
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_nr_arfcn
=
26200UL
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_nr_arfcn
=
26200UL
;
// For LTE use scs field to carry prefix type and number of antennas
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_scs
=
0
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_scs
=
0
;
// use nrb field to hold LTE N_RB_DL (0...5)
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_nrb
=
3
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_nrb
=
3
;
// RK: we need to check there value for FDD's frequency_bands DL/UL
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_num_frequency_bands
=
1
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_nr_band
[
0
]
=
7
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_num_frequency_bands
=
1
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_nr_band
[
0
]
=
7
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_num_sul_frequency_bands
=
0
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
ul_nr_sul_band
[
0
]
=
7
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_num_sul_frequency_bands
=
0
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
dl_nr_sul_band
[
0
]
=
7
;
f1Setup
->
nr_mode_info
[
k
].
fdd
.
sul_active
=
0
;
f1Setup
->
cell
[
k
].
info
.
mode
=
F1AP_MODE_FDD
;
f1ap_fdd_info_t
*
fdd
=
&
f1Setup
->
cell
[
k
].
info
.
fdd
;
fdd
->
dl_freqinfo
.
arfcn
=
26200UL
;
fdd
->
ul_freqinfo
.
arfcn
=
26200UL
;
fdd
->
dl_tbw
.
scs
=
0
;
fdd
->
ul_tbw
.
scs
=
0
;
fdd
->
dl_tbw
.
nrb
=
3
;
fdd
->
ul_tbw
.
nrb
=
3
;
fdd
->
dl_freqinfo
.
band
=
7
;
fdd
->
ul_freqinfo
.
band
=
7
;
/***************** for test *****************/
}
...
...
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