diff --git a/.cproject b/.cproject
index a964398b..47a5981c 100644
--- a/.cproject
+++ b/.cproject
@@ -139,10 +139,10 @@
-
+
-
+
diff --git a/src/corenetwork/binder/PhyPisaData.cc b/src/corenetwork/binder/PhyPisaData.cc
index d1baa999..b0e31d2c 100644
--- a/src/corenetwork/binder/PhyPisaData.cc
+++ b/src/corenetwork/binder/PhyPisaData.cc
@@ -14,95 +14,53 @@
double blerCurvesNew[3][15][49]={
{
{ 0.7208885924, 0.6364279834, 0.5332800360, 0.4360423440, 0.3666968777, 0.2702148823, 0.2545646762, 0.1872308878, 0.1517548369, 0.1063099811, 0.0748798778, 0.0606737487, 0.0532828620, 0.0387772788, 0.0293569902, 0.0226701188, 0.0184603938, 0.0142304934, 0.0120606390, 0.0082131224, 0.0063205729, 0.0046069027, 0.0037611803, 0.0031393568, 0.0026150711, 0.0017728079, 0.0015719911, 0.0009521393, 0.0009466133, 0.0008233501, 0.0006088240, 0.0004728737, 0.0003828146, 0.0003060003, 0.0002537224, 0.0002230114, 0.0002008010, 0.0001679888, 0.0001355403, 0.0001104041, 0.0000908001, 0.0000655503, 0.0000570788, 0.0000456929, 0.0000365713, 0.0000292649, 0.0000234136, 0.0000187286, 0.0000149782},
-
{0.7476587706, 0.6692252815, 0.5717544456, 0.4741597197, 0.4022072005, 0.3046829357, 0.2837217177, 0.2137152938, 0.1758896348, 0.1265393423, 0.0915636477, 0.0748368666, 0.0659347397, 0.0486347295, 0.0374157833, 0.0290314352, 0.0237388747, 0.0184236497, 0.0156244875, 0.0108175483, 0.0083216608, 0.0061567063, 0.0050199212, 0.0041836868, 0.0035103437, 0.0024211054, 0.0021053698, 0.0013113427, 0.0012724442, 0.0010961540, 0.0008110710, 0.0006322508, 0.0005126229, 0.0004205043, 0.0003472382, 0.0002995594, 0.0002631426, 0.0002187541, 0.0001769810, 0.0001442093, 0.0001183582, 0.0000880935, 0.0000754654, 0.0000606957, 0.0000488096, 0.0000392455, 0.0000315508, 0.0000253611, 0.0000203827},
-
{ 0.7754230586, 0.7037127359, 0.6130046580, 0.5156091901, 0.4411562845, 0.3435476630, 0.3162183155, 0.2439460035, 0.2038627845, 0.1506180793, 0.1119646803, 0.0923060915, 0.0815907729, 0.0609980119, 0.0476867972, 0.0371777596, 0.0305266603, 0.0238523610, 0.0202414324, 0.0142478519, 0.0109562914, 0.0082278779, 0.0066999205, 0.0055754206, 0.0047121141, 0.0033064785, 0.0028197248, 0.0018060588, 0.0017104284, 0.0014593471, 0.0010805031, 0.0008453442, 0.0006864476, 0.0005778552, 0.0004752215, 0.0004023821, 0.0003448391, 0.0002848604, 0.0002310919, 0.0001883655, 0.0001542803, 0.0001183895, 0.0000997749, 0.0000806245, 0.0000651435, 0.0000526299, 0.0000425160, 0.0000343423, 0.0000277373},
-
{0.8042183727, 0.7399774460, 0.6572309383, 0.5606820357, 0.4838771339, 0.3873698947, 0.3524369720, 0.2784529434, 0.2362847303, 0.1792786763, 0.1369112081, 0.1138531705, 0.1009642906, 0.0765041256, 0.0607773091, 0.0476099718, 0.0392553144, 0.0308806961, 0.0262226576, 0.0187659234, 0.0144250437, 0.0109958102, 0.0089421592, 0.0074301249, 0.0063253119, 0.0045156234, 0.0037764614, 0.0024874112, 0.0022991697, 0.0019428784, 0.0014394386, 0.0011302584, 0.0009192145, 0.0007940862, 0.0006503762, 0.0005404983, 0.0004518994, 0.0003709437, 0.0003017468, 0.0002460422, 0.0002011048, 0.0001591045, 0.0001319152, 0.0001070967, 0.0000869434, 0.0000705791, 0.0000572920, 0.0000465041, 0.0000377457},
-
{0.8340830000, 0.7781110000, 0.7046480000, 0.6096950000, 0.5307350000, 0.4367820000, 0.3928040000, 0.3178410000, 0.2738630000, 0.2133930000, 0.1674160000, 0.1404300000, 0.1249380000, 0.0959520000, 0.0774613000, 0.0609695000, 0.0504798000, 0.0399800000, 0.0339713000, 0.0247167000, 0.0189920000, 0.0146949000, 0.0119348000, 0.0099018100, 0.0084907900, 0.0061669400, 0.0050578200, 0.0034258100, 0.0030905600, 0.0025866200, 0.0019176100, 0.0015112000, 0.0012309100, 0.0010912300, 0.0008900885, 0.0007260225, 0.0005921981, 0.0004830409, 0.0003940041, 0.0003213791, 0.0002621408, 0.0002138216, 0.0001744088, 0.0001422608, 0.0001160385, 0.0000946497, 0.0000772033, 0.0000629728, 0.0000513653},
-
{0.8813095000, 0.8178410000, 0.7556225000, 0.6709145000, 0.6007000000, 0.5174915000, 0.4357825000, 0.3683160000, 0.3115940000, 0.2416290000, 0.2111445000, 0.1674165000, 0.1466770000, 0.1131935000, 0.0872064000, 0.0729635000, 0.0604723000, 0.0472264000, 0.0384749000, 0.0297859500, 0.0244875500, 0.0192442500, 0.0154772000, 0.0124230050, 0.0101748950, 0.0073945300, 0.0063104800, 0.0047299500, 0.0039477700, 0.0030726150, 0.0023518110, 0.0018216600, 0.0014548650, 0.0012927950, 0.0010582957, 0.0008663402, 0.0007092086, 0.0005805821, 0.0004752885, 0.0003890944, 0.0003185347, 0.0002607730, 0.0002134875, 0.0001747779, 0.0001430884, 0.0001171457, 0.0000959075, 0.0000785204, 0.0000642860},
-
{0.9285360000, 0.8575710000, 0.8065970000, 0.7321340000, 0.6706650000, 0.5982010000, 0.4787610000, 0.4187910000, 0.3493250000, 0.2698650000, 0.2548730000, 0.1944030000, 0.1684160000, 0.1304350000, 0.0969515000, 0.0849575000, 0.0704648000, 0.0544728000, 0.0429785000, 0.0348552000, 0.0299831000, 0.0237936000, 0.0190196000, 0.0149442000, 0.0118590000, 0.0086221200, 0.0075631400, 0.0060340900, 0.0048049800, 0.0035586100, 0.0027860120, 0.0021321200, 0.0016788200, 0.0014943600, 0.0012265029, 0.0010066580, 0.0008262192, 0.0006781232, 0.0005565728, 0.0004568097, 0.0003749287, 0.0003077245, 0.0002525663, 0.0002072950, 0.0001701383, 0.0001396418, 0.0001146117, 0.0000940680, 0.0000772068},
-
{0.9640179910, 0.9375312344, 0.9080459770, 0.8495752124, 0.7511244378, 0.6886556722, 0.6096951524, 0.5177411294, 0.4367816092, 0.3873063468, 0.2903548226, 0.2573713143, 0.2093953023, 0.1749125437, 0.1459270365, 0.1159420290, 0.0959520240, 0.0754622689, 0.0604697651, 0.0514742629, 0.0439780110, 0.0369815092, 0.0256410256, 0.0207359813, 0.0144338280, 0.0108762255, 0.0111793418, 0.0073385013, 0.0068105516, 0.0045571245, 0.0035277750, 0.0030704030, 0.0025348090, 0.0016420361, 0.0014582948, 0.0012009721, 0.0009890552, 0.0008145320, 0.0006708041, 0.0005524377, 0.0004549576, 0.0003746783, 0.0003085646, 0.0002541170, 0.0002092769, 0.0001723491, 0.0001419373, 0.0001168918, 0.0000962657},
-
{0.9980010000, 0.9945030000, 0.9815090000, 0.9695150000, 0.9355320000, 0.8905550000, 0.8280860000, 0.7616190000, 0.6701650000, 0.5857070000, 0.5377310000, 0.4352820000, 0.3663170000, 0.2983510000, 0.2433780000, 0.1954020000, 0.1579210000, 0.1339330000, 0.1154420000, 0.0899550000, 0.0679660000, 0.0559735000, 0.0509745000, 0.0384823000, 0.0294449000, 0.0239270000, 0.0198168000, 0.0145598000, 0.0129657000, 0.0101342000, 0.0069021600, 0.0063336700, 0.0041917200, 0.0036633800, 0.0026964400, 0.0021258800, 0.0017740846, 0.0014805050, 0.0012355077, 0.0010310531, 0.0008604321, 0.0007180458, 0.0005992220, 0.0005000614, 0.0004173101, 0.0003482527, 0.0002906230, 0.0002425301, 0.0002023956},
-
{1.0000000000, 0.9985010000, 0.9955020000, 0.9920040000, 0.9865070000, 0.9645180000, 0.9230380000, 0.8760620000, 0.8110940000, 0.7546230000, 0.6701650000, 0.5787110000, 0.5082460000, 0.4057970000, 0.3603200000, 0.2998500000, 0.2398800000, 0.1929040000, 0.1774110000, 0.1389310000, 0.1134430000, 0.0844578000, 0.0654673000, 0.0499750000, 0.0424788000, 0.0344828000, 0.0300975000, 0.0199550000, 0.0186499000, 0.0113292000, 0.0130851000, 0.0086217400, 0.0066398600, 0.0064686600, 0.0052698000, 0.0040571400, 0.0024453200, 0.0023093200, 0.0016669800, 0.0014200300, 0.0011200000, 0.0006200000, 0.0007200000, 0.0005982817, 0.0004971403, 0.0004130971, 0.0003432617, 0.0002852323, 0.0002370128},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9900000000, 0.9765120000, 0.9487755000, 0.9102950000, 0.8600695000, 0.7986010000, 0.7223890000, 0.6469265000, 0.5659670000, 0.4687655000, 0.4040480000, 0.3423290000, 0.2808595000, 0.2176415000, 0.1979010000, 0.1534235000, 0.1294350000, 0.0947029000, 0.0784608000, 0.0597201500, 0.0494753000, 0.0409795500, 0.0307082000, 0.0236999500, 0.0209262500, 0.0150810500, 0.0142885500, 0.0105652700, 0.0090885300, 0.0069104200, 0.0057593500, 0.0042629600, 0.0030770250, 0.0028803900, 0.0023507800, 0.0018247200, 0.0014272500, 0.0009800000, 0.0007900000, 0.0006556048, 0.0005440738, 0.0004515169, 0.0003747062, 0.0003109627, 0.0002580634},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9960020000, 0.9885060000, 0.9745130000, 0.9445280000, 0.9090450000, 0.8425790000, 0.7746130000, 0.7151420000, 0.6236880000, 0.5317340000, 0.4477760000, 0.3848080000, 0.3218390000, 0.2423790000, 0.2183910000, 0.1679160000, 0.1454270000, 0.1049480000, 0.0914543000, 0.0694653000, 0.0564718000, 0.0474763000, 0.0313189000, 0.0274449000, 0.0232026000, 0.0188329000, 0.0154920000, 0.0125088000, 0.0115372000, 0.0073521800, 0.0062489000, 0.0044687800, 0.0037087300, 0.0034514600, 0.0030345800, 0.0022294100, 0.0017345000, 0.0013400000, 0.0008600000, 0.0007129279, 0.0005910073, 0.0004899367, 0.0004061507, 0.0003366932, 0.0002791139},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9950020000, 0.9885060000, 0.9710140000, 0.9435280000, 0.8960520000, 0.8330830000, 0.7671160000, 0.7031480000, 0.6036980000, 0.5232380000, 0.4572710000, 0.3818090000, 0.3323340000, 0.2593700000, 0.2033980000, 0.1679160000, 0.1469270000, 0.1104450000, 0.0874563000, 0.0834583000, 0.0654673000, 0.0469765000, 0.0464768000, 0.0341182000, 0.0239218000, 0.0191066000, 0.0165540000, 0.0130299000, 0.0112431000, 0.0073309200, 0.0073362300, 0.0060533700, 0.0042497200, 0.0034644300, 0.0022124600, 0.0018535400, 0.0020812600, 0.0011800000, 0.0009782197, 0.0008109439, 0.0006722723, 0.0005573136, 0.0004620128, 0.0003830085},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9985010000, 0.9955020000, 0.9855070000, 0.9645180000, 0.9415290000, 0.8945530000, 0.8490750000, 0.7676160000, 0.6786610000, 0.6181910000, 0.5147430000, 0.4507750000, 0.3668170000, 0.2983510000, 0.2643680000, 0.2073960000, 0.1874060000, 0.1429290000, 0.1204400000, 0.1029490000, 0.0849575000, 0.0609695000, 0.0524738000, 0.0389805000, 0.0278322000, 0.0200735000, 0.0175569000, 0.0156457000, 0.0142800000, 0.0119188000, 0.0082290200, 0.0058513300, 0.0046508600, 0.0039333000, 0.0031392300, 0.0025481800, 0.0024910500, 0.0018512700, 0.0015602030, 0.0013148992, 0.0011081635, 0.0009339318, 0.0007870939, 0.0006633426},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9859749497, 0.9893140776, 0.9605586356, 0.9397905344, 0.8379947372, 0.7629323816, 0.7303753024, 0.5794383550, 0.5321982997, 0.4048779586, 0.3431904970, 0.3436141920, 0.2561584412, 0.2390371330, 0.1849671696, 0.1658633352, 0.1269915227, 0.1102501066, 0.0791306277, 0.0592446056, 0.0445357428, 0.0323818173, 0.0210893305, 0.0186205592, 0.0187866314, 0.0181372042, 0.0193778944, 0.0092304590, 0.0056560334, 0.0050898644, 0.0044656261, 0.0044542116, 0.0035031460, 0.0029815257, 0.0029044073, 0.0024884323, 0.0021320340, 0.0018266798, 0.0015650590, 0.0013409081, 0.0011488606}
},
{
{0.7825320525, 0.6497970570, 0.4898571282, 0.3774585608, 0.2820559331, 0.1740004611, 0.1227956815, 0.0712425715, 0.0439727471, 0.0223108936, 0.0131842504, 0.0091251769, 0.0062658486, 0.0023429655, 0.0016755165, 0.0008377759, 0.0005003418, 0.0003080185, 0.0002159449, 0.0001291556, 0.0000726699, 0.0000534175, 0.0000346099, 0.0000275183, 0.0000198516, 0.0000144915, 0.0000110706, 0.0000081976, 0.0000059423, 0.0000041199, 0.0000027866, 0.0000019025, 0.0000014059, 0.0000009385, 0.0000006260, 0.0000004172, 0.0000002779, 0.0000001849, 0.0000001230, 0.0000000817, 0.0000000543, 0.0000000360, 0.0000000239, 0.0000000158, 0.0000000105, 0.0000000069, 0.0000000046, 0.0000000030, 0.0000000020},
-
{0.8042444185, 0.6819137635, 0.5306690315, 0.4168998755, 0.3177463923, 0.2029188975, 0.1459232750, 0.0885995493, 0.0571471210, 0.0305040217, 0.0189650884, 0.0134318374, 0.0093603105, 0.0037762127, 0.0027126194, 0.0014183743, 0.0008642090, 0.0005432337, 0.0003795107, 0.0002317987, 0.0001306831, 0.0000947697, 0.0000625188, 0.0000480873, 0.0000343846, 0.0000248060, 0.0000185163, 0.0000135019, 0.0000096895, 0.0000067251, 0.0000045819, 0.0000031437, 0.0000022888, 0.0000015440, 0.0000010411, 0.0000007015, 0.0000004725, 0.0000003180, 0.0000002139, 0.0000001438, 0.0000000966, 0.0000000649, 0.0000000435, 0.0000000292, 0.0000000196, 0.0000000131, 0.0000000088, 0.0000000059, 0.0000000039},
-
{0.8265592222, 0.7156178624, 0.5748811333, 0.4604624831, 0.3579530086, 0.2366435049, 0.1734067675, 0.1101852442, 0.0742685791, 0.0417058750, 0.0272806241, 0.0197710420, 0.0139830082, 0.0060862110, 0.0043916631, 0.0024013413, 0.0014926940, 0.0009580684, 0.0006669682, 0.0004160150, 0.0002350088, 0.0001681341, 0.0001129330, 0.0000840309, 0.0000595570, 0.0000424619, 0.0000309695, 0.0000222382, 0.0000157994, 0.0000109777, 0.0000075338, 0.0000051945, 0.0000037262, 0.0000025404, 0.0000017314, 0.0000011795, 0.0000008033, 0.0000005468, 0.0000003721, 0.0000002531, 0.0000001721, 0.0000001170, 0.0000000795, 0.0000000540, 0.0000000366, 0.0000000249, 0.0000000169, 0.0000000114, 0.0000000077},
-
{0.8494931790, 0.7509878116, 0.6227767172, 0.5085770248, 0.4032472421, 0.2759730567, 0.2060665580, 0.1370299075, 0.0965196801, 0.0570213340, 0.0392422347, 0.0291020573, 0.0208886786, 0.0098092895, 0.0071099929, 0.0040655275, 0.0025782366, 0.0016896875, 0.0011721580, 0.0007466325, 0.0004226189, 0.0002982921, 0.0002040006, 0.0001468410, 0.0001031576, 0.0000726844, 0.0000517984, 0.0000366274, 0.0000257623, 0.0000179195, 0.0000123875, 0.0000085834, 0.0000060663, 0.0000041798, 0.0000028794, 0.0000019832, 0.0000013657, 0.0000009403, 0.0000006472, 0.0000004454, 0.0000003065, 0.0000002109, 0.0000001450, 0.0000000997, 0.0000000686, 0.0000000471, 0.0000000324, 0.0000000223, 0.0000000153},
-
{0.8730634683, 0.7881059470, 0.6746626687, 0.5617191404, 0.4542728636, 0.3218390805, 0.2448775612, 0.1704147926, 0.1254372814, 0.0779610195, 0.0564485981, 0.0428368794, 0.0312047944, 0.0158098628, 0.0115109011, 0.0068830340, 0.0044532264, 0.0029800000, 0.0020600000, 0.0013400000, 0.0007600000, 0.0005292096, 0.0003685036, 0.0002565995, 0.0001786775, 0.0001244182, 0.0000866359, 0.0000603271, 0.0000420074, 0.0000292510, 0.0000203683, 0.0000141830, 0.0000098760, 0.0000068770, 0.0000047886, 0.0000033345, 0.0000023219, 0.0000016168, 0.0000011258, 0.0000007839, 0.0000005459, 0.0000003801, 0.0000002647, 0.0000001843, 0.0000001283, 0.0000000894, 0.0000000622, 0.0000000433, 0.0000000302},
-
{0.9165417291, 0.8490754623, 0.7553723138, 0.6534232884, 0.5337331334, 0.4105447276, 0.3210894553, 0.2401299350, 0.1666666667, 0.1206896552, 0.0779494365, 0.0570148565, 0.0439538805, 0.0238668765, 0.0174735942, 0.0104982513, 0.0070505861, 0.0042271932, 0.0029479961, 0.0018800000, 0.0012300000, 0.0008546048, 0.0005542518, 0.0004182998, 0.0002972762, 0.0002113056, 0.0001502240, 0.0001068179, 0.0000759669, 0.0000540355, 0.0000384421, 0.0000273532, 0.0000194662, 0.0000138555, 0.0000098636, 0.0000070229, 0.0000050011, 0.0000035619, 0.0000025372, 0.0000018076, 0.0000012880, 0.0000009179, 0.0000006542, 0.0000004663, 0.0000003325, 0.0000002371, 0.0000001691, 0.0000001206, 0.0000000860},
-
{0.9600199900, 0.9100449775, 0.8360819590, 0.7451274363, 0.6131934033, 0.4992503748, 0.3973013493, 0.3098450775, 0.2078960520, 0.1634182909, 0.0994502749, 0.0711928336, 0.0567029666, 0.0319238901, 0.0234362874, 0.0141134685, 0.0096479458, 0.0054743864, 0.0038359923, 0.0024200000, 0.0017000000, 0.0011800000, 0.0007400000, 0.0005800000, 0.0004158749, 0.0002981930, 0.0002138121, 0.0001533088, 0.0001099263, 0.0000788200, 0.0000565160, 0.0000405234, 0.0000290563, 0.0000208341, 0.0000149386, 0.0000107114, 0.0000076803, 0.0000055070, 0.0000039487, 0.0000028313, 0.0000020301, 0.0000014556, 0.0000010437, 0.0000007484, 0.0000005366, 0.0000003848, 0.0000002759, 0.0000001978, 0.0000001418},
-
{0.9960019990, 0.9900049975, 0.9625187406, 0.9315342329, 0.8555722139, 0.7846076962, 0.6621689155, 0.5707146427, 0.4347826087, 0.3383308346, 0.2638680660, 0.1689155422, 0.1274362819, 0.0899550225, 0.0575896262, 0.0360726230, 0.0254208754, 0.0166007036, 0.0099828111, 0.0069875058, 0.0043556017, 0.0028400000, 0.0015000000, 0.0011600000, 0.0008800000, 0.0005400000, 0.0004014177, 0.0002984003, 0.0002218207, 0.0001648940, 0.0001225766, 0.0000911193, 0.0000677350, 0.0000503519, 0.0000374299, 0.0000278241, 0.0000206835, 0.0000153754, 0.0000114296, 0.0000084964, 0.0000063159, 0.0000046950, 0.0000034901, 0.0000025944, 0.0000019286, 0.0000014337, 0.0000010657, 0.0000007922, 0.0000005889},
-
{1.0000000000, 1.0000000000, 0.9980012000, 0.9955023000, 0.9865074000, 0.9670165000, 0.9360326000, 0.8420797000, 0.7671168000, 0.6411799000, 0.5342331000, 0.4272861100, 0.3243381200, 0.2428791300, 0.1654171400, 0.1194415000, 0.0849575160, 0.0551095170, 0.0345934180, 0.0246934190, 0.0147032000, 0.0094475421, 0.0062830322, 0.0041403923, 0.0026886824, 0.0017345250, 0.0011232326, 0.0007023200, 0.0005238028, 0.0003906615, 0.0002913623, 0.0002173032, 0.0001620687, 0.0001208737, 0.0000901498, 0.0000672353, 0.0000501453, 0.0000373993, 0.0000278930, 0.0000208031, 0.0000155153, 0.0000115716, 0.0000086303, 0.0000064366, 0.0000048006, 0.0000035803, 0.0000026703, 0.0000019915, 0.0000014853},
-
{1.0000000000, 1.0000000000, 1.0000000000, 0.9980009995, 0.9920039980, 0.9900049975, 0.9595202399, 0.9100449775, 0.8385807096, 0.7436281859, 0.6551724138, 0.5082458771, 0.4092953523, 0.3008495752, 0.2133933033, 0.1649175412, 0.1174412794, 0.0799600200, 0.0545914678, 0.0329119442, 0.0244732577, 0.0144705319, 0.0094416307, 0.0063777665, 0.0040175602, 0.0025000000, 0.0015800000, 0.0009000000, 0.0007400000, 0.0005523457, 0.0004122780, 0.0003077297, 0.0002296934, 0.0001714462, 0.0001279697, 0.0000955182, 0.0000712961, 0.0000532163, 0.0000397213, 0.0000296485, 0.0000221300, 0.0000165182, 0.0000123294, 0.0000092028, 0.0000068691, 0.0000051272, 0.0000038270, 0.0000028565, 0.0000021321},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9900000000, 0.9935032484, 0.9770114943, 0.9430284858, 0.8883058471, 0.8093453273, 0.7183908046, 0.5934532734, 0.4962518741, 0.3715642179, 0.2801099450, 0.2108945527, 0.1419290355, 0.0994502749, 0.0717734950, 0.0495990801, 0.0357422328, 0.0204000436, 0.0125422180, 0.0093305899, 0.0054805233, 0.0037057637, 0.0025182029, 0.0014300000, 0.0011400000, 0.0006061728, 0.0004524077, 0.0003376474, 0.0002519979, 0.0001880747, 0.0001403666, 0.0001047605, 0.0000781863, 0.0000583532, 0.0000435510, 0.0000325036, 0.0000242586, 0.0000181050, 0.0000135124, 0.0000100848, 0.0000075266, 0.0000056174, 0.0000041924, 0.0000031290, 0.0000023352},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9970014993, 0.9945027486, 0.9760119940, 0.9380309845, 0.8750624688, 0.7816091954, 0.6786606697, 0.5832083958, 0.4422788606, 0.3468265867, 0.2568715642, 0.1664167916, 0.1189405297, 0.0889555222, 0.0662862160, 0.0470112080, 0.0263295554, 0.0156428053, 0.0122834133, 0.0069434865, 0.0049115275, 0.0034564058, 0.0019600000, 0.0015400000, 0.0006600000, 0.0004925373, 0.0003675652, 0.0002743024, 0.0002047033, 0.0001527636, 0.0001140027, 0.0000850766, 0.0000634900, 0.0000473806, 0.0000353587, 0.0000263871, 0.0000196918, 0.0000146954, 0.0000109667, 0.0000081841, 0.0000061076, 0.0000045579, 0.0000034014, 0.0000025384},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9990004998, 0.9895052474, 0.9660169915, 0.9355322339, 0.8760619690, 0.7841079460, 0.6861569215, 0.5617191404, 0.4257871064, 0.3408295852, 0.2493753123, 0.1814092954, 0.1144427786, 0.0969515242, 0.0638207946, 0.0435912240, 0.0262608696, 0.0169796469, 0.0126912086, 0.0077634961, 0.0049155246, 0.0030326766, 0.0019200000, 0.0012200000, 0.0009000000, 0.0006703640, 0.0004993198, 0.0003719178, 0.0002770225, 0.0002063399, 0.0001536920, 0.0001144773, 0.0000852683, 0.0000635120, 0.0000473068, 0.0000352364, 0.0000262458, 0.0000195492, 0.0000145612, 0.0000108459, 0.0000080785, 0.0000060173, 0.0000044820},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9995002499, 0.9995002499, 0.9915042479, 0.9720139930, 0.9460269865, 0.8700649675, 0.7736131934, 0.6776611694, 0.5592203898, 0.4417791104, 0.3378310845, 0.2523738131, 0.1829085457, 0.1359320340, 0.0924537731, 0.0588693957, 0.0379587733, 0.0244336570, 0.0177877253, 0.0112076004, 0.0070046853, 0.0046377346, 0.0028600000, 0.0018000000, 0.0013200000, 0.0009400000, 0.0005200000, 0.0003909774, 0.0002939680, 0.0002210286, 0.0001661869, 0.0001249526, 0.0000939493, 0.0000706386, 0.0000531117, 0.0000399336, 0.0000300253, 0.0000225754, 0.0000169740, 0.0000127624, 0.0000095958, 0.0000072149, 0.0000054247},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9654449385, 0.8722164773, 0.8175342934, 0.7344690331, 0.5726286417, 0.4576629521, 0.3510985554, 0.2923341823, 0.1905851198, 0.1339328383, 0.0795023730, 0.0548675078, 0.0351599533, 0.0249308936, 0.0161796057, 0.0099817658, 0.0070922769, 0.0042602083, 0.0026557377, 0.0019360000, 0.0013180900, 0.0005415367, 0.0004110139, 0.0003119500, 0.0002367629, 0.0001796976, 0.0001363863, 0.0001035141, 0.0000785648, 0.0000596289, 0.0000452569, 0.0000343490, 0.0000260701, 0.0000197866, 0.0000150176, 0.0000113980, 0.0000086508, 0.0000065658}
},
{
{0.8812029842, 0.7856481093, 0.6151035999, 0.5607006785, 0.4411097117, 0.3808646376, 0.2837487729, 0.2162468999, 0.1721137980, 0.1137747857, 0.0816643668, 0.0656961899, 0.0485265998, 0.0318597424, 0.0244991975, 0.0145465980, 0.0158867394, 0.0107430701, 0.0094938769, 0.0042539892, 0.0036305150, 0.0035122684, 0.0022477649, 0.0018906544, 0.0012603015, 0.0011876215, 0.0008976262, 0.0007752078, 0.0003970316, 0.0003111325, 0.0001997266, 0.0001825160, 0.0001594696, 0.0001492596, 0.0001112891, 0.0000820083, 0.0000690064, 0.0000528467, 0.0000447975, 0.0000359933, 0.0000289949, 0.0000225760, 0.0000179111, 0.0000143054, 0.0000115382, 0.0000093766, 0.0000072393, 0.0000055795, 0.0000042929},
-
{0.8951980686, 0.8090583468, 0.6525462741, 0.5962789937, 0.4767106751, 0.4116477798, 0.3121905185, 0.2421198535, 0.1963212668, 0.1342248674, 0.0982244405, 0.0800651095, 0.0604613231, 0.0407129099, 0.0318481592, 0.0198536227, 0.0208879267, 0.0146333072, 0.0128047216, 0.0061738641, 0.0052033182, 0.0049195967, 0.0033244904, 0.0027862381, 0.0018926695, 0.0017190786, 0.0013395947, 0.0011138827, 0.0006162574, 0.0004760003, 0.0003147678, 0.0002780416, 0.0002374724, 0.0002135661, 0.0001619518, 0.0001217335, 0.0001010776, 0.0000782027, 0.0000652934, 0.0000523680, 0.0000420835, 0.0000329668, 0.0000261912, 0.0000209126, 0.0000168212, 0.0000136069, 0.0000105917, 0.0000082341, 0.0000063929},
-
{0.9094154200, 0.8331661475, 0.6922681641, 0.6341148709, 0.5151849115, 0.4449189499, 0.3434831413, 0.2710883878, 0.2239334687, 0.1583506830, 0.1181426012, 0.0975767662, 0.0753312946, 0.0520261906, 0.0414015703, 0.0270968053, 0.0274635008, 0.0199322613, 0.0172701728, 0.0089602008, 0.0074574876, 0.0068908263, 0.0049169896, 0.0041060505, 0.0028423341, 0.0024883611, 0.0019991773, 0.0016005189, 0.0009565315, 0.0007282308, 0.0004960718, 0.0004235635, 0.0003536295, 0.0003055781, 0.0002356779, 0.0001807019, 0.0001480540, 0.0001157247, 0.0000951667, 0.0000761922, 0.0000610804, 0.0000481401, 0.0000382989, 0.0000305715, 0.0000245231, 0.0000197457, 0.0000154967, 0.0000121515, 0.0000095202},
-
{0.9238585684, 0.8579922969, 0.7344080107, 0.6743515599, 0.5567643161, 0.4808792411, 0.3779124009, 0.3035228748, 0.2554292728, 0.1868129154, 0.1420998089, 0.1189185321, 0.0938584149, 0.0664831995, 0.0538206938, 0.0369825129, 0.0361090829, 0.0271500512, 0.0232928820, 0.0130040437, 0.0106882028, 0.0096519066, 0.0072723285, 0.0060510446, 0.0042685018, 0.0036018953, 0.0029835218, 0.0022997581, 0.0014846920, 0.0011141172, 0.0007818056, 0.0006452489, 0.0005266035, 0.0004372321, 0.0003429666, 0.0002682349, 0.0002168630, 0.0001712497, 0.0001387078, 0.0001108550, 0.0000886528, 0.0000702969, 0.0000560038, 0.0000446914, 0.0000357516, 0.0000286540, 0.0000226730, 0.0000179328, 0.0000141774},
-
{0.9385311000, 0.8835582000, 0.7791130000, 0.7171414000, 0.6016995000, 0.5197460000, 0.4157927000, 0.3398380000, 0.2913549000, 0.2203910000, 0.1709151100, 0.1449281200, 0.1169421300, 0.0849575140, 0.0699651500, 0.0504748160, 0.0474763170, 0.0369815180, 0.0314159190, 0.0188729200, 0.0153185210, 0.0135193220, 0.0107559230, 0.0089173624, 0.0064102625, 0.0052137326, 0.0044525327, 0.0033044828, 0.0023044829, 0.0017044830, 0.0012321200, 0.0009829603, 0.0007841858, 0.0006256075, 0.0004990970, 0.0003981694, 0.0003176515, 0.0002534159, 0.0002021701, 0.0001612872, 0.0001286716, 0.0001026516, 0.0000818934, 0.0000653329, 0.0000521212, 0.0000415813, 0.0000331727, 0.0000264645, 0.0000211128},
-
{0.9688155500, 0.9377812000, 0.8790630000, 0.8388327000, 0.7628690000, 0.6816623000, 0.6049482000, 0.5242424000, 0.4680169000, 0.3933040500, 0.3163421100, 0.2701151200, 0.2203901300, 0.1719143270, 0.1391806500, 0.1159419880, 0.0897052435, 0.0777113490, 0.0596860545, 0.0496663700, 0.0371445210, 0.0279988220, 0.0261176230, 0.0211998432, 0.0167922438, 0.0123891793, 0.0102667299, 0.0079233814, 0.0064233865, 0.0049178565, 0.0036904255, 0.0025145462, 0.0018819345, 0.0013856707, 0.0010672252, 0.0008153147, 0.0006673278, 0.0005463149, 0.0004473373, 0.0003663648, 0.0003001079, 0.0002458808, 0.0002014900, 0.0001651439, 0.0001353787, 0.0001109980, 0.0000910239, 0.0000746568, 0.0000612429},
-
{0.9991000000, 0.9920042000, 0.9790130000, 0.9605240000, 0.9240385000, 0.8435786000, 0.7941037000, 0.7086468000, 0.6446789000, 0.5662171000, 0.4617691100, 0.3953021200, 0.3238381300, 0.2588711400, 0.2083961500, 0.1814091600, 0.1319341700, 0.1184411800, 0.0879561900, 0.0804598200, 0.0589705210, 0.0424783220, 0.0414793230, 0.0334823240, 0.0271742250, 0.0195646260, 0.0160809270, 0.0125422800, 0.0105422900, 0.0081312300, 0.0061487310, 0.0040461320, 0.0029796833, 0.0021457340, 0.0016353535, 0.0012324600, 0.0010170042, 0.0008392139, 0.0006925045, 0.0005714424, 0.0004715442, 0.0003891099, 0.0003210866, 0.0002649550, 0.0002186362, 0.0001804147, 0.0001488750, 0.0001228491, 0.0001013729},
-
{1.0000000000, 1.0000000000, 0.9985012000, 0.9975013000, 0.9950024000, 0.9835085000, 0.9665176000, 0.9395370000, 0.8710648000, 0.8130939000, 0.7376311000, 0.6636681100, 0.5482261200, 0.4967521300, 0.3948031400, 0.3273361500, 0.2683661600, 0.2228891700, 0.1774111800, 0.1574211900, 0.1279362000, 0.0944528210, 0.0684658220, 0.0584708230, 0.0454773240, 0.0409795250, 0.0268026260, 0.0308832700, 0.0178258280, 0.0164012900, 0.0136172300, 0.0104029310, 0.0085665320, 0.0065748533, 0.0049784534, 0.0035641535, 0.0030203476, 0.0025595136, 0.0021689921, 0.0018380550, 0.0015576111, 0.0013199563, 0.0011185620, 0.0009478958, 0.0008032692, 0.0006807092, 0.0005768490, 0.0004888355, 0.0004142507},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9995500000, 0.9950026000, 0.9835087000, 0.9630188000, 0.9380319000, 0.8860571000, 0.8250871100, 0.7561221200, 0.6631681300, 0.5857071400, 0.5062471500, 0.4422791600, 0.3518241700, 0.2993518000, 0.2488761900, 0.2033982000, 0.1669172100, 0.1314342200, 0.1174412300, 0.0904548240, 0.0739632500, 0.0534733260, 0.0409742700, 0.0311951280, 0.0258495290, 0.0191252300, 0.0156156310, 0.0126156320, 0.0100062330, 0.0079126234, 0.0058615635, 0.0043515500, 0.0036553139, 0.0030704737, 0.0025792064, 0.0021665404, 0.0018198999, 0.0015287209, 0.0012841298, 0.0010786725, 0.0009060879, 0.0007611163, 0.0006393398, 0.0005370472, 0.0004511211},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9945037000, 0.9945038000, 0.9770119000, 0.9590210000, 0.9175411100, 0.8650671200, 0.8001130000, 0.7281361400, 0.6456771500, 0.5687161600, 0.4572711700, 0.4022991800, 0.3428291900, 0.2628692000, 0.2158922100, 0.1724142200, 0.1334332300, 0.1264372400, 0.0979512500, 0.0669665260, 0.0519742700, 0.0439782800, 0.0354823290, 0.0288266300, 0.0209873310, 0.0181667320, 0.0151330000, 0.0125122340, 0.0103003350, 0.0084289536, 0.0069365837, 0.0052390838, 0.0041172939, 0.0034169400, 0.0028169410, 0.0019909420, 0.0013690100, 0.0012008860, 0.0010534087, 0.0009240428, 0.0008105638, 0.0007110209, 0.0006237025},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9900000000, 1.0000000000, 0.9971018500, 0.9970419000, 0.9857579000, 0.9747630500, 0.9447776100, 0.9070461200, 0.8508310650, 0.7833586400, 0.7091456500, 0.6264371600, 0.5357321700, 0.4717641800, 0.3865571900, 0.3193407000, 0.2621192100, 0.2146432200, 0.1704147300, 0.1529248200, 0.1156922500, 0.0867068930, 0.0707147985, 0.0559722800, 0.0439780790, 0.0354029650, 0.0280158810, 0.0234674820, 0.0182754165, 0.0166789340, 0.0135965350, 0.0103363948, 0.0088914604, 0.0064098488, 0.0054010839, 0.0044812620, 0.0034812626, 0.0026682631, 0.0018624050, 0.0015953282, 0.0013670105, 0.0011717659, 0.0010047507, 0.0008618375, 0.0007395084},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9997000000, 0.9995800000, 0.9945039000, 0.9905051000, 0.9720141100, 0.9490251200, 0.9015491300, 0.8385811400, 0.7726141500, 0.6841581600, 0.6141931700, 0.5412291800, 0.4302851900, 0.3758122000, 0.3083462100, 0.2568722200, 0.2073962300, 0.1794124000, 0.1334332500, 0.1064472600, 0.0894553270, 0.0679662800, 0.0524738290, 0.0419793000, 0.0350444310, 0.0287682320, 0.0214178330, 0.0208456340, 0.0168927350, 0.0122438360, 0.0108463370, 0.0075806138, 0.0066848739, 0.0055455840, 0.0041455841, 0.0033455842, 0.0023558000, 0.0019897704, 0.0016806122, 0.0014194891, 0.0011989377, 0.0010126542, 0.0008553142},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9985019000, 0.9960021000, 0.9895051100, 0.9750121200, 0.9525241300, 0.9160421400, 0.8420791500, 0.7721141600, 0.7036481700, 0.6011991800, 0.5187411900, 0.4637682000, 0.3833082100, 0.3098452200, 0.2543732300, 0.2138932400, 0.1699152500, 0.1454272600, 0.1244382700, 0.0909545280, 0.0734633290, 0.0619693000, 0.0529735310, 0.0444778320, 0.0343882330, 0.0261195340, 0.0229031350, 0.0194734360, 0.0152583370, 0.0124234380, 0.0089725839, 0.0073345840, 0.0059079141, 0.0048261542, 0.0038256143, 0.0028256144, 0.0020256145, 0.0015256100, 0.0013020441, 0.0011112400, 0.0009483967},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 0.9995800000, 0.9995900000, 0.9995100000, 0.9940031100, 0.9915041200, 0.9695151300, 0.9460271400, 0.9075461500, 0.8475761600, 0.7626191700, 0.6936531800, 0.6171911900, 0.5327342000, 0.4682662100, 0.3923042200, 0.3163422300, 0.2808624000, 0.2068972500, 0.1714142600, 0.1559222700, 0.1154422800, 0.0979512900, 0.0704648300, 0.0719643100, 0.0579713200, 0.0434783330, 0.0277561340, 0.0256133350, 0.0225254360, 0.0164314370, 0.0148536380, 0.0109669390, 0.0086606540, 0.0067330541, 0.0058258842, 0.0045178543, 0.0037178544, 0.0028917945, 0.0021785000, 0.0018622421, 0.0015918961, 0.0013607968},
-
{1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0082750766, 0.9868092132, 0.9769936453, 0.9781028474, 0.9304133821, 0.8265323826, 0.8003250006, 0.7343256567, 0.6119559898, 0.5720546487, 0.4967080048, 0.3934077752, 0.3687993493, 0.2519283705, 0.2020449848, 0.1953720048, 0.1465228868, 0.1306019662, 0.0801250340, 0.0977632001, 0.0755584027, 0.0549712874, 0.0294952802, 0.0286442415, 0.0260557647, 0.0176947279, 0.0177592195, 0.0134045836, 0.0102264733, 0.0076734388, 0.0070327066, 0.0053353542, 0.0048918357, 0.0041283647, 0.0031107965, 0.0026634624, 0.0022804552, 0.0019525246}
}
};
diff --git a/src/corenetwork/binder/PhyPisaData.h b/src/corenetwork/binder/PhyPisaData.h
index 7cf0d780..da47c2b8 100644
--- a/src/corenetwork/binder/PhyPisaData.h
+++ b/src/corenetwork/binder/PhyPisaData.h
@@ -23,7 +23,7 @@ class PhyPisaData
public:
PhyPisaData();
virtual ~PhyPisaData();
- double getBler(int i, int j, int k){if (j==0) return 1; else return blerCurves_[i][j][k-1];}
+ double getBler(int i, int j, int k){return blerCurves_[i][j][k-1];}
double getLambda(int i, int j){return lambdaTable_[i][j];}
int nTxMode(){return 3;}
int nMcs(){return 15;}
diff --git a/src/stack/mac/LteMac.ned b/src/stack/mac/LteMac.ned
index 69edd759..e41b2fd8 100644
--- a/src/stack/mac/LteMac.ned
+++ b/src/stack/mac/LteMac.ned
@@ -46,18 +46,32 @@ simple LteMacBase like LteMac {
//#
//# 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);
+ @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);
+ @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);
+ @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);
+ @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];
diff --git a/src/stack/mac/buffer/harq/LteHarqBufferRx.cc b/src/stack/mac/buffer/harq/LteHarqBufferRx.cc
index da922e1e..18ef2b25 100644
--- a/src/stack/mac/buffer/harq/LteHarqBufferRx.cc
+++ b/src/stack/mac/buffer/harq/LteHarqBufferRx.cc
@@ -14,7 +14,8 @@
#include "stack/mac/layer/LteMacBase.h"
#include "stack/mac/layer/LteMacEnb.h"
-unsigned int LteHarqBufferRx::totalCellRcvdBytes_ = 0;
+unsigned int LteHarqBufferRx::totalCellRcvdBytesDl_ = 0;
+unsigned int LteHarqBufferRx::totalCellRcvdBytesUl_ = 0;
LteHarqBufferRx::LteHarqBufferRx(unsigned int num, LteMacBase *owner,
MacNodeId nodeId)
@@ -38,13 +39,19 @@ LteHarqBufferRx::LteHarqBufferRx(unsigned int num, LteMacBase *owner,
nodeB_ = macOwner_;
macDelay_ = macUe_->registerSignal("macDelayUl");
macThroughput_ = getMacByMacNodeId(nodeId_)->registerSignal("macThroughputUl");
+ macThroughputInterval_ = getMacByMacNodeId(nodeId_)->registerSignal("macThroughputIntervalUl");
+ macPacketSize_ = getMacByMacNodeId(nodeId_)->registerSignal("macPacketSizeUl");
macCellThroughput_ = macOwner_->registerSignal("macCellThroughputUl");
+ macCellThroughputInterval_ = macOwner_->registerSignal("macCellThroughputIntervalUl");
}
else if (macOwner_->getNodeType() == UE)
{
nodeB_ = getMacByMacNodeId(macOwner_->getMacCellId());
macThroughput_ = macOwner_->registerSignal("macThroughputDl");
+ macThroughputInterval_ = macOwner_->registerSignal("macThroughputIntervalDl");
+ macPacketSize_ = macOwner_->registerSignal("macPacketSizeDl");
macCellThroughput_ = nodeB_->registerSignal("macCellThroughputDl");
+ macCellThroughputInterval_ = nodeB_->registerSignal("macCellThroughputIntervalDl");
macDelay_ = macOwner_->registerSignal("macDelayDl");
}
}
@@ -135,22 +142,56 @@ std::list LteHarqBufferRx::extractCorrectPdus()
macUe_->emit(macDelay_, (NOW - temp->getCreationTime()).dbl());
// Calculate Throughput by sending the number of bits for this packet
- totalCellRcvdBytes_ += size;
- totalRcvdBytes_ += size;
- double tputSample = (double)totalRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
- double cellTputSample = (double)totalCellRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
-
- // emit throughput statistics
- nodeB_->emit(macCellThroughput_, cellTputSample);
- if (uInfo->getDirection() == DL)
+ if (NOW > getSimulation()->getWarmupPeriod())
{
- macOwner_->emit(macThroughput_, tputSample);
+ totalRcvdBytes_ += size;
+ intervalRcvdBytes_ += size;
+
+ double tputSample = (double)totalRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
+
+ // emit throughput statistics
+ if (uInfo->getDirection() == DL)
+ {
+ totalCellRcvdBytesDl_ += size;
+ double cellTputSample = (double)totalCellRcvdBytesDl_ / (NOW - getSimulation()->getWarmupPeriod());
+ nodeB_->emit(macCellThroughput_, cellTputSample);
+ macOwner_->emit(macThroughput_, tputSample);
+ macOwner_->emit(macPacketSize_, size);
+ }
+ else // UL
+ {
+ totalCellRcvdBytesUl_ += size;
+ double cellTputSample = (double)totalCellRcvdBytesUl_ / (NOW - getSimulation()->getWarmupPeriod());
+ nodeB_->emit(macCellThroughput_, cellTputSample);
+ macUe_->emit(macThroughput_, tputSample);
+ macUe_->emit(macPacketSize_, size);
+ }
}
- else // UL
+
+ if (NOW > getSimulation()->getWarmupPeriod() && NOW > tpIntervalStart + tpIntervalLength_)
{
- macUe_->emit(macThroughput_, tputSample);
+ double tputSample = (double)intervalRcvdBytes_ / (NOW - tpIntervalStart);
+
+ // emit throughput statistics
+ if (uInfo->getDirection() == DL)
+ {
+ double cellTputSample = (double) (totalCellRcvdBytesDl_ - intervalStartCellRcvdBytesDl_) / (NOW - tpIntervalStart);
+ nodeB_->emit(macCellThroughputInterval_, cellTputSample);
+ macOwner_->emit(macThroughputInterval_, tputSample);
+ }
+ else // UL
+ {
+ double cellTputSample = (double) (totalCellRcvdBytesUl_ - intervalStartCellRcvdBytesUl_) / (NOW - tpIntervalStart);
+ nodeB_->emit(macCellThroughputInterval_, cellTputSample);
+ macUe_->emit(macThroughputInterval_, tputSample);
+ }
+ intervalStartCellRcvdBytesDl_ = totalCellRcvdBytesDl_;
+ intervalStartCellRcvdBytesUl_ = totalCellRcvdBytesUl_;
+ intervalRcvdBytes_ = 0;
+ tpIntervalStart = NOW;
}
+
macOwner_->dropObj(temp);
ret.push_back(temp);
acid = i;
diff --git a/src/stack/mac/buffer/harq/LteHarqBufferRx.h b/src/stack/mac/buffer/harq/LteHarqBufferRx.h
index b66d54c8..7a114d57 100644
--- a/src/stack/mac/buffer/harq/LteHarqBufferRx.h
+++ b/src/stack/mac/buffer/harq/LteHarqBufferRx.h
@@ -46,11 +46,20 @@ class LteHarqBufferRx
bool isMulticast_;
//Statistics
- static unsigned int totalCellRcvdBytes_;
+ static unsigned int totalCellRcvdBytesDl_;
+ static unsigned int totalCellRcvdBytesUl_;
unsigned int totalRcvdBytes_ = 0;
+ unsigned int intervalStartCellRcvdBytesDl_ = 0;
+ unsigned int intervalStartCellRcvdBytesUl_ = 0;
+ unsigned int intervalRcvdBytes_ = 0;
+ simtime_t tpIntervalStart = 0;
+ simtime_t tpIntervalLength_ = SimTime(1000, SIMTIME_MS);
simsignal_t macDelay_;
simsignal_t macCellThroughput_;
simsignal_t macThroughput_;
+ simsignal_t macCellThroughputInterval_;
+ simsignal_t macThroughputInterval_;
+ simsignal_t macPacketSize_;
// reference to the eNB module
cModule* nodeB_;
diff --git a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc
index 52c06b88..0692475d 100644
--- a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc
+++ b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc
@@ -16,6 +16,8 @@
#include "stack/mac/layer/LteMacUeD2D.h"
#include "stack/mac/layer/LteMacEnbD2D.h"
+unsigned int LteHarqBufferRxD2D::totalCellRcvdBytesD2D_ = 0;
+
LteHarqBufferRxD2D::LteHarqBufferRxD2D(unsigned int num, LteMacBase *owner, MacNodeId nodeId, bool isMulticast)
{
macOwner_ = owner;
@@ -146,28 +148,74 @@ std::list LteHarqBufferRxD2D::extractCorrectPdus()
}
// Calculate Throughput by sending the number of bits for this packet
- totalRcvdBytes_ += size;
- totalCellRcvdBytes_ += size;
- double tputSample = (double)totalRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
- double cellTputSample = (double)totalCellRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
-
- // emit throughput statistics
- if (info->getDirection() == D2D)
+ if (NOW > getSimulation()->getWarmupPeriod())
{
- check_and_cast(nodeB_)->emit(macCellThroughputD2D_, cellTputSample);
- check_and_cast(macOwner_)->emit(macThroughputD2D_, tputSample);
+ totalRcvdBytes_ += size;
+ intervalRcvdBytes_ += size;
+
+ double tputSample = (double)totalRcvdBytes_ / (NOW - getSimulation()->getWarmupPeriod());
+
+ // emit throughput statistics
+ if (info->getDirection() == D2D)
+ {
+ totalCellRcvdBytesD2D_ += size;
+ double cellTputSample = (double)totalCellRcvdBytesD2D_ / (NOW - getSimulation()->getWarmupPeriod());
+ check_and_cast(nodeB_)->emit(macCellThroughputD2D_, cellTputSample);
+ check_and_cast(macOwner_)->emit(macThroughputD2D_, tputSample);
+ check_and_cast(macOwner_)->emit(macPacketSize_, size);
+ }
+ else
+ {
+ if (info->getDirection() == DL)
+ {
+ totalCellRcvdBytesDl_ += size;
+ double cellTputSample = (double)totalCellRcvdBytesDl_ / (NOW - getSimulation()->getWarmupPeriod());
+ nodeB_->emit(macCellThroughput_, cellTputSample);
+ macOwner_->emit(macThroughput_, tputSample);
+ macOwner_->emit(macPacketSize_, size);
+ }
+ else // UL
+ {
+ totalCellRcvdBytesUl_ += size;
+ double cellTputSample = (double)totalCellRcvdBytesUl_ / (NOW - getSimulation()->getWarmupPeriod());
+ nodeB_->emit(macCellThroughput_, cellTputSample);
+ macUe_->emit(macThroughput_, tputSample);
+ macUe_->emit(macPacketSize_, size);
+ }
+ }
}
- else
+
+ if (NOW > getSimulation()->getWarmupPeriod() && NOW > tpIntervalStart + tpIntervalLength_)
{
- nodeB_->emit(macCellThroughput_, cellTputSample);
- if (info->getDirection() == DL)
+ double tputSample = (double)intervalRcvdBytes_ / (NOW - tpIntervalStart);
+
+ // emit throughput statistics
+ if (info->getDirection() == D2D)
{
- macOwner_->emit(macThroughput_, tputSample);
+ double cellTputSample = (double) (totalCellRcvdBytesD2D_ - intervalStartCellRcvdBytesD2D_) / (NOW - tpIntervalStart);
+ check_and_cast(nodeB_)->emit(macCellThroughputD2D_, cellTputSample);
+ check_and_cast(macOwner_)->emit(macThroughputD2D_, tputSample);
}
- else // UL
+ else
{
- macUe_->emit(macThroughput_, tputSample);
+ if (info->getDirection() == DL)
+ {
+ double cellTputSample = (double) (totalCellRcvdBytesDl_ - intervalStartCellRcvdBytesDl_) / (NOW - tpIntervalStart);
+ nodeB_->emit(macCellThroughputInterval_, cellTputSample);
+ macOwner_->emit(macThroughputInterval_, tputSample);
+ }
+ else // UL
+ {
+ double cellTputSample = (double) (totalCellRcvdBytesUl_ - intervalStartCellRcvdBytesUl_) / (NOW - tpIntervalStart);
+ nodeB_->emit(macCellThroughputInterval_, cellTputSample);
+ macUe_->emit(macThroughputInterval_, tputSample);
+ }
}
+ intervalStartCellRcvdBytesD2D_ = totalCellRcvdBytesD2D_;
+ intervalStartCellRcvdBytesDl_ = totalCellRcvdBytesDl_;
+ intervalStartCellRcvdBytesUl_ = totalCellRcvdBytesUl_;
+ intervalRcvdBytes_ = 0;
+ tpIntervalStart = NOW;
}
ret.push_back(temp);
diff --git a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h
index 99dabd29..cdd338d5 100644
--- a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h
+++ b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h
@@ -31,6 +31,8 @@ class LteHarqBufferRxD2D : public LteHarqBufferRx
protected:
// D2D Statistics
+ static unsigned int totalCellRcvdBytesD2D_;
+ unsigned int intervalStartCellRcvdBytesD2D_ = 0;
simsignal_t macDelayD2D_;
simsignal_t macCellThroughputD2D_;
simsignal_t macThroughputD2D_;
diff --git a/src/stack/phy/ChannelModel/GilbertElliotModel.cc b/src/stack/phy/ChannelModel/GilbertElliotModel.cc
new file mode 100644
index 00000000..342f0ce8
--- /dev/null
+++ b/src/stack/phy/ChannelModel/GilbertElliotModel.cc
@@ -0,0 +1,96 @@
+//
+// Created by seba on 09.07.19.
+//
+
+#include
+#include
+#include "GilbertElliotModel.h"
+#include "stack/phy/ChannelModel/LteGilbertElliotChannelModel.h"
+
+GilbertElliotModel::GilbertElliotModel() {}
+
+void GilbertElliotModel::setStartingState() {
+ double steady_state_good = getSteadyStateProbability(ChannelState::good);
+ double random_number = parent->getRandomNumber();
+ if (random_number <= steady_state_good)
+ current_channel_state = ChannelState::good;
+ else
+ current_channel_state = ChannelState::bad;
+}
+
+double GilbertElliotModel::update() {
+ double random_number = parent->getRandomNumber();
+ double current_transition_probability = current_channel_state == ChannelState::good ? good_state_transition_prob : bad_state_transition_prob;
+ if (random_number <= current_transition_probability)
+ current_channel_state = current_channel_state == ChannelState::good ? ChannelState::bad : ChannelState::good;
+ current_channel_state == ChannelState::good ? num_times_good_state_visited++ : num_times_bad_state_visited++;
+ return getCurrentErrorProbability();
+}
+
+void GilbertElliotModel::setErrorProbability(const int channel_state, double error_probability) {
+ if (channel_state == ChannelState::good)
+ this->good_state_packet_error_prob = error_probability;
+ else if (channel_state == ChannelState::bad)
+ this->bad_state_packet_error_prob = error_probability;
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
+
+void GilbertElliotModel::setTransitionProbability(const int channel_state, double transition_probability) {
+ if (channel_state == ChannelState::good)
+ this->good_state_transition_prob = transition_probability;
+ else if (channel_state == ChannelState::bad)
+ this->bad_state_transition_prob = transition_probability;
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
+
+double GilbertElliotModel::getErrorProbability(const int channel_state) const {
+ if (channel_state == ChannelState::good)
+ return this->good_state_packet_error_prob;
+ else if (channel_state == ChannelState::bad)
+ return this->bad_state_packet_error_prob;
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
+
+double GilbertElliotModel::getTransitionProbability(const int channel_state) const {
+ if (channel_state == ChannelState::good)
+ return this->good_state_transition_prob;
+ else if (channel_state == ChannelState::bad)
+ return this->bad_state_transition_prob;
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
+
+double GilbertElliotModel::getCurrentErrorProbability() const {
+ return current_channel_state == ChannelState::good ? good_state_packet_error_prob : bad_state_packet_error_prob;
+}
+
+double GilbertElliotModel::getSteadyStateProbability(const int channel_state) const {
+ const double& p12 = good_state_transition_prob;
+ const double& p21 = bad_state_transition_prob;
+ if (channel_state == ChannelState::good)
+ return p21 / (p12 + p21);
+ else if (channel_state == ChannelState::bad)
+ return p12 / (p21 + p12);
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
+
+const GilbertElliotModel::ChannelState& GilbertElliotModel::getCurrentChannelState() const {
+ return this->current_channel_state;
+}
+
+void GilbertElliotModel::setParent(LteGilbertElliotChannelModel* parent) {
+ this->parent = parent;
+}
+
+unsigned long GilbertElliotModel::getNumTimesStateVisited(const int channel_state) const {
+ if (channel_state == ChannelState::good)
+ return num_times_good_state_visited;
+ else if (channel_state == ChannelState::bad)
+ return num_times_bad_state_visited;
+ else
+ throw std::invalid_argument("Channel state is neither good nor bad.");
+}
diff --git a/src/stack/phy/ChannelModel/GilbertElliotModel.h b/src/stack/phy/ChannelModel/GilbertElliotModel.h
new file mode 100644
index 00000000..472c6286
--- /dev/null
+++ b/src/stack/phy/ChannelModel/GilbertElliotModel.h
@@ -0,0 +1,71 @@
+//
+// Created by seba on 09.07.19.
+//
+
+#ifndef LTEGILBERTELLIOTCHANNELMODEL_GILBERTELLIOTMODEL_H
+#define LTEGILBERTELLIOTCHANNELMODEL_GILBERTELLIOTMODEL_H
+
+#include
+
+class LteGilbertElliotChannelModel;
+
+/**
+ * Implements a two-state Gilbert-Elliot channel model.
+ * This is a discrete two-state Markov chain, with specific transition probabilities.
+ * The two states correspond to the channel taking on a specific state, e.g. a 'good' state and a 'bad' state.
+ * Each state may exhibit a certain packet error probability, so that checking whether a transmission succeeds boils down to evaluating which state the model is currently in, and applying the corresponding packet error probability.
+ */
+class GilbertElliotModel {
+ public:
+ /** The states the model can be in. */
+ enum ChannelState {
+ good = 0,
+ bad = 1
+ };
+
+ GilbertElliotModel();
+ virtual ~GilbertElliotModel() = default;
+
+ void setStartingState();
+
+ /**
+ * Updates the model. Possibly transitions to another state, or remains.
+ * @return The current packet error probability after updating.
+ */
+ double update();
+
+ double getCurrentErrorProbability() const;
+
+ double getSteadyStateProbability(const int channel_state) const;
+
+ void setErrorProbability(const int channel_state, double error_probability);
+
+ void setTransitionProbability(const int channel_state, double transition_probability);
+
+ double getErrorProbability(const int channel_state) const;
+
+ double getTransitionProbability(const int channel_state) const;
+
+ const GilbertElliotModel::ChannelState& getCurrentChannelState() const;
+
+ void setParent(LteGilbertElliotChannelModel* parent);
+
+ unsigned long getNumTimesStateVisited(const int channel_state) const;
+
+ private:
+ double good_state_packet_error_prob = 0.0,
+ bad_state_packet_error_prob = 1.0;
+
+ double good_state_transition_prob = 0.5,
+ bad_state_transition_prob = 0.5;
+
+ unsigned long num_times_good_state_visited = 0,
+ num_times_bad_state_visited = 0;
+
+ ChannelState current_channel_state = ChannelState::good;
+
+ LteGilbertElliotChannelModel* parent = nullptr;
+};
+
+
+#endif //LTEGILBERTELLIOTCHANNELMODEL_GILBERTELLIOTMODEL_H
diff --git a/src/stack/phy/ChannelModel/LteChannelModel.ned b/src/stack/phy/ChannelModel/LteChannelModel.ned
index 574a07c8..739d689b 100644
--- a/src/stack/phy/ChannelModel/LteChannelModel.ned
+++ b/src/stack/phy/ChannelModel/LteChannelModel.ned
@@ -103,6 +103,20 @@ simple LteRealisticChannelModel like LteChannelModelInterface
// statistics
@signal[rcvdSinr];
@statistic[rcvdSinr](title="SINR measured at packet reception"; unit="dB"; source="rcvdSinr"; record=mean,vector);
+ @signal[pathLoss];
+ @statistic[pathLoss](title="path loss measured at path loss computation"; unit="dB"; source="pathLoss"; record=mean,vector);
+ @signal[fadingAttenuation];
+ @statistic[fadingAttenuation](title="fading measured after fading calculation"; unit="dB"; source="fadingAttenuation"; record=mean,vector);
+}
+
+simple LteGilbertElliotChannelModel extends LteRealisticChannelModel
+{
+ parameters:
+ @class("LteGilbertElliotChannelModel");
+ double error_prob_good_state = default(0.0);
+ double error_prob_bad_state = default(1.0);
+ double trans_prob_good_state = default(0.5);
+ double trans_prob_bad_state = default(0.5);
}
simple LteMagicChannelModel like LteChannelModelInterface
diff --git a/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.cc b/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.cc
new file mode 100644
index 00000000..13ccec96
--- /dev/null
+++ b/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.cc
@@ -0,0 +1,61 @@
+/*
+ * LteGilbertElliotChannelModel.cc
+ *
+ * Created on: Jul 9, 2019
+ * Author: Sebastian Lindner, sebastian.lindner@tuhh.de
+ */
+
+#include "LteGilbertElliotChannelModel.h"
+#include
+
+Define_Module(LteGilbertElliotChannelModel);
+
+LteGilbertElliotChannelModel::LteGilbertElliotChannelModel() : channel_model(), rng_error(getRNG(0)), rng_model(getRNG(0)) {
+ channel_model.setParent(this);
+}
+
+LteGilbertElliotChannelModel::~LteGilbertElliotChannelModel() {
+ std::cout << "num_times_good_state=" << channel_model.getNumTimesStateVisited(GilbertElliotModel::ChannelState::good) << " num_times_bad_state=" << channel_model.getNumTimesStateVisited(GilbertElliotModel::ChannelState::bad) << std::endl;
+}
+
+bool LteGilbertElliotChannelModel::error(LteAirFrame *frame, UserControlInfo* lteI) {
+ // Update the channel model.
+ GilbertElliotModel::ChannelState state_before = channel_model.getCurrentChannelState();
+ double packet_error_prob = channel_model.update();
+ // Print update.
+ EV << "Channel update: " << state_before << " -> " << channel_model.getCurrentChannelState() << std::endl;
+ // Draw a random number.
+ double random_number = rng_error->doubleRand();
+ // Apply HARQ reduction.
+ double nTx = (double) lteI->getTxNumber();
+ packet_error_prob = pow(packet_error_prob, nTx+1); // Assuming exponential decrease.
+ //std::cout << "nTx=" << nTx << " err=" << packet_error_prob << std::endl;
+ // Compare to the current model state's error probability.
+ if (random_number > packet_error_prob) {// e.g. packet_error_prob=0.3, then for random_number>0.3 no error occurs, which is an 'area' of 0.7.
+ EV << "Channel result: no error" << std::endl;
+ return false;
+ } else {
+ EV << "Channel result: an error" << std::endl;
+ return true;
+ }
+}
+
+bool LteGilbertElliotChannelModel::error_D2D(LteAirFrame *frame, UserControlInfo* lteI, const std::vector& rsrpVector) {
+ return error(frame, lteI);
+}
+
+void LteGilbertElliotChannelModel::initialize() {
+ LteRealisticChannelModel::initialize();
+ if (!has_initialized) {
+ channel_model.setErrorProbability(GilbertElliotModel::ChannelState::good, par("error_prob_good_state").doubleValue());
+ channel_model.setErrorProbability(GilbertElliotModel::ChannelState::bad, par("error_prob_bad_state").doubleValue());
+ channel_model.setTransitionProbability(GilbertElliotModel::ChannelState::good, par("trans_prob_good_state").doubleValue());
+ channel_model.setTransitionProbability(GilbertElliotModel::ChannelState::bad, par("trans_prob_bad_state").doubleValue());
+ channel_model.setStartingState();
+ has_initialized = true;
+ }
+}
+
+double LteGilbertElliotChannelModel::getRandomNumber() {
+ return rng_model->doubleRand();
+}
diff --git a/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.h b/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.h
new file mode 100644
index 00000000..8baa9504
--- /dev/null
+++ b/src/stack/phy/ChannelModel/LteGilbertElliotChannelModel.h
@@ -0,0 +1,41 @@
+/*
+ * LteGilbertElliotChannelModel.h
+ *
+ * Created on: Jul 9, 2019
+ * Author: Sebastian Lindner, sebastian.lindner@tuhh.de
+ */
+
+#ifndef STACK_PHY_CHANNELMODEL_LTEGILBERTELLIOTCHANNELMODEL_H_
+#define STACK_PHY_CHANNELMODEL_LTEGILBERTELLIOTCHANNELMODEL_H_
+
+#include "stack/phy/ChannelModel/LteRealisticChannelModel.h"
+#include "stack/phy/ChannelModel/GilbertElliotModel.h"
+
+/**
+ * Implements a two-state Gilbert-Elliot channel model.
+ * This is a discrete two-state Markov chain, with specific transition probabilities.
+ * The two states correspond to the channel taking on a specific state, e.g. a 'good' state and a 'bad' state.
+ * Each state may exhibit a certain packet error probability, so that checking whether a transmission succeeds boils down to evaluating which state the model is currently in, and applying the corresponding packet error probability.
+ */
+class LteGilbertElliotChannelModel : public LteRealisticChannelModel {
+ friend class GilbertElliotModel;
+
+public:
+ LteGilbertElliotChannelModel();
+ virtual ~LteGilbertElliotChannelModel();
+
+ virtual bool error(LteAirFrame *frame, UserControlInfo* lteI) override;
+ virtual bool error_D2D(LteAirFrame *frame, UserControlInfo* lteI, const std::vector& rsrpVector) override;
+
+ virtual void initialize();
+
+protected:
+ double getRandomNumber();
+
+private:
+ GilbertElliotModel channel_model;
+ cRNG* rng_error, *rng_model;
+ bool has_initialized = false;
+};
+
+#endif /* STACK_PHY_CHANNELMODEL_LTEGILBERTELLIOTCHANNELMODEL_H_ */
diff --git a/src/stack/phy/ChannelModel/LteRealisticChannelModel.cc b/src/stack/phy/ChannelModel/LteRealisticChannelModel.cc
index d9a02829..dc1ff6b2 100644
--- a/src/stack/phy/ChannelModel/LteRealisticChannelModel.cc
+++ b/src/stack/phy/ChannelModel/LteRealisticChannelModel.cc
@@ -78,6 +78,8 @@ void LteRealisticChannelModel::initialize()
// statistics
rcvdSinr_ = registerSignal("rcvdSinr");
+ pathLoss_ = registerSignal("pathLoss");
+ fadingAttenuation_ = registerSignal("fadingAttenuation");
}
@@ -567,6 +569,7 @@ std::vector LteRealisticChannelModel::getSINR(LteAirFrame *frame, UserCo
else if (fadingType_ == JAKES)
fadingAttenuation = jakesFading(ueId, speed, i, cqiDl);
}
+ emit(fadingAttenuation_,fadingAttenuation);
// add fading contribution to the received pwr
double finalRecvPower = recvPower + fadingAttenuation; // (dBm+dB)=dBm
@@ -1647,6 +1650,7 @@ double LteRealisticChannelModel::computePathLoss(double distance, double dbp, bo
default:
throw cRuntimeError("Wrong value %d for path-loss scenario", scenario_);
}
+ emit(pathLoss_,pathLoss);
return pathLoss;
}
diff --git a/src/stack/phy/ChannelModel/LteRealisticChannelModel.h b/src/stack/phy/ChannelModel/LteRealisticChannelModel.h
index 2b36dc3a..ea5bfb41 100644
--- a/src/stack/phy/ChannelModel/LteRealisticChannelModel.h
+++ b/src/stack/phy/ChannelModel/LteRealisticChannelModel.h
@@ -142,6 +142,8 @@ class LteRealisticChannelModel : public LteChannelModel
// statistics
simsignal_t rcvdSinr_;
+ simsignal_t pathLoss_;
+ simsignal_t fadingAttenuation_;
public:
diff --git a/src/stack/phy/LtePhy.ned b/src/stack/phy/LtePhy.ned
index b32f1064..f21af790 100644
--- a/src/stack/phy/LtePhy.ned
+++ b/src/stack/phy/LtePhy.ned
@@ -90,7 +90,7 @@ simple LtePhyUeD2D extends LtePhyUe {
simple LtePhyEnb extends LtePhyBase {
@class("LtePhyEnb");
- double targetBler = default(0.001);
+ double targetBler = default(0.1);
double lambdaMinTh = default(0.02);
double lambdaMaxTh = default(0.2);
double lambdaRatioTh = default(20);
diff --git a/src/stack/phy/feedback/LteFeedbackComputationRealistic.cc b/src/stack/phy/feedback/LteFeedbackComputationRealistic.cc
index 820d6c91..99d8aec2 100644
--- a/src/stack/phy/feedback/LteFeedbackComputationRealistic.cc
+++ b/src/stack/phy/feedback/LteFeedbackComputationRealistic.cc
@@ -106,7 +106,7 @@ unsigned int LteFeedbackComputationRealistic::computeRank(MacNodeId id)
Cqi LteFeedbackComputationRealistic::getCqi(TxMode txmode, double snr)
{
int newsnr = floor(snr + 0.5);
- if (newsnr < 0)
+ if (newsnr <= 0)
return 0;
if (newsnr > phyPisaData_->maxSnr())
return 15;