NetSim Source Code Help v14.4
All 13 Components
 
Loading...
Searching...
No Matches
LTENR_Msg.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_LTENR_MSG_H_
26#define _NETSIM_LTENR_MSG_H_
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#pragma region MACROS
33#define LTENR_HDRTYPE_MAX 100 //Read-only
34#define IPV4_HEADER_SIZE 20
35#pragma endregion
36
37#pragma region MSG_TYPE
38 typedef enum enum_LTENR_MSGTYPE
39 {
40
41 //RRC
42 LTENR_MSG_RRC_MIB = MAC_PROTOCOL_LTE_NR * 100,
43 LTENR_MSG_RRC_SIB1,
44 LTENR_MSG_RRC_SI,
45 LTENR_MSG_RRC_SETUP_REQUEST,
46 LTENR_MSG_RRC_SETUP,
47 LTENR_MSG_RRC_SETUP_COMPLETE,
48 LTENR_MSG_RRC_UE_MEASUREMENT_REPORT,
49 LTENR_MSG_RRC_REESTABLISHMENT_REQUEST,
50 LTENR_MSG_RRC_REESTABLISHMENT,
51 LTENR_MSG_RRC_RECONFIGURATION,
52 //NAS
53 LTENR_MSG_NAS_HANDOVER_REQUEST,
54 LTENR_MSG_NAS_HANDOVER_REQUEST_ACK,
55 LTENR_MSG_NAS_HANDOVER_COMMAND,
56 LTENR_MSG_NAS_HANDOVER_PATH_SWITCH,
57 LTENR_MSG_NAS_HANDOVER_PATH_SWITCH_ACK,
58 LTENR_MSG_NAS_HANDOVER_UE_CONTEXT_RELEASE,
59 LTENR_MSG_NAS_HANDOVER_UE_CONTEXT_RELEASE_ACK,
60 LTENR_MSG_NAS_HANDOVER_COMPLETE,
61 //RLC
62 LTENR_MSG_RLC_STATUSPDU,
63 LTENR_MSG_RLC_TMDPDU,
64 LTENR_MSG_RLC_UMDPDU,
65 LTENR_MSG_RLC_AMDPDU,
66 //CORE
67 LTENR_MSG_CORE_INITIAL_UE_MESSAGE,
68 LTENR_MSG_CORE_CREATE_SESSION_REQUEST,
69 LTENR_MSG_CORE_CREATE_SESSION_RESPONSE,
70 LTENR_MSG_CORE_INITIAL_CONTEXT_SETUP_REQUEST,
71 LTENR_MSG_CORE_INITIAL_CONTEXT_SETUP_RESPONSE,
72 LTENR_MSG_CORE_REGISTRATION_COMPLETE,
73 LTENR_MSG_CORE_NSMF_PDUSESSION_UPDATESMCONTEXT_REQUSET,
74 LTENR_MSG_CORE_NSMF_PDUSESSION_UPDATESMCONTEXT_RESPONSE,
75 LTENR_MSG_CORE_PFCP_SESSION_REQUSET,
76 LTENR_MSG_CORE_PFCP_SESSION_RESPONSE,
77 LTENR_MSG_CORE_MODIFY_BEARER_REQUEST,
78 LTENR_MSG_CORE_MODIFY_BEARER_RESPONSE,
79
80 //DC
81 LTENR_MSG_DC_SEC_CELL_ADDITION_REQUEST,
82 LTENR_MSG_DC_SEC_CELL_ADDITION_RESPONSE,
83
84 //SN_HANDOVER
85 LTENR_MSG_DC_HO_SEC_CELL_CHANGE_REQUEST,
86 LTENR_MSG_DC_HO_SEC_CELL_ADDITION_REQUEST,
87 LTENR_MSG_DC_HO_SEC_CELL_ADDITION_REQUEST_ACK,
88 LTENR_MSG_DC_HO_SEC_CELL_RELEASE_REQUEST,
89 LTENR_MSG_DC_HO_SEC_CELL_RELEASE_REQUEST_ACK,
90 LTENR_MSG_DC_HO_SEC_CELL_PATH_SWITCH,
91 LTENR_MSG_DC_HO_SEC_CELL_PATH_SWITCH_ACK,
92 LTENR_MSG_DC_HO_SEC_CELL_UE_CONTEXT_RELEASE,
93 LTENR_MSG_DC_HO_SEC_CELL_UE_CONTEXT_RELEASE_ACK,
94
95 LTENR_MSG_USERDATA,
96 LTENR_MSG_LAST, //Keep me at last
97 }LTENR_MSGTYPE;
98 static const char* strLTENR_MSGTYPE[] = { "RRC_MIB","RRC_SIB1","RRC_SI","RRC_SETUP_REQUEST","RRC_SETUP","RRC_SETUP_COMPLETE","UE (SS/PBCH) Measurement Report",
99 "RRC_REESTABLISHMENT_REQUEST","RRC_REESTABLISHMENT","RRC_RECONFIGURATION","HANDOVER_REQUEST","HANDOVER_REQUEST_ACK","HANDOVER_COMMAND","PATH_SWITCH","PATH_SWITCH_ACK",
100 "UE_CONTEXT_RELEASE","UE_CONTEXT_RELEASE_ACK","HANDOVER_COMPLETE","STATUSPDU","TMDPDU","UMDPDU","AMDPDU",
101 "INITIAL_UE_MSG_AND_REGISTRATION_REQUEST","CREATE_SESSION_REQUEST","CREATE_SESSION_RESPONSE","INITIAL_CONTEXT_SETUP_REQUEST",
102 "INITIAL_CONTEXT_SETUP_RESPONSE_REGISTRATION_COMPLETE", "REGISTRATION_COMPLETE","NSMF_PDUSESSION_UPDATESMCONTEXT_REQUSET",
103 "NSMF_PDUSESSION_UPDATESMCONTEXT_RESPONSE","PFCP_SESSION_REQUSET","PFCP_SESSION_RESPONSE","MODIFY_BEARER_REQUEST",
104 "MODIFY_BEARER_RESPONSE", "DC_SEC_CELL_ADDITION_REQUEST", "DC_SEC_CELL_ADDITION_RESPONSE",
105 "DC_HO_SEC_CELL_CHANGE_REQUEST","DC_HO_SEC_CELL_ADDITION_REQUEST","DC_HO_SEC_CELL_ADDITION_REQUEST_ACK",
106 "DC_HO_SEC_CELL_RELEASE_REQUEST","DC_HO_SEC_CELL_RELEASE_REQUEST_ACK","DC_HO_SEC_CELL_PATH_SWITCH",
107 "DC_HO_SEC_CELL_PATH_SWITCH_ACK","DC_HO_SEC_CELL_UE_CONTEXT_RELEASE","DC_HO_SEC_CELL_UE_CONTEXT_RELEASE_ACK","UserData","Unknown" };
108#pragma endregion
109
110#pragma region LTENR_HEADER
111 typedef struct stru_LTENR_HDR
112 {
113 UINT hdrType;
114 UINT size;
115 void* hdr;
116 struct stru_LTENR_HDR* next;
117 }LTENR_HDR, *ptrLTENR_HDR;
118#pragma endregion
119
120#pragma region LTENR_MSG_AND_ITS_API
121 typedef struct stru_LTENR_MSG
122 {
123 UINT msgType;
124
125 UINT hdrSize;
126 ptrLTENR_HDR hdr;
127
128 LTENR_LOGICALCHANNEL logicalChannel;
129 LTENR_TRANSPORTCHANNEL transportChannel;
130 LTENR_PHYSICALCHANNEL physicalChannel;
131 LTENR_SRB srb;
132
133 LTENR_RLCMODE rlcMode;
134 }LTENR_MSG,*ptrLTENR_MSG;
135#define LTENR_MSG_GET(packet) ((ptrLTENR_MSG)(packet->pstruMacData->Packet_MACProtocol))
136#define LTENR_IS_UPLANE_MSG(packet) ((LTENR_MSG_GET(packet) == NULL) || (LTENR_MSG_GET(packet)->msgType == LTENR_MSG_USERDATA))
137
138#define LTENR_PACKET_GET_LOGICALCHANNEL(packet) (LTENR_MSG_GET(packet)->logicalChannel)
139#define LTENR_PACKET_SET_LOGICALCHANNEL(packet,channel) (LTENR_MSG_GET(packet)->logicalChannel = channel)
140#define LTENR_PACKET_GET_TRANSPORTCHANNEL(packet) (LTENR_MSG_GET(packet)->transportChannel)
141#define LTENR_PACKET_SET_TRANSPORTCHANNEL(packet,channel) (LTENR_MSG_GET(packet)->transportChannel = channel)
142#define LTENR_PACKET_GET_PHYSICALCHANNEL(packet) (LTENR_MSG_GET(packet)->physicalChannel)
143#define LTENR_PACKET_SET_PHYSICALCHANNEL(packet,channel) (LTENR_MSG_GET(packet)->physicalChannel = channel)
144
145#define LTENR_PACKET_SET_RLCMODE(packet,mode) (LTENR_MSG_GET(packet)->rlcMode = mode)
146#define LTENR_PACKET_GET_RLCMODE(packet) (LTENR_MSG_GET(packet)->rlcMode)
147#pragma endregion
148
149#pragma region MSG_FUN_DEF
150 ptrLTENR_MSG LTENR_MSG_CREATE(LTENR_MSGTYPE type);
151 void LTENR_MSG_FREE(NetSim_PACKET* packet);
152 ptrLTENR_MSG LTENR_MSG_COPY(const NetSim_PACKET* packet);
153 ptrLTENR_MSG LTENR_MSG_APP_COPY(const NetSim_PACKET* packet);
154#pragma endregion
155
156#pragma region HEADER_HANDLER_AND_ITS_APIS
158 {
159 UINT hdrType;
160 char* hdrName;
161 void(*fnHandler)();
162 void*(*fnCopyHdr)(void*);
163 void(*fnFreeHdr)();
164 void(*fnTraceWriter)(void*, char*);
165 }LTENR_HDRHANDLER, *ptrLTENR_HDRHANDLER;
166 UINT LTENR_HDR_REGISTER(char* name,
167 void(*fnHandler)(),
168 void*(*fnCopy)(void*),
169 void(*fnFree)(void*),
170 void(*fnTraceWriter)(void*, char*));
171#pragma endregion
172
173#pragma region FUN_DEF
174 void LTENR_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
175 void* hdr,
176 UINT type,
177 UINT size);
178 void LTENR_RRC_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
179 void* hdr,
180 UINT type,
181 UINT size,
182 LTENR_MSGTYPE msgType);
183 void LTENR_CORE_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
184 void* hdr,
185 UINT type,
186 UINT size,
187 LTENR_MSGTYPE msgType);
188 void LTENR_HANDOVER_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
189 void* hdr,
190 UINT type,
191 UINT size,
192 LTENR_MSGTYPE msgType);
193 void* LTENR_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
194 UINT type);
195 void* LTENR_CORE_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
196 UINT type);
197 void* LTENR_HANDOVER_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
198 UINT type);
199 void LTENR_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
200 UINT type);
201 void LTENR_CORE_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
202 UINT type);
203 void LTENR_HANDOVER_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
204 UINT type);
205 ptrLTENR_HDR LTENR_HDR_NEW(void* hdr,
206 UINT type,
207 UINT size);
208
209 // LTENR_PACKET
210 NetSim_PACKET* LTENR_PACKET_CREATE(NETSIM_ID src, NETSIM_ID dest,
211 double time, LTENR_MSGTYPE type);
212#pragma endregion
213
214#ifdef __cplusplus
215}
216#endif // __cplusplus
217#endif //_NETSIM_LTENR_MSG_H_