From 99efa1ec3f2bb7bfebc1a51330d8dedb7d29a731 Mon Sep 17 00:00:00 2001
From: Lionel Gauthier <lionel.gauthier@eurecom.fr>
Date: Thu, 30 Apr 2015 09:22:30 +0000
Subject: [PATCH] Sebastian Held patches15/0019-cleanup.patch
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7321 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
openair1/PHY/LTE_TRANSPORT/prach.c | 67 ++++++++++++++++--------------
1 file changed, 36 insertions(+), 31 deletions(-)
diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c
index f02e46d47c..c567fd304b 100644
--- a/openair1/PHY/LTE_TRANSPORT/prach.c
+++ b/openair1/PHY/LTE_TRANSPORT/prach.c
@@ -550,9 +550,7 @@ int is_prach_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t su
return(2==1);
}
-static short prach_tmp[45600*2] __attribute__((aligned(16)));
-
-int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe, uint16_t Nf)
+int32_t generate_prach( PHY_VARS_UE *phy_vars_ue, uint8_t eNB_id, uint8_t subframe, uint16_t Nf )
{
lte_frame_type_t frame_type = phy_vars_ue->lte_frame_parms.frame_type;
@@ -565,7 +563,8 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
uint8_t preamble_index = phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex;
uint8_t tdd_mapindex = phy_vars_ue->prach_resources[eNB_id]->ra_TDD_map_index;
int16_t *prachF = phy_vars_ue->lte_ue_prach_vars[eNB_id]->prachF;
- int16_t *prach = (int16_t*)prach_tmp;
+ static int16_t prach_tmp[45600*2] __attribute__((aligned(16)));
+ int16_t *prach = prach_tmp;
int16_t *prach2;
int16_t amp = phy_vars_ue->lte_ue_prach_vars[eNB_id]->amp;
int16_t Ncp;
@@ -574,7 +573,7 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
uint16_t *prach_root_sequence_map;
uint16_t preamble_offset,preamble_shift;
uint16_t preamble_index0,n_shift_ra,n_shift_ra_bar;
- uint16_t d_start,n_group_ra,numshift;
+ uint16_t d_start,numshift;
uint8_t prach_fmt = get_prach_fmt(prach_ConfigIndex,frame_type);
uint8_t Nsp=2;
@@ -587,14 +586,9 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
int32_t Xu_re,Xu_im;
uint16_t offset,offset2;
int prach_start;
-#ifdef EXMIMO
- int overflow,j;
-#endif
int i, prach_len;
uint16_t first_nonzero_root_idx=0;
- //LOG_I(PHY,"[PRACH] prach_start=%d\n",prach_start);
-
#ifdef BIT8_TX
prach_start = ((subframe*phy_vars_ue->lte_frame_parms.samples_per_tti)<<1)-phy_vars_ue->N_TA_offset;
#else
@@ -614,16 +608,16 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
// First compute physical root sequence
if (restricted_set == 0) {
- if (Ncs_config>15) {
- LOG_E(PHY,"[PHY] FATAL, Illegal Ncs_config for unrestricted format %d\n",Ncs_config);
+ if (Ncs_config > 15) {
+ LOG_E( PHY, "[PHY] FATAL, Illegal Ncs_config for unrestricted format %"PRIu8"\n", Ncs_config );
mac_xface->macphy_exit("PRACH: Illegal Ncs_config for unrestricted format");
return 0; // not reached
}
NCS = NCS_unrestricted[Ncs_config];
} else {
- if (Ncs_config>14) {
- LOG_E(PHY,"[PHY] FATAL, Illegal Ncs_config for restricted format %d\n",Ncs_config);
+ if (Ncs_config > 14) {
+ LOG_E( PHY, "[PHY] FATAL, Illegal Ncs_config for restricted format %"PRIu8"\n", Ncs_config );
mac_xface->macphy_exit("PRACH: Illegal Ncs_config for restricted format");
return 0; // not reached
}
@@ -637,7 +631,7 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
if (frame_type == TDD) { // TDD
if (tdd_preamble_map[prach_ConfigIndex][tdd_config].num_prach==0) {
- LOG_E(PHY,"[PHY][UE %d] Illegal prach_ConfigIndex %d for ",phy_vars_ue->Mod_id,prach_ConfigIndex);
+ LOG_E( PHY, "[PHY][UE %"PRIu8"] Illegal prach_ConfigIndex %"PRIu8" for ", phy_vars_ue->Mod_id, prach_ConfigIndex );
}
// adjust n_ra_prboffset for frequency multiplexing (p.36 36.211)
@@ -696,6 +690,7 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
u = prach_root_sequence_map[index];
+ uint16_t n_group_ra = 0;
if ( (du[u]<(N_ZC/3)) && (du[u]>=NCS) ) {
n_shift_ra = du[u]/NCS;
d_start = (du[u]<<1) + (n_shift_ra * NCS);
@@ -971,7 +966,7 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
if (prach_fmt==4) {
//TODO: account for repeated format in fft output
- LOG_E(PHY,"prach_fmt4 not fully implemented");
+ LOG_E( PHY, "prach_fmt4 not fully implemented" );
mac_xface->macphy_exit("prach_fmt4 not fully implemented");
return 0; // not reached
} else {
@@ -984,8 +979,9 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
#else
#ifdef EXMIMO
- overflow = prach_start + prach_len - LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_ue->lte_frame_parms.samples_per_tti;
- LOG_D(PHY,"prach_start=%d, overflow=%d\n",prach_start,overflow);
+ int j;
+ int overflow = prach_start + prach_len - LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_ue->lte_frame_parms.samples_per_tti;
+ LOG_D( PHY, "prach_start=%d, overflow=%d\n", prach_start, overflow );
for (i=prach_start,j=0; i<min(phy_vars_ue->lte_frame_parms.samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME,prach_start+prach_len); i++,j++) {
((int16_t*)phy_vars_ue->lte_ue_common_vars.txdata[0])[2*i] = prach[2*j]<<4;
@@ -1008,9 +1004,11 @@ int32_t generate_prach(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,
#endif
}
- // apply_625_Hz(phy_vars_ue,prach);
- return(signal_energy((int*)prach,256));
+ return signal_energy( (int*)prach, 256 );
}
+
+
+
__m128i mmtmpX0,mmtmpX1,mmtmpX2,mmtmpX3;
int16_t prach_ifft[4][1024*4];
@@ -1038,7 +1036,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
int16_t preamble_shift=0;
uint32_t preamble_shift2;
uint16_t preamble_index0=0,n_shift_ra=0,n_shift_ra_bar;
- uint16_t d_start=0,n_group_ra;
+ uint16_t d_start=0;
uint16_t numshift=0;
uint16_t *prach_root_sequence_map;
uint8_t prach_fmt = get_prach_fmt(prach_ConfigIndex,frame_type);
@@ -1219,6 +1217,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
u = prach_root_sequence_map[index];
+ uint16_t n_group_ra = 0;
if ( (du[u]<(N_ZC/3)) && (du[u]>=NCS) ) {
n_shift_ra = du[u]/NCS;
d_start = (du[u]<<1) + (n_shift_ra * NCS);
@@ -1491,10 +1490,10 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
// Compute DFT of x_u => X_u[k] = x_u(inv(u)*k)^* X_u[k] = exp(j\pi u*inv(u)*k*(inv(u)*k+1)/N_ZC)
unsigned int k,inv_u,i,NCS=0,num_preambles;
int N_ZC;
- unsigned char prach_fmt = get_prach_fmt(prach_config_common->prach_ConfigInfo.prach_ConfigIndex,frame_type);
+ uint8_t prach_fmt = get_prach_fmt(prach_config_common->prach_ConfigInfo.prach_ConfigIndex,frame_type);
uint16_t *prach_root_sequence_map;
uint16_t u, preamble_offset;
- uint16_t n_shift_ra,n_shift_ra_bar, d_start,n_group_ra,numshift;
+ uint16_t n_shift_ra,n_shift_ra_bar, d_start,numshift;
uint8_t not_found;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_UE_COMPUTE_PRACH, VCD_FUNCTION_IN);
@@ -1504,7 +1503,7 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
#endif
if (prach_fmt>=4) {
- LOG_E(PHY, "PRACH sequence is only precomputed for prach_fmt<4 (have %d)\n");
+ LOG_E( PHY, "PRACH sequence is only precomputed for prach_fmt<4 (have %"PRIu8")\n", prach_fmt );
mac_xface->macphy_exit("PRACH sequence is only precomputed for prach_fmt<4");
return; // not reached
}
@@ -1512,11 +1511,16 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
N_ZC = (prach_fmt < 4) ? 839 : 139;
//init_prach_tables(N_ZC); //moved to phy_init_lte_ue/eNB, since it takes to long in real-time
- (prach_fmt < 4) ? (prach_root_sequence_map = prach_root_sequence_map0_3) : (prach_root_sequence_map = prach_root_sequence_map4);
+ if (prach_fmt < 4) {
+ prach_root_sequence_map = prach_root_sequence_map0_3;
+ } else {
+ // FIXME cannot be reached
+ prach_root_sequence_map = prach_root_sequence_map4;
+ }
#ifdef PRACH_DEBUG
- LOG_I(PHY,"compute_prach_seq: done init prach_tables\n");
+ LOG_I( PHY, "compute_prach_seq: done init prach_tables\n" );
#endif
if (prach_config_common->prach_ConfigInfo.highSpeedFlag== 0) {
@@ -1526,7 +1530,7 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
#endif
if (prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig>15) {
- LOG_E(PHY,"FATAL, Illegal Ncs_config for unrestricted format %d\n",prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig);
+ LOG_E( PHY, "FATAL, Illegal Ncs_config for unrestricted format %"PRIu8"\n", prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig );
mac_xface->macphy_exit("PRACH Illegal Ncs_config for unrestricted format");
return; // not reached
} else {
@@ -1541,11 +1545,11 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
} else {
#ifdef PRACH_DEBUG
- LOG_I(PHY,"high speed prach : NCS_config %d\n",prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig);
+ LOG_I( PHY, "high speed prach : NCS_config %"PRIu8"\n", prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig );
#endif
if (prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig>14) {
- LOG_E(PHY,"FATAL, Illegal Ncs_config for restricted format %d\n",prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig);
+ LOG_E( PHY, "FATAL, Illegal Ncs_config for restricted format %"PRIu8"\n", prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig );
mac_xface->macphy_exit("PRACH Illegal Ncs_config for restricted format");
return; // not reached
} else {
@@ -1572,6 +1576,7 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
u = prach_root_sequence_map[index];
+ uint16_t n_group_ra = 0;
if ( (du[u]<(N_ZC/3)) && (du[u]>=NCS) ) {
n_shift_ra = du[u]/NCS;
d_start = (du[u]<<1) + (n_shift_ra * NCS);
@@ -1585,7 +1590,6 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
} else {
n_shift_ra = 0;
n_shift_ra_bar = 0;
- n_group_ra = 0;
}
// This is the number of cyclic shifts for the current root u
@@ -1602,7 +1606,8 @@ void compute_prach_seq(PRACH_CONFIG_COMMON *prach_config_common,
#ifdef PRACH_DEBUG
if (NCS>0)
- LOG_I(PHY,"Initializing %d preambles for PRACH (NCS_config %d, NCS %d, N_ZC/NCS %d)\n",num_preambles,prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig,NCS,N_ZC/NCS);
+ LOG_I( PHY, "Initializing %u preambles for PRACH (NCS_config %"PRIu8", NCS %u, N_ZC/NCS %u)\n",
+ num_preambles, prach_config_common->prach_ConfigInfo.zeroCorrelationZoneConfig, NCS, N_ZC/NCS );
#endif
--
GitLab