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
promise
OpenXG-RAN
Commits
cd7e479f
Commit
cd7e479f
authored
8 years ago
by
hbilel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sss pss calculation
parent
780c7b03
Changes
10
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
230 additions
and
51 deletions
+230
-51
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+124
-24
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+4
-4
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+1
-1
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+4
-2
openair1/PHY/LTE_TRANSPORT/sss.c
openair1/PHY/LTE_TRANSPORT/sss.c
+37
-4
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+4
-3
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+6
-4
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+5
-3
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+43
-4
No files found.
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
cd7e479f
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
cd7e479f
...
...
@@ -6386,7 +6386,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
}
#ifdef DEBUG_DCI
//
#ifdef DEBUG_DCI
if
(
dlsch
[
0
]
&&
(
dlsch
[
0
]
->
rnti
!=
0xffff
))
{
printf
(
"dci_format:%d Abssubframe: %d.%d
\n
"
,
dci_format
,
frame
%
1024
,
subframe
);
...
...
@@ -6395,15 +6395,15 @@ int generate_ue_dlsch_params_from_dci(int frame,
printf
(
"PDSCH dlsch0 UE: rballoc %x
\n
"
,
dlsch0_harq
->
rb_alloc_even
[
0
]);
printf
(
"PDSCH dlsch0 UE: harq_pid %d
\n
"
,
harq_pid
);
//printf("PDSCH dlsch0 UE: tpc %d\n",TPC);
printf
(
"PDSCH dlsch0 UE: g %d
\n
"
,
dlsch
[
0
]
->
g_pucch
);
//
printf("PDSCH dlsch0 UE: g %d\n",dlsch[0]->g_pucch);
printf
(
"PDSCH dlsch0 UE: round %d
\n
"
,
dlsch0_harq
->
round
);
printf
(
"PDSCH dlsch0 UE: DCINdi %d
\n
"
,
dlsch0_harq
->
DCINdi
);
printf
(
"PDSCH dlsch0 UE: rvidx %d
\n
"
,
dlsch0_harq
->
rvidx
);
printf
(
"PDSCH dlsch0 UE: TBS %d
\n
"
,
dlsch0_harq
->
TBS
);
printf
(
"PDSCH dlsch0 UE: mcs %d
\n
"
,
dlsch0_harq
->
mcs
);
printf
(
"PDSCH dlsch0 UE: pwr_off %d
\n
"
,
dlsch0_harq
->
dl_power_off
);
//
printf("PDSCH dlsch0 UE: pwr_off %d\n",dlsch0_harq->dl_power_off);
}
#endif
//
#endif
#if T_TRACER
if
(
(
dlsch
[
0
]
->
rnti
!=
si_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
ra_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
p_rnti
))
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
cd7e479f
...
...
@@ -913,8 +913,8 @@ int rx_pdsch(PHY_VARS_UE *ue,
}
break
;
case
6
:
printf
(
"LLR rx_type %d cw0 %d cw1 %d symbol %d first symbol %d nb_rb %d rballoceven %d sfn %d beamforming_mode %d
\n
"
,
rx_type
,
codeword_TB0
,
codeword_TB1
,
symbol
,
first_symbol_flag
,
nb_rb
,
dlsch0_harq
->
rb_alloc_even
,
subframe
,
beamforming_mode
);
//
printf("LLR rx_type %d cw0 %d cw1 %d symbol %d first symbol %d nb_rb %d rballoceven %d sfn %d beamforming_mode %d\n",
//
rx_type,codeword_TB0,codeword_TB1,symbol,first_symbol_flag,nb_rb,dlsch0_harq->rb_alloc_even,subframe,beamforming_mode);
if
((
rx_type
==
rx_standard
)
||
(
codeword_TB0
==
-
1
)
||
(
codeword_TB1
==
-
1
))
{
dlsch_64qam_llr
(
frame_parms
,
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
View file @
cd7e479f
...
...
@@ -1092,7 +1092,7 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
len2
=
len
>>
2
;
// length in quad words (4 REs)
len2
+=
((
len_mod4
==
0
)
?
0
:
1
);
printf
(
"Sym %d llr Length %d %d
\n
"
,
symbol
,
len
,
len2
);
//
printf("Sym %d llr Length %d %d\n", symbol,len,len2);
for
(
i
=
0
;
i
<
len2
;
i
++
)
{
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
cd7e479f
...
...
@@ -1333,7 +1333,8 @@ int pss_sss_extract(PHY_VARS_UE *phy_vars_ue,
@returns 0 on success
*/
int
pss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
]);
int32_t
pss_ext
[
4
][
72
],
uint8_t
subframe
);
/*! \brief Extract only SSS resource elements
@param phy_vars_ue Pointer to UE variables
...
...
@@ -1341,7 +1342,8 @@ int pss_only_extract(PHY_VARS_UE *phy_vars_ue,
@returns 0 on success
*/
int
sss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
sss_ext
[
4
][
72
]);
int32_t
sss_ext
[
4
][
72
],
uint8_t
subframe
);
/*! \brief Performs detection of SSS to find cell ID and other framing parameters (FDD/TDD, normal/extended prefix)
@param phy_vars_ue Pointer to UE variables
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/sss.c
View file @
cd7e479f
...
...
@@ -166,6 +166,7 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
int32_t
**
rxdataF
;
LOG_I
(
PHY
,
"do_pss_sss_extract subframe %d
\n
"
,
subframe
);
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
if
(
frame_parms
->
frame_type
==
FDD
)
{
...
...
@@ -180,11 +181,26 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
pss_symb
=
2
;
sss_symb
=
frame_parms
->
symbols_per_tti
-
1
;
if
(
subframe
==
5
||
subframe
==
0
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
&
0x1
)].
rxdataF
;
sss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
sss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[((
subframe
+
1
)
&
0x1
)].
rxdataF
;
pss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
pss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
else
if
(
subframe
==
6
||
subframe
==
1
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
&
0x1
)].
rxdataF
;
pss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
pss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
&
0x1
].
rxdataF
;
sss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
sss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
else
{
AssertFatal
(
0
,
""
);
}
}
//printf("extract_rbs: symbol_mod=%d, rx_offset=%d, ch_offset=%d\n",symbol_mod,
...
...
@@ -203,6 +219,8 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
pss_rxF
=
&
rxdataF
[
aarx
][(
1
+
(
pss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
else
{
if
(
subframe
==
5
||
subframe
==
0
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
&
0x1
)].
rxdataF
;
sss_rxF
=
&
rxdataF
[
aarx
][(
1
+
(
sss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
...
...
@@ -210,6 +228,19 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[((
subframe
+
1
)
&
0x1
)].
rxdataF
;
pss_rxF
=
&
rxdataF
[
aarx
][(
1
+
(
pss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
else
if
(
subframe
==
6
||
subframe
==
1
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
&
0x1
)].
rxdataF
;
pss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
pss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
&
0x1
].
rxdataF
;
sss_rxF
=
&
rxdataF
[
aarx
][(
rx_offset
+
(
sss_symb
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
else
{
AssertFatal
(
0
,
""
);
}
}
}
for
(
i
=
0
;
i
<
12
;
i
++
)
{
...
...
@@ -237,18 +268,20 @@ int pss_sss_extract(PHY_VARS_UE *phy_vars_ue,
}
int
pss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
pss_ext
[
4
][
72
])
int32_t
pss_ext
[
4
][
72
],
uint8_t
subframe
)
{
static
int32_t
dummy
[
4
][
72
];
return
_do_pss_sss_extract
(
phy_vars_ue
,
pss_ext
,
dummy
,
1
/* doPss */
,
0
/* doSss */
,
0
);
return
_do_pss_sss_extract
(
phy_vars_ue
,
pss_ext
,
dummy
,
1
/* doPss */
,
0
/* doSss */
,
subframe
);
}
int
sss_only_extract
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
sss_ext
[
4
][
72
])
int32_t
sss_ext
[
4
][
72
],
uint8_t
subframe
)
{
static
int32_t
dummy
[
4
][
72
];
return
_do_pss_sss_extract
(
phy_vars_ue
,
dummy
,
sss_ext
,
0
/* doPss */
,
1
/* doSss */
,
0
);
return
_do_pss_sss_extract
(
phy_vars_ue
,
dummy
,
sss_ext
,
0
/* doPss */
,
1
/* doSss */
,
subframe
);
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
cd7e479f
...
...
@@ -515,8 +515,9 @@ uint32_t ulsch_encoding(uint8_t *a,
G
=
G
-
Q_RI
-
Q_CQI
;
ulsch
->
harq_processes
[
harq_pid
]
->
G
=
G
;
/*
LOG_I(PHY,"ULSCH Encoding G %d, Q_RI %d (O_RI%d, Msc_initial %d, Nsymb_initial%d, beta_offset_ri_times8 %d), Q_CQI %d, Q_ACK %d \n",G,Q_RI,ulsch->O_RI,ulsch->harq_processes[harq_pid]->Msc_initial,ulsch->harq_processes[harq_pid]->Nsymb_initial,ulsch->beta_offset_ri_times8,Q_CQI,Q_ACK);
LOG_I
(
PHY
,
"ULSCH Encoding G %d, Q_RI %d (O_RI%d, Msc_initial %d, Nsymb_initial%d, beta_offset_ri_times8 %d), "
"Q_CQI %d, Q_ACK %d
\n
"
,
G
,
Q_RI
,
ulsch
->
O_RI
,
ulsch
->
harq_processes
[
harq_pid
]
->
Msc_initial
,
ulsch
->
harq_processes
[
harq_pid
]
->
Nsymb_initial
,
ulsch
->
beta_offset_ri_times8
,
Q_CQI
,
Q_ACK
);
LOG_I
(
PHY
,
"ULSCH Encoding (Nid_cell %d, rnti %x): harq_pid %d round %d, RV %d, mcs %d, O_RI %d, O_ACK %d, G %d
\n
"
,
frame_parms
->
Nid_cell
,
ulsch
->
rnti
,
...
...
@@ -527,7 +528,7 @@ uint32_t ulsch_encoding(uint8_t *a,
ulsch
->
O_RI
,
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
,
G
);
*/
if
((
int
)
G
<
0
)
{
LOG_E
(
PHY
,
"FATAL: ulsch_coding.c G < 0 (%d) : Q_RI %d, Q_CQI %d, O %d, betaCQI_times8 %d)
\n
"
,
G
,
Q_RI
,
Q_CQI
,
ulsch
->
O
,
ulsch
->
beta_offset_cqi_times8
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/slot_fep.c
View file @
cd7e479f
...
...
@@ -117,6 +117,8 @@ int slot_fep(PHY_VARS_UE *ue,
if
(
l
==
0
)
{
LOG_I
(
PHY
,
"FFT odfm symbol %d Slot %d
\n
"
,
symbol
,
Ns
);
if
(
rx_offset
>
(
frame_length_samples
-
frame_parms
->
ofdm_symbol_size
))
memcpy
((
short
*
)
&
common_vars
->
rxdata
[
aa
][
frame_length_samples
],
(
short
*
)
&
common_vars
->
rxdata
[
aa
][
0
],
...
...
@@ -170,19 +172,19 @@ int slot_fep(PHY_VARS_UE *ue,
}
#ifdef DEBUG_FEP
//
#ifdef DEBUG_FEP
// if (ue->frame <100)
printf
(
"slot_fep: frame %d: symbol %d rx_offset %d
\n
"
,
ue
->
proc
.
proc_rxtx
[(
Ns
>>
1
)
&
1
].
frame_rx
,
symbol
,
rx_offset
);
#endif
//
#endif
}
if
(
ue
->
perfect_ce
==
0
)
{
if
((
l
==
0
)
||
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antenna_ports_eNB
;
aa
++
)
{
#ifdef DEBUG_FEP
//
#ifdef DEBUG_FEP
printf
(
"Channel estimation eNB %d, aatx %d, slot %d, symbol %d
\n
"
,
eNB_id
,
aa
,
Ns
,
l
);
#endif
//
#endif
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
lte_dl_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_common.c
View file @
cd7e479f
...
...
@@ -454,6 +454,7 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
}
// report ACK/NACK status
o_ACK
[
cw_idx
]
=
0
;
if
(
harq_ack
[
subframe_dl0
].
send_harq_status
==
1
)
{
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl0
].
ack
;
...
...
@@ -462,10 +463,11 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
}
else
if
(
harq_ack
[
subframe_dl1
].
send_harq_status
==
1
)
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl1
].
ack
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
+
(
harq_ack
[
subframe_dl1
].
send_harq_status
<<
1
)
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
+
harq_ack
[
subframe_dl1
].
send_harq_status
;
LOG_I
(
PHY
,
"TDD Config3 UL Sfn %d, dl Sfn0 %d status %d, dl Sfn1 %d status %d
\n
"
,
subframe
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
send_harq_status
);
LOG_I
(
PHY
,
"TDD Config3 UL Sfn %d, dl Sfn0 %d status %d o_Ack %d, dl Sfn1 %d status %d o_Ack %d
\n
"
,
subframe
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
ack
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
ack
);
if
(
do_reset
)
{
// reset ACK/NACK status
harq_ack
[
subframe_dl0
].
ack
=
2
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_ue.c
View file @
cd7e479f
...
...
@@ -1367,8 +1367,9 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
}
//#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] AbsSubframe %d.%d Generating PUSCH : first_rb %d, nb_rb %d, round %d, mcs %d, rv %d, cyclic_shift %d (cyclic_shift_common %d,n_DMRS2 %d,n_PRS %d), ACK (%d,%d), O_ACK %d, bundling %d
\n
"
,
LOG_I
(
PHY
,
"[UE %d][PUSCH %d] AbsSubframe %d.%d Generating PUSCH : first_rb %d, nb_rb %d, round %d, mcs %d, rv %d, "
"cyclic_shift %d (cyclic_shift_common %d,n_DMRS2 %d,n_PRS %d), ACK (%d,%d), O_ACK %d, bundling %d
\n
"
,
Mod_id
,
harq_pid
,
frame_tx
%
1024
,
subframe_tx
,
first_rb
,
nb_rb
,
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
,
...
...
@@ -1618,14 +1619,20 @@ void ue_srs_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8
int16_t
get_pucch2_cqi
(
PHY_VARS_UE
*
ue
,
int
eNB_id
,
int
*
len
)
{
if
((
ue
->
transmission_mode
[
eNB_id
]
<
4
)
||
(
ue
->
transmission_mode
[
eNB_id
]
==
7
))
{
// Mode 1-0 feedback
// 4-bit CQI message
LOG_I
(
PHY
,
"compute CQI value, TM %d, length 4, Cqi Avg %d, value %d
\n
"
,
ue
->
transmission_mode
[
eNB_id
],
ue
->
measurements
.
wideband_cqi_avg
[
eNB_id
],
sinr2cqi
((
double
)
ue
->
measurements
.
wideband_cqi_avg
[
eNB_id
],
ue
->
transmission_mode
[
eNB_id
]));
*
len
=
4
;
return
(
sinr2cqi
((
double
)
ue
->
measurements
.
wideband_cqi_avg
[
eNB_id
],
ue
->
transmission_mode
[
eNB_id
]));
}
else
{
// Mode 1-1 feedback, later
LOG_I
(
PHY
,
"compute CQI value, TM %d, length 0, Cqi Avg 0
\n
"
,
ue
->
transmission_mode
[
eNB_id
]);
*
len
=
0
;
// 2-antenna ports RI=1, 6 bits (2 PMI, 4 CQI)
...
...
@@ -1741,7 +1748,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
if
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
)
{
LOG_
D
(
PHY
,
"PUSCH is programmed on this subframe [pid %d] AbsSuframe %d.%d ==> Skip PUCCH transmission
\n
"
,
harq_pid
,
frame_tx
,
subframe_tx
);
LOG_
I
(
PHY
,
"PUSCH is programmed on this subframe [pid %d] AbsSuframe %d.%d ==> Skip PUCCH transmission
\n
"
,
harq_pid
,
frame_tx
,
subframe_tx
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PUCCH
,
VCD_FUNCTION_OUT
);
return
;
}
...
...
@@ -2148,10 +2155,16 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
// reset DL ACK/NACK status
if
(
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
reset_ack
(
&
ue
->
frame_parms
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
harq_ack
,
subframe_tx
,
ue
->
ulsch
[
eNB_id
]
->
o_ACK
,
0
);
reset_ack
(
&
ue
->
frame_parms
,
ue
->
dlsch
[(
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
+
1
)
&
0x1
][
eNB_id
][
0
]
->
harq_ack
,
subframe_tx
,
ue
->
ulsch
[
eNB_id
]
->
o_ACK
,
0
);
}
if
(
ue
->
dlsch_SI
[
eNB_id
]
!=
NULL
)
reset_ack
(
&
ue
->
frame_parms
,
...
...
@@ -2193,6 +2206,8 @@ void ue_measurement_procedures(
uint16_t
slot
,
// slot index of each radio frame [0..19]
uint8_t
abstraction_flag
,
runmode_t
mode
)
{
LOG_I
(
PHY
,
"ue_measurement_procedures l %d Ncp %d
\n
"
,
l
,
ue
->
frame_parms
.
Ncp
);
LTE_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
...
...
@@ -2232,6 +2247,7 @@ void ue_measurement_procedures(
if
(
l
==
(
6
-
ue
->
frame_parms
.
Ncp
))
{
// make sure we have signal from PSS/SSS for N0 measurement
LOG_I
(
PHY
,
" l==(6-ue->frame_parms.Ncp) ue_rrc_measurements
\n
"
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_IN
);
ue_rrc_measurements
(
ue
,
...
...
@@ -3159,7 +3175,7 @@ void ue_pdsch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, PDSC
if
(
dlsch0
&&
(
!
dlsch1
))
{
harq_pid
=
dlsch0
->
current_harq_pid
;
LOG_
D
(
PHY
,
"[UE %d] PDSCH active in subframe %d, harq_pid %d
\n
"
,
ue
->
Mod_id
,
subframe_rx
,
harq_pid
);
LOG_
I
(
PHY
,
"[UE %d] PDSCH active in subframe %d, harq_pid %d Symbol %d
\n
"
,
ue
->
Mod_id
,
subframe_rx
,
harq_pid
,
m
);
if
((
pdsch
==
PDSCH
)
&&
(
ue
->
transmission_mode
[
eNB_id
]
==
5
)
&&
...
...
@@ -3866,6 +3882,8 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
stop_meas
(
&
ue
->
ofdm_demod_stats
);
}
LOG_I
(
PHY
,
" Measurement slot 1: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
subframe_rx
);
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,
1
+
(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
}
// for l=1..l2
...
...
@@ -3931,6 +3949,27 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
start_meas
(
&
ue
->
generic_stat
);
#if 0
if(subframe_rx==5 && ue->dlsch[subframe_rx&0x1][eNB_id][0]->harq_processes[ue->dlsch[subframe_rx&0x1][eNB_id][0]->current_harq_pid]->nb_rb > 20){
//write_output("decoder_llr.m","decllr",dlsch_llr,G,1,0);
//write_output("llr.m","llr", &ue->pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
write_output("rxdataF0_current.m" , "rxdataF0", &ue->common_vars.common_vars_rx_data_per_thread[subframe_rx&0x1].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
//write_output("rxdataF0_previous.m" , "rxdataF0_prev_sss", &ue->common_vars.common_vars_rx_data_per_thread[(subframe_rx+1)&0x1].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
//write_output("rxdataF0_previous.m" , "rxdataF0_prev", &ue->common_vars.common_vars_rx_data_per_thread[(subframe+1)&0x1].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
write_output("dl_ch_estimates.m", "dl_ch_estimates_sfn5", &ue->common_vars.common_vars_rx_data_per_thread[subframe_rx&0x1].dl_ch_estimates[0][0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
write_output("dl_ch_estimates_ext.m", "dl_ch_estimatesExt_sfn5", &ue->pdsch_vars[subframe_rx&0x1][0]->dl_ch_estimates_ext[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
write_output("rxdataF_comp00.m","rxdataF_comp00", &ue->pdsch_vars[subframe_rx&0x1][0]->rxdataF_comp0[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
//write_output("magDLFirst.m", "magDLFirst", &phy_vars_ue->pdsch_vars[subframe&0x1][0]->dl_ch_mag0[0][0],14*frame_parms->N_RB_DL*12,1,1);
//write_output("magDLSecond.m", "magDLSecond", &phy_vars_ue->pdsch_vars[subframe&0x1][0]->dl_ch_magb0[0][0],14*frame_parms->N_RB_DL*12,1,1);
AssertFatal (0,"");
}
#endif
// do procedures for SI-RNTI
if
((
ue
->
dlsch_SI
[
eNB_id
])
&&
(
ue
->
dlsch_SI
[
eNB_id
]
->
active
==
1
))
{
ue_pdsch_procedures
(
ue
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment