14 const double d_frequency;
15 const bool d_uplink_mode;
16 const double d_rx_noise_figure;
17 const double d_rx_noise_temperature;
18 const double d_tx_power_dbm;
19 const double d_rx_bandwidth;
27 double d_sat_range_rate;
34 double d_doppler_shift;
35 double d_atmo_attenuation;
36 double d_rainfall_attenuation;
37 double d_pathloss_attenuation;
38 double d_pointing_attenuation;
39 double d_total_attenuation;
40 double d_link_margin_db;
42 const std::shared_ptr<antenna::GenericAntenna> tx_antenna;
43 const std::shared_ptr<antenna::GenericAntenna> rx_antenna;
45 const impairment_enum_t d_doppler_shift_enum;
46 std::shared_ptr<GenericAttenuation> d_atmo_gases_attenuation;
47 std::shared_ptr<GenericAttenuation> d_precipitation_attenuation;
48 std::shared_ptr<GenericAttenuation> d_fspl_attenuation;
49 std::shared_ptr<GenericAttenuation> d_pointing_loss_attenuation;
51 std::shared_ptr<LinkMargin> d_link_margin;
60 double calculate_free_space_path_loss(
double slant_range);
68 double calculate_doppler_shift(
double velocity);
70 double calculate_total_attenuation();
73 ChannelModelLEO(
bool uplink_mode,
74 impairment_enum_t fspl_attenuation_enum,
75 impairment_enum_t pointing_attenuation_enum,
76 impairment_enum_t doppler_shift_enum,
77 impairment_enum_t atmo_gases_attenuation,
78 impairment_enum_t precipitation_attenuation,
79 bool enable_link_margin,
80 double surface_watervap_density,
83 std::shared_ptr<antenna::GenericAntenna> tx_antenna,
84 std::shared_ptr<antenna::GenericAntenna> rx_antenna,
87 double receiver_noise_figure,
88 double receiver_noise_temperature,
89 double receiver_bandwidth
95 void set_sat_info(
double range,
double elev,
double range_rate)
99 d_sat_range_rate = range_rate;
103 nlohmann::json get_channel_model_settings();
106 double get_frequency();
107 uint8_t get_polarization();
108 double get_tx_power_dbm();
109 double get_receiver_bandwidth();
110 double get_noise_temperature();
111 double get_noise_figure();
112 double get_noise_floor();
115 double calculate_noise_floor();
116 double get_doppler_freq();
117 double get_atmo_attenuation();
118 double get_rainfall_attenuation();
119 double get_pathloss_attenuation();
120 double get_pointing_attenuation();
121 double get_total_attenuation();
122 double get_slant_range();
123 double get_elevation();
124 double get_link_margin();