NetSim Source Code Help v14.4
All 13 Components
 
Loading...
Searching...
No Matches
Component 11/Satellite/Satellite.h
1#pragma once
2/************************************************************************************
3* Copyright (C) 2023 *
4* TETCOS, Bangalore. India *
5* *
6* Tetcos owns the intellectual property rights in the Product and its content. *
7* The copying, redistribution, reselling or publication of any or all of the *
8* Product or its content without express prior written consent of Tetcos is *
9* prohibited. Ownership and / or any other right relating to the software and all *
10* intellectual property rights therein shall remain at all times with Tetcos. *
11* *
12* This source code is licensed per the NetSim license agreement. *
13* *
14* No portion of this source code may be used as the basis for a derivative work, *
15* or used, for any purpose other than its intended use per the NetSim license *
16* agreement. *
17* *
18* This source code and the algorithms contained within it are confidential trade *
19* secrets of TETCOS and may not be used as the basis for any other software, *
20* hardware, product or service. *
21* *
22* Author: Shashi Kant Suman *
23* *
24* ----------------------------------------------------------------------------------*/
25#ifndef _NETSIM_SATELLITE_H_
26#define _NETSIM_SATELLITE_H_
27
28#include "List.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34 //For MSVC compiler. For GCC link via Linker command
35#pragma comment(lib,"Metrics.lib")
36#pragma comment(lib,"NetworkStack.lib")
37#pragma comment(lib,"Mobility.lib")
38#pragma comment(lib,"PropagationModel.lib")
39
40 //LOG
41 bool get_protocol_log_status(char* logname);
42 void print_satellite_log(char* format, ...);
43 void satellite_log_add_tab();
44 void satellite_log_remove_tab();
45
46
47 typedef enum enum_SATELLITE_DEVICE_TYPE
48 {
49 SATELLITE_DEVICETYPE_USER_TERMINAL,
50 SATELLITE_DEVICETYPE_SATELLITE,
51 SATELLITE_DEVICETYPE_SATELLITE_GATEWAY,
52 SATELLITE_DEVICETYPE_UNKNOWN, //Keep me at last
53 }SATELLITE_DEVICETYPE;
54 static const char* strSATELLITE_DEVICETYPE[] =
55 { "USER_TERMINAL","SATELLITE","SATELLITE_GATEWAY","Unknown" };
56 SATELLITE_DEVICETYPE SATELLITE_DEVICETYPE_FROM_STR(const char* type);
57
58 typedef enum enum_linktype
59 {
60 LINKTYPE_FORWARD,
61 LINKTYPE_RETURN,
62 }LINKTYPE;
63 static char* strLINKTYPE[] = { "FORWARD","RETURN" };
64
65 typedef enum enum_SATELLITE_LAYER
66 {
67 SATELLITE_LAYER_MAC,
68 SATELLITE_LAYER_PHY,
69 SATELLITE_LAYER_UNKNOWN,
70 }SATELLITE_LAYER;
71 static const char* strSATELLITE_LAYER[] =
72 { "MAC","PHY","Unknwon" };
73
74 typedef enum enum_satellite_subevent
75 {
76 SUBEVENT_SUPERFRAME_START = MAC_PROTOCOL_SATELLITE * 100 + 1,
77 SUBEVENT_FRAME_START,
78 }SATELLITE_SUBEVENT;
79 static const char* strSATELLITE_SUBEVENT[] =
80 { "","Satellite_Superframe_Start","Satellite_Frame_Start" };
81
83 {
84 SATELLITE_DEVICETYPE deviceType;
85 NETSIM_ID deviceId;
86 NETSIM_ID interfaceId;
87 void*** SATELLITE_LAYER_DATA;
88 }SATELLITE_PROTODATA, * ptrSATELLITE_PROTODATA;
89 ptrSATELLITE_PROTODATA SATELLITE_PROTOCOLDATA_ALLOC(NETSIM_ID d,
90 NETSIM_ID in);
91#define SATELLITE_PROTOCOLDATA_CURRENT() ((ptrSATELLITE_PROTODATA)DEVICE_MACVAR(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId))
92 void SATELLITE_PROTOCOLDATA_FREE(NETSIM_ID d,
93 NETSIM_ID in);
94 void* SATELLITE_LAYER_DATA_GET(NETSIM_ID d, NETSIM_ID in,
95 SATELLITE_DEVICETYPE devType,
96 SATELLITE_LAYER layer);
97 bool SATELLITE_LAYER_DATA_IsInitialized(NETSIM_ID d, NETSIM_ID in,
98 SATELLITE_DEVICETYPE devType,
99 SATELLITE_LAYER layer);
100 void SATELLITE_LAYER_DATA_SET(NETSIM_ID d, NETSIM_ID in,
101 SATELLITE_DEVICETYPE devType,
102 SATELLITE_LAYER layer,
103 void* data);
104 SATELLITE_DEVICETYPE SATELLITE_DEVICETYPE_GET(NETSIM_ID d, NETSIM_ID in);
105
106#define SATELLITE_PHY_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_SATELLITE,SATELLITE_LAYER_PHY))
107#define SATELLITE_MAC_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_SATELLITE,SATELLITE_LAYER_MAC))
108#define SATELLITE_UTPHY_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_USER_TERMINAL,SATELLITE_LAYER_PHY))
109#define SATELLITE_UTMAC_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_USER_TERMINAL,SATELLITE_LAYER_MAC))
110#define SATELLITE_GWPHY_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_SATELLITE_GATEWAY,SATELLITE_LAYER_PHY))
111#define SATELLITE_GWMAC_GET(d,i) (SATELLITE_LAYER_DATA_GET(d,i,SATELLITE_DEVICETYPE_SATELLITE_GATEWAY,SATELLITE_LAYER_MAC))
112
113#define SATELLITE_PHY_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_SATELLITE,SATELLITE_LAYER_PHY,data))
114#define SATELLITE_MAC_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_SATELLITE,SATELLITE_LAYER_MAC,data))
115#define SATELLITE_UTPHY_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_USER_TERMINAL,SATELLITE_LAYER_PHY,data))
116#define SATELLITE_UTMAC_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_USER_TERMINAL,SATELLITE_LAYER_MAC,data))
117#define SATELLITE_GWPHY_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_SATELLITE_GATEWAY,SATELLITE_LAYER_PHY,data))
118#define SATELLITE_GWMAC_SET(d,i,data) (SATELLITE_LAYER_DATA_SET(d,i,SATELLITE_DEVICETYPE_SATELLITE_GATEWAY,SATELLITE_LAYER_MAC,data))
119
120#define isSATELLITE(d,i) (SATELLITE_DEVICETYPE_GET(d,i) == SATELLITE_DEVICETYPE_SATELLITE)
121#define isUT(d,i) (SATELLITE_DEVICETYPE_GET(d,i) == SATELLITE_DEVICETYPE_USER_TERMINAL)
122#define isGW(d,i) (SATELLITE_DEVICETYPE_GET(d,i) == SATELLITE_DEVICETYPE_SATELLITE_GATEWAY)
123
124 //Function prototype
125 //General
126 void fn_NetSim_SATELLITE_Configure_F(void**);
127 bool isSatelliteInterface(NETSIM_ID d, NETSIM_ID in);
128
129 //Mac
130 void satellite_handle_mac_out();
131 void satellite_handle_mac_in();
132
133 //PHY
134 void satellite_handle_phy_out();
135 void satellite_handle_phy_in();
136
137 //HDR
138 void satellite_hdr_init(NETSIM_ID d, NETSIM_ID in,
139 NetSim_PACKET* packet);
140
141 //Radio Measurements
142 void Satellite_RadioMeasurements_Init();
143 void Satellite_RadioMeasurements_Finish();
144
145#ifdef __cplusplus
146}
147#endif
148#endif /* _NETSIM_SATELLITE_H_ */