Merge remote-tracking branch 'origin/rfsim_add_prop_delay' into integration_2024_w21c
This commit is contained in:
@@ -55,12 +55,12 @@ void __attribute__ ((no_sanitize_address)) multipath_channel(channel_desc_t *des
|
||||
tx128_re, tx128_im, ch128_x, ch128_y, pathloss128;
|
||||
|
||||
double path_loss = pow(10,desc->path_loss_dB/20);
|
||||
int dd = abs(desc->channel_offset);
|
||||
uint64_t dd = desc->channel_offset;
|
||||
|
||||
pathloss128 = simde_mm_set1_pd(path_loss);
|
||||
|
||||
#ifdef DEBUG_CH
|
||||
printf("[CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %d, len %d \n",keep_channel,path_loss,desc->path_loss_dB,desc->nb_rx,desc->nb_tx,dd,desc->channel_length);
|
||||
printf("[CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %lu, len %d \n",keep_channel,path_loss,desc->path_loss_dB,desc->nb_rx,desc->nb_tx,dd,desc->channel_length);
|
||||
#endif
|
||||
|
||||
if (keep_channel) {
|
||||
@@ -184,11 +184,10 @@ void __attribute__ ((no_sanitize_address)) multipath_channel(channel_desc_t *des
|
||||
{
|
||||
|
||||
double path_loss = pow(10,desc->path_loss_dB/20);
|
||||
int dd;
|
||||
dd = abs(desc->channel_offset);
|
||||
uint64_t dd = desc->channel_offset;
|
||||
|
||||
#ifdef DEBUG_CH
|
||||
printf("[CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %d, len %d \n",
|
||||
printf("[CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %lu, len %d \n",
|
||||
keep_channel, path_loss, desc->path_loss_dB, desc->nb_rx, desc->nb_tx, dd, desc->channel_length);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
void tv_channel(channel_desc_t *desc,double complex ***H,uint32_t length);
|
||||
double frand_a_b(double a, double b);
|
||||
void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, int delay);
|
||||
void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, uint64_t delay);
|
||||
|
||||
void multipath_tv_channel(channel_desc_t *desc,
|
||||
double **tx_sig_re,
|
||||
@@ -42,10 +42,10 @@ void multipath_tv_channel(channel_desc_t *desc,
|
||||
|
||||
double complex **tx,**rx,***H_t;
|
||||
double path_loss = pow(10,desc->path_loss_dB/20);
|
||||
int i,j,dd;
|
||||
dd = abs(desc->channel_offset);
|
||||
int i,j;
|
||||
uint64_t dd = desc->channel_offset;
|
||||
#ifdef DEBUG_CH
|
||||
printf("[TV CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %d, len %d max_doppler %g\n",keep_channel,path_loss,desc->path_loss_dB,desc->nb_rx,desc->nb_tx,dd,desc->channel_length,
|
||||
printf("[TV CHANNEL] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %lu, len %d max_doppler %g\n",keep_channel,path_loss,desc->path_loss_dB,desc->nb_rx,desc->nb_tx,dd,desc->channel_length,
|
||||
desc->max_Doppler);
|
||||
#endif
|
||||
tx = (double complex **)malloc(desc->nb_tx*sizeof(double complex *));
|
||||
@@ -190,7 +190,7 @@ void tv_channel(channel_desc_t *desc,double complex ***H,uint32_t length){
|
||||
}
|
||||
|
||||
// time varying convolution
|
||||
void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, int dd)
|
||||
void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, uint64_t dd)
|
||||
{
|
||||
for(int i = 0; i < ((int)nb_samples-dd); i++) {
|
||||
for(int j = 0; j < nb_taps; j++) {
|
||||
|
||||
@@ -76,7 +76,6 @@ static unsigned int max_chan;
|
||||
static channel_desc_t **defined_channels;
|
||||
static char *modellist_name;
|
||||
|
||||
|
||||
void fill_channel_desc(channel_desc_t *chan_desc,
|
||||
uint8_t nb_tx,
|
||||
uint8_t nb_rx,
|
||||
@@ -92,9 +91,10 @@ void fill_channel_desc(channel_desc_t *chan_desc,
|
||||
double aoa,
|
||||
double forgetting_factor,
|
||||
double max_Doppler,
|
||||
int32_t channel_offset,
|
||||
uint64_t channel_offset,
|
||||
double path_loss_dB,
|
||||
uint8_t random_aoa) {
|
||||
uint8_t random_aoa)
|
||||
{
|
||||
uint16_t i,j;
|
||||
double delta_tau;
|
||||
LOG_I(OCM,"[CHANNEL] Getting new channel descriptor, nb_tx %d, nb_rx %d, nb_taps %d, channel_length %d\n",
|
||||
@@ -568,7 +568,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
double maxDoppler,
|
||||
const corr_level_t corr_level,
|
||||
double forgetting_factor,
|
||||
int32_t channel_offset,
|
||||
uint64_t channel_offset,
|
||||
double path_loss_dB,
|
||||
float noise_power_dB)
|
||||
{
|
||||
@@ -2063,8 +2063,12 @@ static void display_channelmodel(channel_desc_t *cd,int debug, telnet_printfunc_
|
||||
prnt("nb_tx: %i nb_rx: %i taps: %i bandwidth: %lf sampling: %lf\n",cd->nb_tx, cd->nb_rx, cd->nb_taps, cd->channel_bandwidth, cd->sampling_rate);
|
||||
prnt("channel length: %i Max path delay: %lf ricean fact.: %lf angle of arrival: %lf (randomized:%s)\n",
|
||||
cd->channel_length, cd->Td, cd->ricean_factor, cd->aoa, (cd->random_aoa?"Yes":"No"));
|
||||
prnt("max Doppler: %lf path loss: %lf noise: %lf rchannel offset: %i forget factor; %lf\n",
|
||||
cd->max_Doppler, cd->path_loss_dB, cd->noise_power_dB, cd->channel_offset, cd->forgetting_factor);
|
||||
prnt("max Doppler: %lf path loss: %lf noise: %lf rchannel offset: %lu forget factor; %lf\n",
|
||||
cd->max_Doppler,
|
||||
cd->path_loss_dB,
|
||||
cd->noise_power_dB,
|
||||
cd->channel_offset,
|
||||
cd->forgetting_factor);
|
||||
prnt("Initial phase: %lf nb_path: %i \n",
|
||||
cd->ip, cd->nb_paths);
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ typedef struct {
|
||||
///path loss including shadow fading in dB
|
||||
double path_loss_dB;
|
||||
///additional delay of channel in samples.
|
||||
int32_t channel_offset;
|
||||
uint64_t channel_offset;
|
||||
float noise_power_dB;
|
||||
///This parameter (0...1) allows for simple 1st order temporal variation. 0 means a new channel every call, 1 means keep channel constant all the time
|
||||
double forgetting_factor;
|
||||
@@ -307,7 +307,6 @@ typedef struct {
|
||||
double ru_amp[NUMBER_OF_RU_MAX];
|
||||
} sim_t;
|
||||
|
||||
|
||||
channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
uint8_t nb_rx,
|
||||
SCM_t channel_model,
|
||||
@@ -318,7 +317,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
double maxDoppler,
|
||||
const corr_level_t corr_level,
|
||||
double forgetting_factor,
|
||||
int32_t channel_offset,
|
||||
uint64_t channel_offset,
|
||||
double path_loss_dB,
|
||||
float noise_power_dB);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user