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
zzha zzha
OpenXG-RAN
Commits
1ca5c8c4
Commit
1ca5c8c4
authored
Aug 16, 2017
by
islam.galal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing prach configurations
parent
a0f2d481
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
123 additions
and
85 deletions
+123
-85
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+5
-1
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+34
-14
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+3
-3
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+1
-1
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/config.c
+12
-8
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+47
-55
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+18
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf
...JECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf
+3
-3
No files found.
openair1/PHY/INIT/lte_init.c
View file @
1ca5c8c4
...
...
@@ -192,7 +192,11 @@ void phy_config_request(PHY_Config_t *phy_config) {
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_starting_subframe_periodicity
[
0
]
=
cfg
->
emtc_config
.
prach_ce_level_0_starting_subframe_periodicity
.
value
;
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
0
]
=
cfg
->
emtc_config
.
prach_ce_level_0_number_of_repetitions_per_attempt
.
value
;
AssertFatal
(
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_starting_subframe_periodicity
[
0
]
>=
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
0
],
"prach_starting_subframe_periodicity[0] < prach_numPetitionPerPreambleAttempt[0]
\n
"
);
"prach_starting_subframe_periodicity[0] %d < prach_numPetitionPerPreambleAttempt[0] %d
\n
"
,
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_starting_subframe_periodicity
[
0
],
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
0
]);
AssertFatal
(
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
0
]
>
0
,
"prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]==0
\n
"
);
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_ConfigIndex
[
0
]
=
cfg
->
emtc_config
.
prach_ce_level_0_configuration_index
.
value
;
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
[
0
]
=
cfg
->
emtc_config
.
prach_ce_level_0_frequency_offset
.
value
;
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_hopping_enable
[
0
]
=
cfg
->
emtc_config
.
prach_ce_level_0_hopping_enable
.
value
;
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
1ca5c8c4
...
...
@@ -1117,6 +1117,7 @@ void rx_prach0(PHY_VARS_eNB *eNB,
uint8_t
restricted_set
;
uint8_t
n_ra_prb
;
int
frame
;
int
subframe
;
int16_t
*
prachF
=
NULL
;
int16_t
**
rxsigF
=
NULL
;
...
...
@@ -1152,9 +1153,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
#ifdef Rel14
int
prach_ifft_cnt
=
0
;
#endif
#ifdef PRACH_DEBUG
//
#ifdef PRACH_DEBUG
int
en
,
en0
=
0
;
#endif
//
#endif
if
(
ru
)
{
fp
=
&
ru
->
frame_parms
;
...
...
@@ -1204,17 +1205,27 @@ void rx_prach0(PHY_VARS_eNB *eNB,
#ifdef Rel14
if
(
br_flag
==
1
)
{
prach_ifftp
=
eNB
->
prach_vars_br
.
prach_ifft
[
ce_level
];
frame
=
eNB
->
proc
.
frame_prach_br
;
subframe
=
eNB
->
proc
.
subframe_prach_br
;
prachF
=
eNB
->
prach_vars_br
.
prachF
;
rxsigF
=
eNB
->
prach_vars_br
.
rxsigF
;
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d
\n
"
,
br_flag
,
ce_level
,
frame
,
subframe
,
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
[
ce_level
],
prach_ConfigIndex
,
rootSequenceIndex
,
eNB
->
prach_vars_br
.
repetition_number
[
ce_level
],
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
ce_level
]);
}
else
#endif
{
prach_ifftp
=
eNB
->
prach_vars
.
prach_ifft
[
0
];
frame
=
eNB
->
proc
.
frame_prach
;
subframe
=
eNB
->
proc
.
subframe_prach
;
prachF
=
eNB
->
prach_vars
.
prachF
;
rxsigF
=
eNB
->
prach_vars
.
rxsigF
;
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d
\n
"
,
subframe
,
fp
->
prach_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
,
prach_ConfigIndex
,
rootSequenceIndex
);
}
}
else
{
...
...
@@ -1222,16 +1233,17 @@ void rx_prach0(PHY_VARS_eNB *eNB,
if
(
br_flag
==
1
)
{
subframe
=
ru
->
proc
.
subframe_prach_br
;
rxsigF
=
ru
->
prach_rxsigF_br
[
ce_level
];
LOG_D
(
PHY
,
"PRACH (RU) : running rx_prach for
subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d
\n
"
,
subframe
,
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
[
ce_level
],
prach_ConfigIndex
);
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d
subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d
\n
"
,
br_flag
,
ce_level
,
frame
,
subframe
,
fp
->
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
[
ce_level
],
prach_ConfigIndex
);
}
else
#endif
{
subframe
=
ru
->
proc
.
subframe_prach
;
rxsigF
=
ru
->
prach_rxsigF
;
LOG_D
(
PHY
,
"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d
\n
"
,
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d
\n
"
,
subframe
,
fp
->
prach_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
,
prach_ConfigIndex
);
}
}
...
...
@@ -1241,9 +1253,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
for
(
aa
=
0
;
aa
<
nb_rx
;
aa
++
)
{
if
(
ru
->
if_south
==
LOCAL_RF
)
{
// set the time-domain signal if we have to use it in this node
prach
[
aa
]
=
(
int16_t
*
)
&
ru
->
common
.
rxdata
[
aa
][(
subframe
*
fp
->
samples_per_tti
)
-
ru
->
N_TA_offset
];
#ifdef PRACH_DEBUG
LOG_D
(
PHY
,
"RU %d, subframe %d, : prach %p (energy %d)
\n
"
,
ru
->
idx
,
subframe
,
prach
[
aa
],
dB_fixed
(
en0
=
signal_energy
(
prach
[
aa
],
fp
->
samples_per_tti
)));
#endif
//
#ifdef PRACH_DEBUG
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"RU %d, br_flag %d ce_level %d frame %d subframe %d, : prach %p (energy %d)
\n
"
,
ru
->
idx
,
br_flag
,
ce_level
,
frame
,
subframe
,
prach
[
aa
],
dB_fixed
(
en0
=
signal_energy
(
prach
[
aa
],
fp
->
samples_per_tti
)));
//
#endif
}
}
...
...
@@ -1467,11 +1479,11 @@ void rx_prach0(PHY_VARS_eNB *eNB,
}
else
if
(
eNB
!=
NULL
)
{
#if 0
//
#if 0
en
=
dB_fixed
(
signal_energy
(
&
rxsigF
[
0
][
0
],
840
));
/*if (en>60)*/
printf("PRACH: Frame %d, Subframe %d => %d dB\n"
,eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
#endif
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"PRACH (br_flag %d,ce_level %d): Frame %d, Subframe %d => %d dB
\n
"
,
br_flag
,
ce_level
,
eNB
->
proc
.
frame_rx
,
eNB
->
proc
.
subframe_rx
,
en
);
//
#endif
}
...
...
@@ -1506,6 +1518,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
*
max_preamble_energy
=
0
;
for
(
preamble_index
=
0
;
preamble_index
<
64
;
preamble_index
++
)
{
if
(
en
>
60
)
LOG_I
(
PHY
,
"frame %d, subframe %d : Trying preamble %d (br_flag %d)
\n
"
,
frame
,
subframe
,
preamble_index
,
br_flag
);
if
(
restricted_set
==
0
)
{
// This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
preamble_offset
=
((
NCS
==
0
)
?
preamble_index
:
(
preamble_index
/
(
N_ZC
/
NCS
)));
...
...
@@ -1588,9 +1603,10 @@ void rx_prach0(PHY_VARS_eNB *eNB,
}
// Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
#ifdef PRACH_DEBUG
LOG_I
(
PHY
,
"preamble index %d: offset %d, preamble shift %d
\n
"
,
preamble_index
,
preamble_offset
,
preamble_shift
);
#endif
//#ifdef PRACH_DEBUG
if
(
en
>
60
)
LOG_I
(
PHY
,
"frame %d, subframe %d : preamble index %d: offset %d, preamble shift %d (br_flag %d, en %d)
\n
"
,
frame
,
subframe
,
preamble_index
,
preamble_offset
,
preamble_shift
,
br_flag
,
en
);
//#endif
log2_ifft_size
=
10
;
fft_size
=
6144
;
...
...
@@ -1678,6 +1694,8 @@ void rx_prach0(PHY_VARS_eNB *eNB,
eNB
->
frame_parms
.
prach_emtc_config_common
.
prach_ConfigInfo
.
prach_numRepetitionPerPreambleAttempt
[
ce_level
]))
#endif
{
if
(
en
>
60
)
LOG_I
(
PHY
,
"frame %d, subframe %d: Checking for peak in time-domain (br_flag %d, en %d)
\n
"
,
frame
,
subframe
,
br_flag
,
en
);
preamble_shift2
=
((
preamble_shift
==
0
)
?
0
:
((
preamble_shift
<<
log2_ifft_size
)
/
N_ZC
));
...
...
@@ -1689,8 +1707,10 @@ void rx_prach0(PHY_VARS_eNB *eNB,
*
max_preamble_energy
=
levdB
;
*
max_preamble_delay
=
((
i
*
fft_size
)
>>
log2_ifft_size
)
*
update_TA
/
update_TA2
;
*
max_preamble
=
preamble_index
;
if
(
en
>
60
)
LOG_I
(
PHY
,
"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d, en %d)
\n
"
,
frame
,
subframe
,
*
max_preamble_energy
,
*
max_preamble_delay
,
*
max_preamble
,
br_flag
,
en
);
}
}
}
}
// preamble_index
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
1ca5c8c4
...
...
@@ -715,7 +715,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
int
i
;
if
(
frame
<
20
)
{
LOG_
I
(
PHY
,
LOG_
D
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", pdsch_start %d, G %d, nb_rb %"
PRIu16
", rb0 %x, rb1 %x, TBS %"
PRIu16
", pmi_alloc %"
PRIx64
", rv %"
PRIu8
" (round %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
dlsch
->
rnti
,
harq_pid
,
frame
,
subframe
,
input_buffer_length
,
dlsch_harq
->
pdsch_start
,
...
...
@@ -735,8 +735,6 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
pmi2hex_2Ar1
(
dlsch_harq
->
pmi_alloc
),
dlsch_harq
->
rvidx
,
dlsch_harq
->
round
);
for
(
i
=
0
;
i
<
dlsch_harq
->
TBS
>>
3
;
i
++
)
printf
(
"%x."
,
dlsch_harq
->
pdu
[
i
]);
printf
(
"
\n
"
);
}
#if defined(MESSAGE_CHART_GENERATOR_PHY)
MSC_LOG_TX_MESSAGE
(
...
...
@@ -2018,6 +2016,8 @@ void prach_procedures(PHY_VARS_eNB *eNB,
}
}
if
((
frame
&
1023
)
<
20
)
LOG_I
(
PHY
,
"Frame %d, subframe %d: Running rx_prach (br_flag %d)
\n
"
,
frame
,
subframe
,
br_flag
);
rx_prach
(
eNB
,
eNB
->
RU_list
[
0
],
&
max_preamble
[
0
],
...
...
openair2/ENB_APP/enb_config.c
View file @
1ca5c8c4
...
...
@@ -2776,7 +2776,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
if
(
config_setting_lookup_int
(
prach_parameters_ce_r13
,
ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13
,
&
prach_StartingSubframe_r13
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
prach_StartingSubframe_r13
[
j
][
prach_parameters_index
]
=
calloc
(
1
,
sizeof
(
long
));
RRC_CONFIGURATION_REQ
(
msg_p
).
prach_StartingSubframe_r13
[
j
][
prach_parameters_index
]
=
prach_StartingSubframe_r13
;
*
RRC_CONFIGURATION_REQ
(
msg_p
).
prach_StartingSubframe_r13
[
j
][
prach_parameters_index
]
=
prach_StartingSubframe_r13
;
}
else
{
...
...
openair2/LAYER2/MAC/config.c
View file @
1ca5c8c4
...
...
@@ -339,15 +339,16 @@ void config_sib2(int Mod_idP,
cfg
->
emtc_config
.
prach_ce_level_1_enable
.
value
=
0
;
cfg
->
emtc_config
.
prach_ce_level_2_enable
.
value
=
0
;
cfg
->
emtc_config
.
prach_ce_level_3_enable
.
value
=
0
;
switch
(
prach_ParametersListCE_r13
->
list
.
count
)
{
case
4
:
p
=
prach_ParametersListCE_r13
->
list
.
array
[
3
];
cfg
->
emtc_config
.
prach_ce_level_3_enable
.
value
=
1
;
cfg
->
emtc_config
.
prach_ce_level_3_configuration_index
.
value
=
p
->
prach_ConfigIndex_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_frequency_offset
.
value
=
p
->
prach_FreqOffset_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_number_of_repetitions_per_attempt
.
value
=
p
->
numRepetitionPerPreambleAttempt_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_number_of_repetitions_per_attempt
.
value
=
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
;
if
(
p
->
prach_StartingSubframe_r13
)
cfg
->
emtc_config
.
prach_ce_level_3_starting_subframe_periodicity
.
value
=
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_starting_subframe_periodicity
.
value
=
2
<<
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_hopping_enable
.
value
=
p
->
prach_HoppingConfig_r13
;
cfg
->
emtc_config
.
prach_ce_level_3_hopping_offset
.
value
=
cfg
->
rf_config
.
ul_channel_bandwidth
.
value
-
6
;
case
3
:
...
...
@@ -355,9 +356,9 @@ void config_sib2(int Mod_idP,
cfg
->
emtc_config
.
prach_ce_level_2_enable
.
value
=
1
;
cfg
->
emtc_config
.
prach_ce_level_2_configuration_index
.
value
=
p
->
prach_ConfigIndex_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_frequency_offset
.
value
=
p
->
prach_FreqOffset_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_number_of_repetitions_per_attempt
.
value
=
p
->
numRepetitionPerPreambleAttempt_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_number_of_repetitions_per_attempt
.
value
=
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
;
if
(
p
->
prach_StartingSubframe_r13
)
cfg
->
emtc_config
.
prach_ce_level_2_starting_subframe_periodicity
.
value
=
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_starting_subframe_periodicity
.
value
=
2
<<
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_hopping_enable
.
value
=
p
->
prach_HoppingConfig_r13
;
cfg
->
emtc_config
.
prach_ce_level_2_hopping_offset
.
value
=
cfg
->
rf_config
.
ul_channel_bandwidth
.
value
-
6
;
case
2
:
...
...
@@ -365,9 +366,9 @@ void config_sib2(int Mod_idP,
cfg
->
emtc_config
.
prach_ce_level_1_enable
.
value
=
1
;
cfg
->
emtc_config
.
prach_ce_level_1_configuration_index
.
value
=
p
->
prach_ConfigIndex_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_frequency_offset
.
value
=
p
->
prach_FreqOffset_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_number_of_repetitions_per_attempt
.
value
=
p
->
numRepetitionPerPreambleAttempt_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_number_of_repetitions_per_attempt
.
value
=
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
;
if
(
p
->
prach_StartingSubframe_r13
)
cfg
->
emtc_config
.
prach_ce_level_1_starting_subframe_periodicity
.
value
=
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_starting_subframe_periodicity
.
value
=
2
<<
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_hopping_enable
.
value
=
p
->
prach_HoppingConfig_r13
;
cfg
->
emtc_config
.
prach_ce_level_1_hopping_offset
.
value
=
cfg
->
rf_config
.
ul_channel_bandwidth
.
value
-
6
;
case
1
:
...
...
@@ -375,13 +376,16 @@ void config_sib2(int Mod_idP,
cfg
->
emtc_config
.
prach_ce_level_0_enable
.
value
=
1
;
cfg
->
emtc_config
.
prach_ce_level_0_configuration_index
.
value
=
p
->
prach_ConfigIndex_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_frequency_offset
.
value
=
p
->
prach_FreqOffset_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_number_of_repetitions_per_attempt
.
value
=
p
->
numRepetitionPerPreambleAttempt_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_number_of_repetitions_per_attempt
.
value
=
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
;
AssertFatal
(
p
->
prach_StartingSubframe_r13
!=
NULL
,
"prach_StartingSubframe_r13 is null
\n
"
);
if
(
p
->
prach_StartingSubframe_r13
)
cfg
->
emtc_config
.
prach_ce_level_0_starting_subframe_periodicity
.
value
=
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_starting_subframe_periodicity
.
value
=
2
<<
*
p
->
prach_StartingSubframe_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_hopping_enable
.
value
=
p
->
prach_HoppingConfig_r13
;
cfg
->
emtc_config
.
prach_ce_level_0_hopping_offset
.
value
=
cfg
->
rf_config
.
ul_channel_bandwidth
.
value
-
6
;
}
AssertFatal
(
cfg
->
emtc_config
.
prach_ce_level_0_enable
.
value
>
0
,
"CE_level0 is not enabled
\n
"
);
struct
FreqHoppingParameters_r13
*
ext4_freqHoppingParameters
=
radioResourceConfigCommonP
->
ext4
->
freqHoppingParameters_r13
;
if
((
ext4_freqHoppingParameters
)
&&
(
ext4_freqHoppingParameters
->
interval_ULHoppingConfigCommonModeA_r13
)){
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
1ca5c8c4
...
...
@@ -1408,66 +1408,58 @@ uint8_t do_SIB23(uint8_t Mod_id,
int
num_prach_parameters_ce
=
configuration
->
prach_parameters_list_size
[
CC_id
];
int
prach_parameters_index
;
AssertFatal
(
num_prach_parameters_ce
>
0
,
"PRACH CE parameter list is empty
\n
"
);
for
(
prach_parameters_index
=
0
;
prach_parameters_index
<
num_prach_parameters_ce
;
++
prach_parameters_index
)
{
prach_parametersce_r13
=
CALLOC
(
1
,
sizeof
(
PRACH_ParametersCE_r13_t
));
if
(
configuration
->
prach_parameters_list_size
[
CC_id
])
{
prach_parametersce_r13
->
prach_ConfigIndex_r13
=
configuration
->
prach_config_index
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
prach_FreqOffset_r13
=
configuration
->
prach_freq_offset
[
CC_id
][
prach_parameters_index
];
if
(
configuration
->
prach_StartingSubframe_r13
[
CC_id
][
prach_parameters_index
])
{
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
CALLOC
(
1
,
sizeof
(
long
));
*
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
*
configuration
->
prach_StartingSubframe_r13
[
CC_id
][
prach_parameters_index
];
}
else
{
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
NULL
;
}
if
(
configuration
->
maxNumPreambleAttemptCE_r13
[
CC_id
][
prach_parameters_index
])
{
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
CALLOC
(
1
,
sizeof
(
long
));
*
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
*
configuration
->
maxNumPreambleAttemptCE_r13
[
CC_id
][
prach_parameters_index
];
}
else
{
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
NULL
;
}
prach_parametersce_r13
->
numRepetitionPerPreambleAttempt_r13
=
configuration
->
numRepetitionPerPreambleAttempt_r13
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
mpdcch_NumRepetition_RA_r13
=
configuration
->
mpdcch_NumRepetition_RA_r13
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
prach_HoppingConfig_r13
=
configuration
->
prach_HoppingConfig_r13
[
CC_id
][
prach_parameters_index
];
printf
(
"[DEBUGGING][KOGO][SIB23] : prach hopping config = %d
\n
"
,
prach_parametersce_r13
->
prach_HoppingConfig_r13
);
}
else
prach_parametersce_r13
=
CALLOC
(
1
,
sizeof
(
PRACH_ParametersCE_r13_t
));
prach_parametersce_r13
->
prach_ConfigIndex_r13
=
configuration
->
prach_config_index
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
prach_FreqOffset_r13
=
configuration
->
prach_freq_offset
[
CC_id
][
prach_parameters_index
];
AssertFatal
(
configuration
->
prach_StartingSubframe_r13
[
CC_id
][
prach_parameters_index
]
!=
NULL
,
"configuration->prach_StartingSubframe_r13[%d][%d] is null"
,
(
int
)
CC_id
,(
int
)
prach_parameters_index
);
if
(
configuration
->
prach_StartingSubframe_r13
[
CC_id
][
prach_parameters_index
])
{
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
CALLOC
(
1
,
sizeof
(
long
));
*
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
*
configuration
->
prach_StartingSubframe_r13
[
CC_id
][
prach_parameters_index
];
}
else
{
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
NULL
;
}
if
(
configuration
->
maxNumPreambleAttemptCE_r13
[
CC_id
][
prach_parameters_index
])
{
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
CALLOC
(
1
,
sizeof
(
long
));
*
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
*
configuration
->
maxNumPreambleAttemptCE_r13
[
CC_id
][
prach_parameters_index
];
}
else
{
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
NULL
;
}
prach_parametersce_r13
->
numRepetitionPerPreambleAttempt_r13
=
configuration
->
numRepetitionPerPreambleAttempt_r13
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
mpdcch_NumRepetition_RA_r13
=
configuration
->
mpdcch_NumRepetition_RA_r13
[
CC_id
][
prach_parameters_index
];
prach_parametersce_r13
->
prach_HoppingConfig_r13
=
configuration
->
prach_HoppingConfig_r13
[
CC_id
][
prach_parameters_index
];
printf
(
"[DEBUGGING][KOGO][SIB23] : prach hopping config = %d
\n
"
,
prach_parametersce_r13
->
prach_HoppingConfig_r13
);
long
*
maxavailablenarrowband
;
int
num_narrow_bands
=
configuration
->
max_available_narrow_band_size
[
CC_id
][
prach_parameters_index
];
int
narrow_band_index
;
for
(
narrow_band_index
=
0
;
narrow_band_index
<
num_narrow_bands
;
narrow_band_index
++
)
{
prach_parametersce_r13
->
prach_ConfigIndex_r13
=
3
;
prach_parametersce_r13
->
prach_FreqOffset_r13
=
1
;
prach_parametersce_r13
->
prach_StartingSubframe_r13
=
NULL
;
*
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
calloc
(
1
,
sizeof
(
long
));
*
prach_parametersce_r13
->
maxNumPreambleAttemptCE_r13
=
PRACH_ParametersCE_r13__maxNumPreambleAttemptCE_r13_n3
;
prach_parametersce_r13
->
numRepetitionPerPreambleAttempt_r13
=
PRACH_ParametersCE_r13__numRepetitionPerPreambleAttempt_r13_n1
;
prach_parametersce_r13
->
mpdcch_NumRepetition_RA_r13
=
PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1
;
prach_parametersce_r13
->
prach_HoppingConfig_r13
=
PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off
;
maxavailablenarrowband
=
CALLOC
(
1
,
sizeof
(
long
));
*
maxavailablenarrowband
=
configuration
->
max_available_narrow_band
[
CC_id
][
prach_parameters_index
][
narrow_band_index
];
ASN_SEQUENCE_ADD
(
&
prach_parametersce_r13
->
mpdcch_NarrowbandsToMonitor_r13
.
list
,
maxavailablenarrowband
);
}
long
*
maxavailablenarrowband
;
int
num_narrow_bands
=
configuration
->
max_available_narrow_band_size
[
CC_id
][
prach_parameters_index
];
int
narrow_band_index
;
for
(
narrow_band_index
=
0
;
narrow_band_index
<
num_narrow_bands
;
narrow_band_index
++
)
{
maxavailablenarrowband
=
CALLOC
(
1
,
sizeof
(
long
));
*
maxavailablenarrowband
=
configuration
->
max_available_narrow_band
[
CC_id
][
prach_parameters_index
][
narrow_band_index
];
ASN_SEQUENCE_ADD
(
&
prach_parametersce_r13
->
mpdcch_NarrowbandsToMonitor_r13
.
list
,
maxavailablenarrowband
);
}
prach_parametersce_r13
->
mpdcch_NumRepetition_RA_r13
=
PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1
;
prach_parametersce_r13
->
prach_HoppingConfig_r13
=
PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off
;
ASN_SEQUENCE_ADD
(
&
(
*
sib2
)
->
radioResourceConfigCommon
.
ext4
->
prach_ConfigCommon_v1310
->
prach_ParametersListCE_r13
.
list
,
prach_parametersce_r13
);
prach_parametersce_r13
->
mpdcch_NumRepetition_RA_r13
=
PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1
;
prach_parametersce_r13
->
prach_HoppingConfig_r13
=
PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off
;
ASN_SEQUENCE_ADD
(
&
(
*
sib2
)
->
radioResourceConfigCommon
.
ext4
->
prach_ConfigCommon_v1310
->
prach_ParametersListCE_r13
.
list
,
prach_parametersce_r13
);
}
}
else
{
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
1ca5c8c4
...
...
@@ -333,6 +333,24 @@ init_SI(
sib1_v13ext
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib1_BR
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
;
// Basic Asserts for CE_level0 PRACH configuration
RadioResourceConfigCommonSIB_t
*
radioResourceConfigCommon_BR
=
&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib2_BR
->
radioResourceConfigCommon
;
struct
PRACH_ConfigSIB_v1310
*
ext4_prach
=
radioResourceConfigCommon_BR
->
ext4
->
prach_ConfigCommon_v1310
;
PRACH_ParametersListCE_r13_t
*
prach_ParametersListCE_r13
=
&
ext4_prach
->
prach_ParametersListCE_r13
;
AssertFatal
(
prach_ParametersListCE_r13
->
list
.
count
>
0
,
"prach_ParametersListCE_r13 is empty
\n
"
);
PRACH_ParametersCE_r13_t
*
p
=
prach_ParametersListCE_r13
->
list
.
array
[
0
];
AssertFatal
(
p
->
prach_StartingSubframe_r13
!=
NULL
,
"prach_StartingSubframe_r13 celevel0 is null
\n
"
);
AssertFatal
((
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
)
<=
(
2
<<*
p
->
prach_StartingSubframe_r13
),
"prachce0->numReptitionPerPreambleAttempt_r13 %d > prach_StartingSubframe_r13 %d
\n
"
,
1
<<
p
->
numRepetitionPerPreambleAttempt_r13
,
2
<<*
p
->
prach_StartingSubframe_r13
);
}
#endif
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf
View file @
1ca5c8c4
...
...
@@ -48,7 +48,7 @@ eNBs =
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
prach_freq_offset
=
1
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
...
...
@@ -179,7 +179,7 @@ eNBs =
(
{
prach_config_index_br
=
3
;
prach_freq_offset_br
=
2
;
prach_freq_offset_br
=
1
;
prach_StartingSubframe_r13
=
0
;
maxNumPreambleAttemptCE_r13
=
6
;
numRepetitionPerPreambleAttempt_r13
=
0
;
...
...
@@ -235,7 +235,7 @@ eNBs =
prach_config_index
=
3
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
prach_freq_offset
=
1
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
0
;
pucch_nCS_AN
=
0
;
...
...
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