NetSim Source Code Help
Loading...
Searching...
No Matches
LTE_NR.h
Go to the documentation of this file.
1#pragma once
2/************************************************************************************
3* Copyright (C) 2021 *
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_LTE_NR_H_
26#define _NETSIM_LTE_NR_H_
27
28#pragma region HEADER_FILES_AND_WARNING_REMOVAL
29#include "List.h"
30#pragma warning ( disable : 4090 )
31#pragma warning ( disable : 4100 )
32#pragma warning ( disable : 4189 )
33#pragma warning ( disable : 4244 )
34#pragma endregion
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40#pragma region LOG_MACRO
41#define LTENR_LOG
42
43#ifdef LTENR_LOG
44//#define LTENR_LOG_DEV
45//#define LTENR_PROPAGATION_LOG
46//#define LTENR_RADIO_MEASUREMENTS_LOG
47//#define LTENR_PDCP_LOG
48//#define LTENR_RADIO_RESOURCE_ALLOCATION_LOG
49#define LTENR_MACMULTIPLEX_HARQ_LOG
50//#define LTENR_RLC_LOG
51//#ifdef LTENR_RLC_LOG
52//#define LTENR_RLC_BUFFERSTATUSREPORTING_LOG
53//#define LTENR_RLC_TRANSMISSIONSTATUSNOTIFICATION_LOG
54#endif // LTENR_LOG
55#pragma endregion
56
57#pragma region TYPEDEFS
58 // Typedef's that are referenced in multiple headers file
61#pragma endregion //TYPEDEFS
62
63#pragma region DEVICE_TYPE
64 static bool isFastProcessing = true;
65 /**
66 * @enum enum_LTE_NR_DEVICE_TYPE
67 * @brief Types of DEVICE
68 */
70 {
78 LTENR_DEVICETYPE_LAST, //Keep me at last
80 static const char* strLTENR_DEVICETYPE[] =
81 { "UE","gNB","EPC","AMF","SMF","UPF","Unknown" };
82#pragma endregion
83
84#pragma region LTENR_LogicalChannel
85 /**
86 * @enum enum_LTENR_LogicalChannel
87 * @brief Types of Logical Channel
88 */
90 {
92 LTENR_LOGICALCHANNEL_PCCH, // Paging Control Channel
93 LTENR_LOGICALCHANNEL_BCCH, // Broadcast Control Channel
94 LTENR_LOGICALCHANNEL_CCCH, // Common Control Channel
95 LTENR_LOGICALCHANNEL_DCCH, // Dedicated Control Channel
96 LTENR_LOGICALCHANNEL_DTCH, // Dedicated Traffic Channel
97 LTENR_LOGICALCHANNEL_LAST, // Keep me at last
99 static const char* strLTENR_LOGICALCHANNEL[] =
100 { "NONE","PCCH","BCCH","CCCH","DCCH","DTCH","Unknown" };
101#pragma endregion
102
103#pragma region LTENR_SRB
104 /**
105 * @enum enum_LTENR_SRB
106 * @brief Types of SRB
107 */
108 typedef enum enum_LTENR_SRB
109 {
116 static const char* strLTENR_SRB[] =
117 { "SRB0","SRB1","SRB2","N/A","Unknown" };
118#pragma endregion
119
120#pragma region LTENR_TransportChannel
121 /**
122 * @enum enum_LTENR_TransportChannel
123 * @brief Types of Transport Channel
124 */
126 {
128 LTENR_TRANSPORTCHANNEL_BCH, // Broadcast Channel
129 LTENR_TRANSPORTCHANNEL_PCH, // Paging Channel
130 LTENR_TRANSPORTCHANNEL_DL_SCH, // Downlink Shared Channel
131 LTENR_TRANSPORTCHANNEL_UL_SCH, // Uplink Shared Channel
132 LTENR_TRANSPORTCHANNEL_RACH, // Random Access Channel
133 LTENR_TRANSPORTCHANNEL_LAST, // Keep me at last
135 static const char* strLTENR_TRANSPORTCHANNEL[] =
136 { "NONE","BCH","PCH","DL-SCH","UL-SCH","RACH","Unknown" };
137#pragma endregion
138
139#pragma region LTENR_PhysicalChannel
140 /**
141 * @enum enum_LTENR_PhysicalChannel
142 * @brief Types of Physical Channel
143 */
145 {
147 LTENR_PHYSICALCHANNEL_PBCH, // Physical broadcast channel
148 LTENR_PHYSICALCHANNEL_PDCCH, // Physical downlink control channel
149 LTENR_PHYSICALCHANNEL_PDSCH, // Physical downlink shared channel
150 LTENR_PHYSICALCHANNEL_PRACH, // Physical random access channel
151 LTENR_PHYSICALCHANNEL_PUSCH, // physical uplink shared channel
152 LTENR_PHYSICALCHANNEL_PUCCH, // Physical uplink control channel
153 LTENR_PHYSICALCHANNEL_LAST, // Keep me at last
155 static const char* strLTENR_PHYSICALCHANNEL[] =
156 { "NONE","PBCH","PDCCH","PDSCH","PRACH","PUSCH","PUCCH","Unknown" };
157#pragma endregion
158
159#pragma region LTENR_RLCMode
160 /**
161 * @enum enum_LTENR_RLCMode
162 * @brief Types of RLC Mode
163 */
165 {
166 LTENR_RLCMODE_TM, // Transparent Mode
167 LTENR_RLCMODE_UM, // Unacknowledged mode
168 LTENR_RLCMODE_AM, // Acknowledged mode
170 static const char* strLTENR_RLCMODE[] =
171 { "Transparent Mode","Unacknowledged Mode", "Acknowledged Mode" };
172#pragma endregion
173
174#pragma region LTENR_INTERFACE_TYPE
175 /**
176 * @enum enum_LTENR_INTERFACE_TYPE
177 * @brief Type of Interfaces
178 */
181 nGC_INTERFACE_LTE,//4G interface
182 nGC_INTERFACE_RAN,//(R)AN--Uu--UE
183 nGC_INTERFACE_N1_N2,//UE--N1--AMF //(R)AN--N2--AMF
184 nGC_INTERFACE_N3,//UPF--N3--(R)AN
185 nGC_INTERFACE_N4,//UPF--N4--SMF
186 nGC_INTERFACE_N11,//AMF--N11--SMF
187 nGC_INTERFACE_N6,//UPF--N6--DN
188 nGC_INTERFACE_XN,//GNB--Xn--GNB
192 static const char* strLTENR_DEVICEINTERFACETYPE[] =
193 { "Invalid", "LTE","5G_RAN", "5G_N1_N2","5G_N3","5G_N4","5G_N11","5G_N6", "5G_XN", "LTE_S1","Unknown" };
194#pragma endregion
195
196#pragma region LTE_NR_SUBLAYER
197 /**
198 * @enum enum_LTE_NR_SUBLAYER
199 * @brief Type to Sublayers
200 */
202 {
217 LTENR_SUBLAYER_LAST, // Keep me at last
219#pragma endregion
220
221#pragma region FUN_DEF_OUT_AND_IN
222 //EPC
224
225 //Core
229
230 //NAS
231 void fn_NetSim_NAS_IN();
233
234 //PDCP
237
238 //RRC
241
242 //RLC
245
246 //SDAP
249
250 //MAC
251 void macOut();
252 void macIn();
253
254 //HARQ
256 void HARQAssociationHandler(NETSIM_ID gnbId, NETSIM_ID gnbIf, NETSIM_ID ueId, NETSIM_ID ueIf, bool isAssociated);
264 void fn_NetSim_LTENR_HARQ_Transmit(NETSIM_ID gNBId, NETSIM_ID gNBIf, int caId);
265 bool fn_NetSim_LTENR_HARQ_GetNDIFlag(ptrLTENR_ASSOCIATEDUEPHYINFO assocInfo, bool isUplink, int caId);
267#pragma endregion
268
269#pragma region OUT_AND_IN_MACROS
270#ifdef OUT
271#undef OUT
272#define OUT 0
273#endif
274#ifdef IN
275#undef IN
276#define IN 1
277#endif
278#pragma endregion
279
280#pragma region LTENR_SublayerInfo
282 {
284 char name[50];
285 void(*fnOut)(); // Call back function for out event
286 void(*fnIn)(); // Call back function for in event
289 {
290 {LTENR_SUBLAYER_NGAP,"NGAP",NULL,NULL},
291 {LTENR_SUBLAYER_GTP_U,"GTP-U",NULL,NULL},
292 {LTENR_SUBLAYER_NAS_MM,"NAS-MM",NULL,NULL},
293 {LTENR_SUBLAYER_NAS_SM,"NAS-SM",NULL,NULL},
294 {LTENR_SUBLAYER_PFCP,"PFCP",NULL,NULL},
301 {LTENR_SUBLAYER_MACSCHEDULER,"MACSCHEDULER",NULL,NULL},
303 {LTENR_SUBLAYER_PHY,"PHY",NULL,NULL},
304 };
306#define LTENR_CallEPCOut() (fnCallSublayer(LTENR_SUBLAYER_EPC,OUT))
307#define LTENR_CallNASOut() (fnCallSublayer(LTENR_SUBLAYER_NAS,OUT))
308#define LTENR_CallNASIn() (fnCallSublayer(LTENR_SUBLAYER_NAS,IN))
309#define LTENR_CallSDAPOut() (fnCallSublayer(LTENR_SUBLAYER_SDAP,OUT))
310#define LTENR_CallSDAPIn() (fnCallSublayer(LTENR_SUBLAYER_SDAP,IN))
311#define LTENR_CallRRCOut() (fnCallSublayer(LTENR_SUBLAYER_RRC,OUT))
312#define LTENR_CallRRCIn() (fnCallSublayer(LTENR_SUBLAYER_RRC,IN))
313#define LTENR_CallPDCPOut() (fnCallSublayer(LTENR_SUBLAYER_PDCP,OUT))
314#define LTENR_CallPDCPIN() (fnCallSublayer(LTENR_SUBLAYER_PDCP,IN))
315#define LTENR_CallRLCOut() (fnCallSublayer(LTENR_SUBLAYER_RLC,OUT))
316#define LTENR_CallRLCIn() (fnCallSublayer(LTENR_SUBLAYER_RLC,IN))
317#define LTENR_CallMACSCHEDULEROut() (fnCallSublayer(LTENR_SUBLAYER_MACSCHEDULER,OUT))
318#define LTENR_CallMACSCHEDULERIn() (fnCallSublayer(LTENR_SUBLAYER_MACSCHEDULER,IN))
319#define LTENR_CallMACOut() (fnCallSublayer(LTENR_SUBLAYER_MAC,OUT))
320#define LTENR_CallMACIn() (fnCallSublayer(LTENR_SUBLAYER_MAC,IN))
321#pragma endregion
322
323#pragma region ASSOCIATION_STRUCT_AND_APIs
325 {
332 NETSIM_ID rd,
333 NETSIM_ID rin);
336 NETSIM_ID rd,
337 NETSIM_ID rin);
340 NETSIM_ID rd /*OPTIONAL, Return first association*/,
341 NETSIM_ID rin /*OPTIONAL, Return first association for rd*/);
342#define LTENR_ISASSOCIATED(d,in,rd,rin) (LTENR_ASSOCIATEINFO_FIND(d,in,rd,rin)!=NULL)
344#define LTENR_FIND_ASSOCIATEDGNB(ueId,ueIn) (isUE(ueId,ueIn)?LTENR_ASSOCIATEINFO_FIND(ueId,ueIn,0,0)->d:0)
347 NETSIM_ID gnbIf,
348 NETSIM_ID ueId,
349 NETSIM_ID ueIf,
350 bool isAssociated));
351#pragma endregion
352
353#pragma region NGAP_PROTODATA
354 typedef struct stru_LTE_NR_NGAP_DATA {
362#define LTENR_NGAP_DATA_ALLOC() (list_alloc(sizeof(LTE_NR_NGAP_DATA),offsetof(LTE_NR_NGAP_DATA,ele)))
363#define LTENR_NGAP_DATA_NEXT(info) (LIST_NEXT(info))
364#define LTENR_NGAP_DATA_ADD(info,e) (LIST_ADD_LAST(&(info),e))
365#define LTENR_NGAP_DATA_REMOVE(info,e) (LIST_REMOVE(&(info),e))
366#pragma endregion
367
368#pragma region PFCP_PROTODATA
369 typedef struct stru_LTE_NR_PFCP_DATA {
377#define LTENR_PFCP_DATA_ALLOC() (list_alloc(sizeof(LTE_NR_PFCP_DATA),offsetof(LTE_NR_PFCP_DATA,ele)))
378#define LTENR_PFCP_DATA_NEXT(info) (LIST_NEXT(info))
379#define LTENR_PFCP_DATA_ADD(info,e) (LIST_ADD_LAST(&(info),e))
380#define LTENR_PFCP_DATA_REMOVE(info,e) (LIST_REMOVE(&(info),e))
381#pragma endregion
382
383#pragma region GTPU_PROTODATA
384 typedef struct stru_LTE_NR_GTPU_DATA {
392#define LTENR_GTPU_DATA_ALLOC() (list_alloc(sizeof(LTE_NR_GTPU_DATA),offsetof(LTE_NR_GTPU_DATA,ele)))
393#define LTENR_GTPU_DATA_NEXT(info) (LIST_NEXT(info))
394#define LTENR_GTPU_DATA_ADD(info,e) (LIST_ADD_LAST(&(info),e))
395#define LTENR_GTPU_DATA_REMOVE(info,e) (LIST_REMOVE(&(info),e))
396#pragma endregion
397
398#pragma region GTPC_PROTODATA
407#define LTENR_N11STACK_DATA_ALLOC() (list_alloc(sizeof(LTE_NR_N11STACK_DATA),offsetof(LTE_NR_N11STACK_DATA,ele)))
408#define LTENR_N11STACK_DATA_NEXT(info) (LIST_NEXT(info))
409#define LTENR_N11STACK_DATA_ADD(info,e) (LIST_ADD_LAST(&(info),e))
410#define LTENR_N11STACK_DATA_REMOVE(info,e) (LIST_REMOVE(&(info),e))
411#pragma endregion
412
413#pragma region NSA
415 {
420
421 typedef enum enum_LTENR_NSA_MODES {
432 static const char* strLTENR_NSA_MODES[] =
433 { "OPTION_3","OPTION_3A","OPTION_3X","OPTION_4","OPTION_4A","OPTION_7",
434 "OPTION_7A", "OPTION_7X","Unknown" };
435#pragma endregion
436
437#pragma region PROTODATA_AND_APIs
439 {
445
446 //Core
451
455
459
463
467
468 //Config parameter -- RRC
469 double T300;
471 double mibPeriod;
474 //Config parameter -- PDCP
479
480 //Config parameter -- RLC
482 char* pollPdu;
487
488 //Config parameter -- MAC
490
491 //Config parameter -- HARQ
494 UINT maxCBGPerTB; // 2,4,6,8
495
496 //Config parameter -- HandoverMargin
498
499 //Config parameter -- OLLA
501
504
506
507 //Dual connectivity
515 NETSIM_ID in);
517 NETSIM_ID in);
519 LTENR_DEVICETYPE devType,
520 LTENR_SUBLAYER subLayer);
522 LTENR_DEVICETYPE devType,
523 LTENR_SUBLAYER subLayer,
524 void* data);
526 LTENR_DEVICETYPE devType,
527 LTENR_SUBLAYER subLayer);
529#define LTENR_UEPHY_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_PHY))
530#define LTENR_UEMAC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_MAC))
531#define LTENR_UERLC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_RLC))
532#define LTENR_UEMACSCHEDULER_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_MACSCHEDULER))
533#define LTENR_UEPDCP_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_PDCP))
534#define LTENR_UERRC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_RRC))
535#define LTENR_UESDAP_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_SDAP))
536#define LTENR_GNBPHY_GET(d,i) ((ptrLTENR_GNBPHY)(LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_PHY)))
537#define LTENR_GNBMAC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_MAC))
538#define LTENR_GNBRLC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_RLC))
539#define LTENR_GNBMACSCHEDULER_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_MACSCHEDULER))
540#define LTENR_GNBPDCP_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_PDCP))
541#define LTENR_GNBRRC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_RRC))
542#define LTENR_GNBSDAP_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_SDAP))
543#define LTENR_EPC_GET(d,i) (LTENR_SUBLAYER_DATA_GET(d,i,LTENR_DEVICETYPE_EPC,LTENR_SUBLAYER_EPC))
544
545 //5G core -- AMF
546#define LTENR_AMF_NGAP_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_AMF,LTENR_SUBLAYER_NGAP))
547#define LTENR_AMF_NGAP_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_AMF,LTENR_SUBLAYER_NGAP,data))
548#define LTENR_AMF_NAS_MM_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_AMF,LTENR_SUBLAYER_NAS_MM))
549#define LTENR_AMF_NAS_MM_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_AMF,LTENR_SUBLAYER_NAS_MM,data))
550
551 //5G core -- SMF
552#define LTENR_SMF_GTP_U_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_GTP_U))
553#define LTENR_SMF_GTP_U_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_GTP_U,data))
554#define LTENR_SMF_NAS_SM_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_NAS_SM))
555#define LTENR_SMF_NAS_SM_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_NAS_SM,data))
556#define LTENR_SMF_PFCP_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_PFCP))
557#define LTENR_SMF_PFCP_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_SMF,LTENR_SUBLAYER_PFCP,data))
558
559 //5G core -- UPF
560#define LTENR_UPF_GTP_U_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_UPF,LTENR_SUBLAYER_GTP_U))
561#define LTENR_UPF_GTP_U_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_UPF,LTENR_SUBLAYER_GTP_U,data))
562#define LTENR_UPF_PFCP_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_UPF,LTENR_SUBLAYER_PFCP))
563#define LTENR_UPF_PFCP_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_UPF,LTENR_SUBLAYER_PFCP,data))
564
565 //5G core -- gNB
566#define LTENR_GNB_NGAP_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_NGAP))
567#define LTENR_GNB_NGAP_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_NGAP,data))
568#define LTENR_GNB_GTP_U_GET(d) (LTENR_SUBLAYER_DATA_GET(d,0,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_GTP_U))
569#define LTENR_GNB_GTP_U_SET(d,data) (LTENR_SUBLAYER_DATA_SET(d,0,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_GTP_U,data))
570
571#define LTENR_UEPHY_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_PHY,data))
572#define LTENR_UEMAC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_MAC,data))
573#define LTENR_UERLC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_RLC,data))
574#define LTENR_UEMACSCHEDULER_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_MACSCHEDULER,data))
575#define LTENR_UEPDCP_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_PDCP,data))
576#define LTENR_UERRC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_RRC,data))
577#define LTENR_UESDAP_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_SDAP,data))
578#define LTENR_GNBPHY_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_PHY,data))
579#define LTENR_GNBMAC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_MAC,data))
580#define LTENR_GNBRLC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_RLC,data))
581#define LTENR_GNBMACSCHEDULER_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_MACSCHEDULER,data))
582#define LTENR_GNBPDCP_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_PDCP,data))
583#define LTENR_GNBRRC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_RRC,data))
584#define LTENR_GNBSDAP_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_SDAP,data))
585#define LTENR_EPC_SET(d,i,data) (LTENR_SUBLAYER_DATA_SET(d,i,LTENR_DEVICETYPE_EPC,LTENR_SUBLAYER_EPC,data))
586#define LTENR_DEVICETYPE_GET(d,i) (LTENR_PROTODATA_GET(d,i)->deviceType)
587#define LTENR_DEVICETYPE_SET(d,i,type) (LTENR_PROTODATA_GET(d,i)->deviceType=type)
588#define LTENR_GNBPDCP_ISINIT(d,i) (LTENR_SUBLAYER_DATA_IsInitialized(d,i,LTENR_DEVICETYPE_GNB,LTENR_SUBLAYER_PDCP))
589#define LTENR_UEPDCP_ISINIT(d,i) (LTENR_SUBLAYER_DATA_IsInitialized(d,i,LTENR_DEVICETYPE_UE,LTENR_SUBLAYER_PDCP))
590#define isUE(d,i) (LTENR_DEVICETYPE_GET(d,i) == LTENR_DEVICETYPE_UE)
591#define isGNB(d,i) (LTENR_DEVICETYPE_GET(d,i) == LTENR_DEVICETYPE_GNB)
592#define isEPC(d,i) (LTENR_DEVICETYPE_GET(d,i) == LTENR_DEVICETYPE_EPC)
593#define isAMF(d) (LTENR_DEVICETYPE_GET(d,0) == LTENR_DEVICETYPE_AMF)
594#define isSMF(d) (LTENR_DEVICETYPE_GET(d,0) == LTENR_DEVICETYPE_SMF)
595#define isUPF(d) (LTENR_DEVICETYPE_GET(d,0) == LTENR_DEVICETYPE_UPF)
596#define isNONRANGNB(d) (LTENR_DEVICETYPE_GET(d,0) == LTENR_DEVICETYPE_GNB)
597#define setUE(d,i) (LTENR_DEVICETYPE_SET(d,i,LTENR_DEVICETYPE_UE))
598#define setGNB(d,i) (LTENR_DEVICETYPE_SET(d,i,LTENR_DEVICETYPE_GNB))
599#define setEPC(d,i) (LTENR_DEVICETYPE_SET(d,i,LTENR_DEVICETYPE_EPC))
600#define setAMF(d) (LTENR_DEVICETYPE_SET(d,0,LTENR_DEVICETYPE_AMF))
601#define setSMF(d) (LTENR_DEVICETYPE_SET(d,0,LTENR_DEVICETYPE_SMF))
602#define setUPF(d) (LTENR_DEVICETYPE_SET(d,0,LTENR_DEVICETYPE_UPF))
603#define LTENR_PDCP_GET(d,i) (isUE(d,i)?LTENR_UEPDCP_GET(d,i):(isGNB(d,i)?LTENR_GNBPDCP_GET(d,i):NULL))
604#define LTENR_RLC_GET(d,i) (isUE(d,i)?LTENR_UERLC_GET(d,i):(isGNB(d,i)?LTENR_GNBRLC_GET(d,i):NULL))
605#define LTENR_SDAP_GET(d,i) (isUE(d,i)?LTENR_UESDAP_GET(d,i):(isGNB(d,i)?LTENR_GNBSDAP_GET(d,i):NULL))
606#pragma endregion
607
608#pragma region INTERFERENCE_MODEL
609
617 { "NO_INTERFERENCE","GRADED_DISTANCE_BASED_WYNER_MODEL","EXACT_GEOMETRIC_MODEL","INTERFERENCE_OVER_THERMAL" };
618
619 // Free the interference head for Wyner Model
620 void free_interference();
621#pragma endregion
622
623#pragma region FUN_DEF_FOR_CORE_INIT
624 //CORE
629#pragma endregion
630
631#pragma region HELPER_APIs
632 //LTE_NR Helper
649 NETSIM_ID r, NETSIM_ID rin, char* gateway, char* nexthop, bool flag);
650#pragma endregion
651
652#pragma region EPC_APIs
653 //LTE-NR EPC interface function
654 void LTENR_EPC_ASSOCIATION(NETSIM_ID epcId, NETSIM_ID epcIf,
655 NETSIM_ID gnbId, NETSIM_ID gnbIf,
656 NETSIM_ID ueId, NETSIM_ID ueIf);
659 NETSIM_ID* e, NETSIM_ID* ein);
660#pragma endregion
661
662#pragma region FUN_DEF_FOR_INTI_METRICS_APIs
663 //LTENR Interference
665 //LTENR CORE
667 //LTE-NR NAS
669
670 //LTE-NR SDAP interface function
676
677 // LTE-NR RRC interface function
680 NETSIM_ID ueInterface);
682 NETSIM_ID gnbInterface);
684 NETSIM_ID r, NETSIM_ID rin);
686 NETSIM_ID r, NETSIM_ID rin);
687
688 //LTE-NR PDCP interface function
691 NETSIM_ID ueIf);
693 NETSIM_ID gnbIf);
694
695 //LTE-NR RLC interface function
700 NETSIM_ID r, NETSIM_ID rin,
701 LTENR_LOGICALCHANNEL logicalChannel);
703 NETSIM_ID r, NETSIM_ID rin,
704 UINT size, LTENR_LOGICALCHANNEL logicalChannel);
705 // LTE-NR MAC Scheduler
706
707 //LTE-NR Multiplexer
708 int LTENR_Mutiplexer_LDPC_SelectBaseGraph(double TBS, double R);
709 void LTENR_Multiplexer_ComputeCodeBlockSize(int LDPCG, UINT TBS, UINT* C, UINT* cbs, UINT* cbs_);
710
711 //LTE-NR MAC interface function
716
717 //LTE-NR PHY interface function
723
724 //BLER Model
726 double LTENR_GetBLER(int tableId, int mcsIndex, int bg, int cbs, double sinr);
728
729 //LTE-NR Radio Measurements log
738
739 //LTE-NR MSG
740 void LTENR_MSG_WriteTrace(NetSim_PACKET* packet, char* s);
742 //DC
744#define isLTENRControlPacket(packet) ((packet)->nPacketType == PacketType_Control && ((packet)->nControlDataType/100 == MAC_PROTOCOL_LTE_NR || (packet)->nControlDataType/100 == MAC_PROTOCOL_LTE))
745#pragma endregion
746
747#pragma region FUN_DEF_LOGs_AND_APIs
748 //LTE-NR log
750 void close_ltenr_PRB_log();
752 void print_ltenr_log(char* format, ...);
754 LTENR_SUBLAYER layer, NetSim_PACKET* packet,
755 bool isOut);
756
757 //LTE-NR Function def
760
761#define LTENR_SDAP_PRINT_PACKET_LOG_OUT() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_SDAP,pstruEventDetails->pPacket,true)
762#define LTENR_SDAP_PRINT_PACKET_LOG_IN() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_SDAP,pstruEventDetails->pPacket,false)
763#define LTENR_RRC_PRINT_PACKET_LOG_OUT() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_RRC,pstruEventDetails->pPacket,true)
764#define LTENR_RRC_PRINT_PACKET_LOG_IN() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_RRC,pstruEventDetails->pPacket,false)
765#define LTENR_PDCP_PRINT_PACKET_LOG_OUT() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_PDCP,pstruEventDetails->pPacket,true)
766#define LTENR_PDCP_PRINT_PACKET_LOG_IN() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_PDCP,pstruEventDetails->pPacket,false)
767#define LTENR_RLC_PRINT_PACKET_LOG_OUT() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_RLC,pstruEventDetails->pPacket,true)
768#define LTENR_RLC_PRINT_PACKET_LOG_IN() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_RLC,pstruEventDetails->pPacket,false)
769#define LTENR_MAC_PRINT_PACKET_LOG_OUT() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_MAC,pstruEventDetails->pPacket,true)
770#define LTENR_MAC_PRINT_PACKET_LOG_IN() print_ltenr_packet_log(pstruEventDetails->nDeviceId,pstruEventDetails->nInterfaceId,LTENR_SUBLAYER_MAC,pstruEventDetails->pPacket,false)
771#pragma endregion
772
773#pragma region GLOBAL_VARIABLE_AND_UITILITY
774 //CA
775#define MAX_CA_COUNT (16*2) /*For TDD - 16
776 * For FDD - 16 *(1 for DL & one for UL
777 */
778//BWP
779#define MAX_BWP_COUNT (4)
780#define MAX_LAYER_COUNT (16)
781
783 //LTENR-Utility
784 double str_to_time(char* time);
785 UINT str_to_bytes(char* bytes);
786#define CompareVal(arg0, arg1, op) \
787( \
788 (!_stricmp(op, ">")) ? (arg0 > arg1) :( \
789 (!_stricmp(op, ">=")) ? (arg0 >= arg1) :(\
790 (!_stricmp(op, "<")) ? (arg0 < arg1) :(\
791 (!_stricmp(op, "<=")) ? (arg0 <= arg1) :(\
792 (!_stricmp(op, "==")) ? (arg0 == arg1) :(\
793 (!_stricmp(op, "!=")) ? (arg0 != arg1) :false \
794))))))
795#pragma endregion
796
797#pragma region PACKET_APIs
798 //Core packet
801 void* hdr, UINT size,
802 NETSIM_ID packetType, char* szPacketType, NETSIM_ID type);
805 void* hdr, UINT size,
806 NETSIM_ID packetType, char* szPacketType, NETSIM_ID type);
807
808
809 //GNB core
813#pragma endregion
814
815#pragma region DEBUGGER_FUN
816 //debugger function. use when necessary.
817 bool ltenr_validate_list(void* ls, UINT size, UINT next, char* file, UINT line);
818
819 //Fast Performance
822#pragma endregion
823
824#pragma region CELL_LIST
826 typedef struct stru_LTENR_Cell_List {
833#define LTENR_Cell_List_ALLOC() (list_alloc(sizeof(LTENR_Cell_List),offsetof(LTENR_Cell_List,ele)))
834#define LTENR_Cell_List_NEXT(info) (LIST_NEXT(info))
835#define LTENR_Cell_List_ADD(info,e) (LIST_ADD_LAST(&(info),e))
836#define LTENR_Cell_List_REMOVE(info,e) (LIST_REMOVE(&(info),e))
837#pragma endregion
838
839#pragma region DC_SN_FUN
844#pragma endregion
845
846#pragma region XML_CONFIGURATION
847 int LTENR_ConvertStrToEnumWithErrorMsg(const char** enumstr, const char* str, int length, char* name);
848 #define LTENR_ConvertStrToEnum(enumName,val) LTENR_ConvertStrToEnumWithErrorMsg(str ## enumName, val, sizeof(str ## enumName)/sizeof(str ## enumName ## [0]), #enumName)
849#pragma endregion
850
851#ifdef __cplusplus
852}
853#endif
854#endif /* _NETSIM_LTE_NR_H_ */
unsigned int NETSIM_ID
Definition: Animation.h:45
enum enum_LTENR_NSA_MODES LTENR_NSA_MODES
void LTENR_RadioMeasurements_Finish()
struct stru_LTENR_GNBPHY * ptrLTENR_GNBPHY
Definition: LTE_NR.h:60
void fn_NetSim_LTENR_GNBMAC_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
Definition: LTENR_MAC.c:55
void free_interference()
int fn_NetSim_LTENR_SDAP_Metrics_F(PMETRICSWRITER metricsWriter)
Definition: LTENR_SDAP.c:588
void fn_NetSim_NAS_IN()
Definition: LTENR_NAS.c:818
void fn_NetSim_LTENR_MAC_Init()
Definition: LTENR_MAC.c:31
void fn_NetSim_LTENR_EPC_RouteHOPacket()
Definition: LTENR_NAS.c:719
void fn_NetSim_LTENR_NSA_RECV()
Definition: LTENR_NSA.c:167
ptrLTENR_ASSOCIATIONINFO LTENR_ASSOCIATEINFO_FIND(NETSIM_ID d, NETSIM_ID in, NETSIM_ID rd, NETSIM_ID rin)
static const char * strLTENR_LOGICALCHANNEL[]
Definition: LTE_NR.h:99
static const char * strLTENR_NSA_MODES[]
Definition: LTE_NR.h:432
struct stru_LTENR_ASSOCIATIONINFO * ptrLTENR_ASSOCIATIONINFO
bool get_ltenr_log_status()
Definition: LTE_NR.c:474
void fn_NetSim_LTENR_GNBSDAP_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
Definition: LTENR_SDAP.c:139
void LTENR_NotifyMACForStartingSlot()
Definition: LTENR_MAC.c:361
void fn_NetSim_PHY_MOBILITY_HANDLE(NETSIM_ID d)
Definition: LTENR_PHY.c:926
void fn_NetSim_LTENR_HARQ_AllocateCBG(NETSIM_ID gnbId, NETSIM_ID gnbIf, int caId)
Definition: LTENR_HARQ.c:534
void fn_NetSim_LTENR_Handover_RECV()
void fn_NetSim_LTENR_HARQ_HandleSlotStart(NETSIM_ID gnbId, NETSIM_ID gnbIf, int caId)
Definition: LTENR_HARQ.c:436
void fn_NetSim_LTENR_GNBRRC_Init(NETSIM_ID gnbId, NETSIM_ID gnbInterface)
Definition: LTENR_GNBRRC.c:944
static const char * strLTENR_RLCMODE[]
Definition: LTE_NR.h:170
void LTENR_ASSOCIATEINFO_REMOVE(NETSIM_ID d, NETSIM_ID in, NETSIM_ID rd, NETSIM_ID rin)
void fn_NetSim_LTENR_HARQ_TransmitDownLinkCBG(NETSIM_ID gnbId, NETSIM_ID gnbIf, ptrLTENR_ASSOCIATEDUEPHYINFO info, int caId)
Definition: LTENR_HARQ.c:697
enum_LTENR_SRB
Types of SRB.
Definition: LTE_NR.h:109
@ LTENR_SRB2
Definition: LTE_NR.h:112
@ LTENR_SRB1
Definition: LTE_NR.h:111
@ LTENR_SRB0
Definition: LTE_NR.h:110
@ LTENR_NA
Definition: LTE_NR.h:113
@ LTENR_LAST
Definition: LTE_NR.h:114
enum_LTENR_NSA_MODES
Definition: LTE_NR.h:421
@ NSA_MODE_OPTION4A
Definition: LTE_NR.h:426
@ NSA_MODE_OPTION4
Definition: LTE_NR.h:425
@ NSA_MODE_OPTION7X
Definition: LTE_NR.h:429
@ NSA_MODE_OPTION3
Definition: LTE_NR.h:422
@ NSA_MODE_OPTION3A
Definition: LTE_NR.h:423
@ NSA_MODE_LAST
Definition: LTE_NR.h:430
@ NSA_MODE_OPTION7
Definition: LTE_NR.h:427
@ NSA_MODE_OPTION3X
Definition: LTE_NR.h:424
@ NSA_MODE_OPTION7A
Definition: LTE_NR.h:428
enum enum_LTENR_RLCMode LTENR_RLCMODE
void fn_NetSim_LTENR_SDAP_HandleMacOut()
Definition: LTENR_SDAP.c:327
void fn_NetSim_LTENR_GNBRLC_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
Definition: LTENR_RLC.c:83
struct stru_LTENR_AssociatedUEPhyInfo * ptrLTENR_ASSOCIATEDUEPHYINFO
Definition: LTE_NR.h:59
void LTENR_RadioMeasurements_PBSCH_Log(ptrLTENR_GNBPHY phy, int CA_ID, ptrLTENR_ASSOCIATEDUEPHYINFO info)
void fn_NetSim_LTENR_HARQ_TransmitUpLinkCBG(NETSIM_ID gnbId, NETSIM_ID gnbIf, ptrLTENR_ASSOCIATEDUEPHYINFO info, int caId)
Definition: LTENR_HARQ.c:706
void fn_NetSim_LTENR_SNED_TO_XN_INTERFACE(NetSim_PACKET *packet, NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin, char *gateway, char *nexthop, bool flag)
Definition: LTENR_NSA.c:234
enum_LTENR_RLCMode
Types of RLC Mode.
Definition: LTE_NR.h:165
@ LTENR_RLCMODE_TM
Definition: LTE_NR.h:166
@ LTENR_RLCMODE_AM
Definition: LTE_NR.h:168
@ LTENR_RLCMODE_UM
Definition: LTE_NR.h:167
static const char * strLTENR_DEVICEINTERFACETYPE[]
Definition: LTE_NR.h:192
NETSIM_ID fn_NetSim_LTENR_INTERFACE_ID_FROM_CONNECTED_DEVICE(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r)
void fn_NetSim_LTENR_InitAssociation()
NETSIM_ID fn_NetSim_LTENR_CORE_INTERFACE(NETSIM_ID d, LTENR_INTERFACE_TYPE type)
enum_LTE_NR_DEVICE_TYPE
Types of DEVICE.
Definition: LTE_NR.h:70
@ LTENR_DEVICETYPE_GNB
Definition: LTE_NR.h:72
@ LTENR_DEVICETYPE_AMF
Definition: LTE_NR.h:75
@ LTENR_DEVICETYPE_LAST
Definition: LTE_NR.h:78
@ LTENR_DEVICETYPE_EPC
Definition: LTE_NR.h:74
@ LTENR_DEVICETYPE_UPF
Definition: LTE_NR.h:77
@ LTENR_DEVICETYPE_UE
Definition: LTE_NR.h:71
@ LTENR_DEVICETYPE_ENB
Definition: LTE_NR.h:73
@ LTENR_DEVICETYPE_SMF
Definition: LTE_NR.h:76
bool fn_NetSim_LTENR_NSA_IS_CORE_SPLIT_EXISTS(NETSIM_ID d, NETSIM_ID in)
UINT str_to_bytes(char *bytes)
void LTENR_fn_InterferenceInit()
enum enum_LTENR_TransportChannel LTENR_TRANSPORTCHANNEL
void fn_NetSim_LTENR_RegisterCallBackForAssociation(void(*fnCallBack)(NETSIM_ID gnbId, NETSIM_ID gnbIf, NETSIM_ID ueId, NETSIM_ID ueIf, bool isAssociated))
void fn_NetSim_LTENR_UERLC_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_RLC.c:64
NETSIM_ID LTENR_FIND_ASSOCIATEINTERFACE(NETSIM_ID d, NETSIM_ID i, NETSIM_ID rd)
void LTENR_PROTOCOLDATA_FREE(NETSIM_ID d, NETSIM_ID in)
struct stru_LTENR_Cell_List * ptrLTENR_Cell_List
void fn_NetSim_LTENR_RRC_MacIn()
Definition: LTENR_RRC.c:84
void LTENR_RadioMeasurements_PDSCH_Log(ptrLTENR_GNBPHY phy, int CA_ID, ptrLTENR_ASSOCIATEDUEPHYINFO info)
enum enum_LTENR_CELL_TYPES LTENR_CELL_TYPES
void fn_NetSim_LTENR_UERRC_Init(NETSIM_ID ueId, NETSIM_ID ueInterface)
Definition: LTENR_GNBRRC.c:977
void fn_NetSim_LTENR_SMF_INIT(NETSIM_ID SMFID)
void fn_NetSim_LTENR_AMF_INIT(NETSIM_ID AMFID)
Definition: LTENR_AMF.c:447
struct stru_LTE_NR_NGAP_DATA * ptrLTE_NR_NGAP_DATA
void fn_NetSim_LTENR_HARQ_StoreDLPacket()
Definition: LTENR_HARQ.c:577
enum enum_LTENR_CELL_INTERFERENCE_TYPE LTENR_CELL_INTERFERENCEACE_TYPE
void close_ltenr_PRB_log()
Definition: LTENR_PRB.c:64
NETSIM_ID fn_NetSim_LTENR_NSA_Splitting_Alogrithm_For_EPC(NETSIM_ID dest)
Definition: LTENR_NSA.c:270
void fn_NetSim_LTENR_RLC_HandlePDUFromUpperLayer()
Definition: LTENR_RLC.c:396
struct stru_LTE_NR_N11STACK_DATA * ptrLTE_NR_N11STACK_DATA
enum_LTENR_CELL_INTERFERENCE_TYPE
Definition: LTE_NR.h:610
@ LTENR_GRADED_DISTANCE_BASED_WYNER_MODEL_INTERFERENCE
Definition: LTE_NR.h:612
@ LTENR_INTERFERENCE_OVER_THERMAL_INTERFERENCE
Definition: LTE_NR.h:614
@ NONE
Definition: LTE_NR.h:611
@ LTENR_EXACT_GEOMETRIC_MODEL_INTERFERENCE
Definition: LTE_NR.h:613
enum enum_LTE_NR_SUBLAYER LTENR_SUBLAYER
void LTENR_EPC_NetworkOut()
Definition: LTENR_EPC.c:162
void fn_NetSim_LTENR_HARQ_Init()
Definition: LTENR_HARQ.c:368
struct stru_LTENR_SublayerInfo LTENR_SUBLAYERINFO
int LTENR_Mutiplexer_LDPC_SelectBaseGraph(double TBS, double R)
void fn_NetSim_LTENR_PDCP_ReceivePDCPSDU()
Definition: LTENR_PDCP.c:776
void fn_NetSim_LTENR_GNBPDCP_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
Definition: LTENR_PDCP.c:134
struct stru_LTE_NR_NGAP_DATA LTE_NR_NGAP_DATA
void fn_NetSim_LTENR_UEPHY_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_PHY.c:75
void fn_NetSim_LTENR_HARQ_Finish()
Definition: LTENR_HARQ.c:376
enum_LTE_NR_SUBLAYER
Type to Sublayers.
Definition: LTE_NR.h:202
@ LTENR_SUBLAYER_NGAP
Definition: LTE_NR.h:203
@ LTENR_SUBLAYER_NAS_MM
Definition: LTE_NR.h:205
@ LTENR_SUBLAYER_PFCP
Definition: LTE_NR.h:207
@ LTENR_SUBLAYER_EPC
Definition: LTE_NR.h:208
@ LTENR_SUBLAYER_LAST
Definition: LTE_NR.h:217
@ LTENR_SUBLAYER_NAS_SM
Definition: LTE_NR.h:206
@ LTENR_SUBLAYER_RRC
Definition: LTE_NR.h:211
@ LTENR_SUBLAYER_NAS
Definition: LTE_NR.h:209
@ LTENR_SUBLAYER_MACSCHEDULER
Definition: LTE_NR.h:214
@ LTENR_SUBLAYER_RLC
Definition: LTE_NR.h:213
@ LTENR_SUBLAYER_PDCP
Definition: LTE_NR.h:212
@ LTENR_SUBLAYER_PHY
Definition: LTE_NR.h:216
@ LTENR_SUBLAYER_SDAP
Definition: LTE_NR.h:210
@ LTENR_SUBLAYER_MAC
Definition: LTE_NR.h:215
@ LTENR_SUBLAYER_GTP_U
Definition: LTE_NR.h:204
void fn_NetSim_LTENR_RRC_MacOut()
Definition: LTENR_RRC.c:75
void gNB_N3_Forward_packet_to_RAN(NETSIM_ID d, NETSIM_ID in, NETSIM_ID rin, NetSim_PACKET *packet)
void fn_NetSim_LTENR_UEMAC_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_MAC.c:36
void LTENR_Core_Send_Packet(NETSIM_ID src, NETSIM_ID dest, NETSIM_IPAddress srcIP, NETSIM_IPAddress destIP, void *hdr, UINT size, NETSIM_ID packetType, char *szPacketType, NETSIM_ID type)
NETSIM_ID fn_NetSim_LTENR_SEC_INTEFACE_FOR_UE(NETSIM_ID d, NETSIM_ID in)
enum enum_LTENR_PhysicalChannel LTENR_PHYSICALCHANNEL
void fn_NetSim_LTENR_NAS_Init()
Definition: LTENR_NAS.c:786
ptrLTENR_PROTODATA LTENR_PROTOCOLDATA_ALLOC(NETSIM_ID d, NETSIM_ID in)
void macOut()
Definition: LTENR_MAC.c:70
static const char * strLTENR_DEVICETYPE[]
Definition: LTE_NR.h:80
static const char * strLTENR_PHYSICALCHANNEL[]
Definition: LTE_NR.h:155
static const char * strLTENR_SRB[]
Definition: LTE_NR.h:116
UINT fn_NetSim_LTENR_HARQ_GetPRBReqdForRetx(ptrLTENR_ASSOCIATEDUEPHYINFO assocInfo, bool isUplink, int caId)
Definition: LTENR_HARQ.c:383
void fn_NetSim_LTENR_RLC_Init()
Definition: LTENR_RLC.c:47
void LTENR_NSA_XN_INTERFACE_TO_RAN(NETSIM_ID d, NETSIM_ID in, NetSim_PACKET *packet)
Definition: LTENR_NSA.c:188
void fn_NetSim_LTENR_HARQ_Transmit(NETSIM_ID gNBId, NETSIM_ID gNBIf, int caId)
Definition: LTENR_HARQ.c:715
void fn_NetSim_LTENR_AMF_PACKET_HANDLER()
Definition: LTENR_AMF.c:344
double LTENR_PHY_GetSlotEndTime(NETSIM_ID d, NETSIM_ID in)
Definition: LTENR_PHY.c:899
double LTENR_GetBLER(int tableId, int mcsIndex, int bg, int cbs, double sinr)
bool fn_NetSim_LTENR_RRC_isActive(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin)
Definition: LTENR_RRC.c:166
void LTENR_MSG_WriteTrace_APP(NetSim_PACKET *packet, char *s)
void fn_NetSim_LTENR_SDAP_HandleMacIn()
Definition: LTENR_SDAP.c:565
enum_LTENR_CELL_TYPES
Definition: LTE_NR.h:415
@ NON_MMWAVE_CELL_TYPE
Definition: LTE_NR.h:418
@ CELL_TYPE_NONE
Definition: LTE_NR.h:416
@ MMWAVE_CELL_TYPE
Definition: LTE_NR.h:417
void fn_NetSim_LTENR_SMF_UPF_PACKET_HANDLER()
void set_fast_performance()
Definition: LTE_NR.c:485
struct stru_LTE_NR_N11STACK_DATA LTE_NR_N11STACK_DATA
void fn_NetSim_LTENR_PDCP_TransmitPDCPSDU()
Definition: LTENR_PDCP.c:664
void fn_NetSim_LTENR_UEPDCP_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_PDCP.c:147
bool fn_NetSim_LTENR_NSA_IS_OPTION_X_EXISTS(NETSIM_ID d, NETSIM_ID in)
struct stru_LTE_NR_PFCP_DATA LTE_NR_PFCP_DATA
void fn_NetSim_LTENR_SDAP_Init()
Definition: LTENR_SDAP.c:124
enum_LTENR_TransportChannel
Types of Transport Channel.
Definition: LTE_NR.h:126
@ LTENR_TRANSPORTCHANNEL_LAST
Definition: LTE_NR.h:133
@ LTENR_TRANSPORTCHANNEL_DL_SCH
Definition: LTE_NR.h:130
@ LTENR_TRANSPORTCHANNEL_UL_SCH
Definition: LTE_NR.h:131
@ LTENR_TRANSPORTCHANNEL_BCH
Definition: LTE_NR.h:128
@ LTENR_TRANSPORTCHANNEL_RACH
Definition: LTE_NR.h:132
@ LTENR_TRANSPORTCHANNEL_NONE
Definition: LTE_NR.h:127
@ LTENR_TRANSPORTCHANNEL_PCH
Definition: LTE_NR.h:129
void fn_NetSim_LTENR_NSA_SN_HANDOVER_INIT()
void LTENR_GNB_SETEPC(NETSIM_ID d, NETSIM_ID in, NETSIM_ID *e, NETSIM_ID *ein)
Definition: LTENR_EPC.c:55
enum enum_LTENR_LogicalChannel LTENR_LOGICALCHANNEL
void fn_NetSim_LTENR_HARQ_StoreULPacket()
Definition: LTENR_HARQ.c:610
NETSIM_ID fn_NetSim_Get_LTENR_INTERFACE_ID_FROM_DEVICE_ID(NETSIM_ID r)
enum_LTENR_INTERFACE_TYPE
Type of Interfaces.
Definition: LTE_NR.h:179
@ nGC_INTERFACE_LTE_S1
Definition: LTE_NR.h:189
@ nGC_INTERFACE_RAN
Definition: LTE_NR.h:182
@ nGC_INTERFACE_LTE
Definition: LTE_NR.h:181
@ nGC_INTERFACE_N6
Definition: LTE_NR.h:187
@ nGC_INTERFACE_XN
Definition: LTE_NR.h:188
@ nGC_INTERFACE_N1_N2
Definition: LTE_NR.h:183
@ nGC_INTERFACE_N4
Definition: LTE_NR.h:185
@ nGC_INTERFACE_LAST
Definition: LTE_NR.h:190
@ nGC_INTERFACE_N3
Definition: LTE_NR.h:184
@ nGC_INTERFACE_N11
Definition: LTE_NR.h:186
@ nGC_INTERFACE_NULL
Definition: LTE_NR.h:180
bool fn_NetSim_LTENR_RRC_isConnected(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin)
Definition: LTENR_RRC.c:140
void fn_NetSim_LTENR_RLC_TransmissionStatusNotification(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin, UINT size, LTENR_LOGICALCHANNEL logicalChannel)
Definition: LTENR_RLC.c:423
struct stru_LTE_NR_GTPU_DATA LTE_NR_GTPU_DATA
enum enum_LTE_NR_DEVICE_TYPE LTENR_DEVICETYPE
void fn_NetSim_LTENR_CORE_Init()
void fn_NetSim_LTENR_NON_RAN_GNB_INIT(NETSIM_ID GNBID)
double str_to_time(char *time)
void LTENR_EPC_ALLOC(NETSIM_ID d, NETSIM_ID in)
Definition: LTENR_EPC.c:31
void fn_NetSim_LTENR_RRC_Init()
Definition: LTENR_RRC.c:65
void macIn()
Definition: LTENR_MAC.c:89
void LTENR_ASSOCIATEINFO_ADD(NETSIM_ID d, NETSIM_ID in, NETSIM_ID rd, NETSIM_ID rin)
void LTENR_Multiplexer_ComputeCodeBlockSize(int LDPCG, UINT TBS, UINT *C, UINT *cbs, UINT *cbs_)
bool ltenr_validate_list(void *ls, UINT size, UINT next, char *file, UINT line)
void * LTENR_SUBLAYER_DATA_GET(NETSIM_ID d, NETSIM_ID in, LTENR_DEVICETYPE devType, LTENR_SUBLAYER subLayer)
void fn_NetSim_LTENR_UESDAP_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_SDAP.c:133
void fn_NetSim_LTENR_UPF_INIT(NETSIM_ID UPFID)
void fn_NetSim_LTENR_RLC_HandleMACIN()
Definition: LTENR_RLC.c:518
struct stru_LTE_NR_GTPU_DATA * ptrLTE_NR_GTPU_DATA
void fn_NetSim_LTENR_GNB_XN_INTERFACE_INIT()
static bool isFastProcessing
Definition: LTE_NR.h:64
static const char * strLTENR_CELL_INTERFERENCEACE_TYPE[]
Definition: LTE_NR.h:616
static LTENR_SUBLAYERINFO subLayerInfo[LTENR_SUBLAYER_LAST]
Definition: LTE_NR.h:288
enum_LTENR_PhysicalChannel
Types of Physical Channel.
Definition: LTE_NR.h:145
@ LTENR_PHYSICALCHANNEL_PUCCH
Definition: LTE_NR.h:152
@ LTENR_PHYSICALCHANNEL_PUSCH
Definition: LTE_NR.h:151
@ LTENR_PHYSICALCHANNEL_PBCH
Definition: LTE_NR.h:147
@ LTENR_PHYSICALCHANNEL_PDCCH
Definition: LTE_NR.h:148
@ LTENR_PHYSICALCHANNEL_PRACH
Definition: LTE_NR.h:150
@ LTENR_PHYSICALCHANNEL_PDSCH
Definition: LTE_NR.h:149
@ LTENR_PHYSICALCHANNEL_NONE
Definition: LTE_NR.h:146
@ LTENR_PHYSICALCHANNEL_LAST
Definition: LTE_NR.h:153
void fn_NetSim_LTENR_PHY_Init()
Definition: LTENR_PHY.c:66
bool isLTENR_RANInterface(NETSIM_ID d, NETSIM_ID in)
void gNB_N3_Forward_packet_to_MAC(NETSIM_ID d, NETSIM_ID rin, NetSim_PACKET *packet)
struct stru_LTE_NR_Protocol_Data LTENR_PROTODATA
struct stru_LTENR_SublayerInfo * ptrLTENR_SUBLAYERINFO
int LTENR_ConvertStrToEnumWithErrorMsg(const char **enumstr, const char *str, int length, char *name)
Definition: LTE_NR.c:500
void fn_NetSim_SN_HANDOVER_PACKET_HANDLER()
bool fn_NetSim_LTENR_HARQ_GetNDIFlag(ptrLTENR_ASSOCIATEDUEPHYINFO assocInfo, bool isUplink, int caId)
Definition: LTENR_HARQ.c:430
enum enum_LTENR_SRB LTENR_SRB
void LTENR_SUBLAYER_DATA_SET(NETSIM_ID d, NETSIM_ID in, LTENR_DEVICETYPE devType, LTENR_SUBLAYER subLayer, void *data)
void LTENR_RadioMeasurements_Init()
struct stru_LTENR_ASSOCIATIONINFO LTENR_ASSOCIATIONINFO
enum_LTENR_LogicalChannel
Types of Logical Channel.
Definition: LTE_NR.h:90
@ LTENR_LOGICALCHANNEL_DTCH
Definition: LTE_NR.h:96
@ LTENR_LOGICALCHANNEL_DCCH
Definition: LTE_NR.h:95
@ LTENR_LOGICALCHANNEL_NONE
Definition: LTE_NR.h:91
@ LTENR_LOGICALCHANNEL_CCCH
Definition: LTE_NR.h:94
@ LTENR_LOGICALCHANNEL_PCCH
Definition: LTE_NR.h:92
@ LTENR_LOGICALCHANNEL_LAST
Definition: LTE_NR.h:97
@ LTENR_LOGICALCHANNEL_BCCH
Definition: LTE_NR.h:93
bool isLTE_NRInterface(NETSIM_ID d, NETSIM_ID i)
void fn_NetSim_LTE_MAC_PRBLOG()
Definition: LTENR_PRB.c:33
UINT fn_NetSim_LTENR_RLC_BufferStatusNotificaton(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin, LTENR_LOGICALCHANNEL logicalChannel)
Definition: LTENR_RLC.c:470
void fn_NetSim_LTENR_GNBPHY_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
Definition: LTENR_PHY.c:79
ptrLTENR_PROTODATA LTENR_PROTODATA_GET(NETSIM_ID d, NETSIM_ID in)
int fn_NetSim_LTENR_Cell_Metrics_F(PMETRICSWRITER metricsWriter)
Definition: LTENR_PDCP.c:890
bool LTENR_SUBLAYER_DATA_IsInitialized(NETSIM_ID d, NETSIM_ID in, LTENR_DEVICETYPE devType, LTENR_SUBLAYER subLayer)
NETSIM_ID fn_NetSim_FIND_LTE_INTERFACE(NETSIM_ID r)
bool fn_NetSim_isDeviceLTENR(NETSIM_ID r, NETSIM_ID rin)
struct stru_LTE_NR_PFCP_DATA * ptrLTE_NR_PFCP_DATA
void LTENR_FreeBLERTable()
bool isBLEREnable(NETSIM_ID d, NETSIM_ID in)
enum enum_LTENR_INTERFACE_TYPE LTENR_INTERFACE_TYPE
void fn_NetSim_LTENR_GNB_CORE_PACKET_HANDLER()
NETSIM_ID LTENR_HELPER_Get_connected_interface(NETSIM_ID d, NETSIM_ID r)
struct stru_LTENR_Cell_List LTENR_Cell_List
void HARQAssociationHandler(NETSIM_ID gnbId, NETSIM_ID gnbIf, NETSIM_ID ueId, NETSIM_ID ueIf, bool isAssociated)
Definition: LTENR_HARQ.c:354
void LTENR_MSG_WriteTrace(NetSim_PACKET *packet, char *s)
ptrLTENR_Cell_List gnbDCList
Definition: LTE_NR.h:829
void fn_NetSim_LTENR_PDCP_Init()
Definition: LTENR_PDCP.c:115
void fn_NetSim_LTENR_LTE_S1_CONTROL_PACKET_TO_RAN(NETSIM_ID d, NETSIM_ID RANIF, NetSim_PACKET *packet)
void fnCallSublayer(LTENR_SUBLAYER layer, int c)
ptrLTENR_Cell_List enbDCList
Definition: LTE_NR.h:830
bool LTENR_GET_PACKET_FROM_ACCESS_BUFFER()
static const char * strLTENR_TRANSPORTCHANNEL[]
Definition: LTE_NR.h:135
void fn_NetSim_LTENR_HandlePhyOut()
Definition: LTENR_PHY.c:1290
NETSIM_ID fn_NetSim_FIND_LTENR_INTERFACE(NETSIM_ID r)
bool fn_NetSim_LTENR_IS_S1_INTERFACE_EXISTS(NETSIM_ID d)
struct stru_LTE_NR_Protocol_Data * ptrLTENR_PROTODATA
void LTENR_RadioMeasurements_PUSCH_Log(ptrLTENR_GNBPHY phy, int CA_ID, ptrLTENR_ASSOCIATEDUEPHYINFO info)
void LTENR_Handover_Send_Packet(NETSIM_ID src, NETSIM_ID dest, NETSIM_IPAddress srcIP, NETSIM_IPAddress destIP, void *hdr, UINT size, NETSIM_ID packetType, char *szPacketType, NETSIM_ID type)
void LTENR_EPC_ASSOCIATION(NETSIM_ID epcId, NETSIM_ID epcIf, NETSIM_ID gnbId, NETSIM_ID gnbIf, NETSIM_ID ueId, NETSIM_ID ueIf)
Definition: LTENR_EPC.c:41
NETSIM_ID fn_NetSim_LTENR_MASTER_INTEFACE_FOR_UE(NETSIM_ID d, NETSIM_ID in)
#define print_ltenr_packet_log
Definition: LTENR_PDCP.c:34
#define print_ltenr_log
Definition: LTENR_PDCP.c:33
#define c
#define UINT
Definition: Linux.h:38
void * PMETRICSWRITER
Definition: MetricsWriter.h:27
enum enum_MACProtocol MAC_LAYER_PROTOCOL
Definition: main.h:134
Definition: List.h:43
LTENR_INTERFACE_TYPE IFType
Definition: LTE_NR.h:389
NETSIM_ID destid
Definition: LTE_NR.h:388
NETSIM_IPAddress destIPaddr
Definition: LTE_NR.h:387
NETSIM_IPAddress destIPaddr
Definition: LTE_NR.h:402
LTENR_INTERFACE_TYPE IFType
Definition: LTE_NR.h:404
NETSIM_IPAddress destIPaddr
Definition: LTE_NR.h:357
NETSIM_ID destid
Definition: LTE_NR.h:358
LTENR_INTERFACE_TYPE IFType
Definition: LTE_NR.h:359
NETSIM_ID destid
Definition: LTE_NR.h:373
LTENR_INTERFACE_TYPE IFType
Definition: LTE_NR.h:374
NETSIM_IPAddress destIPaddr
Definition: LTE_NR.h:372
MAC_LAYER_PROTOCOL macProtocol
Definition: LTE_NR.h:444
double ueMeasurementReportPeriod
Definition: LTE_NR.h:470
ptrLTE_NR_N11STACK_DATA N11STACKDATA
Definition: LTE_NR.h:462
LTENR_DEVICETYPE deviceType
Definition: LTE_NR.h:440
NETSIM_ID associateCount
Definition: LTE_NR.h:447
LTENR_NSA_MODES NSA_MODE
Definition: LTE_NR.h:512
LTENR_CELL_TYPES SecCellType
Definition: LTE_NR.h:511
LTENR_INTERFACE_TYPE IFType
Definition: LTE_NR.h:443
ptrLTE_NR_PFCP_DATA PFCPDATA
Definition: LTE_NR.h:454
void * LTENR_LAYER_DATA[LTENR_DEVICETYPE_LAST][LTENR_SUBLAYER_LAST]
Definition: LTE_NR.h:503
ptrLTENR_ASSOCIATIONINFO associationInfo
Definition: LTE_NR.h:502
ptrLTE_NR_NGAP_DATA NGAPDATA
Definition: LTE_NR.h:450
ptrLTE_NR_GTPU_DATA GTPUDATA
Definition: LTE_NR.h:458
NETSIM_ID N11STACK_COUNT
Definition: LTE_NR.h:460
LTENR_CELL_TYPES MasterCellType
Definition: LTE_NR.h:510
struct stru_LTENR_ASSOCIATIONINFO * next
Definition: LTE_NR.h:328
NETSIM_ID in
Definition: LTE_NR.h:826
NETSIM_ID gnbIf
Definition: LTENR_PHY.h:180
NETSIM_ID gnbId
Definition: LTENR_PHY.h:179
LTENR_SUBLAYER subLayer
Definition: LTE_NR.h:283