Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
abd705ed
Commit
abd705ed
authored
Jul 24, 2017
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
integration of LTE-M SIB1/SI interfaces and scheduling
parent
122fcc52
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1134 additions
and
232 deletions
+1134
-232
openair1/PHY/CODING/defs.h
openair1/PHY/CODING/defs.h
+2
-2
openair1/PHY/CODING/lte_rate_matching.c
openair1/PHY/CODING/lte_rate_matching.c
+2
-2
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+3
-0
openair1/PHY/LTE_TRANSPORT/dci.h
openair1/PHY/LTE_TRANSPORT/dci.h
+1
-4
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+284
-10
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+4
-1
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+20
-20
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+12
-12
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+2
-2
openair1/PHY/defs.h
openair1/PHY/defs.h
+2
-0
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+86
-6
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+84
-2
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/config.c
+28
-22
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+20
-3
openair2/LAYER2/MAC/eNB_scheduler_bch.c
openair2/LAYER2/MAC/eNB_scheduler_bch.c
+467
-62
openair2/LAYER2/MAC/proto.h
openair2/LAYER2/MAC/proto.h
+37
-39
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+5
-5
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+68
-38
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+1
-0
targets/SIMU/USER/oaisim.c
targets/SIMU/USER/oaisim.c
+6
-2
No files found.
openair1/PHY/CODING/defs.h
View file @
abd705ed
...
...
@@ -178,6 +178,7 @@ uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w);
\param Qm modulation order (2,4,6)
\param Nl number of layers (1,2)
\param r segment number
\param nb_rb Number of PRBs
\returns \f$E\f$, the number of coded bits per segment */
...
...
@@ -193,8 +194,7 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
uint8_t
Qm
,
uint8_t
Nl
,
uint8_t
r
,
uint8_t
nb_rb
,
uint8_t
m
);
uint8_t
nb_rb
);
/**
\brief This is the LTE rate matching algorithm for Convolutionally-coded channels (e.g. BCH,DCI,UCI). It is taken directly from 36-212 (Rel 8 8.6, 2009-03), pages 16-18 )
...
...
openair1/PHY/CODING/lte_rate_matching.c
View file @
abd705ed
...
...
@@ -463,8 +463,8 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
uint8_t
Qm
,
uint8_t
Nl
,
uint8_t
r
,
uint8_t
nb_rb
,
uint8_t
m
)
uint8_t
nb_rb
)
//
uint8_t m)
{
...
...
openair1/PHY/INIT/lte_init.c
View file @
abd705ed
...
...
@@ -1652,6 +1652,9 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
eNB
->
total_transmitted_bits
=
0
;
eNB
->
total_system_throughput
=
0
;
eNB
->
check_for_MUMIMO_transmissions
=
0
;
while
(
eNB
->
configured
==
0
)
usleep
(
10000
);
LOG_I
(
PHY
,
"[eNB %"
PRIu8
"] Initializing DL_FRAME_PARMS : N_RB_DL %"
PRIu8
", PHICH Resource %d, PHICH Duration %d
\n
"
,
eNB
->
Mod_id
,
fp
->
N_RB_DL
,
fp
->
phich_config_common
.
phich_resource
,
...
...
openair1/PHY/LTE_TRANSPORT/dci.h
View file @
abd705ed
...
...
@@ -29,11 +29,8 @@
* \note
* \warning
*/
#ifndef USER_MODE
#include "PHY/types.h"
#else
#include <stdint.h>
#endif
/// DCI Format Type 0 (5 MHz,TDD0, 27 bits)
struct
DCI0_5MHz_TDD0
{
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
abd705ed
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
abd705ed
...
...
@@ -34,6 +34,7 @@
#include "PHY/defs.h"
#include "PHY/impl_defs_lte.h"
#include "dci.h"
#include "mdci.h"
#include "uci.h"
#ifndef STANDALONE_COMPILE
#include "UTIL/LISTS/list.h"
...
...
@@ -123,7 +124,9 @@ typedef struct {
uint32_t
subframe
;
/// Index of current HARQ round for this DLSCH
uint8_t
round
;
/// MCS format for this DLSCH
/// Modulation order
uint8_t
Qm
;
/// MCS
uint8_t
mcs
;
/// Redundancy-version of the current sub-frame
uint8_t
rvidx
;
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
abd705ed
...
...
@@ -280,7 +280,7 @@ int dlsch_encoding_2threads0(te_params *tep) {
unsigned
short
nb_rb
=
dlsch
->
harq_processes
[
harq_pid
]
->
nb_rb
;
unsigned
int
Kr
=
0
,
Kr_bytes
,
r
,
r_offset
=
0
;
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
//
unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING_W
,
VCD_FUNCTION_IN
);
...
...
@@ -340,11 +340,11 @@ int dlsch_encoding_2threads0(te_params *tep) {
dlsch
->
Mdlharq
,
dlsch
->
Kmimo
,
dlsch
->
harq_processes
[
harq_pid
]
->
rvidx
,
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
,
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
r
,
nb_rb
,
m
);
// r
nb_rb
);
//
m); // r
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING_W
,
VCD_FUNCTION_OUT
);
...
...
@@ -400,12 +400,12 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
unsigned
int
A
;
unsigned
char
mod_order
;
unsigned
int
Kr
=
0
,
Kr_bytes
,
r
,
r_offset
=
0
;
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
//
unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
A
=
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
;
//6228
mod_order
=
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
;
mod_order
=
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
;
G
=
get_G
(
frame_parms
,
nb_rb
,
dlsch
->
harq_processes
[
harq_pid
]
->
rb_alloc
,
mod_order
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
dlsch
->
harq_processes
[
harq_pid
]
->
mimo_mode
==
TM7
?
7
:
0
);
...
...
@@ -524,7 +524,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
// get information for E for the segments that are handled by the worker thread
if
(
r
<
(
dlsch
->
harq_processes
[
harq_pid
]
->
C
>>
1
))
{
int
Nl
=
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
;
int
Qm
=
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
;
int
Qm
=
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
;
int
C
=
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
int
Gp
=
G
/
Nl
/
Qm
;
int
GpmodC
=
Gp
%
C
;
...
...
@@ -544,11 +544,11 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
dlsch
->
Mdlharq
,
dlsch
->
Kmimo
,
dlsch
->
harq_processes
[
harq_pid
]
->
rvidx
,
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
,
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
r
,
nb_rb
,
m
);
// r
nb_rb
);
//
m); // r
stop_meas
(
rm_stats
);
}
}
...
...
@@ -584,14 +584,14 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
unsigned
int
A
;
unsigned
char
mod_order
;
unsigned
int
Kr
=
0
,
Kr_bytes
,
r
,
r_offset
=
0
;
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
//
unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
uint8_t
beamforming_mode
=
0
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
A
=
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
;
//6228
// printf("Encoder: A: %d\n",A);
mod_order
=
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
;
mod_order
=
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
;
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
mimo_mode
==
TM7
)
beamforming_mode
=
7
;
...
...
@@ -720,11 +720,11 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
dlsch
->
Mdlharq
,
dlsch
->
Kmimo
,
dlsch
->
harq_processes
[
harq_pid
]
->
rvidx
,
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
,
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
r
,
nb_rb
,
m
);
// r
nb_rb
);
//
m); // r
stop_meas
(
rm_stats
);
#ifdef DEBUG_DLSCH_CODING
...
...
@@ -761,14 +761,14 @@ int dlsch_encoding_SIC(PHY_VARS_UE *ue,
unsigned
int
A
;
unsigned
char
mod_order
;
unsigned
int
Kr
=
0
,
Kr_bytes
,
r
,
r_offset
=
0
;
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
//
unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
uint8_t
beamforming_mode
=
0
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
A
=
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
;
//6228
// printf("Encoder: A: %d\n",A);
mod_order
=
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
;
mod_order
=
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
;
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
mimo_mode
==
TM7
)
beamforming_mode
=
7
;
...
...
@@ -897,11 +897,11 @@ int dlsch_encoding_SIC(PHY_VARS_UE *ue,
dlsch
->
Mdlharq
,
dlsch
->
Kmimo
,
dlsch
->
harq_processes
[
harq_pid
]
->
rvidx
,
get_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
)
,
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
r
,
nb_rb
,
m
);
// r
nb_rb
);
//
m); // r
stop_meas
(
rm_stats
);
#ifdef DEBUG_DLSCH_CODING
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
abd705ed
...
...
@@ -585,8 +585,8 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
int
first_layer0
=
-
1
;
//= dlsch0_harq->first_layer;
int
Nlayers0
=
-
1
;
// = dlsch0_harq->Nlayers;
uint8_t
mod_order0
=
0
;
// = get_Qm(dlsch0_harq->mcs);
uint8_t
mod_order1
=
0
;
//=2;
uint8_t
mod_order0
=
0
;
uint8_t
mod_order1
=
0
;
uint8_t
precoder_index0
,
precoder_index1
;
uint8_t
*
x1
=
NULL
;
...
...
@@ -640,12 +640,12 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
mimo_mode
=
dlsch0_harq
->
mimo_mode
;
first_layer0
=
dlsch0_harq
->
first_layer
;
Nlayers0
=
dlsch0_harq
->
Nlayers
;
mod_order0
=
get_Qm
(
dlsch0_harq
->
mcs
)
;
mod_order0
=
dlsch0_harq
->
Qm
;
x1
=
dlsch1_harq
->
e
;
// Fill these in later for TM8-10
// Nlayers1 = dlsch1_harq->Nlayers;
// first_layer1 = dlsch1_harq->first_layer;
mod_order1
=
get_Qm
(
dlsch1_harq
->
mcs
)
;
mod_order1
=
dlsch1_harq
->
Qm
;
}
else
if
((
dlsch0_harq
!=
NULL
)
&&
(
dlsch1_harq
==
NULL
)){
//This is for SIS0 TM1, TM6, etc
...
...
@@ -653,7 +653,7 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
mimo_mode
=
dlsch0_harq
->
mimo_mode
;
first_layer0
=
dlsch0_harq
->
first_layer
;
Nlayers0
=
dlsch0_harq
->
Nlayers
;
mod_order0
=
get_Qm
(
dlsch0_harq
->
mcs
)
;
mod_order0
=
dlsch0_harq
->
Qm
;
}
else
if
((
dlsch0_harq
==
NULL
)
&&
(
dlsch1_harq
!=
NULL
)){
// This is for TM4 retransmission
...
...
@@ -661,7 +661,7 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
mimo_mode
=
dlsch1_harq
->
mimo_mode
;
first_layer0
=
dlsch1_harq
->
first_layer
;
Nlayers0
=
dlsch1_harq
->
Nlayers
;
mod_order0
=
get_Qm
(
dlsch1_harq
->
mcs
)
;
mod_order0
=
dlsch1_harq
->
Qm
;
}
...
...
@@ -2065,14 +2065,14 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
harq_pid
=
dlsch0
->
harq_ids
[
subframe_offset
];
dlsch0_harq
=
dlsch0
->
harq_processes
[
harq_pid
];
mimo_mode
=
dlsch0_harq
->
mimo_mode
;
mod_order0
=
get_Qm
(
dlsch0_harq
->
mcs
)
;
mod_order0
=
dlsch0_harq
->
Qm
;
rb_alloc
=
dlsch0_harq
->
rb_alloc
;
#ifdef DEBUG_DLSCH_MODULATION
Nl0
=
dlsch0_harq
->
Nl
;
#endif
dlsch1_harq
=
dlsch1
->
harq_processes
[
harq_pid
];
mod_order1
=
get_Qm
(
dlsch1_harq
->
mcs
)
;
mod_order1
=
dlsch1_harq
->
Qm
;
#ifdef DEBUG_DLSCH_MODULATION
Nl1
=
dlsch1_harq
->
Nl
;
#endif
...
...
@@ -2082,7 +2082,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
harq_pid
=
dlsch0
->
harq_ids
[
subframe_offset
];
dlsch0_harq
=
dlsch0
->
harq_processes
[
harq_pid
];
mimo_mode
=
dlsch0_harq
->
mimo_mode
;
mod_order0
=
get_Qm
(
dlsch0_harq
->
mcs
)
;
mod_order0
=
dlsch0_harq
->
Qm
;
rb_alloc
=
dlsch0_harq
->
rb_alloc
;
#ifdef DEBUG_DLSCH_MODULATION
Nl0
=
dlsch0_harq
->
Nl
;
...
...
@@ -2099,7 +2099,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
harq_pid
=
dlsch1
->
harq_ids
[
subframe_offset
];
dlsch1_harq
=
dlsch1
->
harq_processes
[
harq_pid
];
mimo_mode
=
dlsch1_harq
->
mimo_mode
;
mod_order0
=
get_Qm
(
dlsch1_harq
->
mcs
)
;
mod_order0
=
dlsch1_harq
->
Qm
;
rb_alloc
=
dlsch1_harq
->
rb_alloc
;
#ifdef DEBUG_DLSCH_MODULATION
Nl0
=
dlsch1_harq
->
Nl
;
...
...
@@ -2460,7 +2460,7 @@ int dlsch_modulation_SIC(int32_t **sic_buffer,
uint8_t
harq_pid
=
-
1
;
//dlsch0->current_harq_pid;
LTE_DL_eNB_HARQ_t
*
dlsch0_harq
=
dlsch0
->
harq_processes
[
harq_pid
];
uint32_t
i
,
jj
,
re_allocated
=
0
;
uint8_t
mod_order0
=
get_Qm
(
dlsch0_harq
->
mcs
)
;
uint8_t
mod_order0
=
dlsch0_harq
->
Qm
;
uint8_t
*
x0
=
dlsch0_harq
->
e
;
uint8_t
qam64_table_offset_re
=
0
;
uint8_t
qam64_table_offset_im
=
0
;
...
...
@@ -2599,7 +2599,7 @@ int mch_modulation(int32_t **txdataF,
uint32_t
i
,
jj
,
re_allocated
,
symbol_offset
;
uint16_t
l
,
rb
,
re_offset
;
uint8_t
skip_dc
=
0
;
uint8_t
mod_order
=
get_Qm
(
dlsch
->
harq_processes
[
0
]
->
mcs
)
;
uint8_t
mod_order
=
dlsch
->
harq_processes
[
0
]
->
Qm
;
int16_t
qam16_table_a
[
4
],
qam64_table_a
[
8
];
//,qam16_table_b[4],qam64_table_b[8];
int16_t
*
qam_table_s
;
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
abd705ed
...
...
@@ -568,8 +568,8 @@ uint32_t ulsch_encoding(uint8_t *a,
get_Qm_ul
(
ulsch
->
harq_processes
[
harq_pid
]
->
mcs
),
1
,
r
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
mcs
);
// r
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
);
//
ulsch->harq_processes[harq_pid]->mcs); // r
stop_meas
(
rm_stats
);
#ifdef DEBUG_ULSCH_CODING
...
...
openair1/PHY/defs.h
View file @
abd705ed
...
...
@@ -833,6 +833,8 @@ typedef struct PHY_VARS_eNB_s {
nfapi_crc_indication_pdu_t
crc_pdu_list
[
NFAPI_CRC_IND_MAX_PDU
];
Sched_Rsp_t
Sched_INFO
;
LTE_eNB_PDCCH
pdcch_vars
[
2
];
LTE_eNB_EPDCCH
epdcch_vars
[
2
];
LTE_eNB_MPDCCH
mpdcch_vars
[
2
];
LTE_eNB_COMMON
common_vars
;
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PBCH
pbch
;
...
...
openair1/PHY/impl_defs_lte.h
View file @
abd705ed
...
...
@@ -638,6 +638,10 @@ typedef struct {
/// - first index: tx antenna [0..nb_antennas_tx[
/// - second index: sample [0..]
int32_t
**
txdataF_BF
;
/// \brief holds the transmit data before beamforming for epdcch/mpdcch
/// - first index : tx antenna [0..nb_epdcch_antenna_ports[
/// - second index: sampl [0..]
int32_t
**
txdataF_epdcch
;
/// \brief Holds the receive data in the frequency domain.
/// - first index: rx antenna [0..nb_antennas_rx[
/// - second index: ? [0..2*ofdm_symbol_size*frame_parms->symbols_per_tti[
...
...
@@ -674,7 +678,13 @@ typedef enum {format0,
format2D
,
format3
,
format3A
,
format4
format4
,
format5
,
format6_0A
,
format6_0B
,
format6_1A
,
format6_1B
,
format6_2
}
DCI_format_t
;
typedef
struct
{
...
...
@@ -696,6 +706,74 @@ typedef struct {
uint8_t
dci_pdu
[
8
];
}
DCI_ALLOC_t
;
#define MAX_EPDCCH_PRB 8
typedef
struct
{
/// Length of DCI in bits
uint8_t
dci_length
;
/// Aggregation level
uint8_t
L
;
/// Position of first CCE of the dci
int
firstCCE
;
/// flag to indicate that this is a RA response
boolean_t
ra_flag
;
/// rnti
rnti_t
rnti
;
/// Format
DCI_format_t
format
;
/// epdcch resource assignment (0=localized,1=distributed)
uint8_t
epdcch_resource_assignment_flag
;
/// epdcch index
uint16_t
epdcch_id
;
/// epdcch start symbol
uint8_t
epdcch_start_symbol
;
/// epdcch number of PRBs in set
uint8_t
epdcch_num_prb
;
/// vector of prb ids for set
uint8_t
epdcch_prb_index
[
MAX_EPDCCH_PRB
];
/// LBT parameter for frame configuration
uint8_t
dwpts_symbols
;
/// LBT parameter for frame configuration
uint8_t
initial_lbt_sf
;
/// DCI pdu
uint8_t
dci_pdu
[
8
];
}
eDCI_ALLOC_t
;
typedef
struct
{
/// Length of DCI in bits
uint8_t
dci_length
;
/// Aggregation level
uint8_t
L
;
/// Position of first CCE of the dci
int
firstCCE
;
/// flag to indicate that this is a RA response
boolean_t
ra_flag
;
/// rnti
rnti_t
rnti
;
/// Format
DCI_format_t
format
;
/// harq process index
uint8_t
harq_pid
;
/// Narrowband index
uint8_t
narrowband
;
/// number of PRB pairs for MPDCCH
uint8_t
number_of_prb_pairs
;
/// mpdcch resource assignement (0=localized,1=distributed)
uint8_t
resource_block_assignment
;
/// transmission type
uint8_t
transmission_type
;
/// mpdcch start symbol
uint8_t
start_symbol
;
/// CE mode (1=ModeA,2=ModeB)
uint8_t
ce_mode
;
/// 0-503 n_EPDCCHid_i
uint16_t
dmrs_scrambling_init
;
/// Absolute subframe of the initial transmission (0-10239)
uint16_t
initial_transmission_sf_io
;
/// DCI pdu
uint8_t
dci_pdu
[
8
];
}
mDCI_ALLOC_t
;
typedef
struct
{
uint8_t
num_dci
;
...
...
@@ -703,15 +781,17 @@ typedef struct {
DCI_ALLOC_t
dci_alloc
[
32
];
}
LTE_eNB_PDCCH
;
/*
typedef struct {
} LTE_eNB_ePDCCH;
typedef
struct
{
uint8_t
num_dci
;
eDCI_ALLOC_t
edci_alloc
[
32
];
}
LTE_eNB_EPDCCH
;
typedef
struct
{
uint8_t
num_dci
;
mDCI_ALLOC_t
mdci_alloc
[
32
];
}
LTE_eNB_MPDCCH
;
*/
typedef
struct
{
/// \brief Hold the channel estimates in frequency domain based on SRS.
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
abd705ed
...
...
@@ -909,6 +909,21 @@ void handle_nfapi_dci_dl_pdu(PHY_VARS_eNB *eNB,
fill_dci_and_dlsch
(
eNB
,
proc
,
&
pdcch_vars
->
dci_alloc
[
pdcch_vars
->
num_dci
],
pdu
);
}
void
handle_nfapi_mpdcch_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_dl_config_request_pdu_t
*
dl_config_pdu
);
void
handle_nfapi_mpdcch_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_dl_config_request_pdu_t
*
dl_config_pdu
)
{
int
idx
=
proc
->
subframe_tx
&
1
;
LTE_eNB_MPDCCH
*
mpdcch_vars
=
&
eNB
->
mpdcch_vars
[
idx
];
nfapi_dl_config_mpdcch_pdu
*
pdu
=
&
dl_config_pdu
->
mpdcch_pdu
;
LOG_I
(
PHY
,
"Frame %d, Subframe %d: MDCI processing
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
// copy dci configuration into eNB structure
fill_mdci_and_dlsch
(
eNB
,
proc
,
&
mpdcch_vars
->
mdci_alloc
[
mpdcch_vars
->
num_dci
],
pdu
);
}
void
handle_nfapi_hi_dci0_dci_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_hi_dci0_request_pdu_t
*
hi_dci0_config_pdu
);
...
...
@@ -954,12 +969,26 @@ handle_nfapi_bch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
}
#ifdef Rel14
extern
uint32_t
localRIV2alloc_LUT6
[
32
];
extern
uint32_t
localRIV2alloc_LUT25
[
512
];
extern
uint32_t
localRIV2alloc_LUT50_0
[
1600
];
extern
uint32_t
localRIV2alloc_LUT50_1
[
1600
];
extern
uint32_t
localRIV2alloc_LUT100_0
[
6000
];
extern
uint32_t
localRIV2alloc_LUT100_1
[
6000
];
extern
uint32_t
localRIV2alloc_LUT100_2
[
6000
];
extern
uint32_t
localRIV2alloc_LUT100_3
[
6000
];
#endif
handle_nfapi_dlsch_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
nfapi_dl_config_request_pdu_t
*
dl_config_pdu
,
uint8_t
codeword_index
,
uint8_t
*
sdu
)
{
nfapi_dl_config_dlsch_pdu_rel8_t
*
rel8
=
&
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel8
;
#ifdef Rel14
nfapi_dl_config_dlsch_pdu_rel13_t
*
rel13
=
&
dl_config_pdu
->
dlsch_pdu
.
dlsch_pdu_rel13
;
#endif
LTE_eNB_DLSCH_t
*
dlsch0
=
NULL
,
*
dlsch1
=
NULL
;
LTE_DL_eNB_HARQ_t
*
dlsch0_harq
=
NULL
,
*
dlsch1_harq
=
NULL
;
int
UE_id
;
...
...
@@ -969,9 +998,14 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
UE_id
=
find_dlsch
(
rel8
->
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
AssertFatal
(
UE_id
!=-
1
,
"no free or exiting dlsch_context
\n
"
);
AssertFatal
(
UE_id
<
NUMBER_OF_UE_MAX
,
"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)
\n
"
,
UE_id
,
NUMBER_OF_UE_MAX
);
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
#ifdef Rel14
if
((
rel13
->
pdsch_payload_type
==
0
)
&&
(
rel13
->
ue_type
>
0
))
dlsch0
->
harq_ids
[
proc
->
subframe_tx
]
=
0
;
#endif
harq_pid
=
dlsch0
->
harq_ids
[
proc
->
subframe_tx
];
AssertFatal
((
harq_pid
>=
0
)
&&
(
harq_pid
<
8
),
"harq_pid %d not in 0...7
\n
"
,
harq_pid
);
dlsch0_harq
=
dlsch0
->
harq_processes
[
harq_pid
];
...
...
@@ -983,6 +1017,52 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
if
(
codeword_index
==
0
)
dlsch0_harq
->
pdu
=
sdu
;
else
dlsch1_harq
->
pdu
=
sdu
;
#ifdef Rel14
if
((
rel13
->
pdsch_payload_type
==
0
)
&&
(
rel13
->
ue_type
>
0
))
{
// this is a BR/CE UE and SIB1-BR
// configure PDSCH
switch
(
eNB
->
frame_parms
.
N_RB_DL
)
{
case
6
:
dlsch0_harq
->
rb_alloc
[
0
]
=
localRIV2alloc_LUT6
[
rel8
->
resource_block_coding
];
break
;
case
15
:
AssertFatal
(
1
==
0
,
"15 PRBs not supported for now
\n
"
);
break
;
case
25
:
dlsch0_harq
->
rb_alloc
[
0
]
=
localRIV2alloc_LUT25
[
rel8
->
resource_block_coding
];
break
;
case
50
:
dlsch0_harq
->
rb_alloc
[
0
]
=
localRIV2alloc_LUT50_0
[
rel8
->
resource_block_coding
];
dlsch0_harq
->
rb_alloc
[
1
]
=
localRIV2alloc_LUT50_1
[
rel8
->
resource_block_coding
];
break
;
case
75
:
AssertFatal
(
1
==
0
,
"75 PRBs not supported for now
\n
"
);
break
;
case
100
:
dlsch0_harq
->
rb_alloc
[
0
]
=
localRIV2alloc_LUT100_0
[
rel8
->
resource_block_coding
];
dlsch0_harq
->
rb_alloc
[
1
]
=
localRIV2alloc_LUT100_1
[
rel8
->
resource_block_coding
];
dlsch0_harq
->
rb_alloc
[
2
]
=
localRIV2alloc_LUT100_2
[
rel8
->
resource_block_coding
];
dlsch0_harq
->
rb_alloc
[
3
]
=
localRIV2alloc_LUT100_3
[
rel8
->
resource_block_coding
];
}
dlsch0
->
active
=
1
;
dlsch0_harq
->
nb_rb
=
6
;
dlsch0_harq
->
vrb_type
=
LOCALIZED
;
dlsch0_harq
->
rvidx
=
0
;
dlsch0_harq
->
Nl
=
0
;
dlsch0_harq
->
mimo_mode
=
(
eNB
->
frame_parms
.
nb_antenna_ports_eNB
==
1
)
?
SISO
:
ALAMOUTI
;
dlsch0_harq
->
dl_power_off
=
1
;
dlsch0_harq
->
round
=
0
;
dlsch0_harq
->
status
=
ACTIVE
;
dlsch0_harq
->
TBS
=
rel8
->
length
;
}
else
{
}
#endif
}
handle_nfapi_ul_pdu
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
...
...
@@ -1121,7 +1201,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
// handle_nfapi_epdcch_pdu(eNB,dl_config_pdu);
break
;
case
NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE
:
// handle_nfapi_mpdcch_pdu(eNB,dl_config_pdu);
handle_nfapi_mpdcch_pdu
(
eNB
,
proc
,
dl_config_pdu
);
eNB
->
mpdcch_vars
[
subframe
&
1
].
num_dci
++
;
break
;
}
}
...
...
@@ -1138,6 +1219,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) {
case
NFAPI_HI_DCI0_HI_PDU_TYPE
:
handle_nfapi_hi_dci0_hi_pdu
(
eNB
,
proc
,
hi_dci0_req_pdu
);
eNB
->
pdcch_vars
[
subframe
&
1
].
num_dci
++
;
break
;
}
}
...
...
openair2/LAYER2/MAC/config.c
View file @
abd705ed
...
...
@@ -451,8 +451,7 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP,
MeasGapConfig_t
*
measGapConfig
,
TDD_Config_t
*
tdd_Config
,
MobilityControlInfo_t
*
mobilityControlInfo
,
uint8_t
*
SIwindowsize
,
uint16_t
*
SIperiod
,
SchedulingInfoList_t
*
schedulingInfoList
,
uint32_t
ul_CarrierFreq
,
long
*
ul_Bandwidth
,
AdditionalSpectrumEmission_t
*
additionalSpectrumEmission
,
...
...
@@ -461,6 +460,10 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP,
,
uint8_t
MBMS_Flag
,
MBSFN_AreaInfoList_r9_t
*
mbsfn_AreaInfoList
,
PMCH_InfoList_r9_t
*
pmch_InfoList
#endif
#ifdef Rel14
,
SystemInformationBlockType1_v1310_IEs_t
*
sib1_v13ext
#endif
)
{
...
...
@@ -513,13 +516,16 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP,
mac_init_cell_params
(
Mod_idP
,
CC_idP
);
}
if
(
(
SIwindowsize
!=
NULL
)
&&
(
SIperiod
!=
NULL
)
)
{
if
(
schedulingInfoList
!=
NULL
)
{
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
tdd_Config
=
tdd_Config
;
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
SIwindowsize
=
*
SIwindowsize
;
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
SIperiod
=
*
SIperiod
;
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
schedulingInfoList
=
schedulingInfoList
;
config_sib1
(
Mod_idP
,
CC_idP
,
tdd_Config
);
}
#ifdef Rel14
if
(
sib1_v13ext
!=
NULL
)
{
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
sib1_v13ext
=
sib1_v13ext
;
}
#endif
if
(
radioResourceConfigCommon
!=
NULL
)
{
LOG_I
(
MAC
,
"[CONFIG]SIB2/3 Contents (partial)
\n
"
);
LOG_I
(
MAC
,
"[CONFIG]pusch_config_common.n_SB = %ld
\n
"
,
radioResourceConfigCommon
->
pusch_ConfigCommon
.
pusch_ConfigBasic
.
n_SB
);
...
...
@@ -533,7 +539,7 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP,
AssertFatal
(
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
>
0
,
"radioResourceconfigCommon %d == 0
\n
"
,
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
);
(
int
)
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
);
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
radioResourceConfigCommon
=
radioResourceConfigCommon
;
if
(
ul_CarrierFreq
>
0
)
RC
.
mac
[
Mod_idP
]
->
common_channels
[
CC_idP
].
ul_CarrierFreq
=
ul_CarrierFreq
;
...
...
openair2/LAYER2/MAC/defs.h
View file @
abd705ed
...
...
@@ -56,6 +56,7 @@
#include "RadioResourceConfigCommon.h"
#include "RadioResourceConfigDedicated.h"
#include "MeasGapConfig.h"
#include "SchedulingInfoList.h"
#include "TDD-Config.h"
#include "RACH-ConfigCommon.h"
#include "MeasObjectToAddModList.h"
...
...
@@ -66,6 +67,9 @@
#include "PMCH-InfoList-r9.h"
#include "SCellToAddMod-r10.h"
#endif
#ifdef Rel14
#include "SystemInformationBlockType1-v1310-IEs.h"
#endif
#include "nfapi_interface.h"
#include "PHY_INTERFACE/IF_Module.h"
...
...
@@ -310,6 +314,10 @@ typedef struct {
#define PCCH 4 // Paging
/*!\brief Values of PCCH logical channel (fake) */
#define MIBCH 5 // MIB
/*!\brief Values of BCCH SIB1_BR logical channel (fake) */
#define BCCH_SIB1_BR 6 // SIB1_BR
/*!\brief Values of BCCH SIB_BR logical channel (fake) */
#define BCCH_SI_BR 7 // SI-BR
/*!\brief Value of CCCH / SRB0 logical channel */
#define CCCH 0 // srb0
/*!\brief DCCH / SRB1 logical channel */
...
...
@@ -891,10 +899,11 @@ typedef struct {
uint32_t
dl_CarrierFreq
;
BCCH_BCH_Message_t
*
mib
;
RadioResourceConfigCommonSIB_t
*
radioResourceConfigCommon
;
#ifdef Rel14
RadioResourceConfigCommonSIB_t
*
radioResourceConfigCommon_BR
;
#endif
TDD_Config_t
*
tdd_Config
;
uint8_t
SIwindowsize
;
uint16_t
SIperiod
;
SchedulingInfoList_t
*
schedulingInfoList
;
ARFCN_ValueEUTRA_t
ul_CarrierFreq
;
long
ul_Bandwidth
;
/// Outgoing MIB PDU for PHY
...
...
@@ -937,6 +946,14 @@ typedef struct {
/// Outgoing MCH pdu for PHY
MCH_PDU
MCH_pdu
;
#endif
#ifdef Rel14
/// Rel13 parameters from SIB1
SystemInformationBlockType1_v1310_IEs_t
*
sib1_v13ext
;
/// Counter for SIB1-BR scheduling
int
SIB1_BR_cnt
;
/// Outgoing BCCH-BR pdu for PHY
BCCH_PDU
BCCH_BR_pdu
[
20
];
#endif
}
COMMON_channels_t
;
/*! \brief top level eNB MAC structure */
typedef
struct
eNB_MAC_INST_s
{
...
...
openair2/LAYER2/MAC/eNB_scheduler_bch.c
View file @
abd705ed
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/proto.h
View file @
abd705ed
...
...
@@ -736,12 +736,12 @@ unsigned char generate_dlsch_header(unsigned char *mac_header,
@param measGapConfig Measurement Gap configuration for MAC (if NULL keep existing configuration)
@param tdd_Config TDD Configuration from SIB1 (if NULL keep existing configuration)
@param mobilityControlInfo mobility control info received for Handover
@param SIwindowsize SI Windowsize from SIB1 (if NULL keep existing configuration)
@param SIperiod SI Period from SIB1 (if NULL keep existing configuration)
@param SchedInfoList SI Scheduling information
@param MBMS_Flag indicates MBMS transmission
@param mbsfn_SubframeConfigList pointer to mbsfn subframe configuration list from SIB2
@param mbsfn_AreaInfoList pointer to MBSFN Area Info list from SIB13
@param pmch_InfoList pointer to PMCH_InfoList from MBSFNAreaConfiguration Message (MCCH Message)
@param sib1_ext_r13 SI Scheduling information for SI-BR UEs
*/
int
rrc_mac_config_req_eNB
(
module_id_t
module_idP
,
...
...
@@ -772,8 +772,7 @@ int rrc_mac_config_req_eNB(module_id_t module_idP,
MeasGapConfig_t
*
measGapConfig
,
TDD_Config_t
*
tdd_Config
,
MobilityControlInfo_t
*
mobilityControlInfo
,
uint8_t
*
SIwindowsize
,
uint16_t
*
SIperiod
,
SchedulingInfoList_t
*
schedulingInfoList
,
uint32_t
ul_CarrierFreq
,
long
*
ul_Bandwidth
,
AdditionalSpectrumEmission_t
*
additionalSpectrumEmission
,
...
...
@@ -785,10 +784,9 @@ int rrc_mac_config_req_eNB(module_id_t module_idP,
PMCH_InfoList_r9_t
*
pmch_InfoList
#endif
#ifdef
CBA
#ifdef
Rel14
,
uint8_t
num_active_cba_groups
,
uint16_t
cba_rnti
SystemInformationBlockType1_v1310_IEs_t
*
sib1_ext_r13
#endif
);
...
...
openair2/RRC/LITE/defs.h
View file @
abd705ed
...
...
@@ -462,6 +462,8 @@ typedef struct {
uint8_t
*
SIB23
;
uint8_t
sizeof_SIB23
;
#ifdef Rel14
uint8_t
*
SIB1_BR
;
uint8_t
sizeof_SIB1_BR
;
uint8_t
*
SIB23_BR
;
uint8_t
sizeof_SIB23_BR
;
#endif
...
...
@@ -477,10 +479,12 @@ typedef struct {
// SystemInformation_t systemInformation;
SystemInformationBlockType1_t
*
sib1
;
SystemInformationBlockType2_t
*
sib2
;
SystemInformationBlockType3_t
*
sib3
;
#ifdef Rel14
SystemInformationBlockType1_t
*
sib1_BR
;
SystemInformationBlockType2_t
*
sib2_BR
;
SystemInformationBlockType2_t
*
sib3_BR
;
#endif
SystemInformationBlockType3_t
*
sib3
;
#if defined(Rel10) || defined(Rel14)
SystemInformationBlockType13_r9_t
*
sib13
;
uint8_t
MBMS_flag
;
...
...
@@ -490,10 +494,6 @@ typedef struct {
MCCH_Message_t
mcch
;
MBSFNAreaConfiguration_r9_t
*
mcch_message
;
SRB_INFO
MCCH_MESS
[
8
];
// MAX_MBSFN_AREA
#endif
#ifdef CBA
uint8_t
num_active_cba_groups
;
uint16_t
cba_rnti
[
NUM_MAX_CBA_GROUP
];
#endif
SRB_INFO
SI
;
SRB_INFO
Srb0
;
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
abd705ed
...
...
@@ -133,6 +133,10 @@ init_SI(
int
i
;
#endif
#ifdef Rel14
SystemInformationBlockType1_v1310_IEs_t
*
sib1_v13ext
=
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
;
#endif
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
MIB
=
(
uint8_t
*
)
malloc16
(
4
);
// copy basic parameters
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
physCellId
=
configuration
->
Nid_cell
[
CC_id
];
...
...
@@ -263,6 +267,21 @@ init_SI(
PROTOCOL_RRC_CTXT_FMT
" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
));
#ifdef Rel14
if
((
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
mib
.
message
.
schedulingInfoSIB1_BR_r13
>
0
)
&&
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
!=
NULL
))
{
AssertFatal
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
!=
NULL
,
"sib2_br->nonCriticalExtension is null (v9.2)
\n
"
);
AssertFatal
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
->
nonCriticalExtension
!=
NULL
,
"sib2_br->nonCriticalExtension is null (v11.3)
\n
"
);
AssertFatal
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
!=
NULL
,
"sib2_br->nonCriticalExtension is null (v12.5)
\n
"
);
AssertFatal
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
!=
NULL
,
"sib2_br->nonCriticalExtension is null (v13.10)
\n
"
);
sib1_v13ext
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
;
}
#endif
rrc_mac_config_req_eNB
(
ctxt_pP
->
module_id
,
CC_id
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
physCellId
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
p_eNB
,
...
...
@@ -292,7 +311,7 @@ init_SI(
(
MeasGapConfig_t
*
)
NULL
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1
->
tdd_Config
,
NULL
,
&
SIwindowsize
,
&
SIperiod
,
&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1
->
schedulingInfoList
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
ul_CarrierFreq
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib2
->
freqInfo
.
ul_Bandwidth
,
&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib2
->
freqInfo
.
additionalSpectrumEmission
,
...
...
@@ -303,9 +322,9 @@ init_SI(
(
MBSFN_AreaInfoList_r9_t
*
)
&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib13
->
mbsfn_AreaInfoList_r9
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef
CBA
,
0
,
//RC.rrc[ctxt_pP->module_id]->num_active_cba_groups,
0
//RC.rrc[ctxt_pP->module_id]->cba_rnti[0]
#ifdef
Rel14
,
sib1_v13ext
#endif
);
}
...
...
@@ -386,15 +405,18 @@ init_MCCH(
(
struct
LogicalChannelConfig
*
)
NULL
,
(
MeasGapConfig_t
*
)
NULL
,
(
TDD_Config_t
*
)
NULL
,
NULL
,
(
uint8_t
*
)
NULL
,
(
uint16_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
(
MobilityControlInfo_t
*
)
NULL
,
(
SchedulingInfoList_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
&
(
RC
.
rrc
[
enb_mod_idP
]
->
carrier
[
CC_id
].
mcch_message
->
pmch_InfoList_r9
)
# endif
# ifdef CBA
,
0
,
0
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
...
...
@@ -2748,8 +2770,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
ue_context_pP
->
ue_context
.
measGapConfig
,
(
TDD_Config_t
*
)
NULL
,
(
MobilityControlInfo_t
*
)
NULL
,
(
uint8_t
*
)
NULL
,
(
uint16_t
*
)
NULL
,
(
SchedulingInfoList_t
*
)
NULL
,
0
,
NULL
,
NULL
,
...
...
@@ -2757,9 +2778,10 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef CBA
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
num_active_cba_groups
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
cba_rnti
[
0
]
#endif
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
// Configure target eNB SRB2
...
...
@@ -3327,13 +3349,14 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
ue_context_pP
->
ue_context
.
measGapConfig
,
(
TDD_Config_t
*
)
NULL
,
(
MobilityControlInfo_t
*
)
mobilityInfo
,
(
uint8_t
*
)
NULL
,
(
uint16
_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
(
SchedulingInfoList
_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef CBA
,
0
,
0
#endif
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
/*
...
...
@@ -3629,14 +3652,15 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
ue_context_pP
->
ue_context
.
measGapConfig
,
(
TDD_Config_t
*
)
NULL
,
NULL
,
(
uint8
_t
*
)
NULL
,
(
uint16_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
(
SchedulingInfoList
_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef CBA
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
num_active_cba_groups
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
cba_rnti
[
0
]
#endif
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
}
else
{
// remove LCHAN from MAC/PHY
...
...
@@ -3680,13 +3704,16 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
(
LogicalChannelConfig_t
*
)
NULL
,
(
MeasGapConfig_t
*
)
NULL
,
(
TDD_Config_t
*
)
NULL
,
NULL
,
(
uint8_t
*
)
NULL
,
(
uint16_t
*
)
NULL
,
0
,
NULL
,
NULL
,
NULL
NULL
,
(
SchedulingInfoList_t
*
)
NULL
,
0
,
NULL
,
NULL
,
NULL
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef CBA
,
0
,
0
#endif
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
}
}
...
...
@@ -3778,14 +3805,15 @@ rrc_eNB_generate_RRCConnectionSetup(
ue_context_pP
->
ue_context
.
measGapConfig
,
(
TDD_Config_t
*
)
NULL
,
NULL
,
(
uint8
_t
*
)
NULL
,
(
uint16_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
(
SchedulingInfoList
_t
*
)
NULL
,
0
,
NULL
,
NULL
,
(
MBSFN_SubframeConfigList_t
*
)
NULL
#if defined(Rel10) || defined(Rel14)
,
0
,
(
MBSFN_AreaInfoList_r9_t
*
)
NULL
,
(
PMCH_InfoList_r9_t
*
)
NULL
#endif
#ifdef CBA
,
0
,
0
#endif
# ifdef Rel14
,
(
SystemInformationBlockType1_v1310_IEs_t
*
)
NULL
# endif
);
break
;
}
...
...
@@ -3839,14 +3867,16 @@ openair_rrc_eNB_init(
PROTOCOL_RRC_CTXT_ARGS
(
&
ctxt
));
#if OCP_FRAMEWORK
while
(
RC
.
rrc
[
enb_mod_idP
]
==
NULL
)
{
while
(
RC
.
rrc
[
enb_mod_idP
]
==
NULL
)
{
LOG_E
(
RRC
,
"RC.rrc not yet initialized, waiting 1 second
\n
"
);
sleep
(
1
);
}
}
#endif
AssertFatal
(
RC
.
rrc
[
enb_mod_idP
]
!=
NULL
,
"RC.rrc not initialized!"
);
AssertFatal
(
NUMBER_OF_UE_MAX
<
(
module_id_t
)
0xFFFFFFFFFFFFFFFF
,
" variable overflow"
);
#ifdef ENABLE_ITTI
AssertFatal
(
configuration
!=
NULL
,
"configuration input is null
\n
"
);
#endif
// for (j = 0; j < NUMBER_OF_UE_MAX; j++)
// RC.rrc[ctxt.module_id].Info.UE[j].Status = RRC_IDLE; //CH_READY;
//
...
...
@@ -5050,7 +5080,7 @@ rrc_enb_task(
/* Messages from eNB app */
case
RRC_CONFIGURATION_REQ
:
LOG_I
(
RRC
,
"[eNB %d] Received %s
\n
"
,
instance
,
msg_name_p
);
LOG_I
(
RRC
,
"[eNB %d] Received %s
: %p
\n
"
,
instance
,
msg_name_p
,
&
RRC_CONFIGURATION_REQ
(
msg_p
)
);
openair_rrc_eNB_configuration
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_CONFIGURATION_REQ
(
msg_p
));
break
;
...
...
targets/RT/USER/lte-ru.c
View file @
abd705ed
...
...
@@ -1754,6 +1754,7 @@ void init_RU(const char *rf_config_file) {
ru
->
fh_south_in
=
rx_rf
;
// local synchronous RF RX
ru
->
fh_south_out
=
tx_rf
;
// local synchronous RF TX
ru
->
start_rf
=
start_rf
;
// need to start the local RF interface
printf
(
"configuring RRU for ru_id %d (start_rf %p)
\n
"
,
ru_id
,
start_rf
);
ru
->
ifdevice
.
configure_rru
=
configure_rru
;
fill_rf_config
(
ru
,
rf_config_file
);
...
...
targets/SIMU/USER/oaisim.c
View file @
abd705ed
...
...
@@ -216,6 +216,10 @@ oai_shutdown (void);
void
reset_opp_meas_oaisim
(
void
);
void
wait_eNBs
()
{
return
;
}
void
help
(
void
)
{
...
...
@@ -1349,10 +1353,10 @@ main (int argc, char **argv)
init_seed
(
set_seed
);
init_devices
();
init_RU
(
NULL
);
init_RU
(
NULL
);
init_devices
();
// init_openair2 ();
// init_openair0();
...
...
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