30#pragma region FUNCTIONPROTOTYPE
39#pragma region PROPAGATIONMODEL_INIT
53 NULL, &txInfo, &prop);
58 NULL, &txInfo, &prop);
74 NULL, &txInfo, &prop);
79 NULL, &txInfo, &prop);
83#pragma region PROPAGATIONMODEL_HELPER
87 memset(info, 0,
sizeof * info);
122 memset(prop, 0,
sizeof * prop);
131 memset(info, 0,
sizeof * info);
164#pragma region PROPAGATIONMODEL_CALCULATE
180#pragma region SATELLITE_PACKET_ERROR
188 else if (
isGW(t, ti))
200 else if (
isGW(r, ri))
216 else if (
isGW(t, ti))
228 else if (
isGW(r, ri))
237#define BOLTZMAAN_CONSTANT 1.38064852e-23
247 else if (
isGW(t, ti))
261 else if (
isGW(r, ri))
284 else if (
isGW(t, ti))
296 else if (
isGW(r, ri))
326#ifdef SATELLITE_PROPAGATION_LOG
327typedef struct stru_fileinfo
335 struct stru_fileinfo* next;
336}FILEINFO,*ptrFILEINFO;
337ptrFILEINFO fileInfo = NULL;
341 ptrFILEINFO
f =
calloc(1,
sizeof *
f);
348 sprintf(s,
"%s/log/SatPropLog_%d_%d_%d_%d.csv",
350 f->fp = fopen(s,
"w");
358 fprintf(
f->fp,
"Time(Microseconds),ReceivedPower(dBm),FadingLoss(dB),Noise(dBm),SNR(dB)\n");
359 ptrFILEINFO tf = fileInfo;
362 while (tf->next) tf = tf->next;
374 ptrFILEINFO
f = fileInfo;
377 if (
f->t == t &&
f->ti == ti &&
f->r == r &&
f->ri == ri)
382 f = create_new_log_file(t, ti, r, ri);
387 double p,
double f,
double n,
double snr)
389 FILE* fp = find_log_file(t, ti, r, ri);
390 fprintf(fp,
"%lf,%lf,%lf,%lf,%lf,\n",
406#ifdef SATELLITE_PROPAGATION_LOG
407 log_power(t, ti, r, ri, pdbm + fdb, fdb, ndbm, snr);
double Calculate_ber_by_calculation(double sinr, PHY_MODULATION modulation, double dataRate_mbps, double bandwidth_mHz)
double calculate_ber(double snr, BER ber_table[], size_t table_len)
#define fnSystemError(x,...)
PACKET_STATUS fn_NetSim_Packet_DecideError(double dBER, long double dPacketSize)
void _propagation_calculate_received_power(PPROPAGATION_INFO info, double time)
double _propagation_get_received_power_dbm(PPROPAGATION_INFO info, double time)
Used to the received power in dBm over time.
double _propagation_calculate_fadingloss(PPROPAGATION_INFO info)
Used to calculate the fading loss. Fading model and parameter must be set in PROPAGATION structure wi...
PPROPAGATION_INFO propagation_create_propagation_info(NETSIM_ID txId, NETSIM_ID txIf, NETSIM_ID rxId, NETSIM_ID rxIf, char *uniqueId, PTX_INFO txInfo, PPROPAGATION propagation)
#define SATELLITE_PHY_GET(d, i)
#define SATELLITE_UTPHY_GET(d, i)
#define SATELLITE_GWPHY_GET(d, i)
#define SATELLITE_MAC_GET(d, i)
#define SATELLITE_GWMAC_GET(d, i)
#define SATELLITE_UTMAC_GET(d, i)
enum enum_linktype LINKTYPE
static void create_tx_info_for_ut(NETSIM_ID d, NETSIM_ID in, PTX_INFO info, LINKTYPE linkType)
static double satellite_get_fading_loss_db(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri)
void satellite_check_for_packet_error(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri, NetSim_PACKET *packet)
void satellite_propagation_ut_calculate_rxpower(NETSIM_ID d, NETSIM_ID in, double time)
static ptrSUPERFRAME find_superframe(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri)
void satellite_propagation_gw_calculate_rxpower(NETSIM_ID d, NETSIM_ID in, double time)
void satellite_propgation_gw_init(NETSIM_ID d, NETSIM_ID in)
static double satellite_calculate_noise(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri)
void satellite_propgation_ut_init(NETSIM_ID d, NETSIM_ID in)
static double satellite_get_rx_power_dbm(NETSIM_ID t, NETSIM_ID ti, NETSIM_ID r, NETSIM_ID ri)
static void create_tx_info_for_gw(NETSIM_ID d, NETSIM_ID in, PTX_INFO info, LINKTYPE linkType)
static double satellite_calculate_ber(ptrSUPERFRAME sf, double snr)
#define BOLTZMAAN_CONSTANT
static void fill_propagation_from_link(NETSIM_ID d, NETSIM_ID in, PPROPAGATION prop)
static double satellite_calculate_snr(double pdbm, double ndbm)
static PACKET_STATUS satellite_isPacketErrored(ptrSUPERFRAME sf, double bytes, double snr)
EXPORTED double ldEventTime
EXPORTED char * pszIOPath
#define DEVICE_DISTANCE(d1, d2)
#define DEVICE_PHYLAYER(DeviceId, InterfaceId)
uint f(uint state, uchar key[])
enum enum_PacketStatus PACKET_STATUS
union stru_NetSim_Links::uni_NetSim_MediumProp puniMedProp
PACKET_STATUS nPacketStatus
struct stru_NetSim_Packet_PhyLayer * pstruPhyData
PPROPAGATION_INFO rxPropagationInfo
PPROPAGATION_INFO txPropagationInfo
ptrSUPERFRAME forwardFLinkSuperFrame
ptrSUPERFRAME returnLinkSuperFrame
ptrSUPERFRAME returnLinkSuperFrame
ptrSUPERFRAME forwardLinkSuperFrame
PPROPAGATION_INFO rxPropagationInfo
PPROPAGATION_INFO txPropagationInfo
PHY_MODULATION modulation
double allocatedBandwidth_Hz
double centralFrequency_Hz
ptrCARRIERCONF carrierConfig
struct stru_NetSim_Links::uni_NetSim_MediumProp::stru_NetSim_wirelessLink pstruWirelessLink