WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
RadioModel.h
Go to the documentation of this file.
1/******************************************************************************
2* Copyright (c) ATTX INC 2025. All Rights Reserved.
3*
4* This software and associated documentation (the "Software") are the
5* proprietary and confidential information of ATTX, INC. The Software is
6* furnished under a license agreement between ATTX and the user organization
7* and may be used or copied only in accordance with the terms of the agreement.
8* Refer to 'license/attx_license.adoc' for standard license terms.
9*
10* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
11* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
12* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
13* transmitted in any form or by any means, for any purpose, without the express
14* written permission of ATTX, INC.
15******************************************************************************/
16
17/*
18Radio Model header file
19
20Author: Alex Jackson
21*/
22/*
23Metadata for MS GUI:
24imdata = {"displayname" : "Radio Model",
25 "exclude" : False,
26 "category" : "Assemblies"
27}
28aliases = {"frequency" : "Frequency (Hz)",
29 "bandwidth" : "Bandwidth (Hz)",
30 "bit_rate" : "Bit Rate (bps)",
31 "power_TX" : "Transmit Power (W)",
32 "gain_TX" : "Transmit Gain (dBi)",
33 "loss_TX" : "Transmit Loss (dB)",
34 "gain_RX" : "Receive Gain (dBi)",
35 "loss_RX" : "Receive Loss (dB)",
36 "noise_temperature" : "System Noise Temperature (K)",
37 "cross_pol_loss" : "Cross Polarization Loss (dB)",
38 "ebno_required" : "Eb/N0 Required (dB)",
39 "power_draw_TX" : "Transmit Power Draw (W)",
40 "power_draw_RX" : "Receive Power Draw (W)",
41 "other_radio" : "Other Radio Model",
42 "frame" : "Radio's Frame",
43 "transmitting" : "Transmitting (1 = yes, 0 = no, -1 = auto)",
44 "masked" : "Masked (false = visible)",
45 "free_space_path_loss" : "EXCLUDE",
46 "tx_eff_isotropic_radiated_pwr" : "EXCLUDE",
47 "tx_power_RX" : "EXCLUDE",
48 "tx_system_noise_figure" : "EXCLUDE",
49 "tx_signal_to_noise_ratio" : "Signal to Noise Ratio (dB)",
50 "tx_ebno_received" : "Eb/N0 Received (dB)",
51 "tx_link_margin" : "Link Margin (dB)",
52 "rx_eff_isotropic_radiated_pwr" : "EXCLUDE",
53 "rx_power_RX" : "EXCLUDE",
54 "rx_system_noise_figure" : "EXCLUDE",
55 "rx_signal_to_noise_ratio" : "Signal to Noise Ratio (dB)",
56 "rx_ebno_received" : "Eb/N0 Received (dB)",
57 "rx_link_margin" : "Link Margin (dB)",
58 "power_draw" : "Power Draw (W)",
59}
60*/
61
62#ifndef MODELS_COMMUNICATIONS_RADIO_MODEL_H
63#define MODELS_COMMUNICATIONS_RADIO_MODEL_H
64
65#include "simulation/Model.h"
68
69namespace warptwin {
70
98 MODEL(RadioModel)
99 public:
100 // Model params
101 // NAME TYPE DEFAULT VALUE
105 SIGNAL(frequency, double, 437e6)
108 SIGNAL(bandwidth, double, 50e3)
111 SIGNAL(bit_rate, double, 9600.0)
113 SIGNAL(power_TX, double, 1.0)
117 SIGNAL(return_loss, double, 14.0)
120 SIGNAL(gain_TX, double, 2.15)
125 SIGNAL(loss_TX, double, 5.0)
128 SIGNAL(gain_RX, double, 2.15)
133 SIGNAL(noise_temperature, double, 307.5)
137 SIGNAL(loss_RX, double, 4.0)
142 SIGNAL(cross_pol_loss, double, 0.0)
147 SIGNAL(ebno_required, double, 11.0)
150 SIGNAL(power_draw_TX, double, 0.0)
152 SIGNAL(power_draw_RX, double, 0.0)
154 SIGNAL(other_radio, GraphTreeObject*, nullptr)
156 SIGNAL(frame, Frame*, nullptr)
158
159 // Model inputs
160 // NAME TYPE DEFAULT VALUE
163 SIGNAL(masked, bool, true)
168 SIGNAL(transmitting, int, -1)
170
171 // Model outputs
172 // NAME TYPE DEFAULT VALUE
176 SIGNAL(free_space_path_loss, double, 0.0)
178 SIGNAL(tx_eff_isotropic_radiated_pwr, double, 0.0)
180 SIGNAL(tx_power_RX, double, 0.0)
182 SIGNAL(tx_system_noise_figure, double, 0.0)
184 SIGNAL(tx_signal_to_noise_ratio, double, 0.0)
186 SIGNAL(tx_ebno_received, double, 0.0)
188 SIGNAL(tx_link_margin, double, 0.0)
190 SIGNAL(rx_eff_isotropic_radiated_pwr, double, 0.0)
192 SIGNAL(rx_power_RX, double, 0.0)
194 SIGNAL(rx_system_noise_figure, double, 0.0)
196 SIGNAL(rx_signal_to_noise_ratio, double, 0.0)
198 SIGNAL(rx_ebno_received, double, 0.0)
200 SIGNAL(rx_link_margin, double, 0.0)
202 SIGNAL(power_draw, double, 0.0)
204
205 protected:
206 int16 start() override;
207 int16 execute() override;
208
209 // The simple com analysis models that this model uses to compute comms data
210 SimpleComAnalysisModel _tx_com_analysis_model;
211 SimpleComAnalysisModel _rx_com_analysis_model;
212
213 // The frame state sensor used to get range data for the com analysis models
214 FrameStateSensorModel _fss;
215
216 };
217}
218
219#endif
#define SIGNAL(NAME, TYPE, INITIAL_VALUE)
Definition appmacros.h:27
#define START_PARAMS
Definition appmacros.h:42
#define END_OUTPUTS
Definition appmacros.h:33
#define END_PARAMS
Definition appmacros.h:47
#define START_OUTPUTS
Definition appmacros.h:28
#define END_INPUTS
Definition appmacros.h:40
#define START_INPUTS
Definition appmacros.h:35
Frame class definition.
Definition Frame.h:96
Class to propagate CR3BP dynamics in characteristic units.
Definition statistics.hpp:22
int16 start() override
Class to execute logging.
SIGNAL(_mu, double, warpos::earth_wgs84.mu)
SimpleComAnalysisModel _tx_com_analysis_model
Definition RadioModel.h:210
SimpleComAnalysisModel _rx_com_analysis_model
Definition RadioModel.h:211
FrameStateSensorModel _fss
Definition RadioModel.h:214
@ MODEL
Simplified dynamics model representing motion in the circular restricted 3 body problem.
Definition ImNode.h:31
int16 execute() override
Function to check monitor input conditions and set trigger flag accordingly. Should be implemented in...