rfsimulator: add delay and Doppler simulation for circular orbit and add according channel models SAT_LEO_TRANS and SAT_LEO_REGEN

Delay and Doppler computation is done as in Matlab function dopplerShiftCircularOrbit:
https://de.mathworks.com/help/satcom/ref/dopplershiftcircularorbit.html
This commit is contained in:
Thomas Schlichter
2024-08-20 16:46:25 +02:00
parent 68b07d542c
commit 6a8edaf317
4 changed files with 149 additions and 14 deletions
+16
View File
@@ -126,6 +126,18 @@ typedef struct {
char *model_name;
/// flags to properly trigger memory free
unsigned int free_flags;
/// time stamp when the time varying channel emulation starts (when client connected)
uint64_t start_TS;
/// height of LEO satellite
float sat_height;
/// flag to enable dynamic delay simulation for LEO satellite
bool enable_dynamic_delay;
/// flag to enable dynamic Doppler simulation for LEO satellite
bool enable_dynamic_Doppler;
/// Doppler phase increment (might vary over time, e.g. for LEO satellite)
float Doppler_phase_inc;
/// current Doppler phase of each RX antenna (for continuous phase from one block to the next)
float *Doppler_phase_cur;
} channel_desc_t;
typedef struct {
@@ -218,6 +230,8 @@ typedef enum {
EPA_low,
EPA_medium,
EPA_high,
SAT_LEO_TRANS,
SAT_LEO_REGEN,
} SCM_t;
#define CHANNELMOD_MAP_INIT \
{"custom",custom},\
@@ -253,6 +267,8 @@ typedef enum {
{"EPA_low",EPA_low},\
{"EPA_medium",EPA_medium},\
{"EPA_high",EPA_high},\
{"SAT_LEO_TRANS",SAT_LEO_TRANS},\
{"SAT_LEO_REGEN",SAT_LEO_REGEN},\
{NULL, -1}
#define CONFIG_HLP_SNR "Set average SNR in dB (for --siml1 option)\n"