add channel simulator in rfsimulator
This commit is contained in:
@@ -106,7 +106,6 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si
|
|||||||
// −132.24 dBm is a LTE subcarrier noise, that was used in origin code (15KHz BW thermal noise)
|
// −132.24 dBm is a LTE subcarrier noise, that was used in origin code (15KHz BW thermal noise)
|
||||||
const double rxGain= 132.24 - snr_dB;
|
const double rxGain= 132.24 - snr_dB;
|
||||||
const double noise_per_sample = sqrt(0.5*noise_figure_watt) * pow(10,rxGain/20);
|
const double noise_per_sample = sqrt(0.5*noise_figure_watt) * pow(10,rxGain/20);
|
||||||
|
|
||||||
// Fixme: we don't fill the offset length samples at begining ?
|
// Fixme: we don't fill the offset length samples at begining ?
|
||||||
// anyway, in today code, channel_offset=0
|
// anyway, in today code, channel_offset=0
|
||||||
const int dd = abs(channelDesc->channel_offset);
|
const int dd = abs(channelDesc->channel_offset);
|
||||||
@@ -145,11 +144,11 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si
|
|||||||
|
|
||||||
if ( (TS*nbTx)%CirSize+nbSamples <= CirSize )
|
if ( (TS*nbTx)%CirSize+nbSamples <= CirSize )
|
||||||
// Cast to a wrong type for compatibility !
|
// Cast to a wrong type for compatibility !
|
||||||
LOG_I(HW,"Input power %f, output power: %f, channel path loss %f, noise coeff: %f \n",
|
LOG_D(HW,"Input power %f, output power: %f, channel path loss %f, noise coeff: %f \n",
|
||||||
10*log10((double)signal_energy((int32_t*)&input_sig[(TS*nbTx)%CirSize], nbSamples)),
|
10*log10((double)signal_energy((int32_t *)&input_sig[(TS*nbTx)%CirSize], nbSamples)),
|
||||||
10*log10((double)signal_energy((int32_t*)after_channel_sig, nbSamples)),
|
10*log10((double)signal_energy((int32_t *)after_channel_sig, nbSamples)),
|
||||||
channelDesc->path_loss_dB,
|
channelDesc->path_loss_dB,
|
||||||
10*log10(noise_per_sample));
|
10*log10(noise_per_sample));
|
||||||
}
|
}
|
||||||
|
|
||||||
void allocCirBuf(rfsimulator_state_t *bridge, int sock) {
|
void allocCirBuf(rfsimulator_state_t *bridge, int sock) {
|
||||||
@@ -542,13 +541,12 @@ int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimestamp, vo
|
|||||||
random_channel(ptr->channel_model,0);
|
random_channel(ptr->channel_model,0);
|
||||||
|
|
||||||
for (int a=0; a<nbAnt; a++)
|
for (int a=0; a<nbAnt; a++)
|
||||||
rxAddInput( ptr->circularBuf, (struct complex16 *) samplesVoid[a],
|
rxAddInput( ptr->circularBuf, (struct complex16 *) samplesVoid[a],
|
||||||
a,
|
a,
|
||||||
ptr->channel_model,
|
ptr->channel_model,
|
||||||
nsamps,
|
nsamps,
|
||||||
t->nextTimestamp
|
t->nextTimestamp
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -587,9 +585,9 @@ int rfsimulator_set_gains(openair0_device *device, openair0_config_t *openair0_c
|
|||||||
}
|
}
|
||||||
__attribute__((__visibility__("default")))
|
__attribute__((__visibility__("default")))
|
||||||
int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||||
//set_log(HW,OAILOG_DEBUG);
|
// to change the log level, use this on command line
|
||||||
set_log(TMR,OAILOG_DEBUG);
|
// --log_config.hw_log_level debug
|
||||||
//set_log(PHY,OAILOG_DEBUG);
|
// (for phy layer, replace "hw" by "phy"
|
||||||
rfsimulator_state_t *rfsimulator = (rfsimulator_state_t *)calloc(sizeof(rfsimulator_state_t),1);
|
rfsimulator_state_t *rfsimulator = (rfsimulator_state_t *)calloc(sizeof(rfsimulator_state_t),1);
|
||||||
|
|
||||||
if ((rfsimulator->ip=getenv("RFSIMULATOR")) == NULL ) {
|
if ((rfsimulator->ip=getenv("RFSIMULATOR")) == NULL ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user