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
79d77a4a
Commit
79d77a4a
authored
Aug 14, 2017
by
islam.galal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debugging for SIB1-BR
parent
6753a7af
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
109 additions
and
75 deletions
+109
-75
openair1/PHY/CODING/lte_rate_matching.c
openair1/PHY/CODING/lte_rate_matching.c
+1
-1
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+3
-1
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+10
-10
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+58
-38
openair2/LAYER2/MAC/eNB_scheduler_bch.c
openair2/LAYER2/MAC/eNB_scheduler_bch.c
+29
-23
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+2
-1
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+6
-1
No files found.
openair1/PHY/CODING/lte_rate_matching.c
View file @
79d77a4a
...
...
@@ -520,7 +520,7 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
GpmodC
=
Gp
%
C
;
#ifdef RM_DEBUG
printf
(
"lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d
\n
"
,
Ncb
,
3
*
(
RTC
<<
5
),
Nir
/
C
,
rvidx
,
G
,
Qm
,
Nl
,
r
);
LOG_D
(
PHY
,
"lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d
\n
"
,
Ncb
,
3
*
(
RTC
<<
5
),
Nir
/
C
,
rvidx
,
G
,
Qm
,
Nl
,
r
);
#endif
if
(
r
<
(
C
-
(
GpmodC
)))
...
...
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
79d77a4a
...
...
@@ -291,7 +291,9 @@ typedef struct {
int16_t
sqrt_rho_a
;
/// amplitude of PDSCH (compared to RS) in symbols containing pilots
int16_t
sqrt_rho_b
;
#ifdef Rel14
uint8_t
sib1_br_flag
;
#endif
}
LTE_eNB_DLSCH_t
;
#define PUSCH_x 2
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
79d77a4a
...
...
@@ -145,7 +145,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_
bzero
(
dlsch
,
sizeof
(
LTE_eNB_DLSCH_t
));
dlsch
->
Kmimo
=
Kmimo
;
dlsch
->
Mdlharq
=
Mdlharq
;
dlsch
->
Mlimit
=
4
;
dlsch
->
Mlimit
=
8
;
dlsch
->
Nsoft
=
Nsoft
;
for
(
layer
=
0
;
layer
<
4
;
layer
++
)
{
...
...
@@ -597,19 +597,19 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
beamforming_mode
=
8
;
else
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
mimo_mode
==
TM9_10
)
beamforming_mode
=
9
;
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
,
beamforming_mode
);
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
,
beamforming_mode
);
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
// this is a new packet
/*
int i;
printf("dlsch (tx): \n");
for (i=0;i<(A>>3);i++)
printf("%02x.",a[i]);
printf("\n");
*/
// Add 24-bit crc (polynomial A) to payload
crc
=
crc24a
(
a
,
A
)
>>
8
;
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
79d77a4a
...
...
@@ -715,43 +715,48 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
int
i
;
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
", mcs %"
PRIu8
", pmi_alloc %"
PRIx64
", rv %"
PRIu8
" (round %"
PRIu8
")
\n
"
,
if
(
frame
<
20
)
{
LOG_I
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH %"
PRIx16
"/%"
PRIu8
"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"
PRIu16
", num_pdcch_symbols %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
,
frame
,
subframe
,
input_buffer_length
,
num_pdcch_symbols
,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
get_Qm
(
dlsch_harq
->
mcs
)
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
dlsch_harq
->
mimo_mode
==
TM7
?
7
:
0
),
dlsch_harq
->
nb_rb
,
dlsch_harq
->
mcs
,
dlsch_harq
->
rb_alloc
[
0
],
dlsch_harq
->
rb_alloc
[
1
],
dlsch_harq
->
TBS
,
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
(
MSC_PHY_ENB
,
MSC_PHY_UE
,
NULL
,
0
,
"%05u:%02u PDSCH/DLSCH input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
",
mcs %"
PRIu8
", pmi_alloc %"
PRIx16
", rv %"
PRIu8
" (round %"
PRIu8
")"
,
"%05u:%02u PDSCH/DLSCH input size = %"
PRIu16
", G %d, nb_rb %"
PRIu16
",
TBS %"
PRIu16
", pmi_alloc %"
PRIx16
", rv %"
PRIu8
" (round %"
PRIu8
")"
,
frame
,
subframe
,
input_buffer_length
,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
get_Qm
(
dlsch_harq
->
mcs
)
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
dlsch_harq
->
mimo_mode
==
TM7
?
7
:
0
),
dlsch_harq
->
nb_rb
,
dlsch_harq
->
mcs
,
dlsch_harq
->
TBS
,
pmi2hex_2Ar1
(
dlsch_harq
->
pmi_alloc
),
dlsch_harq
->
rvidx
,
dlsch_harq
->
round
);
...
...
@@ -868,7 +873,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
get_G
(
fp
,
dlsch_harq
->
nb_rb
,
dlsch_harq
->
rb_alloc
,
get_Qm
(
dlsch_harq
->
mcs
)
,
dlsch_harq
->
Qm
,
dlsch_harq
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
...
...
@@ -1003,7 +1008,7 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
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
;
if
((
rel13
->
pdsch_payload_type
<
2
)
&&
(
rel13
->
ue_type
>
0
))
dlsch0
->
harq_ids
[
proc
->
subframe_tx
]
=
0
;
#endif
harq_pid
=
dlsch0
->
harq_ids
[
proc
->
subframe_tx
];
...
...
@@ -1018,7 +1023,15 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
else
dlsch1_harq
->
pdu
=
sdu
;
#ifdef Rel14
dlsch0
->
sib1_br_flag
=
0
;
if
((
rel13
->
pdsch_payload_type
<
2
)
&&
(
rel13
->
ue_type
>
0
))
{
// this is a BR/CE UE and SIB1-BR/SI-BR
dlsch0
->
rnti
=
0xFFFF
;
dlsch0
->
Kmimo
=
1
;
dlsch0
->
Mdlharq
=
4
;
dlsch0
->
Nsoft
=
25344
;
if
(
rel13
->
pdsch_payload_type
==
0
)
dlsch0
->
sib1_br_flag
=
1
;
// configure PDSCH
switch
(
eNB
->
frame_parms
.
N_RB_DL
)
{
case
6
:
...
...
@@ -1055,7 +1068,8 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
dlsch0_harq
->
round
=
0
;
dlsch0_harq
->
status
=
ACTIVE
;
dlsch0_harq
->
TBS
=
rel8
->
length
<<
3
;
dlsch0_harq
->
Qm
=
rel8
->
modulation
;
dlsch0_harq
->
codeword
=
0
;
}
...
...
@@ -1437,34 +1451,42 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
// Now scan UE specific DLSCH
LTE_eNB_DLSCH_t
*
dlsch0
,
*
dlsch1
;
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
{
if
((
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
])
&&
(
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
rnti
>
0
)
&&
(
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
active
==
1
))
{
dlsch0
=
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
1
];
if
((
dlsch0
)
&&
(
dlsch0
->
rnti
>
0
)
&&
(
dlsch0
->
active
==
1
))
{
// get harq_pid
harq_pid
=
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
harq_ids
[
subframe
];
harq_pid
=
dlsch0
->
harq_ids
[
subframe
];
AssertFatal
(
harq_pid
>=
0
,
"harq_pid is negative
\n
"
);
// generate pdsch
pdsch_procedures
(
eNB
,
proc
,
harq_pid
,
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
,
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
1
]
,
dlsch0
,
dlsch1
,
&
eNB
->
UE_stats
[(
uint32_t
)
UE_id
],
0
,
num_pdcch_symbols
);
#ifdef Rel14
dlsch0
->
sib1_br_flag
==
0
?
num_pdcch_symbols
:
3
#else
num_pdcch_symbols
#endif
);
}
else
if
((
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
)
&&
(
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
rnti
>
0
)
&&
(
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
active
==
0
))
{
else
if
((
dlsch0
)
&&
(
dlsch0
->
rnti
>
0
)
&&
(
dlsch0
->
active
==
0
))
{
// clear subframe TX flag since UE is not scheduled for PDSCH in this subframe (so that we don't look for PUCCH later)
eNB
->
dlsch
[(
uint8_t
)
UE_id
][
0
]
->
subframe_tx
[
subframe
]
=
0
;
dlsch0
->
subframe_tx
[
subframe
]
=
0
;
}
}
...
...
@@ -1676,7 +1698,6 @@ void process_HARQ_feedback(uint8_t UE_id,
dl_subframe
=
ul_ACK_subframe2_dl_subframe
(
fp
,
subframe
,
m
);
if
(
dlsch
->
subframe_tx
[
dl_subframe
]
==
1
)
{
if
(
pusch_flag
==
1
)
mp
++
;
...
...
@@ -1696,10 +1717,9 @@ void process_HARQ_feedback(uint8_t UE_id,
if
(
dl_harq_pid
[
m
]
<
dlsch
->
Mdlharq
)
{
dlsch_harq_proc
=
dlsch
->
harq_processes
[
dl_harq_pid
[
m
]];
#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (
mcs %d,
rv %d, TBS %d)
\n
"
,
eNB
->
Mod_id
,
LOG_D
(
PHY
,
"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (rv %d, TBS %d)
\n
"
,
eNB
->
Mod_id
,
dlsch
->
rnti
,
dl_harq_pid
[
m
],
dl_subframe
,
dlsch_harq_proc
->
status
,
dlsch_harq_proc
->
round
,
dlsch
->
harq_processes
[
dl_harq_pid
[
m
]]
->
mcs
,
dlsch
->
harq_processes
[
dl_harq_pid
[
m
]]
->
rvidx
,
dlsch
->
harq_processes
[
dl_harq_pid
[
m
]]
->
TBS
);
...
...
openair2/LAYER2/MAC/eNB_scheduler_bch.c
View file @
79d77a4a
...
...
@@ -121,16 +121,16 @@ schedule_SIB1_BR(
break
;
case
1
:
// repetition 8
k
=
frameP
&
3
;
AssertFatal
(
N_RB_DL
<=
15
,
"SIB1-BR repetition 8 not allowed for N_RB_DL= %d
\n
"
,
N_RB_DL
);
AssertFatal
(
N_RB_DL
>
15
,
"SIB1-BR repetition 8 not allowed for N_RB_DL= %d
\n
"
,
N_RB_DL
);
if
((
foffset
==
0
)
&&
(
subframeP
!=
(
4
+
sfoffset
)))
continue
;
else
if
((
foffset
==
1
)
&&
(
subframeP
!=
((
9
+
sfoffset
)
%
10
)))
continue
;
break
;
case
2
:
// repetition 16
k
=
((
10
*
frameP
)
+
subframeP
)
&
3
;
AssertFatal
(
N_RB_DL
<=
15
,
"SIB1-BR repetition 16 not allowed for N_RB_DL= %d
\n
"
,
N_RB_DL
);
AssertFatal
(
N_RB_DL
>
15
,
"SIB1-BR repetition 16 not allowed for N_RB_DL= %d
\n
"
,
N_RB_DL
);
if
((
sfoffset
==
1
)
&&
((
subframeP
!=
0
)
||
(
subframeP
!=
5
)))
continue
;
else
if
((
sfoffset
==
0
)
&&
(
foffset
==
0
)
&&
(
(
subframeP
!=
4
)
||
(
subframeP
!=
9
)
))
continue
;
else
if
((
sfoffset
==
0
)
&&
(
foffset
==
1
)
&&
(
(
subframeP
!=
0
)
||
(
subframeP
!=
9
)
))
continue
;
else
if
((
sfoffset
==
0
)
&&
(
foffset
==
0
)
&&
(
subframeP
!=
4
)
&&
(
subframeP
!=
9
))
continue
;
else
if
((
sfoffset
==
0
)
&&
(
foffset
==
1
)
&&
(
subframeP
!=
0
)
&&
(
subframeP
!=
9
))
continue
;
break
;
}
// if we get here we have to schedule SIB1_BR in this frame/subframe
...
...
@@ -170,14 +170,13 @@ schedule_SIB1_BR(
Sj
=
Sj100
;
break
;
}
// Note: definition of k above and rvidx from 36.321 section 5.3.1
rvidx
=
(((
3
*
k
)
>>
1
)
+
(
k
&
1
))
&
3
;
i
=
cc
->
SIB1_BR_cnt
&
(
m
-
1
);
n_NB
=
Sj
[((
cc
->
physCellId
%
N_S_NB
)
+
(
i
*
N_S_NB
/
m
))
%
N_S_NB
];
if
((
frameP
%
1000
)
<
40
)
LOG_D
(
MAC
,
"[eNB %d] Frame %d, subframe %d : BCCH_BR->DLSCH (SIB1) CC_id %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
CC_id
);
bcch_sdu_length
=
mac_rrc_data_req
(
module_idP
,
CC_id
,
...
...
@@ -197,7 +196,7 @@ schedule_SIB1_BR(
AssertFatal
(
bcch_sdu_length
<=
TBS
,
"length returned by RRC %d is not compatible with the TBS %d from MIB
\n
"
,
bcch_sdu_length
,
TBS
);
LOG_D
(
MAC
,
"[eNB %d] Frame %d : BCCH_BR->DLSCH CC_id %d, Received %d bytes
\n
"
,
module_idP
,
frameP
,
CC_id
,
bcch_sdu_length
);
if
((
frameP
&
1023
)
<
200
)
LOG_I
(
MAC
,
"[eNB %d] Frame %d Subframe %d: SIB1_BR->DLSCH CC_id %d, Received %d bytes, scheduling on NB %d (i %d,m %d,N_S_NB %d) rvidx %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
CC_id
,
bcch_sdu_length
,
n_NB
,
i
,
m
,
N_S_NB
,
rvidx
);
// allocate all 6 PRBs in narrowband for SIB1_BR
first_rb
=
n_NB
*
6
;
...
...
@@ -342,6 +341,9 @@ schedule_SI_BR(
(
int
)
cc
->
sib1_v13ext
->
bandwidthReducedAccessRelatedInfo_r13
->
si_WindowLength_BR_r13
,
SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_WindowLength_BR_r13_ms200
);
// check that SI frequency-hopping is disabled
AssertFatal
(
cc
->
sib1_v13ext
->
bandwidthReducedAccessRelatedInfo_r13
->
si_HoppingConfigCommon_r13
==
SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_HoppingConfigCommon_r13_off
,
"Deactivate SI_HoppingConfigCommon_r13 in configuration file, not supported for now
\n
"
);
long
si_WindowLength_BR_r13
=
si_WindowLength_BR_r13tab
[
cc
->
sib1_v13ext
->
bandwidthReducedAccessRelatedInfo_r13
->
si_WindowLength_BR_r13
];
long
si_RepetitionPattern_r13
=
cc
->
sib1_v13ext
->
bandwidthReducedAccessRelatedInfo_r13
->
si_RepetitionPattern_r13
;
...
...
@@ -359,13 +361,9 @@ schedule_SI_BR(
// check if the SI is to be scheduled now
int
period_in_sf
=
80
<<
si_Periodicity
;
// 2^i * 80 subframes, note: si_Periodicity is 2^i * 80ms
int
sf_mod_period
=
((
frameP
*
10
)
+
subframeP
)
%
period_in_sf
;
rvidx
=
(((
3
*
sf_mod_period
)
>>
1
)
+
(
sf_mod_period
&
1
))
&
3
;
if
((
frameP
%
1000
)
<
200
)
LOG_I
(
MAC
,
"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d
\n
"
,
module_idP
,
frameP
,
CC_id
,
si_Narrowband_r13
,
rvidx
,
sf_mod_period
,
si_WindowLength_BR_r13
,
si_RepetitionPattern_r13
);
int
k
=
sf_mod_period
&
3
;
// Note: definition of k and rvidx from 36.321 section 5.3.1
rvidx
=
(((
3
*
k
)
>>
1
)
+
(
k
&
1
))
&
3
;
if
((
sf_mod_period
<
si_WindowLength_BR_r13
)
&&
((
frameP
&
(((
1
<<
si_RepetitionPattern_r13
)
-
1
)))
==
0
))
{
// this SIB is to be scheduled
...
...
@@ -385,19 +383,27 @@ schedule_SI_BR(
AssertFatal
(
bcch_sdu_length
<=
(
si_TBS_r13
>>
3
),
"RRC provided bcch with length %d > %d (si_TBS_r13 %d)
\n
"
,
bcch_sdu_length
,(
int
)(
si_TBS_r13
>>
3
),(
int
)
schedulingInfoList_BR_r13
->
list
.
array
[
i
]
->
si_TBS_r13
);
LOG_D
(
MAC
,
"[eNB %d] Frame %d : BCCH_BR %d->DLSCH CC_id %d, Received %d bytes
\n
"
,
module_idP
,
frameP
,
i
,
CC_id
,
bcch_sdu_length
);
if
((
frameP
%
1000
)
<
200
)
LOG_I
(
MAC
,
"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, Received %d bytes for NB %d/rvidx %d
\n
"
,
module_idP
,
frameP
,
CC_id
,
bcch_sdu_length
,
si_Narrowband_r13
,
rvidx
);
// allocate all 6 PRBs in narrowband for SIB1_BR
first_rb
=
si_Narrowband_r13
*
6
;
first_rb
=
(
si_Narrowband_r13
-
1
)
*
6
;
// check that SIB1 didn't take this narrowband
if
(
vrb_map
[
first_rb
]
>
0
)
continue
;
vrb_map
[
first_rb
]
=
1
;
vrb_map
[
first_rb
+
1
]
=
1
;
vrb_map
[
first_rb
+
2
]
=
1
;
vrb_map
[
first_rb
+
3
]
=
1
;
vrb_map
[
first_rb
+
4
]
=
1
;
vrb_map
[
first_rb
+
5
]
=
1
;
if
((
frameP
%
1000
)
<
200
)
LOG_D
(
MAC
,
"[eNB %d] Frame %d Subframe %d: SI_BR->DLSCH CC_id %d, Narrowband %d rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d) bcch_sdu_length %d
\n
"
,
module_idP
,
frameP
,
subframeP
,
CC_id
,
si_Narrowband_r13
-
1
,
rvidx
,
sf_mod_period
,
si_WindowLength_BR_r13
,
si_RepetitionPattern_r13
,
bcch_sdu_length
);
dl_config_pdu
=
&
dl_req
->
dl_config_pdu_list
[
dl_req
->
number_pdu
];
memset
((
void
*
)
dl_config_pdu
,
0
,
sizeof
(
nfapi_dl_config_request_pdu_t
));
dl_config_pdu
->
pdu_type
=
NFAPI_DL_CONFIG_DLSCH_PDU_TYPE
;
...
...
@@ -512,7 +518,7 @@ void schedule_mib(module_id_t module_idP,
LOG_D
(
MAC
,
"Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)
\n
"
,
frameP
,
subframeP
,
dl_req
->
number_pdu
,
mib_sdu_length
);
if
((
frameP
&
1023
)
<
40
)
LOG_
I
(
MAC
,
"[eNB %d] Frame %d : MIB->BCH CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)
\n
"
,
module_idP
,
frameP
,
CC_id
,
mib_sdu_length
,
cc
->
mib
->
message
.
schedulingInfoSIB1_BR_r13
);
if
((
frameP
&
1023
)
<
40
)
LOG_
D
(
MAC
,
"[eNB %d] Frame %d : MIB->BCH CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)
\n
"
,
module_idP
,
frameP
,
CC_id
,
mib_sdu_length
,
cc
->
mib
->
message
.
schedulingInfoSIB1_BR_r13
);
dl_config_pdu
=
&
dl_req
->
dl_config_pdu_list
[
dl_req
->
number_pdu
];
memset
((
void
*
)
dl_config_pdu
,
0
,
sizeof
(
nfapi_dl_config_request_pdu_t
));
...
...
@@ -749,7 +755,7 @@ schedule_SI(
#ifdef Rel14
schedule_SIB1_BR
(
module_idP
,
frameP
,
subframeP
);
schedule_SI_BR
(
module_idP
,
frameP
,
subframeP
);
//
schedule_SI_BR(module_idP,frameP,subframeP);
#endif
stop_meas
(
&
eNB
->
schedule_si
);
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
79d77a4a
...
...
@@ -511,7 +511,8 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
////Rel1310
#if defined(ENABLE_ITTI)
if
(
configuration
->
schedulingInfoSIB1_BR_r13
[
CC_id
]
!=
0
)
if
((
configuration
->
schedulingInfoSIB1_BR_r13
[
CC_id
]
!=
0
)
&&
(
brOption
==
TRUE
))
{
sib1_1250
->
nonCriticalExtension
=
calloc
(
1
,
sizeof
(
SystemInformationBlockType1_v1310_IEs_t
));
memset
(
sib1_1250
->
nonCriticalExtension
,
0
,
sizeof
(
SystemInformationBlockType1_v1310_IEs_t
));
...
...
targets/RT/USER/lte-ru.c
View file @
79d77a4a
...
...
@@ -823,6 +823,11 @@ void tx_rf(RU_t *ru) {
LOG_E
(
PHY
,
"TX : Timeout (sent %d/%d)
\n
"
,
txs
,
fp
->
samples_per_tti
);
exit_fun
(
"problem transmitting samples"
);
}
/*
if ((proc->subframe_tx == 4) && (proc->frame_tx == 10)) {
write_output("ru_tx_sf4.m","txs",(void*)&ru->common.txdata[0][4*fp->samples_per_tti],fp->samples_per_tti,1,1);
exit(-1);
}*/
}
}
...
...
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