This repository was archived by the owner on Feb 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 109
Expand file tree
/
Copy pathLteMac.ned
More file actions
485 lines (411 loc) · 22.8 KB
/
LteMac.ned
File metadata and controls
485 lines (411 loc) · 22.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
//
// SimuLTE
//
// This file is part of a software released under the license included in file
// "license.pdf". This license can be also found at http://www.ltesimulator.com/
// The above file and the present reference are part of the software itself,
// and cannot be removed from it.
//
package lte.stack.mac;
//
// Interface for the MAC layer of LTE Stack.
//
moduleinterface LteMac {
parameters:
@display("i=block/mac");
string interfaceTableModule;
gates:
input RLC_to_MAC; // RLC to MAC
output MAC_to_RLC; // MAC to RLC
input PHY_to_MAC; // PHY to MAC
output MAC_to_PHY; // MAC to PHY
}
//
// Base module for the MAC layer of LTE Stack.
//
simple LteMacBase like LteMac {
parameters:
@display("i=block/mac");
string interfaceTableModule;
//# Mac Queues
int queueSize @unit(B) = default(2MiB); // MAC Buffers queue size
//# Mac MIB
bool muMimo = default(true);
//# H-ARQ
int harqProcesses = default(8);
int maxHarqRtx = default(3);
//#
//# Statistics recording
//#
@signal[macThroughputIntervalDl];
@statistic[macThroughputIntervalDl](title="Throughput at the MAC layer DL"; unit="Bps"; source="macThroughputIntervalDl"; record=mean,vector,timeavg);
@signal[macThroughputIntervalUl];
@statistic[macThroughputIntervalUl](title="Throughput at the MAC layer UL"; unit="Bps"; source="macThroughputIntervalUl"; record=mean,vector,timeavg);
@signal[macCellThroughputIntervalUl];
@statistic[macCellThroughputIntervalUl](title="Cell Throughput at the MAC layer UL"; unit="Bps"; source="macCellThroughputIntervalUl"; record=mean,vector,timeavg);
@signal[macCellThroughputIntervalDl];
@statistic[macCellThroughputIntervalDl](title="Cell Throughput at the MAC layer DL"; unit="Bps"; source="macCellThroughputIntervalDl"; record=mean,vector,timeavg);
@signal[macPacketSizeDl];
@statistic[macPacketSizeDl](title="Packet size at the MAC layer DL"; unit="Bps"; source="macPacketSizeDl"; record=sum,mean,vector,timeavg);
@signal[macPacketSizeUl];
@statistic[macPacketSizeUl](title="Packet size at the MAC layer UL"; unit="Bps"; source="macPacketSizeUl"; record=sum,mean,vector,timeavg);
@signal[macDelayDl];
@statistic[macDelayDl](title="Delay at the MAC layer UL"; unit="s"; source="macDelayDl"; record=mean,vector);
@signal[macThroughputDl];
@statistic[macThroughputDl](title="Throughput at the MAC layer DL"; unit="Bps"; source="macThroughputDl"; record=mean,vector,timeavg,last);
@signal[macDelayUl];
@statistic[macDelayUl](title="Delay at the MAC layer UL"; unit="s"; source="macDelayUl"; record=mean,vector);
@signal[macThroughputUl];
@statistic[macThroughputUl](title="Throughput at the MAC layer UL"; unit="Bps"; source="macThroughputUl"; record=mean,vector,timeavg,last);
@signal[macCellThroughputUl];
@statistic[macCellThroughputUl](title="Cell Throughput at the MAC layer UL"; unit="Bps"; source="macCellThroughputUl"; record=mean,vector,timeavg,last);
@signal[macCellThroughputDl];
@statistic[macCellThroughputDl](title="Cell Throughput at the MAC layer DL"; unit="Bps"; source="macCellThroughputDl"; record=mean,vector,timeavg,last);
@signal[macCellPacketLossDl];
@statistic[macCellPacketLossDl](title="Mac Cell Packet Loss Dl"; unit=""; source="macCellPacketLossDl"; record=mean);
@signal[macCellPacketLossUl];
@statistic[macCellPacketLossUl](title="Mac Cell Packet Loss Ul"; unit=""; source="macCellPacketLossUl"; record=mean);
@signal[macPacketLossUl];
@statistic[macPacketLossUl](title="Mac Packet Loss Ul"; unit=""; source="macPacketLossUl"; record=mean);
@signal[macPacketLossDl];
@statistic[macPacketLossDl](title="Mac Packet Loss Dl"; unit=""; source="macPacketLossDl"; record=mean);
@signal[macBufferOverFlowDl];
@statistic[macBufferOverFlowDl](title="Mac buffer overflow as function of time"; unit="Byte/s"; source="macBufferOverFlowDl"; record=mean);
@signal[macBufferOverFlowUl];
@statistic[macBufferOverFlowUl](title="Mac buffer overflow as function of time"; unit="Byte/s"; source="macBufferOverFlowUl"; record=mean);
@signal[macBufferOverFlowD2D];
@statistic[macBufferOverFlowD2D](title="Mac buffer overflow as function of time"; unit="Byte/s"; source="macBufferOverFlowD2D"; record=mean);
@signal[harqErrorRateUl];
@statistic[harqErrorRateUl](title="Harq Error Rate Ul"; unit=""; source="harqErrorRateUl"; record=mean,vector);
@signal[harqErrorRateDl];
@statistic[harqErrorRateDl](title="Harq Error Rate Dl"; unit=""; source="harqErrorRateDl"; record=mean,vector);
@signal[harqErrorRate_1st_Ul];
@statistic[harqErrorRate_1st_Ul](title="Harq Error Rate Ul"; unit=""; source="harqErrorRate_1st_Ul"; record=mean,vector);
@signal[harqErrorRate_1st_Dl];
@statistic[harqErrorRate_1st_Dl](title="Harq Error Rate Dl"; unit=""; source="harqErrorRate_1st_Dl"; record=mean,vector);
@signal[harqErrorRate_2nd_Ul];
@statistic[harqErrorRate_2nd_Ul](title="Harq Error Rate Ul"; unit=""; source="harqErrorRate_2nd_Ul"; record=mean,vector);
@signal[harqErrorRate_2nd_Dl];
@statistic[harqErrorRate_2nd_Dl](title="Harq Error Rate Dl"; unit=""; source="harqErrorRate_2nd_Dl"; record=mean,vector);
@signal[harqErrorRate_3rd_Ul];
@statistic[harqErrorRate_3rd_Ul](title="Harq Error Rate Ul"; unit=""; source="harqErrorRate_3rd_Ul"; record=mean,vector);
@signal[harqErrorRate_3rd_Dl];
@statistic[harqErrorRate_3rd_Dl](title="Harq Error Rate Dl"; unit=""; source="harqErrorRate_3rd_Dl"; record=mean,vector);
@signal[harqErrorRate_4th_Ul];
@statistic[harqErrorRate_4th_Ul](title="Harq Error Rate Ul"; unit=""; source="harqErrorRate_4th_Ul"; record=mean,vector);
@signal[harqErrorRate_4th_Dl];
@statistic[harqErrorRate_4th_Dl](title="Harq Error Rate Dl"; unit=""; source="harqErrorRate_4th_Dl"; record=mean,vector);
@signal[receivedPacketFromUpperLayer];
@statistic[receivedPacketFromUpperLayer](source="receivedPacketFromUpperLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@signal[receivedPacketFromLowerLayer];
@statistic[receivedPacketFromLowerLayer](source="receivedPacketFromLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@signal[sentPacketToUpperLayer];
@statistic[sentPacketToUpperLayer](source="sentPacketToUpperLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@signal[sentPacketToLowerLayer];
@statistic[sentPacketToLowerLayer](source="sentPacketToLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@signal[measuredItbs];
@statistic[measuredItbs](title="TBS index"; unit=""; source="measuredItbs"; record=mean,vector);
gates:
//#
//# Gates connecting RLC and MAC Layers
//#
input RLC_to_MAC; // RLC to MAC
output MAC_to_RLC; // MAC to RLC
//#
//# Gates connecting MAC and PHY Layers
//#
input PHY_to_MAC; // PHY to MAC
output MAC_to_PHY; // MAC to PHY
}
//
// User Equipment MAC layer of LTE stack
//
simple LteMacUe extends LteMacBase
{
parameters:
@class("LteMacUe");
}
//
// D2D-capable User Equipment MAC layer of LTE stack
//
simple LteMacUeD2D extends LteMacUe {
parameters:
@class("LteMacUeD2D");
bool usePreconfiguredTxParams = default(false);
int d2dCqi = default(7);
@signal[harqErrorRate_1st_D2D];
@statistic[harqErrorRate_1st_D2D](title="Harq Error Rate D2D 1st Tx"; unit=""; source="harqErrorRate_1st_D2D"; record=mean,vector);
@signal[harqErrorRate_2nd_D2D];
@statistic[harqErrorRate_2nd_D2D](title="Harq Error Rate D2D 2nd Tx"; unit=""; source="harqErrorRate_2nd_D2D"; record=mean,vector);
@signal[harqErrorRate_3rd_D2D];
@statistic[harqErrorRate_3rd_D2D](title="Harq Error Rate D2D 3rd Tx"; unit=""; source="harqErrorRate_3rd_D2D"; record=mean,vector);
@signal[harqErrorRate_4th_D2D];
@statistic[harqErrorRate_4th_D2D](title="Harq Error Rate D2D 4th Tx"; unit=""; source="harqErrorRate_4th_D2D"; record=mean,vector);
@signal[harqErrorRateD2D];
@statistic[harqErrorRateD2D](title="Harq Error Rate D2D"; unit=""; source="harqErrorRateD2D"; record=mean,vector);
@signal[macPacketLossD2D];
@statistic[macPacketLossD2D](title="Mac Packet Loss D2D"; unit=""; source="macPacketLossD2D"; record=mean);
@signal[macDelayD2D];
@statistic[macDelayD2D](title="Delay at the MAC layer D2D"; unit="s"; source="macDelayD2D"; record=mean,vector);
@signal[macThroughputD2D];
@statistic[macThroughputD2D](title="Throughput at the MAC layer D2D"; unit="Bps"; source="macThroughputD2D"; record=mean);
@signal[rcvdD2DModeSwitchNotification];
@statistic[rcvdD2DModeSwitchNotification](title="Reception of mode switch notification (tx side)"; unit=""; source="rcvdD2DModeSwitchNotification"; record=count,vector);
}
//
// eNodeB MAC layer of LTE stack
//
simple LteMacEnb extends LteMacBase {
parameters:
@class("LteMacEnb");
volatile xml optSolution = default(xmldoc("solution.sol"));
//#
//# AMC Parameters
//#
// AMC Mode: "auto", "piloted", "multi", "das", "D2D"
string amcMode = default("AUTO");
//Min disance used to pair two MuMimo UE
int muMimoMinDistance =default(50);
// resource allocation type ("distributed" or "localized")
string rbAllocationType = default("localized");
// summary feedback confidence function lower bound
double summaryLowerBound @unit(s) = default(5ms);
// summary feedback confidence function upper bound
double summaryUpperBound @unit(s) = default(20ms);
// FeedBack Historical Base capacity in DL (number of stored feedback samples per UE)
int fbhbCapacityDl = default(5);
// FeedBack Historical Base capacity in UL (number of stored feedback samples per UE)
int fbhbCapacityUl = default(5);
// FeedBack Historical Base capacity in D2D (number of stored feedback samples per UE)
int fbhbCapacityD2D = default(5);
// wideband PMI generation parameter (0.0 means "use the mean value" )
double pmiWeight = default(0.0);
// wideband CQI generation parameter (0.0 means "use the mean value" )
double cqiWeight = default(0.0);
// AMC k CQI: used in DAS AMC mode
int kCqi = default(0);
// number of eNodeBs - set to 0 if unknown
int eNodeBCount = default(0);
//#
//# eNb Scheduler Parameters
//#
// Scheduling discipline. See LteCommon.h for discipline meaning.
string schedulingDisciplineDl = default("MAXCI");
string schedulingDisciplineUl = default("MAXCI");
// Grant type DL
string grantTypeConversationalDl = default("FITALL");
string grantTypeStreamingDl = default("FITALL");
string grantTypeInteractiveDl = default("FITALL");
string grantTypeBackgroundDl = default("FITALL");
// Grant Size Dl in bytes (-1 means max grant, i.e. 4GB)
int grantSizeConversationalDl = default(-1);
int grantSizeStreamingDl = default(-1);
int grantSizeInteractiveDl = default(-1);
int grantSizeBackgroundDl = default(-1);
// Grant type Ul
string grantTypeConversationalUl = default("FITALL");
string grantTypeStreamingUl = default("FITALL");
string grantTypeInteractiveUl = default("FITALL");
string grantTypeBackgroundUl = default("FITALL");
// Grant Size Ul in bytes (-1 means max grant, i.e. 4GB)
int grantSizeConversationalUl = default(-1);
int grantSizeStreamingUl = default(-1);
int grantSizeInteractiveUl = default(-1);
int grantSizeBackgroundUl = default(-1);
// Proportional Fair parameters
double pfAlpha = default(0.95);
// LTE Advanced Scheduler general parameters - DL
int lteAallocationRbsDl = default(1);
int lteAhistorySizeDL = default(20);
int lteAgainHistoryThCONVERSATIONALDL = default(15);
int lteAgainHistoryThSTREAMINGDL = default(15);
int lteAgainHistoryThINTERACTIVEDL = default(15);
int lteAgainHistoryThBACKGROUNDDL = default(15);
// LTE Advanced Scheduler general parameters - UL
int lteAallocationRbsUl = default(1);
int lteAhistorySizeUL = default(20);
int lteAgainHistoryThUL = default(5);
// LTE Advanced Scheduler QOS Parameters - DL
double lteAdeadlineCONVERSATIONALDL @unit(s) = default(200ms);
double lteAdeadlineSTREAMINGDL @unit(s) = default(1000ms);
double lteAdeadlineINTERACTIVEDL @unit(s) = default(50ms);
double lteAdeadlineBACKGROUNDDL @unit(s) = default(-1ms);
double lteAslackTermCONVERSATIONALDL @unit(s) = default(50ms);
double lteAslackTermSTREAMINGDL @unit(s) = default(100ms);
double lteAslackTermINTERACTIVEDL @unit(s) = default(10ms);
double lteAslackTermBACKGROUNDDL @unit(s) = default(0ms);
int lteAmaxUrgentBurstCONVERSATIONALDL @unit(byte) = default(0);
int lteAmaxUrgentBurstSTREAMINGDL @unit(byte) = default(0);
int lteAmaxUrgentBurstINTERACTIVEDL @unit(byte) = default(0);
int lteAmaxUrgentBurstBACKGROUNDDL @unit(byte) = default(200B);
int lteAmaxFairnessBurstCONVERSATIONALDL @unit(byte) = default(0);
int lteAmaxFairnessBurstSTREAMINGDL @unit(byte) = default(0);
int lteAmaxFairnessBurstINTERACTIVEDL @unit(byte) = default(0);
int lteAmaxFairnessBurstBACKGROUNDDL @unit(byte) = default(200B);
// LTE Advanced Scheduler QOS Parameters - UL
double lteAdeadlineCONVERSATIONALUL @unit(s) = default(250ms);
double lteAdeadlineSTREAMINGUL @unit(s) = default(1500ms);
double lteAdeadlineINTERACTIVEUL @unit(s) = default(2500ms);
double lteAdeadlineBACKGROUNDUL @unit(s) = default(250ms);
double lteAslackTermCONVERSATIONALUL @unit(s) = default(50ms);
double lteAslackTermSTREAMINGUL @unit(s) = default(500ms);
double lteAslackTermINTERACTIVEUL @unit(s) = default(500ms);
double lteAslackTermBACKGROUNDUL @unit(s) = default(0ms);
int lteAmaxBurstCONVERSATIONALUL @unit(byte) = default(0);
int lteAmaxBurstSTREAMINGUL @unit(byte) = default(0);
int lteAmaxBurstINTERACTIVEUL @unit(byte) = default(0);
int lteAmaxBurstBACKGROUNDUL @unit(byte) = default(0);
// LTE Advanced Scheduler PF Version - DL
bool pfTmsAwareDL = default(false);
// LTE Advanced Scheduler PF Version - UL
bool pfTmsAwareUL = default(false);
// Power Model Parameters for MBSFN frame
// minimum depleted power (W)
double zeroLevelMBSFNDL @unit(W)= default(260W); //504
// minimum depleted power (W)
double zeroLevelMBSFNUL @unit(W)= default(260W);
// idle state depleted power (W)
double idleLevelMBSFNDL @unit(W)= default(150W); //336
// idle state depleted power (W)
double idleLevelMBSFNUL @unit(W)= default(150W);
// per-block depletion unit (W)
double powerUnitMBSFNDL @unit(W)= default(3.76W); //6.72
// per-block depletion unit (W)
double powerUnitMBSFNUL @unit(W)= default(3.76W);
// maximumum depletable power (W)
double maxPowerMBSFNDL @unit(W)= default(448W); //840
// maximumum depletable power (W)
double maxPowerMBSFNUL @unit(W)= default(448W);
// Power Model Parameters for PAGING FRAMES
// minimum depleted power (W)
double zeroLevelPAGINGDL @unit(W)= default(260W);
// minimum depleted power (W)
double zeroLevelPAGINGUL @unit(W)= default(260W);
// idle state depleted power (W)
double idleLevelPAGINGDL @unit(W)= default(150W);
// idle state depleted power (W)
double idleLevelPAGINGUL @unit(W)= default(150W);
// per-block depletion unit (W)
double powerUnitPAGINGDL @unit(W)= default(3.76W);
// per-block depletion unit (W)
double powerUnitPAGINGUL @unit(W)= default(3.76W);
// maximumum depletable power (W)
double maxPowerPAGINGDL @unit(W)= default(448W);
// maximumum depletable power (W)
double maxPowerPAGINGUL @unit(W)= default(448W);
// Power Model Parameters for NORMAL frames
// minimum depleted power (W)
double zeroLevelNORMAL_FRAME_TYPEDL @unit(W)= default(260W);
// minimum depleted power (W)
double zeroLevelNORMAL_FRAME_TYPEUL @unit(W)= default(260W);
// idle state depleted power (W)
double idleLevelNORMAL_FRAME_TYPEDL @unit(W)= default(150W);
// idle state depleted power (W)
double idleLevelNORMAL_FRAME_TYPEUL @unit(W)= default(150W);
// per-block depletion unit (W)
double powerUnitNORMAL_FRAME_TYPEDL @unit(W)= default(3.76W);
// per-block depletion unit (W)
double powerUnitNORMAL_FRAME_TYPEUL @unit(W)= default(3.76W);
// maximumum depletable power (W)
double maxPowerNORMAL_FRAME_TYPEDL @unit(W)= default(448W);
// maximumum depletable power (W)
double maxPowerNORMAL_FRAME_TYPEUL @unit(W)= default(448W);
// Power Model Parameters for BROADCAST frames
// minimum depleted power (W)
double zeroLevelBROADCASTDL @unit(W)= default(260W);
// minimum depleted power (W)
double zeroLevelBROADCASTUL @unit(W)= default(260W);
// idle state depleted power (W)
double idleLevelBROADCASTDL @unit(W)= default(150W);
// idle state depleted power (W)
double idleLevelBROADCASTUL @unit(W)= default(150W);
// per-block depletion unit (W)
double powerUnitBROADCASTDL @unit(W)= default(3.76W);
// per-block depletion unit (W)
double powerUnitBROADCASTUL @unit(W)= default(3.76W);
// maximumum depletable power (W)
double maxPowerBROADCASTDL @unit(W)= default(448W);
// maximumum depletable power (W)
double maxPowerBROADCASTUL @unit(W)= default(448W);
// Power Model Parameters for SYNCRO frames
// minimum depleted power (W)
double zeroLevelSYNCRODL @unit(W)= default(260W);
// minimum depleted power (W)
double zeroLevelSYNCROUL @unit(W)= default(260W);
// idle state depleted power (W)
double idleLevelSYNCRODL @unit(W)= default(150W);
// idle state depleted power (W)
double idleLevelSYNCROUL @unit(W)= default(150W);
// per-block depletion unit (W)
double powerUnitSYNCRODL @unit(W)= default(3.76W);
// per-block depletion unit (W)
double powerUnitSYNCROUL @unit(W)= default(3.76W);
// maximumum depletable power (W)
double maxPowerSYNCRODL @unit(W)= default(448W);
// maximumum depletable power (W)
double maxPowerSYNCROUL @unit(W)= default(448W);
double prfFixedSYNCRO @unit(W)= default(5.543W);
double prfRBSYNCRO @unit(W)= default(0.689W);
double prfFixedMBSFN @unit(W)=default(4.4444W);
double prfRBMBSFN @unit(W)=default(0.711W);
double prfFixedNORMAL_FRAME_TYPE @unit(W)= default(3.810W);
double prfRBNORMAL_FRAME_TYPE @unit(W)= default(0.724W);
double prfFixedPAGING @unit(W)= default(3.810W);
double prfRBPAGING @unit(W)= default(0.724W);
double prfFixedBROADCAST @unit(W)= default(4.4W);
double prfRBBROADCAST @unit(W)= default(0.712W);
//#
//# Statistics for Lte Scheduler Enb
@signal[cellBlocksUtilizationDl];
@statistic[cellBlocksUtilizationDl](title="LTE Cell Blocks Utilization Dl"; unit="blocks"; source="cellBlocksUtilizationDl"; record=mean);
@signal[cellBlocksUtilizationUl];
@statistic[cellBlocksUtilizationUl](title="LTE Cell Blocks Utilization Ul"; unit="blocks"; source="cellBlocksUtilizationUl"; record=mean);
@signal[avgServedBlocksDl];
@statistic[avgServedBlocksDl](title="LTE Avg Served Blocks Dl"; unit="blocks"; source="avgServedBlocksDl"; record=mean,vector);
@signal[avgServedBlocksUl];
@statistic[avgServedBlocksUl](title="LTE Avg Served Blocks Ul"; unit="blocks"; source="avgServedBlocksUl"; record=mean,vector);
}
//
// eNodeB MAC layer of LTE stack with support for D2D-capable UEs
//
simple LteMacEnbD2D extends LteMacEnb
{
parameters:
@class("LteMacEnbD2D");
bool usePreconfiguredTxParams = default(false);
int d2dCqi = default(7);
// frequency reuse parameters
bool reuseD2D = default(false);
bool reuseD2DMulti = default(false);
double conflictGraphUpdatePeriod @unit(s) = default(1s);
// CG thresholds can be defined in either dBm or meters
// if distances are set to -1.0, then dBm thresholds are used,
// otherwise distances have priority on dBm thresholds
double conflictGraphThreshold = default(90); // dBm
double conflictGraphD2DInterferenceRadius @unit(m) = default(-1.0m); // meters
double conflictGraphD2DMultiTxRadius @unit(m) = default(-1.0m); // meters
double conflictGraphD2DMultiInterferenceRadius @unit(m) = default(-1.0m); // meters
// handling of D2D mode switch
bool msHarqInterrupt = default(true);
bool msClearRlcBuffer = default(true);
@signal[macCellThroughputD2D];
@statistic[macCellThroughputD2D](title="Cell Throughput at the MAC layer D2D"; unit="Bps"; source="macCellThroughputD2D"; record=mean);
@signal[macCellPacketLossD2D];
@statistic[macCellPacketLossD2D](title="Mac Cell Packet Loss D2D"; unit=""; source="macCellPacketLossD2D"; record=mean);
}
//
// Relay (UE side) MAC layer of LTE stack
// Connection: eNodeB <--> Relay
//
simple LteMacRelayUe extends LteMacUe
{
@class("LteMacRelayUe");
}
//
// Relay (eNB side) MAC layer of LTE stack
// Connection: Relay <--> UE
//
simple LteMacRelayEnb extends LteMacEnb
{
@class("LteMacRelayEnb");
}