Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
openairinterface5G
Commits
c8c4b423
Commit
c8c4b423
authored
Aug 22, 2017
by
Xenofon Foukas
Browse files
Merge remote-tracking branch 'origin/develop' into feature-68-enb-agent
parents
c3adbb95
17b9a9e9
Changes
70
Expand all
Show whitespace changes
Inline
Side-by-side
cmake_targets/build_oai
View file @
c8c4b423
...
@@ -469,6 +469,11 @@ function main() {
...
@@ -469,6 +469,11 @@ function main() {
flash_firmware_bladerf
flash_firmware_bladerf
fi
fi
fi
fi
if
[
"
$FLEXRAN_AGENT
"
==
"1"
]
;
then
echo_info
"installing protobuf/protobuf-c for flexran agent support"
install_protobuf_from_source
install_protobuf_c_from_source
fi
fi
fi
if
[
"
$INSTALL_OPTIONAL
"
=
"1"
]
;
then
if
[
"
$INSTALL_OPTIONAL
"
=
"1"
]
;
then
...
...
cmake_targets/tools/build_helper
View file @
c8c4b423
...
@@ -202,10 +202,14 @@ install_protobuf_from_source(){
...
@@ -202,10 +202,14 @@ install_protobuf_from_source(){
(
(
cd /tmp
cd /tmp
echo "Downloading protobuf"
echo "Downloading protobuf"
rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1
#rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1
wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
#wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner
#tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner
cd protobuf-2.6.1/
#cd protobuf-2.6.1/
rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0
wget https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz
tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner $USER --group $USER --no-same-owner
cd protobuf-3.3.0/
./configure
./configure
echo "Compiling protobuf"
echo "Compiling protobuf"
make -j`nproc`
make -j`nproc`
...
@@ -641,8 +645,6 @@ check_install_oai_software() {
...
@@ -641,8 +645,6 @@ check_install_oai_software() {
install_asn1c_from_source
install_asn1c_from_source
$SUDO rm -fr /opt/ssh
$SUDO rm -fr /opt/ssh
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh
install_protobuf_from_source
install_protobuf_c_from_source
}
}
### Remove Nettle installation which was done from sources (only done for Ubuntu Distro)
### Remove Nettle installation which was done from sources (only done for Ubuntu Distro)
...
...
openair1/PHY/INIT/lte_init.c
View file @
c8c4b423
...
@@ -764,6 +764,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
...
@@ -764,6 +764,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
struct
PhysicalConfigDedicated
*
physicalConfigDedicated
)
struct
PhysicalConfigDedicated
*
physicalConfigDedicated
)
{
{
static
uint8_t
first_dedicated_configuration
=
0
;
PHY_VARS_UE
*
phy_vars_ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
PHY_VARS_UE
*
phy_vars_ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
phy_vars_ue
->
total_TBS
[
eNB_id
]
=
0
;
phy_vars_ue
->
total_TBS
[
eNB_id
]
=
0
;
...
@@ -954,9 +955,13 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
...
@@ -954,9 +955,13 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
// disable MIB SIB decoding once we are on connected mode
// disable MIB SIB decoding once we are on connected mode
LOG_I
(
PHY
,
"Disabling SIB MIB decoding
\n
"
);
first_dedicated_configuration
++
;
if
(
first_dedicated_configuration
>
1
)
{
LOG_I
(
PHY
,
"Disable SIB MIB decoding
\n
"
);
phy_vars_ue
->
decode_SIB
=
0
;
phy_vars_ue
->
decode_SIB
=
0
;
phy_vars_ue
->
decode_MIB
=
0
;
phy_vars_ue
->
decode_MIB
=
0
;
}
//phy_vars_ue->pdcch_vars[1][eNB_id]->crnti = phy_vars_ue->pdcch_vars[0][eNB_id]->crnti;
//phy_vars_ue->pdcch_vars[1][eNB_id]->crnti = phy_vars_ue->pdcch_vars[0][eNB_id]->crnti;
if
(
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
==
0x1234
)
if
(
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
==
0x1234
)
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
=
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
;
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
=
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
;
...
@@ -1084,6 +1089,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
...
@@ -1084,6 +1089,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
LTE_UE_COMMON
*
const
common_vars
=
&
ue
->
common_vars
;
LTE_UE_COMMON
*
const
common_vars
=
&
ue
->
common_vars
;
LTE_UE_PDSCH
**
const
pdsch_vars_SI
=
ue
->
pdsch_vars_SI
;
LTE_UE_PDSCH
**
const
pdsch_vars_SI
=
ue
->
pdsch_vars_SI
;
LTE_UE_PDSCH
**
const
pdsch_vars_ra
=
ue
->
pdsch_vars_ra
;
LTE_UE_PDSCH
**
const
pdsch_vars_ra
=
ue
->
pdsch_vars_ra
;
LTE_UE_PDSCH
**
const
pdsch_vars_p
=
ue
->
pdsch_vars_p
;
LTE_UE_PDSCH
**
const
pdsch_vars_mch
=
ue
->
pdsch_vars_MCH
;
LTE_UE_PDSCH
**
const
pdsch_vars_mch
=
ue
->
pdsch_vars_MCH
;
LTE_UE_PDSCH
*
(
*
pdsch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
+
1
]
=
&
ue
->
pdsch_vars
;
LTE_UE_PDSCH
*
(
*
pdsch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
+
1
]
=
&
ue
->
pdsch_vars
;
LTE_UE_PDCCH
*
(
*
pdcch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
]
=
&
ue
->
pdcch_vars
;
LTE_UE_PDCCH
*
(
*
pdcch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
]
=
&
ue
->
pdcch_vars
;
...
@@ -1179,6 +1185,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
...
@@ -1179,6 +1185,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_p
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_mch
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_mch
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
prach_vars
[
eNB_id
]
=
(
LTE_UE_PRACH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PRACH
));
prach_vars
[
eNB_id
]
=
(
LTE_UE_PRACH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PRACH
));
pbch_vars
[
eNB_id
]
=
(
LTE_UE_PBCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PBCH
));
pbch_vars
[
eNB_id
]
=
(
LTE_UE_PBCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PBCH
));
...
@@ -1242,6 +1249,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
...
@@ -1242,6 +1249,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
}
}
phy_init_lte_ue__PDSCH
(
pdsch_vars_SI
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_SI
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_ra
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_ra
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_p
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_mch
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_mch
[
eNB_id
],
fp
);
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
...
@@ -1306,6 +1314,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
...
@@ -1306,6 +1314,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_p
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
...
...
openair1/PHY/INIT/lte_param_init.c
View file @
c8c4b423
...
@@ -129,6 +129,9 @@ void lte_param_init(unsigned char N_tx_port_eNB,
...
@@ -129,6 +129,9 @@ void lte_param_init(unsigned char N_tx_port_eNB,
UE
->
perfect_ce
=
perfect_ce
;
UE
->
perfect_ce
=
perfect_ce
;
/* the UE code is multi-thread "aware", we need to setup this array */
for
(
i
=
0
;
i
<
10
;
i
++
)
UE
->
current_thread_id
[
i
]
=
i
%
2
;
printf
(
"Done lte_param_init
\n
"
);
printf
(
"Done lte_param_init
\n
"
);
...
...
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
c8c4b423
...
@@ -40,6 +40,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -40,6 +40,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
{
{
static
int
max_pos_fil
=
0
;
static
int
max_pos_fil
=
0
;
static
int
count_max_pos_ok
=
0
;
static
int
first_time
=
1
;
int
temp
=
0
,
i
,
aa
,
max_val
=
0
,
max_pos
=
0
;
int
temp
=
0
,
i
,
aa
,
max_val
=
0
,
max_pos
=
0
;
int
diff
;
int
diff
;
short
Re
,
Im
,
ncoef
;
short
Re
,
Im
,
ncoef
;
...
@@ -58,8 +60,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -58,8 +60,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
temp
=
0
;
temp
=
0
;
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
Re
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[(
i
<<
2
)];
Re
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[(
i
<<
2
)];
Im
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[
1
+
(
i
<<
2
)];
Im
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[
1
+
(
i
<<
2
)];
temp
+=
(
Re
*
Re
/
2
)
+
(
Im
*
Im
/
2
);
temp
+=
(
Re
*
Re
/
2
)
+
(
Im
*
Im
/
2
);
}
}
...
@@ -78,6 +80,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -78,6 +80,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
// do not filter to have proactive timing adjustment
// do not filter to have proactive timing adjustment
max_pos_fil
=
max_pos
;
max_pos_fil
=
max_pos
;
if
(
subframe
==
6
)
{
diff
=
max_pos_fil
-
(
frame_parms
->
nb_prefix_samples
>>
3
);
diff
=
max_pos_fil
-
(
frame_parms
->
nb_prefix_samples
>>
3
);
if
(
abs
(
diff
)
<
SYNCH_HYST
)
if
(
abs
(
diff
)
<
SYNCH_HYST
)
...
@@ -85,6 +89,26 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -85,6 +89,26 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
else
else
ue
->
rx_offset
=
diff
;
ue
->
rx_offset
=
diff
;
if
(
abs
(
diff
)
<
5
)
count_max_pos_ok
++
;
else
count_max_pos_ok
=
0
;
if
(
count_max_pos_ok
>
10
&&
first_time
==
1
)
{
first_time
=
0
;
ue
->
time_sync_cell
=
1
;
if
(
ue
->
mac_enabled
==
1
)
{
LOG_I
(
PHY
,
"[UE%d] Sending synch status to higher layers
\n
"
,
ue
->
Mod_id
);
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
0
,
1
);
//ue->common_vars.eNb_id);
ue
->
UE_mode
[
0
]
=
PRACH
;
}
else
{
ue
->
UE_mode
[
0
]
=
PUSCH
;
}
}
if
(
ue
->
rx_offset
<
0
)
if
(
ue
->
rx_offset
<
0
)
ue
->
rx_offset
+=
FRAME_LENGTH_COMPLEX_SAMPLES
;
ue
->
rx_offset
+=
FRAME_LENGTH_COMPLEX_SAMPLES
;
...
@@ -93,13 +117,22 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -93,13 +117,22 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
#ifdef DEBUG_PHY
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"AbsSubframe %d.%d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d) target_pos %d
\n
"
,
LOG_D
(
PHY
,
"AbsSubframe %d.%d: ThreadId %d diff =%i rx_offset (final) = %i : clear %d,max_pos = %d,max_pos_fil = %d (peak %d) max_val %d target_pos %d
\n
"
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
subframe
,
ue
->
rx_offset
,
max_pos
,
max_pos_fil
,
temp
,(
frame_parms
->
nb_prefix_samples
>>
3
));
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
subframe
]].
frame_rx
,
#endif //DEBUG_PHY
subframe
,
ue
->
current_thread_id
[
subframe
],
diff
,
ue
->
rx_offset
,
clear
,
max_pos
,
max_pos_fil
,
temp
,
max_val
,
(
frame_parms
->
nb_prefix_samples
>>
3
));
#endif //DEBUG_PHY
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
}
}
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
View file @
c8c4b423
...
@@ -51,7 +51,7 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
...
@@ -51,7 +51,7 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
int
uespec_pilot
[
300
];
int
uespec_pilot
[
300
];
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
phy_vars_ue
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
phy_vars_ue
->
frame_parms
;
LTE_UE_DLSCH_t
**
dlsch_ue
=
phy_vars_ue
->
dlsch
[
(
Ns
>>
1
)
%
RX_NB_TH
][
eNB_id
];
LTE_UE_DLSCH_t
**
dlsch_ue
=
phy_vars_ue
->
dlsch
[
phy_vars_ue
->
current_thread_id
[
Ns
>>
1
]
][
eNB_id
];
LTE_DL_UE_HARQ_t
*
dlsch0_harq
;
LTE_DL_UE_HARQ_t
*
dlsch0_harq
;
harq_pid
=
dlsch_ue
[
0
]
->
current_harq_pid
;
harq_pid
=
dlsch_ue
[
0
]
->
current_harq_pid
;
...
@@ -63,9 +63,9 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
...
@@ -63,9 +63,9 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
else
else
rballoc
=
dlsch0_harq
->
rb_alloc_even
;
rballoc
=
dlsch0_harq
->
rb_alloc_even
;
rxdataF
=
phy_vars_ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
Ns
>>
1
)
%
RX_NB_TH
].
rxdataF
;
rxdataF
=
phy_vars_ue
->
common_vars
.
common_vars_rx_data_per_thread
[
phy_vars_ue
->
current_thread_id
[
Ns
>>
1
]
].
rxdataF
;
dl_bf_ch_estimates
=
phy_vars_ue
->
pdsch_vars
[
(
Ns
>>
1
)
%
RX_NB_TH
][
eNB_id
]
->
dl_bf_ch_estimates
;
dl_bf_ch_estimates
=
phy_vars_ue
->
pdsch_vars
[
phy_vars_ue
->
current_thread_id
[
Ns
>>
1
]
][
eNB_id
]
->
dl_bf_ch_estimates
;
beamforming_mode
=
phy_vars_ue
->
transmission_mode
[
eNB_id
]
>
6
?
phy_vars_ue
->
transmission_mode
[
eNB_id
]
:
0
;
beamforming_mode
=
phy_vars_ue
->
transmission_mode
[
eNB_id
]
>
6
?
phy_vars_ue
->
transmission_mode
[
eNB_id
]
:
0
;
if
(
phy_vars_ue
->
high_speed_flag
==
0
)
// use second channel estimate position for temporary storage
if
(
phy_vars_ue
->
high_speed_flag
==
0
)
// use second channel estimate position for temporary storage
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
View file @
c8c4b423
...
@@ -49,12 +49,13 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
...
@@ -49,12 +49,13 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
uint16_t
Nid_cell
=
(
eNB_offset
==
0
)
?
ue
->
frame_parms
.
Nid_cell
:
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
];
uint16_t
Nid_cell
=
(
eNB_offset
==
0
)
?
ue
->
frame_parms
.
Nid_cell
:
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
];
uint8_t
nushift
,
pilot1
,
pilot2
,
pilot3
;
uint8_t
nushift
,
pilot0
,
pilot1
,
pilot2
,
pilot3
;
uint8_t
previous_
sfn
=
((
Ns
>>
1
)
-
1
)
<
0
?
9
:
(
Ns
>>
1
)
-
1
;
uint8_t
previous_
thread_id
=
ue
->
current_thread_id
[
Ns
>>
1
]
==
0
?
(
RX_NB_TH
-
1
)
:
(
ue
->
current_thread_id
[
Ns
>>
1
]
-
1
)
;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]
].
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates_previous
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
previous_
sfn
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates_previous
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
previous_
thread_id
].
dl_ch_estimates
[
eNB_offset
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
Ns
>>
1
)
%
RX_NB_TH
].
rxdataF
;
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]
].
rxdataF
;
pilot0
=
0
;
if
(
ue
->
frame_parms
.
Ncp
==
0
)
{
// normal prefix
if
(
ue
->
frame_parms
.
Ncp
==
0
)
{
// normal prefix
pilot1
=
4
;
pilot1
=
4
;
pilot2
=
7
;
pilot2
=
7
;
...
@@ -93,7 +94,7 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
...
@@ -93,7 +94,7 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
k
=
(
nu
+
nushift
)
%
6
;
k
=
(
nu
+
nushift
)
%
6
;
#ifdef DEBUG_CH
#ifdef DEBUG_CH
printf
(
"Channel Estimation : eNB_offset %d cell_id %d ch_offset %d, OFDM size %d, Ncp=%d, l=%d, Ns=%d, k=%d
\n
"
,
eNB_offset
,
Nid_cell
,
ch_offset
,
ue
->
frame_parms
.
ofdm_symbol_size
,
printf
(
"Channel Estimation :
ThreadId %d,
eNB_offset %d cell_id %d ch_offset %d, OFDM size %d, Ncp=%d, l=%d, Ns=%d, k=%d
\n
"
,
ue
->
current_thread_id
[
Ns
>>
1
],
eNB_offset
,
Nid_cell
,
ch_offset
,
ue
->
frame_parms
.
ofdm_symbol_size
,
ue
->
frame_parms
.
Ncp
,
l
,
Ns
,
k
);
ue
->
frame_parms
.
Ncp
,
l
,
Ns
,
k
);
#endif
#endif
...
@@ -797,18 +798,23 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
...
@@ -797,18 +798,23 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
break
;
break
;
}
}
if
(
((
Ns
%
2
)
==
0
)
&&
(
l
==
pilot0
))
{
// do ifft of channel estimate
// do ifft of channel estimate
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
for
(
p
=
0
;
p
<
ue
->
frame_parms
.
nb_antenna_ports_eNB
;
p
++
)
{
for
(
p
=
0
;
p
<
ue
->
frame_parms
.
nb_antenna_ports_eNB
;
p
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
])
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
])
idft
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
][
8
],
{
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
//LOG_I(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns>>1], l);
idft
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
}
}
}
}
#if T_TRACER
#if T_TRACER
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
(
Ns
>>
1
)
&
1
].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
(
Ns
>>
1
)
&
1
].
subframe_rx
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]
].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]
].
subframe_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]
].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
#endif
#endif
return
(
0
);
return
(
0
);
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
View file @
c8c4b423
...
@@ -44,8 +44,8 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
...
@@ -44,8 +44,8 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// unsigned int n;
// unsigned int n;
// int i;
// int i;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
0
];
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
0
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
;
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
;
ch_offset
=
(
l
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
ch_offset
=
(
l
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
symbol_offset
=
ch_offset
;
//phy_vars_ue->lte_frame_parms.ofdm_symbol_size*l;
symbol_offset
=
ch_offset
;
//phy_vars_ue->lte_frame_parms.ofdm_symbol_size*l;
...
@@ -734,31 +734,31 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
...
@@ -734,31 +734,31 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// do ifft of channel estimate
// do ifft of channel estimate
for
(
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_rx
*
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_rx
*
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
])
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
])
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
case
6
:
idft128
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
idft128
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
1
);
break
;
break
;
case
25
:
case
25
:
idft512
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
idft512
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
1
);
break
;
break
;
case
50
:
case
50
:
idft1024
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
idft1024
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
1
);
break
;
break
;
case
75
:
case
75
:
idft1536
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
idft1536
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
1
);
break
;
break
;
case
100
:
case
100
:
idft2048
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
idft2048
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
1
);
break
;
break
;
default:
default:
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
c8c4b423
...
@@ -184,6 +184,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -184,6 +184,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
uint16_t
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
;
uint16_t
Nid_cell
=
ue
->
frame_parms
.
Nid_cell
;
uint8_t
eNB_offset
,
nu
,
l
,
nushift
,
k
;
uint8_t
eNB_offset
,
nu
,
l
,
nushift
,
k
;
uint16_t
off
;
uint16_t
off
;
uint8_t
previous_thread_id
=
ue
->
current_thread_id
[
subframe
]
==
0
?
(
RX_NB_TH
-
1
)
:
(
ue
->
current_thread_id
[
subframe
]
-
1
);
//uint8_t isPss; // indicate if this is a slot for extracting PSS
//uint8_t isPss; // indicate if this is a slot for extracting PSS
//uint8_t isSss; // indicate if this is a slot for extracting SSS
//uint8_t isSss; // indicate if this is a slot for extracting SSS
...
@@ -210,13 +211,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -210,13 +211,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
{
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
5
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
5
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
}
else
else
{
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
previous_thread_id
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
2
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
2
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
}
//-ve spectrum from SSS
//-ve spectrum from SSS
...
@@ -234,13 +235,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -234,13 +235,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
{
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
}
else
else
{
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
previous_thread_id
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
3
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
3
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
}
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
...
@@ -275,10 +276,10 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -275,10 +276,10 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
%
RX_NB_TH
)].
rxdataF
;
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
ue
->
current_thread_id
[
subframe
]
)].
rxdataF
;
rxF_pss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
pss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
rxF_pss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
pss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
;
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
previous_thread_id
].
rxdataF
;
rxF_sss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
sss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
rxF_sss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
sss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
//-ve spectrum from SSS
//-ve spectrum from SSS
...
@@ -303,7 +304,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -303,7 +304,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
2
+
66
]
*
rxF_pss
[
2
+
66
])
+
((
int32_t
)
rxF_pss
[
2
+
65
]
*
rxF_pss
[
2
+
65
]));
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
2
+
66
]
*
rxF_pss
[
2
+
66
])
+
((
int32_t
)
rxF_pss
[
2
+
65
]
*
rxF_pss
[
2
+
65
]));
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[2+64]*rxF_pss[2+64])+((int32_t)rxF_pss[2+63]*rxF_pss[2+63]));
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[2+64]*rxF_pss[2+64])+((int32_t)rxF_pss[2+63]*rxF_pss[2+63]));
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
-
70
]
*
rxF_pss
[
-
70
])
+
((
int32_t
)
rxF_pss
[
-
69
]
*
rxF_pss
[
-
69
]));
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
-
70
]
*
rxF_pss
[
-
70
])
+
((
int32_t
)
rxF_pss
[
-
69
]
*
rxF_pss
[
-
69
]));
...
@@ -349,7 +350,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
...
@@ -349,7 +350,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
#endif
#endif
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
rxF
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
l
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]
].
rxdataF
[
aarx
][(
l
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
off
=
(
ue
->
frame_parms
.
first_carrier_offset
+
k
)
<<
1
;
off
=
(
ue
->
frame_parms
.
first_carrier_offset
+
k
)
<<
1
;
if
(
l
==
(
4
-
ue
->
frame_parms
.
Ncp
))
{
if
(
l
==
(
4
-
ue
->
frame_parms
.
Ncp
))
{
...
@@ -515,7 +516,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
...
@@ -515,7 +516,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
aatx
=
0
;
aatx
<
frame_parms
->
nb_antenna_ports_eNB
;
aatx
++
)
{
for
(
aatx
=
0
;
aatx
<
frame_parms
->
nb_antenna_ports_eNB
;
aatx
++
)
{