25#ifndef _NETSIM_LTENR_NETWORKSLICING_H_
26#define _NETSIM_LTENR_NETWORKSLICING_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 )
43 typedef int SLICE_DIFFERENTIATOR;
44#define SLICE_DIFFERENTIATOR_NO_SLICE ((int)0xffffffff)
45#define MIN_SLICE_DIFFERENTIATOR ((int)0xffffffff)
46#define MAX_SLICE_DIFFERENTIATOR 0xfffffffe
50 SLICE_SERVICE_TYPE_NONE = 0x00000000,
51 SLICE_SERVICE_TYPE_EMBB = 0x00000001,
52 SLICE_SERVICE_TYPE_URLLC = 0x00000002,
53 SLICE_SERVICE_TYPE_MIOT = 0x00000003,
54 SLICE_SERVICE_TYPE_V2X = 0x00000004,
55 SLICE_SERVICE_TYPE_UNKNOWN,
57 static const char* strSLICE_SERVICE_TYPE[] = {
"BE",
"EMBB",
"URLLC",
"MIOT",
"V2X",
"UNKNOWN" };
61 SLICE_STATUS_UNKNOWN = 0x00000000,
62 SLICE_STATUS_CONFIGURED = 0x00000001,
63 SLICE_STATUS_ALLOWED = 0x00000002,
64 SLICE_STATUS_REJECTED_NOT_AVAILABLE_IN_PLMN = 0x00000003,
65 SLICE_STATUS_REJECTED_NOT_AVAILABLE_IN_REGISTERED_AREA = 0x00000004,
74 double minResourceShare;
75 double maxResourceShare;
77 double resourceAllocationPercentage;
79 double sumAvgThroughput;
80 }SLICEBANDWIDTH, * ptrSLICEBANDWIDTH;
84 LTENR_RESOURCE_SHARING_STATIC,
85 LTENR_RESOURCE_SHARING_DYNAMIC,
86 }LTENR_RESOURCE_SHARING_TECHNIQUE;
87 static const char* strLTENR_RESOURCE_SHARING_TECHNIQUE[] = {
"STATIC",
"DYNAMIC" };
92 SLICE_DIFFERENTIATOR sliceDifferentiator;
93 SLICE_SERVICE_TYPE sliceServiceType;
94 SLICE_STATUS sliceStatus;
96 SLICEBANDWIDTH uplinkBandwidth;
97 SLICEBANDWIDTH downlinkBandwidth;
98 }NetworkSliceInfo, * ptrNetworkSliceInfo;
103 NETSIM_ID sliceCount;
104 NETSIM_ID* ueSliceId;
105 char* slicingFileName;
106 double EWMA_Learning_Rate;
107 double GBRBiasLearningRate;
110 double sliceIndexBiasLearningRate;
112 LTENR_RESOURCE_SHARING_TECHNIQUE rsrcSharingTechnique;
113 NetworkSliceInfo Info[19];
114 }LTENR_NWSLICING, * ptrLTENR_NWSLICING;
115 ptrLTENR_NWSLICING nws;
116 static inline bool IsUEPartOfStaticSlice(NETSIM_ID ueId, UINT sliceId) {
117 return ((nws->rsrcSharingTechnique == LTENR_RESOURCE_SHARING_DYNAMIC)
118 || ((nws->rsrcSharingTechnique == LTENR_RESOURCE_SHARING_STATIC)
119 && (nws->ueSliceId[ueId] == sliceId)));
122 void LTENR_ConfigureNETWORK_SLICINGConfig();