25#pragma region HEADER_FILES
27#include "LTENR_GNBRRC.h"
32typedef enum enum_LTENR_NAS_HANDOVER_TYPE {
33 HANDOVER_TYPE_INTRA_LTENR,
34 HANDOVER_TYPE_INTER_LTENR,
35 HANDOVER_TYPE_INTER_RAT,
36}LTENR_NAS_HANDOVER_TYPE;
37static const char* strLTENR_NAS_HANDOVER_TYPE[] = {
38 "INTRA_LTENR",
"INTER_LTENR",
"INTER_RAT"
40typedef enum enum_LTENR_NAS_HANDOVER_REQUEST_CAUSE {
41 HANDOVER_CAUSE_RADIO_NETWORK,
42 HANDOVER_CAUSE_TRANSPORT,
44 HANDOVER_CAUSE_PROTOCOL,
46}LTENR_NAS_HANDOVER_REQUEST_CAUSE;
47static const char* strLTENR_NAS_HANDOVER_REQUEST_CAUSE[] = {
48 "RADIO_NETWORK",
"TRANSPORT",
"NAS",
"PROTOCOL",
"MISC"
50typedef enum enum_LTENR_NAS_HANDOVER_OUTCOME {
51 HANDOVER_OUTCOME_SUCESSFUL,
52 HANDOVER_OUTCOME_UNSUCESSFUL,
53 HANDOVER_OUTCOME_UNAVAILABLE,
54 HANDOVER_OUTCOME_UE_LOST,
55}LTENR_NAS_HANDOVER_OUTCOME;
56static const char* strLTENR_NAS_HANDOVER_OUTCOME[] = {
57 "SUCCESSFUL",
"UNSUCCESSFUL",
"UNAVAILABLE",
"UE_LOST"
59typedef enum enum_LTENR_NAS_CELL_TYPE {
64static const char* strLTENR_NAS_CELL_TYPE[] = {
65 "SMALL",
"MEDIUM",
"LARGE"
67typedef enum enum_LTENR_NAS_UECONTEXTRELEASE_STATUS {
68 UECONTEXTRELEASE_STATUS_SUCESSFUL,
69 UECONTEXTRELEASE_STATUS_UNSUCESSFUL,
70}LTENR_NAS_UECONTEXTRELEASE_STATUS;
71static const char* strLTENR_NAS_UECONTEXTRELEASE_STATUS[] = {
72 "SUCCESSFUL",
"UNSUCCESSFUL"
76#pragma region STRUCTURE
79 LTENR_NAS_HANDOVER_TYPE type;
80 LTENR_NAS_HANDOVER_REQUEST_CAUSE cause;
82 NETSIM_ID lastVisitedCellID;
83 LTENR_NAS_CELL_TYPE LastVisitedCellType;
84}LTENR_NAS_HANDOVER_REQUEST, * ptrLTENR_NAS_HANDOVER_REQUEST;
89 LTENR_NAS_HANDOVER_OUTCOME outCome;
90}LTENR_NAS_HANDOVER_REQUEST_ACK, * ptrLTENR_NAS_HANDOVER_REQUEST_ACK;
94 LTENR_NAS_HANDOVER_TYPE type;
95 NETSIM_IPAddress E_RADataForwading_DL_TransportLayerAddress;
97}LTENR_NAS_HANDOVER_COMMAND, * ptrLTENR_NAS_HANDOVER_COMMAND;
102 LTENR_NAS_HANDOVER_REQUEST_CAUSE cause;
103}LTENR_NAS_UECONTEXTRELEASEREQUEST, * ptrLTENR_NAS_UECONTEXTRELEASEREQUEST;
107 LTENR_NAS_HANDOVER_REQUEST_CAUSE cause;
108 LTENR_NAS_HANDOVER_OUTCOME outCome;
109}LTENR_NAS_UECONTEXTRELEASECOMMAND, * ptrLTENR_NAS_UECONTEXTRELEASECOMMAND;
114 LTENR_NAS_UECONTEXTRELEASE_STATUS status;
115}LTENR_NAS_UECONTEXTRELEASECOMPLETE, * ptrLTENR_NAS_UECONTEXTRELEASECOMPLETE;
118 NETSIM_ID targetGNBID;
119 NETSIM_ID associatedEPCtoTarget;
120}LTENR_NAS_PATH_SWITCH_REQUEST, * ptrLTENR_NAS_PATH_SWITCH_REQUEST;
123 NETSIM_ID targetGNBID;
124 NETSIM_ID associatedEPCtoTarget;
125}LTENR_NAS_PATH_SWITCH_REQUEST_ACK, * ptrLTENR_NAS_PATH_SWITCH_REQUEST_ACK;
128 LTENR_MSGTYPE msgType;
131 NETSIM_ID serveringCellID;
132 NETSIM_ID serveringCellIF;
133 NETSIM_ID targetCellID;
134 NETSIM_ID targetCellIF;
139 NETSIM_ID targetAMFID;
140 NETSIM_ID targetAMFIF;
141 NETSIM_ID associateSMFID;
142 double HandoverStartTime;
143 double HandoverCompleteTime;
144}LTENR_HANDOVER_Hdr, * ptrLTENR_HANDOVER_Hdr;
147#pragma region FUN_DEF
149void fn_NetSim_LTENR_NAS_HANDOVER_REQUEST(ptrLTENR_HANDOVER_Hdr msg);
150void fn_NetSim_LTENR_NAS_GENERATE_HANDOVER_REQUEST_RECV(ptrLTENR_HANDOVER_Hdr hdr);
151void fn_NetSim_LTENR_NAS_HANDOVER_COMMAND(ptrLTENR_HANDOVER_Hdr hdr);
152void fn_NetSIm_LTENR_NAS_ADD_HDR_INTO_PACKET(NetSim_PACKET* packet, ptrLTENR_HANDOVER_Hdr hdr, UINT hdrID, LTENR_MSGTYPE type);
153ptrLTENR_HANDOVER_Hdr LTENR_NAS_HDR_GET(NetSim_PACKET* packet, UINT hdrID);
154void LTENR_NAS_HDR_REMOVE(NetSim_PACKET* packet, UINT hdrID);
156void LTENR_HANDOVER_REQUEST(ptrLTENR_HANDOVER_Hdr hdr);
157void LTENR_HANDOVER_UE_CONTEXT_RELEASE(ptrLTENR_HANDOVER_Hdr hdr);
159void LTENR_NAS_HANDOVER_REQUEST_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
160void LTENR_NASUE_CONTEXT_RELEASE_ACK_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
161void LTENR_NASUE_CONTEXT_RELEASE_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
162void LTENR_NAS_PATH_SWTICH_ACK_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
163void LTENR_NAS_PATH_SWITCH_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
164void LTENR_NAS_HANDOVER_COMMAND_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
165void LTENR_NAS_HANDOVER_REUQEST_ACK_FREEHDR(ptrLTENR_HANDOVER_Hdr hdr);
167ptrLTENR_HANDOVER_Hdr LTENR_NAS_HANDOVER_REQUEST_COPY(ptrLTENR_HANDOVER_Hdr hdr);
168ptrLTENR_HANDOVER_Hdr LTENR_NAS_HANDOVER_COMMAND_COPY(ptrLTENR_HANDOVER_Hdr hdr);
169ptrLTENR_HANDOVER_Hdr LTENR_NAS_PATH_SWITCH_ACK_COPY(ptrLTENR_HANDOVER_Hdr hdr);
170ptrLTENR_HANDOVER_Hdr LTENR_NAS_PATH_SWITCH_COPY(ptrLTENR_HANDOVER_Hdr hdr);
172void LTENR_NAS_HANDOVER_REQUEST_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
173void LTENR_NAS_HANDOVER_REUQEST_ACK_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
174void LTENR_NAS_HANDOVER_COMMAND_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
175void LTENR_NAS_PATH_SWITCH_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
176void LTENR_NAS_PATH_SWITCH_ACK_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
177void LTENR_NAS_UE_CONTEXT_RELEASE_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
178void LTENR_NAS_UE_CONTEXT_RELEASE_ACK_TRACE(ptrLTENR_HANDOVER_Hdr hdr,
char* s);
179void fn_NetSim_LTENR_NAS_RLC_GNB_BUFFER_TRANSFER(NETSIM_ID d, NETSIM_ID in,
180 NETSIM_ID r, NETSIM_ID rin,
181 NETSIM_ID t, NETSIM_ID tin);
182void fn_NetSim_LTENR_NAS_RLC_UE_BUFFER_TRANSFER(NETSIM_ID d, NETSIM_ID in,
183 NETSIM_ID r, NETSIM_ID rin,
184 NETSIM_ID t, NETSIM_ID tin);
185void fn_NetSim_LTENR_NAS_PDCP_BUFFER_TRANSFER(ptrLTENR_PDCPENTITY ser, ptrLTENR_PDCPENTITY tar,
int flag);