25#ifndef _NETSIM_LTENR_MSG_H_
26#define _NETSIM_LTENR_MSG_H_
33#define LTENR_HDRTYPE_MAX 100
34#define IPV4_HEADER_SIZE 20
37#pragma region MSG_TYPE
38 typedef enum enum_LTENR_MSGTYPE
42 LTENR_MSG_RRC_MIB = MAC_PROTOCOL_LTE_NR * 100,
45 LTENR_MSG_RRC_SETUP_REQUEST,
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,
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,
62 LTENR_MSG_RLC_STATUSPDU,
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,
81 LTENR_MSG_DC_SEC_CELL_ADDITION_REQUEST,
82 LTENR_MSG_DC_SEC_CELL_ADDITION_RESPONSE,
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,
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" };
110#pragma region LTENR_HEADER
117 }LTENR_HDR, *ptrLTENR_HDR;
120#pragma region LTENR_MSG_AND_ITS_API
128 LTENR_LOGICALCHANNEL logicalChannel;
129 LTENR_TRANSPORTCHANNEL transportChannel;
130 LTENR_PHYSICALCHANNEL physicalChannel;
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))
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)
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)
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);
156#pragma region HEADER_HANDLER_AND_ITS_APIS
162 void*(*fnCopyHdr)(
void*);
164 void(*fnTraceWriter)(
void*,
char*);
165 }LTENR_HDRHANDLER, *ptrLTENR_HDRHANDLER;
166 UINT LTENR_HDR_REGISTER(
char* name,
168 void*(*fnCopy)(
void*),
169 void(*fnFree)(
void*),
170 void(*fnTraceWriter)(
void*,
char*));
173#pragma region FUN_DEF
174 void LTENR_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
178 void LTENR_RRC_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
182 LTENR_MSGTYPE msgType);
183 void LTENR_CORE_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
187 LTENR_MSGTYPE msgType);
188 void LTENR_HANDOVER_HDR_ADD_TO_PACKET(NetSim_PACKET* packet,
192 LTENR_MSGTYPE msgType);
193 void* LTENR_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
195 void* LTENR_CORE_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
197 void* LTENR_HANDOVER_HDR_GET_FROM_PACKET(NetSim_PACKET* packet,
199 void LTENR_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
201 void LTENR_CORE_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
203 void LTENR_HANDOVER_HDR_FREE_FROM_PACKET(NetSim_PACKET* packet,
205 ptrLTENR_HDR LTENR_HDR_NEW(
void* hdr,
210 NetSim_PACKET* LTENR_PACKET_CREATE(NETSIM_ID src, NETSIM_ID dest,
211 double time, LTENR_MSGTYPE type);