git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6190 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -3,6 +3,7 @@ export OPENAIR_HOME=$(pwd)
|
|||||||
export OPENAIR1_DIR=$OPENAIR_HOME/openair1
|
export OPENAIR1_DIR=$OPENAIR_HOME/openair1
|
||||||
export OPENAIR2_DIR=$OPENAIR_HOME/openair2
|
export OPENAIR2_DIR=$OPENAIR_HOME/openair2
|
||||||
export OPENAIR3_DIR=$OPENAIR_HOME/openair3
|
export OPENAIR3_DIR=$OPENAIR_HOME/openair3
|
||||||
|
export OPENAIRCN_DIR=$OPENAIR_HOME/openair-cn
|
||||||
export OPENAIR_TARGETS=$OPENAIR_HOME/targets
|
export OPENAIR_TARGETS=$OPENAIR_HOME/targets
|
||||||
export OPENAIRCN_DIR=$OPENAIR_HOME/openair-cn
|
export OPENAIRCN_DIR=$OPENAIR_HOME/openair-cn
|
||||||
|
|
||||||
|
|||||||
@@ -596,7 +596,7 @@ gtpv1u_new_data_req(
|
|||||||
stack_req.apiInfo.sendtoInfo.teid = bearer_p->teid_sgw;
|
stack_req.apiInfo.sendtoInfo.teid = bearer_p->teid_sgw;
|
||||||
stack_req.apiInfo.sendtoInfo.ipAddr = bearer_p->sgw_ip_addr;
|
stack_req.apiInfo.sendtoInfo.ipAddr = bearer_p->sgw_ip_addr;
|
||||||
|
|
||||||
LOG_I(GTPU, "TX TO TEID %u addr 0x%x\n",bearer_p->teid_sgw, bearer_p->sgw_ip_addr);
|
LOG_D(GTPU, "TX TO TEID %u addr 0x%x\n",bearer_p->teid_sgw, bearer_p->sgw_ip_addr);
|
||||||
rc = nwGtpv1uGpduMsgNew(gtpv1u_data_p->gtpv1u_stack,
|
rc = nwGtpv1uGpduMsgNew(gtpv1u_data_p->gtpv1u_stack,
|
||||||
bearer_p->teid_sgw,
|
bearer_p->teid_sgw,
|
||||||
NW_FALSE,
|
NW_FALSE,
|
||||||
@@ -622,7 +622,7 @@ gtpv1u_new_data_req(
|
|||||||
LOG_E(GTPU, "nwGtpv1uMsgDelete failed: 0x%x\n", rc);
|
LOG_E(GTPU, "nwGtpv1uMsgDelete failed: 0x%x\n", rc);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
LOG_I(GTPU, "%s() return code OK\n", __FUNCTION__);
|
LOG_D(GTPU, "%s() return code OK\n", __FUNCTION__);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ fi
|
|||||||
if [ ! -w /usr/local/src/ ]
|
if [ ! -w /usr/local/src/ ]
|
||||||
then
|
then
|
||||||
echo "You don't have permissions to write to /usr/local/src/"
|
echo "You don't have permissions to write to /usr/local/src/"
|
||||||
exit -1
|
# exit -1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd /usr/local/src/
|
cd /usr/local/src/
|
||||||
@@ -104,9 +104,9 @@ mkdir build
|
|||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../ > install_log.txt || exit -1
|
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../ > install_log.txt || exit -1
|
||||||
echo "Compiling freeDiameter"
|
echo "Compiling freeDiameter"
|
||||||
make -j2 > install_log.txt 2>&1
|
sudo make -j2 > install_log.txt 2>&1
|
||||||
#make help
|
#make help
|
||||||
make test > install_log.txt
|
sudo make test > install_log.txt
|
||||||
sudo make install > install_log.txt
|
sudo make install > install_log.txt
|
||||||
|
|
||||||
cd $CURRENT_PATH
|
cd $CURRENT_PATH
|
||||||
|
|||||||
@@ -72,9 +72,9 @@
|
|||||||
#include "sgw_lite_ie_defs.h"
|
#include "sgw_lite_ie_defs.h"
|
||||||
#include "ip_forward_messages_types.h"
|
#include "ip_forward_messages_types.h"
|
||||||
|
|
||||||
//# define SGI_IF_DEBUG(x, args...)
|
# define SGI_IF_DEBUG(x, args...)
|
||||||
//# define SGI_IF_ERROR(x, args...)
|
# define SGI_IF_ERROR(x, args...)
|
||||||
//# define SGI_IF_WARNING(x, args...)
|
# define SGI_IF_WARNING(x, args...)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#ifndef SGI_IF_DEBUG
|
#ifndef SGI_IF_DEBUG
|
||||||
# define SGI_IF_DEBUG(x, args...) do { fprintf(stdout, "[SGI_IF][D]"x, ##args); } \
|
# define SGI_IF_DEBUG(x, args...) do { fprintf(stdout, "[SGI_IF][D]"x, ##args); } \
|
||||||
|
|||||||
@@ -113,15 +113,22 @@ void phy_config_sib2_eNB(uint8_t Mod_id,
|
|||||||
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id][CC_id]->lte_frame_parms;
|
LTE_DL_FRAME_PARMS *lte_frame_parms = &PHY_vars_eNB_g[Mod_id][CC_id]->lte_frame_parms;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
LOG_D(PHY,"[eNB%d] Frame %d: Applying radioResourceConfigCommon\n",Mod_id,PHY_vars_eNB_g[Mod_id][CC_id]->proc[8].frame_tx);
|
LOG_D(PHY,"[eNB%d] CCid %d Frame %d: Applying radioResourceConfigCommon\n",Mod_id,CC_id,PHY_vars_eNB_g[Mod_id][CC_id]->proc[8].frame_tx);
|
||||||
|
|
||||||
lte_frame_parms->prach_config_common.rootSequenceIndex =radioResourceConfigCommon->prach_Config.rootSequenceIndex;
|
lte_frame_parms->prach_config_common.rootSequenceIndex =radioResourceConfigCommon->prach_Config.rootSequenceIndex;
|
||||||
|
LOG_D(PHY,"prach_config_common.rootSequenceIndex = %d\n",lte_frame_parms->prach_config_common.rootSequenceIndex );
|
||||||
|
|
||||||
lte_frame_parms->prach_config_common.prach_Config_enabled=1;
|
lte_frame_parms->prach_config_common.prach_Config_enabled=1;
|
||||||
|
|
||||||
lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex;
|
lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex;
|
||||||
|
LOG_D(PHY,"prach_config_common.prach_ConfigInfo.prach_ConfigIndex = %d\n",lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex);
|
||||||
|
|
||||||
lte_frame_parms->prach_config_common.prach_ConfigInfo.highSpeedFlag =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.highSpeedFlag;
|
lte_frame_parms->prach_config_common.prach_ConfigInfo.highSpeedFlag =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.highSpeedFlag;
|
||||||
|
LOG_D(PHY,"prach_config_common.prach_ConfigInfo.highSpeedFlag = %d\n",lte_frame_parms->prach_config_common.prach_ConfigInfo.highSpeedFlag);
|
||||||
lte_frame_parms->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig;
|
lte_frame_parms->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig;
|
||||||
|
LOG_D(PHY,"prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig = %d\n",lte_frame_parms->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig);
|
||||||
lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_FreqOffset;
|
lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_FreqOffset;
|
||||||
|
LOG_D(PHY,"prach_config_common.prach_ConfigInfo.prach_FreqOffset = %d\n",lte_frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset);
|
||||||
compute_prach_seq(<e_frame_parms->prach_config_common,lte_frame_parms->frame_type,
|
compute_prach_seq(<e_frame_parms->prach_config_common,lte_frame_parms->frame_type,
|
||||||
PHY_vars_eNB_g[Mod_id][CC_id]->X_u);
|
PHY_vars_eNB_g[Mod_id][CC_id]->X_u);
|
||||||
|
|
||||||
@@ -149,16 +156,16 @@ void phy_config_sib2_eNB(uint8_t Mod_id,
|
|||||||
LOG_D(PHY,"pusch_config_common.enable64QAM = %d\n",lte_frame_parms->pusch_config_common.enable64QAM );
|
LOG_D(PHY,"pusch_config_common.enable64QAM = %d\n",lte_frame_parms->pusch_config_common.enable64QAM );
|
||||||
|
|
||||||
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupHoppingEnabled;
|
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupHoppingEnabled;
|
||||||
LOG_D(PHY,"pusch_config_common.groupHoppingEnabled = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
|
LOG_D(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
|
||||||
|
|
||||||
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
|
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
|
||||||
LOG_D(PHY,"pusch_config_common.groupAssignmentPUSCH = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
|
LOG_D(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
|
||||||
|
|
||||||
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled;
|
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled;
|
||||||
LOG_D(PHY,"pusch_config_common.sequenceHoppingEnabled = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
|
LOG_D(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
|
||||||
|
|
||||||
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = dmrs1_tab[radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift];
|
lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = dmrs1_tab[radioResourceConfigCommon->pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift];
|
||||||
LOG_D(PHY,"pusch_config_common.enable64QAM = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift);
|
LOG_D(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = %d\n",lte_frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift);
|
||||||
|
|
||||||
init_ul_hopping(lte_frame_parms);
|
init_ul_hopping(lte_frame_parms);
|
||||||
|
|
||||||
|
|||||||
@@ -54,84 +54,60 @@ int generate_pss(mod_sym_t **txdataF,
|
|||||||
unsigned short slot_offset) {
|
unsigned short slot_offset) {
|
||||||
|
|
||||||
unsigned int Nsymb;
|
unsigned int Nsymb;
|
||||||
unsigned short k,m,aa;
|
unsigned short k,m,aa,a;
|
||||||
uint8_t Nid2;
|
uint8_t Nid2;
|
||||||
#ifdef IFFT_FPGA
|
|
||||||
unsigned char *primary_sync_tab;
|
|
||||||
#else
|
|
||||||
short *primary_sync;
|
short *primary_sync;
|
||||||
#endif
|
|
||||||
|
|
||||||
Nid2 = frame_parms->Nid_cell % 3;
|
Nid2 = frame_parms->Nid_cell % 3;
|
||||||
|
|
||||||
switch (Nid2) {
|
switch (Nid2) {
|
||||||
case 0:
|
case 0:
|
||||||
#ifdef IFFT_FPGA
|
|
||||||
primary_sync_tab = primary_synch0_tab;
|
|
||||||
#else
|
|
||||||
primary_sync = primary_synch0;
|
primary_sync = primary_synch0;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
#ifdef IFFT_FPGA
|
|
||||||
primary_sync_tab = primary_synch1_tab;
|
|
||||||
#else
|
|
||||||
primary_sync = primary_synch1;
|
primary_sync = primary_synch1;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
#ifdef IFFT_FPGA
|
|
||||||
primary_sync_tab = primary_synch2_tab;
|
|
||||||
#else
|
|
||||||
primary_sync = primary_synch2;
|
primary_sync = primary_synch2;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
msg("[PSS] eNb_id has to be 0,1,2\n");
|
msg("[PSS] eNb_id has to be 0,1,2\n");
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//a = (amp*ONE_OVER_SQRT2_Q15)>>15;
|
a = (frame_parms->mode1_flag == 0) ? amp : (amp*ONE_OVER_SQRT2_Q15)>>15;
|
||||||
//printf("[PSS] amp=%d, a=%d\n",amp,a);
|
//printf("[PSS] amp=%d, a=%d\n",amp,a);
|
||||||
|
|
||||||
Nsymb = (frame_parms->Ncp==NORMAL)?14:12;
|
Nsymb = (frame_parms->Ncp==NORMAL)?14:12;
|
||||||
|
|
||||||
//for (aa=0;aa<frame_parms->nb_antennas_tx;aa++) {
|
for (aa=0;aa<frame_parms->nb_antennas_tx;aa++) {
|
||||||
aa = 0;
|
// aa = 0;
|
||||||
|
|
||||||
// The PSS occupies the inner 6 RBs, which start at
|
// The PSS occupies the inner 6 RBs, which start at
|
||||||
#ifdef IFFT_FPGA
|
k = frame_parms->ofdm_symbol_size-3*12+5;
|
||||||
k = (frame_parms->N_RB_DL-3)*12+5;
|
|
||||||
#else
|
//printf("[PSS] k = %d\n",k);
|
||||||
k = frame_parms->ofdm_symbol_size-3*12+5;
|
for (m=5;m<67;m++) {
|
||||||
#endif
|
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
||||||
//printf("[PSS] k = %d\n",k);
|
symbol*frame_parms->ofdm_symbol_size + k)] =
|
||||||
for (m=5;m<67;m++) {
|
(a * primary_sync[2*m]) >> 15;
|
||||||
#ifdef IFFT_FPGA
|
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
||||||
txdataF[aa][slot_offset*Nsymb/2*frame_parms->N_RB_DL*12 + symbol*frame_parms->N_RB_DL*12 + k] = primary_sync_tab[m];
|
symbol*frame_parms->ofdm_symbol_size + k) + 1] =
|
||||||
#else
|
(a * primary_sync[2*m+1]) >> 15;
|
||||||
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
|
||||||
symbol*frame_parms->ofdm_symbol_size + k)] =
|
k+=1;
|
||||||
(amp * primary_sync[2*m]) >> 15;
|
|
||||||
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
if (k >= frame_parms->ofdm_symbol_size) {
|
||||||
symbol*frame_parms->ofdm_symbol_size + k) + 1] =
|
k++; //skip DC
|
||||||
(amp * primary_sync[2*m+1]) >> 15;
|
k-=frame_parms->ofdm_symbol_size;
|
||||||
#endif
|
}
|
||||||
k+=1;
|
|
||||||
#ifdef IFFT_FPGA
|
|
||||||
if (k >= frame_parms->N_RB_DL*12)
|
|
||||||
k-=frame_parms->N_RB_DL*12;
|
|
||||||
#else
|
|
||||||
if (k >= frame_parms->ofdm_symbol_size) {
|
|
||||||
k++; //skip DC
|
|
||||||
k-=frame_parms->ofdm_symbol_size;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int generate_pss_emul(PHY_VARS_eNB *phy_vars_eNb,uint8_t sect_id) {
|
int generate_pss_emul(PHY_VARS_eNB *phy_vars_eNb,uint8_t sect_id) {
|
||||||
|
|
||||||
msg("[PHY] EMUL eNB generate_pss_emul eNB %d, sect_id %d\n",phy_vars_eNb->Mod_id,sect_id);
|
msg("[PHY] EMUL eNB generate_pss_emul eNB %d, sect_id %d\n",phy_vars_eNb->Mod_id,sect_id);
|
||||||
|
|||||||
@@ -45,16 +45,16 @@
|
|||||||
|
|
||||||
|
|
||||||
int generate_sss(mod_sym_t **txdataF,
|
int generate_sss(mod_sym_t **txdataF,
|
||||||
short amp,
|
int16_t amp,
|
||||||
LTE_DL_FRAME_PARMS *frame_parms,
|
LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
unsigned short symbol,
|
uint16_t symbol,
|
||||||
unsigned short slot_offset) {
|
uint16_t slot_offset) {
|
||||||
|
|
||||||
uint8_t i,aa,Nsymb;
|
uint8_t i,aa,Nsymb;
|
||||||
short *d,k;
|
int16_t *d,k;
|
||||||
uint8_t Nid2;
|
uint8_t Nid2;
|
||||||
uint16_t Nid1;
|
uint16_t Nid1;
|
||||||
|
int16_t a;
|
||||||
|
|
||||||
Nid2 = frame_parms->Nid_cell % 3;
|
Nid2 = frame_parms->Nid_cell % 3;
|
||||||
Nid1 = frame_parms->Nid_cell/3;
|
Nid1 = frame_parms->Nid_cell/3;
|
||||||
@@ -66,14 +66,16 @@ int generate_sss(mod_sym_t **txdataF,
|
|||||||
|
|
||||||
Nsymb = (frame_parms->Ncp==NORMAL)?14:12;
|
Nsymb = (frame_parms->Ncp==NORMAL)?14:12;
|
||||||
k = frame_parms->ofdm_symbol_size-3*12+5;
|
k = frame_parms->ofdm_symbol_size-3*12+5;
|
||||||
|
a = (frame_parms->mode1_flag == 0) ? amp : (amp*ONE_OVER_SQRT2_Q15)>>15;
|
||||||
|
|
||||||
for (i=0;i<62;i++) {
|
for (i=0;i<62;i++) {
|
||||||
//for (aa=0;aa<frame_parms->nb_antennas_tx;aa++) {
|
for (aa=0;aa<frame_parms->nb_antennas_tx;aa++) {
|
||||||
aa=0;
|
//aa=0;
|
||||||
|
|
||||||
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
||||||
symbol*frame_parms->ofdm_symbol_size + k)] =
|
symbol*frame_parms->ofdm_symbol_size + k)] =
|
||||||
(amp * d[i]);
|
(amp * d[i]);
|
||||||
((short*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size +
|
||||||
symbol*frame_parms->ofdm_symbol_size + k)+1] = 0;
|
symbol*frame_parms->ofdm_symbol_size + k)+1] = 0;
|
||||||
/*
|
/*
|
||||||
if (aa==0)
|
if (aa==0)
|
||||||
@@ -82,7 +84,7 @@ int generate_sss(mod_sym_t **txdataF,
|
|||||||
symbol*frame_parms->ofdm_symbol_size + k,
|
symbol*frame_parms->ofdm_symbol_size + k,
|
||||||
(amp * d[i]),0);
|
(amp * d[i]),0);
|
||||||
*/
|
*/
|
||||||
//}
|
}
|
||||||
k+=1;
|
k+=1;
|
||||||
if (k >= frame_parms->ofdm_symbol_size) {
|
if (k >= frame_parms->ofdm_symbol_size) {
|
||||||
k++;
|
k++;
|
||||||
@@ -96,8 +98,8 @@ int pss_ch_est(PHY_VARS_UE *phy_vars_ue,
|
|||||||
int32_t pss_ext[4][72],
|
int32_t pss_ext[4][72],
|
||||||
int32_t sss_ext[4][72]) {
|
int32_t sss_ext[4][72]) {
|
||||||
|
|
||||||
short *pss;
|
int16_t *pss;
|
||||||
short *pss_ext2,*sss_ext2,*sss_ext3,tmp_re,tmp_im,tmp_re2,tmp_im2;
|
int16_t *pss_ext2,*sss_ext2,*sss_ext3,tmp_re,tmp_im,tmp_re2,tmp_im2;
|
||||||
uint8_t aarx,i;
|
uint8_t aarx,i;
|
||||||
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms;
|
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms;
|
||||||
|
|
||||||
@@ -117,11 +119,11 @@ int pss_ch_est(PHY_VARS_UE *phy_vars_ue,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sss_ext3 = (short*)&sss_ext[0][5];
|
sss_ext3 = (int16_t*)&sss_ext[0][5];
|
||||||
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
|
for (aarx=0;aarx<frame_parms->nb_antennas_rx;aarx++) {
|
||||||
|
|
||||||
sss_ext2 = (short*)&sss_ext[aarx][5];
|
sss_ext2 = (int16_t*)&sss_ext[aarx][5];
|
||||||
pss_ext2 = (short*)&pss_ext[aarx][5];
|
pss_ext2 = (int16_t*)&pss_ext[aarx][5];
|
||||||
for (i=0;i<62;i++) {
|
for (i=0;i<62;i++) {
|
||||||
|
|
||||||
// This is H*(PSS) = R* \cdot PSS
|
// This is H*(PSS) = R* \cdot PSS
|
||||||
@@ -230,8 +232,8 @@ int pss_sss_extract(PHY_VARS_UE *phy_vars_ue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
short phase_re[7] = {16383, 25101, 30791, 32767, 30791, 25101, 16383};
|
int16_t phase_re[7] = {16383, 25101, 30791, 32767, 30791, 25101, 16383};
|
||||||
short phase_im[7] = {-28378, -21063, -11208, 0, 11207, 21062, 28377};
|
int16_t phase_im[7] = {-28378, -21063, -11208, 0, 11207, 21062, 28377};
|
||||||
|
|
||||||
|
|
||||||
int rx_sss(PHY_VARS_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_max) {
|
int rx_sss(PHY_VARS_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_max) {
|
||||||
@@ -357,8 +359,8 @@ int rx_sss(PHY_VARS_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uint8_
|
|||||||
*tot_metric = -99999999;
|
*tot_metric = -99999999;
|
||||||
|
|
||||||
|
|
||||||
sss0 = (short*)&sss0_ext[0][5];
|
sss0 = (int16_t*)&sss0_ext[0][5];
|
||||||
sss5 = (short*)&sss5_ext[0][5];
|
sss5 = (int16_t*)&sss5_ext[0][5];
|
||||||
for (flip=0;flip<2;flip++) { // d0/d5 flip in RX frame
|
for (flip=0;flip<2;flip++) { // d0/d5 flip in RX frame
|
||||||
for (phase=0;phase<=7;phase++) { // phase offset between PSS and SSS
|
for (phase=0;phase<=7;phase++) { // phase offset between PSS and SSS
|
||||||
for (Nid1 = 0 ; Nid1 <= 167; Nid1++) { // 168 possible Nid1 values
|
for (Nid1 = 0 ; Nid1 <= 167; Nid1++) { // 168 possible Nid1 values
|
||||||
|
|||||||
@@ -2627,7 +2627,7 @@ 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] > 600) {
|
if (preamble_energy_list[preamble_max] > 580) {
|
||||||
/*
|
/*
|
||||||
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
|
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_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);
|
||||||
@@ -3098,7 +3098,7 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
|||||||
LOG_I(PHY,"[eNB %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, removing UE\n",
|
LOG_I(PHY,"[eNB %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, removing UE\n",
|
||||||
phy_vars_eNB->Mod_id,frame,subframe, i, phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors);
|
phy_vars_eNB->Mod_id,frame,subframe, i, phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors);
|
||||||
|
|
||||||
mac_xface->macphy_exit("Consecutive error count reached");
|
// mac_xface->macphy_exit("Consecutive error count reached");
|
||||||
|
|
||||||
phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
|
phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
|
||||||
#ifdef OPENAIR2
|
#ifdef OPENAIR2
|
||||||
|
|||||||
@@ -267,6 +267,8 @@ static void enb_config_display(void) {
|
|||||||
|
|
||||||
printf( "\n\tCell ID for CC %d:\t%d:\n",j,enb_properties.properties[i]->Nid_cell[j]);
|
printf( "\n\tCell ID for CC %d:\t%d:\n",j,enb_properties.properties[i]->Nid_cell[j]);
|
||||||
printf( "\tN_RB_DL for CC %d:\t%d:\n",j,enb_properties.properties[i]->N_RB_DL[j]);
|
printf( "\tN_RB_DL for CC %d:\t%d:\n",j,enb_properties.properties[i]->N_RB_DL[j]);
|
||||||
|
printf( "\tnb_antennas_tx for CC %d:\t%d:\n",j,enb_properties.properties[i]->nb_antennas_tx[j]);
|
||||||
|
printf( "\tnb_antennas_rx for CC %d:\t%d:\n",j,enb_properties.properties[i]->nb_antennas_rx[j]);
|
||||||
|
|
||||||
// RACH-Config
|
// RACH-Config
|
||||||
printf( "\trach_numberOfRA_Preambles for CC %d:\t%d:\n",j,enb_properties.properties[i]->rach_numberOfRA_Preambles[j]);
|
printf( "\trach_numberOfRA_Preambles for CC %d:\t%d:\n",j,enb_properties.properties[i]->rach_numberOfRA_Preambles[j]);
|
||||||
@@ -703,10 +705,10 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) {
|
|||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NID_CELL, &Nid_cell)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NID_CELL, &Nid_cell)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_N_RB_DL, &N_RB_DL)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_N_RB_DL, &N_RB_DL)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_CELL_MBSFN, &Nid_cell_mbsfn)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_CELL_MBSFN, &Nid_cell_mbsfn)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NB_ANT_TX, &nb_antennas_tx)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NB_ANT_TX, &nb_antennas_tx)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NB_ANT_RX, &nb_antennas_rx)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NB_ANT_RX, &nb_antennas_rx)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_TX_GAIN, &tx_gain)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_TX_GAIN, &tx_gain)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RX_GAIN, &rx_gain)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RX_GAIN, &rx_gain)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_PRACH_ROOT, &prach_root)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_PRACH_ROOT, &prach_root)
|
||||||
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_PRACH_CONFIG_INDEX, &prach_config_index)
|
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_PRACH_CONFIG_INDEX, &prach_config_index)
|
||||||
&& config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_PRACH_HIGH_SPEED, &prach_high_speed)
|
&& config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_PRACH_HIGH_SPEED, &prach_high_speed)
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ int pdcp_fifo_flush_sdus(frame_t frameP, eNB_flag_t enb_flagP, module_id_t enb_m
|
|||||||
#if defined(LINK_PDCP_TO_GTPV1U)
|
#if defined(LINK_PDCP_TO_GTPV1U)
|
||||||
if (enb_flagP) {
|
if (enb_flagP) {
|
||||||
AssertFatal(0, "Now execution should not go here");
|
AssertFatal(0, "Now execution should not go here");
|
||||||
LOG_I(PDCP,"Sending to GTPV1U %d bytes\n", ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size);
|
LOG_D(PDCP,"Sending to GTPV1U %d bytes\n", ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size);
|
||||||
/*message_p = itti_alloc_new_message(TASK_PDCP_ENB, GTPV1U_TUNNEL_DATA_REQ);
|
/*message_p = itti_alloc_new_message(TASK_PDCP_ENB, GTPV1U_TUNNEL_DATA_REQ);
|
||||||
GTPV1U_TUNNEL_DATA_REQ(message_p).buffer = &(((uint8_t *) sdu_p->data)[sizeof (pdcp_data_ind_header_t)]);
|
GTPV1U_TUNNEL_DATA_REQ(message_p).buffer = &(((uint8_t *) sdu_p->data)[sizeof (pdcp_data_ind_header_t)]);
|
||||||
GTPV1U_TUNNEL_DATA_REQ(message_p).length = ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size;
|
GTPV1U_TUNNEL_DATA_REQ(message_p).length = ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size;
|
||||||
@@ -144,7 +144,7 @@ int pdcp_fifo_flush_sdus(frame_t frameP, eNB_flag_t enb_flagP, module_id_t enb_m
|
|||||||
cont = 1;
|
cont = 1;
|
||||||
pdcp_nb_sdu_sent += 1;
|
pdcp_nb_sdu_sent += 1;
|
||||||
sdu_p = list_get_head (&pdcp_sdu_list);
|
sdu_p = list_get_head (&pdcp_sdu_list);
|
||||||
LOG_I(OTG,"After GTPV1U\n");
|
LOG_D(OTG,"After GTPV1U\n");
|
||||||
continue; // loop again
|
continue; // loop again
|
||||||
}
|
}
|
||||||
#endif /* defined(ENABLE_USE_MME) */
|
#endif /* defined(ENABLE_USE_MME) */
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ int openair0_device_init(openair0_device* device, openair0_config_t *openair0_cf
|
|||||||
// lock mboard clocks
|
// lock mboard clocks
|
||||||
s->usrp->set_clock_source("internal");
|
s->usrp->set_clock_source("internal");
|
||||||
// set master clock rate and sample rate for tx & rx for streaming
|
// set master clock rate and sample rate for tx & rx for streaming
|
||||||
s->usrp->set_master_clock_rate(15.36e6);
|
s->usrp->set_master_clock_rate(30.72e6);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ eNBs =
|
|||||||
Nid_cell = 0;
|
Nid_cell = 0;
|
||||||
N_RB_DL = 25;
|
N_RB_DL = 25;
|
||||||
Nid_cell_mbsfn = 0;
|
Nid_cell_mbsfn = 0;
|
||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 2;
|
||||||
nb_antennas_rx = 1;
|
nb_antennas_rx = 2;
|
||||||
tx_gain = 20;
|
tx_gain = 25;
|
||||||
rx_gain = 20;
|
rx_gain = 20;
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
prach_config_index = 0;
|
prach_config_index = 0;
|
||||||
@@ -114,10 +114,10 @@ eNBs =
|
|||||||
NETWORK_INTERFACES :
|
NETWORK_INTERFACES :
|
||||||
{
|
{
|
||||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.13.82/24";
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.13.10/24";
|
||||||
|
|
||||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.13.82/24";
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.13.10/24";
|
||||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ eNBs =
|
|||||||
tdd_config_s = 0;
|
tdd_config_s = 0;
|
||||||
prefix_type = "NORMAL";
|
prefix_type = "NORMAL";
|
||||||
eutra_band = 7;
|
eutra_band = 7;
|
||||||
downlink_frequency = 2680000000L;
|
downlink_frequency = 2660000000L;
|
||||||
uplink_frequency_offset = -120000000;
|
uplink_frequency_offset = -120000000;
|
||||||
Nid_cell = 0;
|
Nid_cell = 0;
|
||||||
N_RB_DL = 25;
|
N_RB_DL = 25;
|
||||||
Nid_cell_mbsfn = 0;
|
Nid_cell_mbsfn = 0;
|
||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 2;
|
||||||
nb_antennas_rx = 1;
|
nb_antennas_rx = 2;
|
||||||
tx_gain = 90;
|
tx_gain = 90;
|
||||||
rx_gain = 135;
|
rx_gain = 135;
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
|
|||||||
@@ -108,9 +108,11 @@ include $(OPENAIR3_DIR)/RAL-LTE/Makefile.inc
|
|||||||
ifeq ($(USRP),1)
|
ifeq ($(USRP),1)
|
||||||
|
|
||||||
include $(OPENAIR_TARGETS)/ARCH/USRP/USERSPACE/LIB/Makefile.inc
|
include $(OPENAIR_TARGETS)/ARCH/USRP/USERSPACE/LIB/Makefile.inc
|
||||||
CFLAGS += -I/opt/include/uhd -L/opt/lib -luhd -lpthread -lstdc++
|
#CFLAGS += -I/opt/include/uhd -L/opt/lib -luhd -lpthread -lstdc++
|
||||||
|
CFLAGS += -I/usr/include/uhd -L/usr/lib -luhd -lpthread -lstdc++
|
||||||
CFLAGS += -DUSRP
|
CFLAGS += -DUSRP
|
||||||
LDFLAGS += -L/opt/lib -luhd -lpthread -lstdc++
|
#LDFLAGS += -L/opt/lib -luhd -lpthread -lstdc++
|
||||||
|
LDFLAGS += -L/usr/lib/ -luhd -lpthread -lstdc++
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ETHERNET),1)
|
ifeq ($(ETHERNET),1)
|
||||||
@@ -230,7 +232,7 @@ $(LFDS_LIB):
|
|||||||
ifeq ($(USRP),1)
|
ifeq ($(USRP),1)
|
||||||
$(USRP_OBJ):$(USRP_FILE_OBJ)
|
$(USRP_OBJ):$(USRP_FILE_OBJ)
|
||||||
@echo Compiling $<
|
@echo Compiling $<
|
||||||
@$(CXX) -c $(USRP_CFLAGS) $(USRP_FILE_OBJ) -o $(USRP_OBJ)
|
@$(CXX) -c -g -ggdb $(USRP_CFLAGS) $(USRP_FILE_OBJ) -o $(USRP_OBJ)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ETHERNET),1)
|
ifeq ($(ETHERNET),1)
|
||||||
|
|||||||
@@ -291,6 +291,9 @@ unsigned int samples_per_frame = 307200;
|
|||||||
unsigned int samples_per_packets = 2048; // samples got every recv or send
|
unsigned int samples_per_packets = 2048; // samples got every recv or send
|
||||||
unsigned int tx_forward_nsamps;
|
unsigned int tx_forward_nsamps;
|
||||||
|
|
||||||
|
int sf_bounds_1_5[10] = {8, 15, 23, 30, 38, 45, 53, 60, 68, 75};
|
||||||
|
int sf_bounds_1_5_tx[10] = {4, 11, 19, 26, 34, 41, 49, 56, 64, 71};
|
||||||
|
|
||||||
int sf_bounds_5[10] = {8, 15, 23, 30, 38, 45, 53, 60, 68, 75};
|
int sf_bounds_5[10] = {8, 15, 23, 30, 38, 45, 53, 60, 68, 75};
|
||||||
int sf_bounds_5_tx[10] = {4, 11, 19, 26, 34, 41, 49, 56, 64, 71};
|
int sf_bounds_5_tx[10] = {4, 11, 19, 26, 34, 41, 49, 56, 64, 71};
|
||||||
|
|
||||||
@@ -1241,11 +1244,11 @@ void init_eNB_proc(void) {
|
|||||||
for (i=0;i<10;i++) {
|
for (i=0;i<10;i++) {
|
||||||
/*set the stack sizw */
|
/*set the stack sizw */
|
||||||
pthread_attr_init (&attr_eNB_proc_tx[CC_id][i]);
|
pthread_attr_init (&attr_eNB_proc_tx[CC_id][i]);
|
||||||
if (pthread_attr_setstacksize(&attr_eNB_proc_tx[CC_id][i],OPENAIR_THREAD_STACK_SIZE) != 0)
|
if (pthread_attr_setstacksize(&attr_eNB_proc_tx[CC_id][i],PTHREAD_STACK_MIN) != 0)
|
||||||
perror("[ENB_PROC_TX] setting thread stack size failed\n");
|
perror("[ENB_PROC_TX] setting thread stack size failed\n");
|
||||||
|
|
||||||
pthread_attr_init (&attr_eNB_proc_rx[CC_id][i]);
|
pthread_attr_init (&attr_eNB_proc_rx[CC_id][i]);
|
||||||
if (pthread_attr_setstacksize(&attr_eNB_proc_rx[CC_id][i],OPENAIR_THREAD_STACK_SIZE) != 0)
|
if (pthread_attr_setstacksize(&attr_eNB_proc_rx[CC_id][i],PTHREAD_STACK_MIN) != 0)
|
||||||
perror("[ENB_PROC_RX] setting thread stack size failed\n");
|
perror("[ENB_PROC_RX] setting thread stack size failed\n");
|
||||||
/* set the kernel scheduling policy and priority */
|
/* set the kernel scheduling policy and priority */
|
||||||
#ifndef LOWLATENCY
|
#ifndef LOWLATENCY
|
||||||
@@ -1543,7 +1546,6 @@ static void *eNB_thread(void *arg)
|
|||||||
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_TXCNT,tx_cnt);
|
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_TXCNT,tx_cnt);
|
||||||
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_RXCNT,rx_cnt*samples_per_packets);
|
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_RXCNT,rx_cnt*samples_per_packets);
|
||||||
|
|
||||||
printf("hw_subframe %d: rx_cnt %d\n",hw_subframe,rx_cnt);
|
|
||||||
|
|
||||||
for (i=0;i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx;i++)
|
for (i=0;i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx;i++)
|
||||||
rxp[i] = (void*)&rxdata[i][rx_cnt*samples_per_packets];
|
rxp[i] = (void*)&rxdata[i][rx_cnt*samples_per_packets];
|
||||||
@@ -1559,7 +1561,6 @@ static void *eNB_thread(void *arg)
|
|||||||
if (rxs != samples_per_packets)
|
if (rxs != samples_per_packets)
|
||||||
oai_exit=1;
|
oai_exit=1;
|
||||||
|
|
||||||
// printf("hw_subframe %d: tx_cnt %d\n",hw_subframe,tx_cnt);
|
|
||||||
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ,0);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ,0);
|
||||||
|
|
||||||
@@ -1699,7 +1700,7 @@ static void *eNB_thread(void *arg)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef USRP
|
#ifdef EXMIMO
|
||||||
slot++;
|
slot++;
|
||||||
if (slot == 20) {
|
if (slot == 20) {
|
||||||
frame++;
|
frame++;
|
||||||
@@ -2490,13 +2491,13 @@ void init_UE_threads(void) {
|
|||||||
PHY_VARS_UE *UE=PHY_vars_UE_g[0][0];
|
PHY_VARS_UE *UE=PHY_vars_UE_g[0][0];
|
||||||
|
|
||||||
pthread_attr_init(&attr_UE_thread_tx);
|
pthread_attr_init(&attr_UE_thread_tx);
|
||||||
pthread_attr_setstacksize(&attr_UE_thread_tx,OPENAIR_THREAD_STACK_SIZE);
|
pthread_attr_setstacksize(&attr_UE_thread_tx,PTHREAD_STACK_MIN);
|
||||||
sched_param_UE_thread_tx.sched_priority = sched_get_priority_max(SCHED_FIFO)-1;
|
sched_param_UE_thread_tx.sched_priority = sched_get_priority_max(SCHED_FIFO)-1;
|
||||||
pthread_attr_setschedparam (&attr_UE_thread_tx, &sched_param_UE_thread_tx);
|
pthread_attr_setschedparam (&attr_UE_thread_tx, &sched_param_UE_thread_tx);
|
||||||
pthread_attr_setschedpolicy (&attr_UE_thread_tx, SCHED_FIFO);
|
pthread_attr_setschedpolicy (&attr_UE_thread_tx, SCHED_FIFO);
|
||||||
|
|
||||||
pthread_attr_init(&attr_UE_thread_rx);
|
pthread_attr_init(&attr_UE_thread_rx);
|
||||||
pthread_attr_setstacksize(&attr_UE_thread_rx,OPENAIR_THREAD_STACK_SIZE);
|
pthread_attr_setstacksize(&attr_UE_thread_rx,PTHREAD_STACK_MIN);
|
||||||
sched_param_UE_thread_rx.sched_priority = sched_get_priority_max(SCHED_FIFO)-1;
|
sched_param_UE_thread_rx.sched_priority = sched_get_priority_max(SCHED_FIFO)-1;
|
||||||
pthread_attr_setschedparam (&attr_UE_thread_rx, &sched_param_UE_thread_rx);
|
pthread_attr_setschedparam (&attr_UE_thread_rx, &sched_param_UE_thread_rx);
|
||||||
pthread_attr_setschedpolicy (&attr_UE_thread_rx, SCHED_FIFO);
|
pthread_attr_setschedpolicy (&attr_UE_thread_rx, SCHED_FIFO);
|
||||||
@@ -2777,6 +2778,7 @@ static void get_options (int argc, char **argv) {
|
|||||||
//for (j=0; j < enb_properties->properties[i]->nb_cc; j++ ){
|
//for (j=0; j < enb_properties->properties[i]->nb_cc; j++ ){
|
||||||
frame_parms[CC_id]->Nid_cell = enb_properties->properties[i]->Nid_cell[CC_id];
|
frame_parms[CC_id]->Nid_cell = enb_properties->properties[i]->Nid_cell[CC_id];
|
||||||
frame_parms[CC_id]->N_RB_DL = enb_properties->properties[i]->N_RB_DL[CC_id];
|
frame_parms[CC_id]->N_RB_DL = enb_properties->properties[i]->N_RB_DL[CC_id];
|
||||||
|
frame_parms[CC_id]->N_RB_UL = enb_properties->properties[i]->N_RB_DL[CC_id];
|
||||||
frame_parms[CC_id]->nb_antennas_tx = enb_properties->properties[i]->nb_antennas_tx[CC_id];
|
frame_parms[CC_id]->nb_antennas_tx = enb_properties->properties[i]->nb_antennas_tx[CC_id];
|
||||||
frame_parms[CC_id]->nb_antennas_tx_eNB = enb_properties->properties[i]->nb_antennas_tx[CC_id];
|
frame_parms[CC_id]->nb_antennas_tx_eNB = enb_properties->properties[i]->nb_antennas_tx[CC_id];
|
||||||
frame_parms[CC_id]->nb_antennas_rx = enb_properties->properties[i]->nb_antennas_rx[CC_id];
|
frame_parms[CC_id]->nb_antennas_rx = enb_properties->properties[i]->nb_antennas_rx[CC_id];
|
||||||
@@ -3251,11 +3253,23 @@ int main(int argc, char **argv) {
|
|||||||
tx_delay = 5;
|
tx_delay = 5;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
else if (frame_parms[0]->N_RB_DL == 6) {
|
||||||
|
sample_rate = 1.92e6;
|
||||||
|
#ifndef EXMIMO
|
||||||
|
samples_per_packets = 256;
|
||||||
|
samples_per_frame = 19200;
|
||||||
|
tx_forward_nsamps = 40;
|
||||||
|
sf_bounds = sf_bounds_1_5;
|
||||||
|
sf_bounds_tx = sf_bounds_1_5_tx;
|
||||||
|
max_cnt = 75;
|
||||||
|
tx_delay = 5;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (card=0;card<MAX_CARDS;card++) {
|
for (card=0;card<MAX_CARDS;card++) {
|
||||||
#ifndef EXMIMO
|
#ifndef EXMIMO
|
||||||
openair0_cfg[card].samples_per_packet = samples_per_packets;
|
openair0_cfg[card].samples_per_packet = 1024;//samples_per_packets;
|
||||||
#endif
|
#endif
|
||||||
printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
|
printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
|
||||||
((UE_flag==0) ? PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx : PHY_vars_UE_g[0][0]->lte_frame_parms.nb_antennas_tx),
|
((UE_flag==0) ? PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx : PHY_vars_UE_g[0][0]->lte_frame_parms.nb_antennas_tx),
|
||||||
@@ -3338,6 +3352,7 @@ int main(int argc, char **argv) {
|
|||||||
init_predef_traffic(UE_flag ? 1 : 0, UE_flag ? 0 : 1);
|
init_predef_traffic(UE_flag ? 1 : 0, UE_flag ? 0 : 1);
|
||||||
// }
|
// }
|
||||||
#endif */
|
#endif */
|
||||||
|
|
||||||
#ifdef EXMIMO
|
#ifdef EXMIMO
|
||||||
number_of_cards = openair0_num_detected_cards;
|
number_of_cards = openair0_num_detected_cards;
|
||||||
#else
|
#else
|
||||||
@@ -3348,7 +3363,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
for(CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
for(CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||||
rf_map[CC_id].card=0;
|
rf_map[CC_id].card=0;
|
||||||
rf_map[CC_id].chain=CC_id;
|
rf_map[CC_id].chain=CC_id+3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// connect the TX/RX buffers
|
// connect the TX/RX buffers
|
||||||
@@ -3510,7 +3525,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
#ifndef RTAI
|
#ifndef RTAI
|
||||||
pthread_attr_init (&attr_dlsch_threads);
|
pthread_attr_init (&attr_dlsch_threads);
|
||||||
pthread_attr_setstacksize(&attr_dlsch_threads,OPENAIR_THREAD_STACK_SIZE);
|
pthread_attr_setstacksize(&attr_dlsch_threads,PTHREAD_STACK_MIN);
|
||||||
|
|
||||||
#ifndef LOWLATENCY
|
#ifndef LOWLATENCY
|
||||||
sched_param_dlsch.sched_priority = sched_get_priority_max(SCHED_FIFO); //OPENAIR_THREAD_PRIORITY;
|
sched_param_dlsch.sched_priority = sched_get_priority_max(SCHED_FIFO); //OPENAIR_THREAD_PRIORITY;
|
||||||
@@ -3518,7 +3533,7 @@ int main(int argc, char **argv) {
|
|||||||
pthread_attr_setschedpolicy (&attr_dlsch_threads, SCHED_FIFO);
|
pthread_attr_setschedpolicy (&attr_dlsch_threads, SCHED_FIFO);
|
||||||
#endif
|
#endif
|
||||||
pthread_attr_init (&attr_UE_init_synch);
|
pthread_attr_init (&attr_UE_init_synch);
|
||||||
pthread_attr_setstacksize(&attr_UE_init_synch,OPENAIR_THREAD_STACK_SIZE);
|
pthread_attr_setstacksize(&attr_UE_init_synch,PTHREAD_STACK_MIN);
|
||||||
sched_param_UE_init_synch.sched_priority = sched_get_priority_max(SCHED_FIFO); //OPENAIR_THREAD_PRIORITY;
|
sched_param_UE_init_synch.sched_priority = sched_get_priority_max(SCHED_FIFO); //OPENAIR_THREAD_PRIORITY;
|
||||||
pthread_attr_setschedparam (&attr_UE_init_synch, &sched_param_UE_init_synch);
|
pthread_attr_setschedparam (&attr_UE_init_synch, &sched_param_UE_init_synch);
|
||||||
pthread_attr_setschedpolicy (&attr_UE_init_synch, SCHED_FIFO);
|
pthread_attr_setschedpolicy (&attr_UE_init_synch, SCHED_FIFO);
|
||||||
@@ -3557,7 +3572,7 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
printf("Creating main eNB_thread \n");
|
printf("Creating main eNB_thread \n");
|
||||||
#ifdef RTAI
|
#ifdef RTAI
|
||||||
main_eNB_thread = rt_thread_create(eNB_thread, NULL, OPENAIR_THREAD_STACK_SIZE);
|
main_eNB_thread = rt_thread_create(eNB_thread, NULL, PTHREAD_STACK_MIN);
|
||||||
#else
|
#else
|
||||||
error_code = pthread_create(&main_eNB_thread, &attr_dlsch_threads, eNB_thread, NULL);
|
error_code = pthread_create(&main_eNB_thread, &attr_dlsch_threads, eNB_thread, NULL);
|
||||||
if (error_code!= 0) {
|
if (error_code!= 0) {
|
||||||
@@ -3891,14 +3906,14 @@ int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_c
|
|||||||
|
|
||||||
for (i=0;i<frame_parms->nb_antennas_rx;i++) {
|
for (i=0;i<frame_parms->nb_antennas_rx;i++) {
|
||||||
free(phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i]);
|
free(phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i]);
|
||||||
rxdata[i] = (int32_t*)malloc16(samples_per_frame*sizeof(int32_t));
|
rxdata[i] = (int32_t*)(16 + malloc16(16+samples_per_frame*sizeof(int32_t)));
|
||||||
phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i] = rxdata[i]-N_TA_offset; // N_TA offset for TDD
|
phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i] = rxdata[i]-N_TA_offset; // N_TA offset for TDD
|
||||||
memset(rxdata[i], 0, samples_per_frame*sizeof(int32_t));
|
memset(rxdata[i], 0, samples_per_frame*sizeof(int32_t));
|
||||||
printf("rxdata[%d] @ %p (%p) (N_TA_OFFSET %d)\n", i, phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i],rxdata[i],N_TA_offset);
|
printf("rxdata[%d] @ %p (%p) (N_TA_OFFSET %d)\n", i, phy_vars_eNB[CC_id]->lte_eNB_common_vars.rxdata[0][i],rxdata[i],N_TA_offset);
|
||||||
}
|
}
|
||||||
for (i=0;i<frame_parms->nb_antennas_tx;i++) {
|
for (i=0;i<frame_parms->nb_antennas_tx;i++) {
|
||||||
free(phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i]);
|
free(phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i]);
|
||||||
txdata[i] = (int32_t*)malloc16(samples_per_frame*sizeof(int32_t));
|
txdata[i] = (int32_t*)(16 + malloc16(16+samples_per_frame*sizeof(int32_t)));
|
||||||
phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i] = txdata[i];
|
phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i] = txdata[i];
|
||||||
memset(txdata[i], 0, samples_per_frame*sizeof(int32_t));
|
memset(txdata[i], 0, samples_per_frame*sizeof(int32_t));
|
||||||
printf("txdata[%d] @ %p\n", i, phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i]);
|
printf("txdata[%d] @ %p\n", i, phy_vars_eNB[CC_id]->lte_eNB_common_vars.txdata[0][i]);
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
LOG_I(PHY,"init eNB: frame_type %d,tdd_config %d\n", frame_parms->frame_type,frame_parms->tdd_config);
|
LOG_I(PHY,"init eNB: frame_type %d,tdd_config %d\n", frame_parms->frame_type,frame_parms->tdd_config);
|
||||||
LOG_I(PHY,"init eNB: number of ue max %d number of enb max %d number of harq pid max %d\n",
|
LOG_I(PHY,"init eNB: number of ue max %d number of enb max %d number of harq pid max %d\n",
|
||||||
NUMBER_OF_UE_MAX, NUMBER_OF_eNB_MAX, NUMBER_OF_HARQ_PID_MAX);
|
NUMBER_OF_UE_MAX, NUMBER_OF_eNB_MAX, NUMBER_OF_HARQ_PID_MAX);
|
||||||
|
LOG_I(PHY,"init eNB: N_RB_DL %d\n", frame_parms->N_RB_DL);
|
||||||
|
LOG_I(PHY,"init eNB: Transmission mode %d\n", transmission_mode);
|
||||||
|
|
||||||
for (i=0;i<NUMBER_OF_UE_MAX;i++) {
|
for (i=0;i<NUMBER_OF_UE_MAX;i++) {
|
||||||
for (j=0;j<2;j++) {
|
for (j=0;j<2;j++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user