25#ifndef _NETSIM_LTE_NR_H_
26#define _NETSIM_LTE_NR_H_
28#pragma region HEADER_FILES_AND_WARNING_REMOVAL
30#pragma warning ( disable : 4090 )
31#pragma warning ( disable : 4100 )
32#pragma warning ( disable : 4189 )
33#pragma warning ( disable : 4244 )
40#pragma region LOG_MACRO
49#define LTENR_MACMULTIPLEX_HARQ_LOG
57#pragma region TYPEDEFS
63#pragma region DEVICE_TYPE
81 {
"UE",
"gNB",
"EPC",
"AMF",
"SMF",
"UPF",
"Unknown" };
84#pragma region LTENR_LogicalChannel
100 {
"NONE",
"PCCH",
"BCCH",
"CCCH",
"DCCH",
"DTCH",
"Unknown" };
103#pragma region LTENR_SRB
117 {
"SRB0",
"SRB1",
"SRB2",
"N/A",
"Unknown" };
120#pragma region LTENR_TransportChannel
136 {
"NONE",
"BCH",
"PCH",
"DL-SCH",
"UL-SCH",
"RACH",
"Unknown" };
139#pragma region LTENR_PhysicalChannel
156 {
"NONE",
"PBCH",
"PDCCH",
"PDSCH",
"PRACH",
"PUSCH",
"PUCCH",
"Unknown" };
159#pragma region LTENR_RLCMode
171 {
"Transparent Mode",
"Unacknowledged Mode",
"Acknowledged Mode" };
174#pragma region LTENR_INTERFACE_TYPE
193 {
"Invalid",
"LTE",
"5G_RAN",
"5G_N1_N2",
"5G_N3",
"5G_N4",
"5G_N11",
"5G_N6",
"5G_XN",
"LTE_S1",
"Unknown" };
196#pragma region LTE_NR_SUBLAYER
221#pragma region FUN_DEF_OUT_AND_IN
269#pragma region OUT_AND_IN_MACROS
280#pragma region LTENR_SublayerInfo
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))
323#pragma region ASSOCIATION_STRUCT_AND_APIs
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)
353#pragma region NGAP_PROTODATA
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))
368#pragma region PFCP_PROTODATA
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))
383#pragma region GTPU_PROTODATA
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))
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))
433 {
"OPTION_3",
"OPTION_3A",
"OPTION_3X",
"OPTION_4",
"OPTION_4A",
"OPTION_7",
434 "OPTION_7A",
"OPTION_7X",
"Unknown" };
437#pragma region PROTODATA_AND_APIs
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))
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))
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))
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))
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))
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))
608#pragma region INTERFERENCE_MODEL
617 {
"NO_INTERFERENCE",
"GRADED_DISTANCE_BASED_WYNER_MODEL",
"EXACT_GEOMETRIC_MODEL",
"INTERFERENCE_OVER_THERMAL" };
623#pragma region FUN_DEF_FOR_CORE_INIT
631#pragma region HELPER_APIs
652#pragma region EPC_APIs
662#pragma region FUN_DEF_FOR_INTI_METRICS_APIs
726 double LTENR_GetBLER(
int tableId,
int mcsIndex,
int bg,
int cbs,
double sinr);
744#define isLTENRControlPacket(packet) ((packet)->nPacketType == PacketType_Control && ((packet)->nControlDataType/100 == MAC_PROTOCOL_LTE_NR || (packet)->nControlDataType/100 == MAC_PROTOCOL_LTE))
747#pragma region FUN_DEF_LOGs_AND_APIs
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)
773#pragma region GLOBAL_VARIABLE_AND_UITILITY
775#define MAX_CA_COUNT (16*2)
779#define MAX_BWP_COUNT (4)
780#define MAX_LAYER_COUNT (16)
786#define CompareVal(arg0, arg1, op) \
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 \
797#pragma region PACKET_APIs
805 void* hdr,
UINT size,
815#pragma region DEBUGGER_FUN
824#pragma region 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))
839#pragma region DC_SN_FUN
846#pragma region XML_CONFIGURATION
848 #define LTENR_ConvertStrToEnum(enumName,val) LTENR_ConvertStrToEnumWithErrorMsg(str ## enumName, val, sizeof(str ## enumName)/sizeof(str ## enumName ## [0]), #enumName)
enum enum_LTENR_NSA_MODES LTENR_NSA_MODES
void LTENR_RadioMeasurements_Finish()
struct stru_LTENR_GNBPHY * ptrLTENR_GNBPHY
void fn_NetSim_LTENR_GNBMAC_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
int fn_NetSim_LTENR_SDAP_Metrics_F(PMETRICSWRITER metricsWriter)
void fn_NetSim_LTENR_MAC_Init()
void fn_NetSim_LTENR_EPC_RouteHOPacket()
void fn_NetSim_LTENR_NSA_RECV()
ptrLTENR_ASSOCIATIONINFO LTENR_ASSOCIATEINFO_FIND(NETSIM_ID d, NETSIM_ID in, NETSIM_ID rd, NETSIM_ID rin)
static const char * strLTENR_LOGICALCHANNEL[]
static const char * strLTENR_NSA_MODES[]
struct stru_LTENR_ASSOCIATIONINFO * ptrLTENR_ASSOCIATIONINFO
bool get_ltenr_log_status()
void fn_NetSim_LTENR_GNBSDAP_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
void LTENR_NotifyMACForStartingSlot()
void fn_NetSim_PHY_MOBILITY_HANDLE(NETSIM_ID d)
void fn_NetSim_LTENR_HARQ_AllocateCBG(NETSIM_ID gnbId, NETSIM_ID gnbIf, int caId)
void fn_NetSim_LTENR_Handover_RECV()
void fn_NetSim_LTENR_HARQ_HandleSlotStart(NETSIM_ID gnbId, NETSIM_ID gnbIf, int caId)
void fn_NetSim_LTENR_GNBRRC_Init(NETSIM_ID gnbId, NETSIM_ID gnbInterface)
static const char * strLTENR_RLCMODE[]
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)
enum_LTENR_SRB
Types of SRB.
enum enum_LTENR_RLCMode LTENR_RLCMODE
void fn_NetSim_LTENR_SDAP_HandleMacOut()
void fn_NetSim_LTENR_GNBRLC_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
struct stru_LTENR_AssociatedUEPhyInfo * ptrLTENR_ASSOCIATEDUEPHYINFO
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)
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)
enum_LTENR_RLCMode
Types of RLC Mode.
static const char * strLTENR_DEVICEINTERFACETYPE[]
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.
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)
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()
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)
void fn_NetSim_LTENR_SMF_INIT(NETSIM_ID SMFID)
void fn_NetSim_LTENR_AMF_INIT(NETSIM_ID AMFID)
struct stru_LTE_NR_NGAP_DATA * ptrLTE_NR_NGAP_DATA
void fn_NetSim_LTENR_HARQ_StoreDLPacket()
enum enum_LTENR_CELL_INTERFERENCE_TYPE LTENR_CELL_INTERFERENCEACE_TYPE
void close_ltenr_PRB_log()
NETSIM_ID fn_NetSim_LTENR_NSA_Splitting_Alogrithm_For_EPC(NETSIM_ID dest)
void fn_NetSim_LTENR_RLC_HandlePDUFromUpperLayer()
struct stru_LTE_NR_N11STACK_DATA * ptrLTE_NR_N11STACK_DATA
enum_LTENR_CELL_INTERFERENCE_TYPE
@ LTENR_GRADED_DISTANCE_BASED_WYNER_MODEL_INTERFERENCE
@ LTENR_INTERFERENCE_OVER_THERMAL_INTERFERENCE
@ LTENR_EXACT_GEOMETRIC_MODEL_INTERFERENCE
enum enum_LTE_NR_SUBLAYER LTENR_SUBLAYER
void LTENR_EPC_NetworkOut()
void fn_NetSim_LTENR_HARQ_Init()
struct stru_LTENR_SublayerInfo LTENR_SUBLAYERINFO
int LTENR_Mutiplexer_LDPC_SelectBaseGraph(double TBS, double R)
void fn_NetSim_LTENR_PDCP_ReceivePDCPSDU()
void fn_NetSim_LTENR_GNBPDCP_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
struct stru_LTE_NR_NGAP_DATA LTE_NR_NGAP_DATA
void fn_NetSim_LTENR_UEPHY_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
void fn_NetSim_LTENR_HARQ_Finish()
enum_LTE_NR_SUBLAYER
Type to Sublayers.
@ LTENR_SUBLAYER_MACSCHEDULER
void fn_NetSim_LTENR_RRC_MacOut()
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)
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()
ptrLTENR_PROTODATA LTENR_PROTOCOLDATA_ALLOC(NETSIM_ID d, NETSIM_ID in)
static const char * strLTENR_DEVICETYPE[]
static const char * strLTENR_PHYSICALCHANNEL[]
static const char * strLTENR_SRB[]
UINT fn_NetSim_LTENR_HARQ_GetPRBReqdForRetx(ptrLTENR_ASSOCIATEDUEPHYINFO assocInfo, bool isUplink, int caId)
void fn_NetSim_LTENR_RLC_Init()
void LTENR_NSA_XN_INTERFACE_TO_RAN(NETSIM_ID d, NETSIM_ID in, NetSim_PACKET *packet)
void fn_NetSim_LTENR_HARQ_Transmit(NETSIM_ID gNBId, NETSIM_ID gNBIf, int caId)
void fn_NetSim_LTENR_AMF_PACKET_HANDLER()
double LTENR_PHY_GetSlotEndTime(NETSIM_ID d, NETSIM_ID in)
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)
void LTENR_MSG_WriteTrace_APP(NetSim_PACKET *packet, char *s)
void fn_NetSim_LTENR_SDAP_HandleMacIn()
void fn_NetSim_LTENR_SMF_UPF_PACKET_HANDLER()
void set_fast_performance()
struct stru_LTE_NR_N11STACK_DATA LTE_NR_N11STACK_DATA
void fn_NetSim_LTENR_PDCP_TransmitPDCPSDU()
void fn_NetSim_LTENR_UEPDCP_Init(NETSIM_ID ueId, NETSIM_ID ueIf)
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()
enum_LTENR_TransportChannel
Types of Transport Channel.
@ LTENR_TRANSPORTCHANNEL_LAST
@ LTENR_TRANSPORTCHANNEL_DL_SCH
@ LTENR_TRANSPORTCHANNEL_UL_SCH
@ LTENR_TRANSPORTCHANNEL_BCH
@ LTENR_TRANSPORTCHANNEL_RACH
@ LTENR_TRANSPORTCHANNEL_NONE
@ LTENR_TRANSPORTCHANNEL_PCH
void fn_NetSim_LTENR_NSA_SN_HANDOVER_INIT()
void LTENR_GNB_SETEPC(NETSIM_ID d, NETSIM_ID in, NETSIM_ID *e, NETSIM_ID *ein)
enum enum_LTENR_LogicalChannel LTENR_LOGICALCHANNEL
void fn_NetSim_LTENR_HARQ_StoreULPacket()
NETSIM_ID fn_NetSim_Get_LTENR_INTERFACE_ID_FROM_DEVICE_ID(NETSIM_ID r)
enum_LTENR_INTERFACE_TYPE
Type of Interfaces.
bool fn_NetSim_LTENR_RRC_isConnected(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin)
void fn_NetSim_LTENR_RLC_TransmissionStatusNotification(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin, UINT size, LTENR_LOGICALCHANNEL logicalChannel)
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)
void fn_NetSim_LTENR_RRC_Init()
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)
void fn_NetSim_LTENR_UPF_INIT(NETSIM_ID UPFID)
void fn_NetSim_LTENR_RLC_HandleMACIN()
struct stru_LTE_NR_GTPU_DATA * ptrLTE_NR_GTPU_DATA
void fn_NetSim_LTENR_GNB_XN_INTERFACE_INIT()
static bool isFastProcessing
static const char * strLTENR_CELL_INTERFERENCEACE_TYPE[]
static LTENR_SUBLAYERINFO subLayerInfo[LTENR_SUBLAYER_LAST]
enum_LTENR_PhysicalChannel
Types of Physical Channel.
@ LTENR_PHYSICALCHANNEL_PUCCH
@ LTENR_PHYSICALCHANNEL_PUSCH
@ LTENR_PHYSICALCHANNEL_PBCH
@ LTENR_PHYSICALCHANNEL_PDCCH
@ LTENR_PHYSICALCHANNEL_PRACH
@ LTENR_PHYSICALCHANNEL_PDSCH
@ LTENR_PHYSICALCHANNEL_NONE
@ LTENR_PHYSICALCHANNEL_LAST
void fn_NetSim_LTENR_PHY_Init()
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)
void fn_NetSim_SN_HANDOVER_PACKET_HANDLER()
bool fn_NetSim_LTENR_HARQ_GetNDIFlag(ptrLTENR_ASSOCIATEDUEPHYINFO assocInfo, bool isUplink, int caId)
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.
@ LTENR_LOGICALCHANNEL_DTCH
@ LTENR_LOGICALCHANNEL_DCCH
@ LTENR_LOGICALCHANNEL_NONE
@ LTENR_LOGICALCHANNEL_CCCH
@ LTENR_LOGICALCHANNEL_PCCH
@ LTENR_LOGICALCHANNEL_LAST
@ LTENR_LOGICALCHANNEL_BCCH
bool isLTE_NRInterface(NETSIM_ID d, NETSIM_ID i)
void fn_NetSim_LTE_MAC_PRBLOG()
UINT fn_NetSim_LTENR_RLC_BufferStatusNotificaton(NETSIM_ID d, NETSIM_ID in, NETSIM_ID r, NETSIM_ID rin, LTENR_LOGICALCHANNEL logicalChannel)
void fn_NetSim_LTENR_GNBPHY_Init(NETSIM_ID gnbId, NETSIM_ID gnbIf)
ptrLTENR_PROTODATA LTENR_PROTODATA_GET(NETSIM_ID d, NETSIM_ID in)
int fn_NetSim_LTENR_Cell_Metrics_F(PMETRICSWRITER metricsWriter)
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)
void LTENR_MSG_WriteTrace(NetSim_PACKET *packet, char *s)
ptrLTENR_Cell_List gnbDCList
void fn_NetSim_LTENR_PDCP_Init()
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
bool LTENR_GET_PACKET_FROM_ACCESS_BUFFER()
static const char * strLTENR_TRANSPORTCHANNEL[]
void fn_NetSim_LTENR_HandlePhyOut()
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)
NETSIM_ID fn_NetSim_LTENR_MASTER_INTEFACE_FOR_UE(NETSIM_ID d, NETSIM_ID in)
#define print_ltenr_packet_log
enum enum_MACProtocol MAC_LAYER_PROTOCOL
LTENR_INTERFACE_TYPE IFType
NETSIM_IPAddress destIPaddr
NETSIM_IPAddress destIPaddr
LTENR_INTERFACE_TYPE IFType
NETSIM_IPAddress destIPaddr
LTENR_INTERFACE_TYPE IFType
LTENR_INTERFACE_TYPE IFType
NETSIM_IPAddress destIPaddr
MAC_LAYER_PROTOCOL macProtocol
double InteruptionTime_ms
double ueMeasurementReportPeriod
ptrLTE_NR_N11STACK_DATA N11STACKDATA
LTENR_DEVICETYPE deviceType
LTENR_CELL_TYPES SecCellType
LTENR_INTERFACE_TYPE IFType
ptrLTE_NR_PFCP_DATA PFCPDATA
void * LTENR_LAYER_DATA[LTENR_DEVICETYPE_LAST][LTENR_SUBLAYER_LAST]
bool isoutOfOrderDelivery
ptrLTENR_ASSOCIATIONINFO associationInfo
ptrLTE_NR_NGAP_DATA NGAPDATA
ptrLTE_NR_GTPU_DATA GTPUDATA
LTENR_CELL_TYPES MasterCellType
struct stru_LTENR_ASSOCIATIONINFO * next