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
Michael Black
OpenXG UE
Commits
000cb8db
Commit
000cb8db
authored
Sep 18, 2014
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@5794
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
7172ea3f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
68 additions
and
34 deletions
+68
-34
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+3
-3
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
+4
-4
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+1
-1
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+2
-2
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+2
-1
openair1/PHY/LTE_TRANSPORT/pmch.c
openair1/PHY/LTE_TRANSPORT/pmch.c
+2
-0
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+2
-2
openair1/PHY/LTE_TRANSPORT/rar_tools.c
openair1/PHY/LTE_TRANSPORT/rar_tools.c
+1
-1
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+1
-1
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+1
-2
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+33
-10
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+14
-5
No files found.
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
000cb8db
...
@@ -53,7 +53,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -53,7 +53,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
ncoef
=
32767
-
coef
;
ncoef
=
32767
-
coef
;
#ifdef DEBUG_PHY
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d
: rx_offset (before) = %d
\n
"
,
phy_vars_ue
->
frame
_rx
,
phy_vars_ue
->
rx_offset
);
LOG_D
(
PHY
,
"frame %d
, slot %d: rx_offset (before) = %d
\n
"
,
phy_vars_ue
->
frame_rx
,
phy_vars_ue
->
slot
_rx
,
phy_vars_ue
->
rx_offset
);
#endif //DEBUG_PHY
#endif //DEBUG_PHY
...
@@ -77,7 +77,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -77,7 +77,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
else
else
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
diff
=
max_pos_fil
-
2
;
//frame_parms->nb_prefix_samples/8;
diff
=
max_pos_fil
-
2
;
//frame_parms->nb_prefix_samples/8;
if
(
diff
>
SYNCH_HYST
)
if
(
diff
>
SYNCH_HYST
)
...
@@ -91,7 +91,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -91,7 +91,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
if
(
phy_vars_ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
if
(
phy_vars_ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
phy_vars_ue
->
rx_offset
-=
FRAME_LENGTH_COMPLEX_SAMPLES
;
phy_vars_ue
->
rx_offset
-=
FRAME_LENGTH_COMPLEX_SAMPLES
;
#ifdef DEBUG_PHY
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d)
\n
"
,
LOG_D
(
PHY
,
"frame %d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d)
\n
"
,
...
...
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
View file @
000cb8db
...
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
...
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aa
][
12
+
ch_offset
];
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aa
][
12
+
ch_offset
];
dl_ch_shift
=
4
+
(
log2_approx
(
dl_channel_level
(
dl_ch
,
frame_parms
))
/
2
);
dl_ch_shift
=
6
+
(
log2_approx
(
dl_channel_level
(
dl_ch
,
frame_parms
))
/
2
);
// printf("dl_ch_shift: %d\n",dl_ch_shift);
// printf("dl_ch_shift: %d\n",dl_ch_shift);
if
(
ch_offset
==
0
)
if
(
ch_offset
==
0
)
...
@@ -131,12 +131,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
...
@@ -131,12 +131,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
omega_cpx
->
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
omega_cpx
->
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
phase_offset
+=
atan2
((
double
)
omega_cpx
->
i
,(
double
)
omega_cpx
->
r
);
phase_offset
+=
atan2
((
double
)
omega_cpx
->
i
,(
double
)
omega_cpx
->
r
);
//
printf(
"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
//
LOG_D(PHY,
"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
}
}
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
freq_offset_est
=
(
int
)
(
phase_offset
/
(
2
*
M_PI
)
/
2.5e-4
);
//2.5e-4 is the time between pilot symbols
freq_offset_est
=
(
int
)
(
phase_offset
/
(
2
*
M_PI
)
/
(
frame_parms
->
Ncp
==
NORMAL
?
(
285.8e-6
)
:
(
2.5e-4
))
);
//2.5e-4 is the time between pilot symbols
//
printf(
"symbol %d : freq_offset_est %d\n",l,freq_offset_est);
//
LOG_D(PHY,
"symbol %d : freq_offset_est %d\n",l,freq_offset_est);
// update freq_offset with phase_offset using a moving average filter
// update freq_offset with phase_offset using a moving average filter
if
(
first_run
==
1
)
{
if
(
first_run
==
1
)
{
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
000cb8db
...
@@ -138,8 +138,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
...
@@ -138,8 +138,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
Msc_RS_idx
=
b
;
Msc_RS_idx
=
b
;
#endif
#endif
//
msg("lte_ul_channel_estimation:
subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
//
LOG_I(PHY,"
subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
#ifdef DEBUG_CH
#ifdef DEBUG_CH
#ifdef USER_MODE
#ifdef USER_MODE
if
(
Ns
==
0
)
if
(
Ns
==
0
)
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
000cb8db
...
@@ -3678,7 +3678,7 @@ uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t
...
@@ -3678,7 +3678,7 @@ uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t
}
}
uint
8
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
){
uint
32
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
){
if
((
frame_parms
->
frame_type
==
TDD
)
&&
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
frame_parms
->
tdd_config
==
1
)
&&
(
frame_parms
->
tdd_config
==
1
)
&&
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
000cb8db
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
#include "gain_control.h"
#include "gain_control.h"
#endif
#endif
#define DEBUG_INITIAL_SYNCH
//
#define DEBUG_INITIAL_SYNCH
int
pbch_detection
(
PHY_VARS_UE
*
phy_vars_ue
,
runmode_t
mode
)
{
int
pbch_detection
(
PHY_VARS_UE
*
phy_vars_ue
,
runmode_t
mode
)
{
...
@@ -458,7 +458,7 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
...
@@ -458,7 +458,7 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
#ifdef OPENAIR2
#ifdef OPENAIR2
LOG_I
(
PHY
,
"[PHY][UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
LOG_I
(
PHY
,
"[PHY][UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
//mac_resynch();
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
#endif //OPENAIR2
#endif //OPENAIR2
generate_pcfich_reg_mapping
(
frame_parms
);
generate_pcfich_reg_mapping
(
frame_parms
);
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
000cb8db
...
@@ -53,7 +53,8 @@
...
@@ -53,7 +53,8 @@
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
uint8_t
rv_table
[
4
]
=
{
0
,
2
,
3
,
1
};
//36.321 5.4.2.2
uint8_t
rv_table
[
4
]
=
{
0
,
2
,
3
,
1
};
uint8_t
get_mi
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
uint8_t
get_mi
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
...
...
openair1/PHY/LTE_TRANSPORT/pmch.c
View file @
000cb8db
...
@@ -104,6 +104,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
...
@@ -104,6 +104,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
uint32_t
period
;
uint32_t
period
;
uint8_t
i
;
uint8_t
i
;
// LOG_D(PHY,"is_pmch_subframe: frame %d, subframe %d, num_MBSFN_config %d\n",
// frame,subframe,frame_parms->num_MBSFN_config);
for
(
i
=
0
;
i
<
frame_parms
->
num_MBSFN_config
;
i
++
)
{
// we have at least one MBSFN configuration
for
(
i
=
0
;
i
<
frame_parms
->
num_MBSFN_config
;
i
++
)
{
// we have at least one MBSFN configuration
period
=
1
<<
frame_parms
->
MBSFN_config
[
i
].
radioframeAllocationPeriod
;
period
=
1
<<
frame_parms
->
MBSFN_config
[
i
].
radioframeAllocationPeriod
;
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
000cb8db
...
@@ -801,7 +801,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
...
@@ -801,7 +801,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
uint8_t
new_dft
=
0
;
uint8_t
new_dft
=
0
;
uint8_t
aa
;
uint8_t
aa
;
int32_t
lev
;
int32_t
lev
;
int
8
_t
levdB
;
int
16
_t
levdB
;
int
fft_size
,
log2_ifft_size
;
int
fft_size
,
log2_ifft_size
;
uint8_t
nb_ant_rx
=
1
;
//phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
uint8_t
nb_ant_rx
=
1
;
//phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
...
@@ -1121,7 +1121,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
...
@@ -1121,7 +1121,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
for
(
aa
=
0
;
aa
<
nb_ant_rx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
nb_ant_rx
;
aa
++
)
{
lev
+=
(
int32_t
)
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
*
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
+
(
int32_t
)
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)]
*
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)];
lev
+=
(
int32_t
)
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
*
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
+
(
int32_t
)
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)]
*
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)];
}
}
levdB
=
dB_fixed
(
lev
);
levdB
=
dB_fixed
_times10
(
lev
);
if
(
levdB
>
preamble_energy_list
[
preamble_index
]
)
{
if
(
levdB
>
preamble_energy_list
[
preamble_index
]
)
{
preamble_energy_list
[
preamble_index
]
=
levdB
;
preamble_energy_list
[
preamble_index
]
=
levdB
;
...
...
openair1/PHY/LTE_TRANSPORT/rar_tools.c
View file @
000cb8db
...
@@ -80,7 +80,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
...
@@ -80,7 +80,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
uint16_t
*
RIV2nb_rb_LUT
,
*
RIV2first_rb_LUT
;
uint16_t
*
RIV2nb_rb_LUT
,
*
RIV2first_rb_LUT
;
uint16_t
RIV_max
;
uint16_t
RIV_max
;
LOG_
D
(
PHY
,
"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
subframe
,
harq_pid
);
LOG_
I
(
PHY
,
"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
subframe
,
harq_pid
);
switch
(
frame_parms
->
N_RB_DL
)
{
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
case
6
:
RIV2nb_rb_LUT
=
&
RIV2nb_rb_LUT6
[
0
];
RIV2nb_rb_LUT
=
&
RIV2nb_rb_LUT6
[
0
];
...
...
openair1/PHY/MODULATION/slot_fep.c
View file @
000cb8db
...
@@ -166,7 +166,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
...
@@ -166,7 +166,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
#ifdef DEBUG_FEP
#ifdef DEBUG_FEP
msg
(
"Frequency offset estimation
\n
"
);
msg
(
"Frequency offset estimation
\n
"
);
#endif
#endif
if
(
(
l
==
0
)
||
(
l
==
(
4
-
frame_parms
->
Ncp
)
))
{
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
start_meas
(
&
phy_vars_ue
->
dlsch_freq_offset_estimation_stats
);
start_meas
(
&
phy_vars_ue
->
dlsch_freq_offset_estimation_stats
);
lte_est_freq_offset
(
ue_common_vars
->
dl_ch_estimates
[
0
],
lte_est_freq_offset
(
ue_common_vars
->
dl_ch_estimates
[
0
],
frame_parms
,
frame_parms
,
...
...
openair1/SCHED/defs.h
View file @
000cb8db
...
@@ -416,7 +416,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
...
@@ -416,7 +416,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
@param n subframe of PDCCH
@param n subframe of PDCCH
@returns UL frame corresponding to pdcch order
@returns UL frame corresponding to pdcch order
*/
*/
uint
8
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
uint
32
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
uint16_t
get_Np
(
uint8_t
N_RB_DL
,
uint8_t
nCCE
,
uint8_t
plus1
);
uint16_t
get_Np
(
uint8_t
N_RB_DL
,
uint8_t
nCCE
,
uint8_t
plus1
);
...
@@ -533,7 +533,6 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t
...
@@ -533,7 +533,6 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
uint8_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
/**@}*/
/**@}*/
#endif //OPENAIR_LTE
#endif //OPENAIR_LTE
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
000cb8db
...
@@ -1620,13 +1620,16 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1620,13 +1620,16 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
}
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
LOG_I
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d subframe %d Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d
\n
"
,
LOG_I
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d subframe %d
UL Frame %d, UL Subframe %d,
Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
Mod_id
,
subframe2harq_pid
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe2harq_pid
(
&
phy_vars_eNB
->
lte_frame_parms
,
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
(((
subframe
)
==
0
)
?
1
:
0
)
+
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
)),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
)),
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,(((
subframe
)
==
0
)
?
1
:
0
)
+
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
subframe
,
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
),
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
*
(
unsigned
int
*
)
&
DCI_pdu
->
dci_alloc
[
i
].
dci_pdu
[
0
],
*
(
unsigned
int
*
)
&
DCI_pdu
->
dci_alloc
[
i
].
dci_pdu
[
0
],
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
1
<<
DCI_pdu
->
dci_alloc
[
i
].
L
);
1
<<
DCI_pdu
->
dci_alloc
[
i
].
L
);
...
@@ -1867,6 +1870,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1867,6 +1870,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
LOG_I
(
PHY
,
"[eNB][RAPROC] Frame %d subframe %d, Activated Msg3 demodulation for UE %d in frame %d, subframe %d
\n
"
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
UE_id
,
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
#else
#else
for
(
i
=
0
;
i
<
input_buffer_length
;
i
++
)
for
(
i
=
0
;
i
<
input_buffer_length
;
i
++
)
dlsch_input_buffer
[
i
]
=
(
unsigned
char
)
i
;
//(taus()&0xff);
dlsch_input_buffer
[
i
]
=
(
unsigned
char
)
i
;
//(taus()&0xff);
...
@@ -2552,6 +2562,8 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB,
...
@@ -2552,6 +2562,8 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB,
}
}
extern
int16_t
prach_ifft
[
4
][
1024
*
4
];
void
prach_procedures
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
sched_subframe
,
uint8_t
abstraction_flag
)
{
void
prach_procedures
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
sched_subframe
,
uint8_t
abstraction_flag
)
{
uint16_t
preamble_energy_list
[
64
],
preamble_delay_list
[
64
];
uint16_t
preamble_energy_list
[
64
],
preamble_delay_list
[
64
];
...
@@ -2589,7 +2601,7 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
...
@@ -2589,7 +2601,7 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
if
((
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
generate_prach
==
1
)
&&
if
((
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
generate_prach
==
1
)
&&
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
==
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
==
phy_vars_eNB
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
)
)
{
phy_vars_eNB
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
)
)
{
preamble_energy_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
80
;
preamble_energy_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
80
0
;
preamble_delay_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
5
;
preamble_delay_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
5
;
}
}
...
@@ -2612,16 +2624,27 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
...
@@ -2612,16 +2624,27 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
preamble_delay_list
[
preamble_max
]);
preamble_delay_list
[
preamble_max
]);
#endif
#endif
if
(
preamble_energy_list
[
preamble_max
]
>
60
)
{
if
(
preamble_energy_list
[
preamble_max
]
>
600
)
{
/*
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
write_output("prach_rx0.m","prach_rx0",&phy_vars_eNB->lte_eNB_common_vars.rxdata[0][0][subframe*phy_vars_eNB->lte_frame_parms.samples_per_tti],6144+792,1,1);
write_output("prach_rxF0.m","prach_rxF0",phy_vars_eNB->lte_eNB_prach_vars.rxsigF[0],24576,1,1);
mac_xface->macphy_exit("Exiting for PRACH debug\n");
*/
UE_id
=
find_next_ue_index
(
phy_vars_eNB
);
UE_id
=
find_next_ue_index
(
phy_vars_eNB
);
if
(
UE_id
>=
0
)
{
if
(
UE_id
>=
0
)
{
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
UE_timing_offset
=
preamble_delay_list
[
preamble_max
]
&
0x1FFF
;
//limit to 13 (=11+2) bits
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
UE_timing_offset
=
preamble_delay_list
[
preamble_max
]
&
0x1FFF
;
//limit to 13 (=11+2) bits
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
sector
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
sector
=
0
;
LOG_I
(
PHY
,
"[eNB %d][RAPROC]
Initiating RA procedure with preamble %d, energy %d
, delay %d
\n
"
,
LOG_I
(
PHY
,
"[eNB %d][RAPROC]
Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB
, delay %d
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
Mod_id
,
frame
,
subframe
,
preamble_max
,
preamble_max
,
preamble_energy_max
,
preamble_energy_max
/
10
,
preamble_energy_max
%
10
,
preamble_delay_list
[
preamble_max
]);
preamble_delay_list
[
preamble_max
]);
#ifdef OPENAIR2
#ifdef OPENAIR2
mac_xface
->
initiate_ra_proc
(
phy_vars_eNB
->
Mod_id
,
mac_xface
->
initiate_ra_proc
(
phy_vars_eNB
->
Mod_id
,
...
@@ -2645,6 +2668,7 @@ void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_
...
@@ -2645,6 +2668,7 @@ void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_
}
}
void
phy_procedures_eNB_RX
(
unsigned
char
sched_subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
)
{
void
phy_procedures_eNB_RX
(
unsigned
char
sched_subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
)
{
//RX processing
//RX processing
uint32_t
l
,
ret
=
0
,
i
,
j
,
k
;
uint32_t
l
,
ret
=
0
,
i
,
j
,
k
;
...
@@ -3724,8 +3748,7 @@ void phy_procedures_eNB_lte(unsigned char subframe,PHY_VARS_eNB **phy_vars_eNB,u
...
@@ -3724,8 +3748,7 @@ void phy_procedures_eNB_lte(unsigned char subframe,PHY_VARS_eNB **phy_vars_eNB,u
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
*/
*/
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_ENB
,
subframe
*
2
);
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_ENB
,
phy_vars_eNB
[
0
]
->
proc
[
subframe
].
frame_tx
);
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_ENB
,
phy_vars_eNB
[
0
]
->
proc
[
subframe
].
frame_tx
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE
,
1
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE
,
1
);
start_meas
(
&
phy_vars_eNB
[
0
]
->
phy_proc
);
start_meas
(
&
phy_vars_eNB
[
0
]
->
phy_proc
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
000cb8db
...
@@ -1476,19 +1476,23 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1476,19 +1476,23 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_IN
);
ue_rrc_measurements
(
phy_vars_ue
,
ue_rrc_measurements
(
phy_vars_ue
,
slot_rx
,
slot_rx
,
abstraction_flag
);
abstraction_flag
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_OUT
);
//phy_vars_ue->sinr_eff = sinr_eff_cqi_calc(phy_vars_ue, 0);
if
(
abstraction_flag
==
1
)
phy_vars_ue
->
sinr_eff
=
sinr_eff_cqi_calc
(
phy_vars_ue
,
0
);
}
}
if
((
slot_rx
==
1
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
if
((
slot_rx
==
1
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
// AGC
// AGC
#ifdef EXMIMO
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
VCD_FUNCTION_IN
);
#if defined EXMIMO
if
((
openair_daq_vars
.
rx_gain_mode
==
DAQ_AGC_ON
)
&&
if
((
openair_daq_vars
.
rx_gain_mode
==
DAQ_AGC_ON
)
&&
(
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
)
(
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
)
...
@@ -1499,7 +1503,8 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1499,7 +1503,8 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
phy_adjust_gain
(
phy_vars_ue
,
0
);
phy_adjust_gain
(
phy_vars_ue
,
0
);
#endif
#endif
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
VCD_FUNCTION_OUT
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_IN
);
eNB_id
=
0
;
eNB_id
=
0
;
if
(
abstraction_flag
==
0
)
if
(
abstraction_flag
==
0
)
...
@@ -1508,6 +1513,7 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1508,6 +1513,7 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
eNB_id
,
eNB_id
,
0
,
0
,
16384
);
16384
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
/* if (openair_daq_vars.auto_freq_correction == 1) {
/* if (openair_daq_vars.auto_freq_correction == 1) {
if (frame_rx % 100 == 0) {
if (frame_rx % 100 == 0) {
...
@@ -2349,6 +2355,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2349,6 +2355,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
n_symb
=
0
;
n_symb
=
0
;
}
}
else
{
else
{
/*
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
if ((slot_rx%2)==0) {
if ((slot_rx%2)==0) {
n_symb=2;
n_symb=2;
...
@@ -2357,7 +2364,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2357,7 +2364,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
else
else
n_symb=0;
n_symb=0;
}
}
else
else
*/
n_symb
=
phy_vars_ue
->
lte_frame_parms
.
symbols_per_tti
/
2
;
n_symb
=
phy_vars_ue
->
lte_frame_parms
.
symbols_per_tti
/
2
;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
@@ -2369,11 +2376,13 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2369,11 +2376,13 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
for
(
l
=
0
;
l
<
n_symb
;
l
++
)
{
for
(
l
=
0
;
l
<
n_symb
;
l
++
)
{
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
start_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
start_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP
,
VCD_FUNCTION_IN
);
slot_fep
(
phy_vars_ue
,
slot_fep
(
phy_vars_ue
,
l
,
l
,
slot_rx
,
slot_rx
,
phy_vars_ue
->
rx_offset
,
phy_vars_ue
->
rx_offset
,
0
);
0
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP
,
VCD_FUNCTION_OUT
);
stop_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
stop_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
}
}
...
...
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