src/lte/model/lte-rrc-header.cc
changeset 10028 f988b82ef6ec
parent 9989 830199200fe3
child 10063 6b30859ebd37
equal deleted inserted replaced
10026:742d7698a15e 10028:f988b82ef6ec
   963 void
   963 void
   964 RrcAsn1Header::SerializeThresholdEutra (LteRrcSap::ThresholdEutra thresholdEutra) const
   964 RrcAsn1Header::SerializeThresholdEutra (LteRrcSap::ThresholdEutra thresholdEutra) const
   965 {
   965 {
   966   switch (thresholdEutra.choice)
   966   switch (thresholdEutra.choice)
   967     {
   967     {
   968     case LteRrcSap::ThresholdEutra::thresholdRsrp:
   968     case LteRrcSap::ThresholdEutra::THRESHOLD_RSRP:
   969       SerializeChoice (2,0,false);
   969       SerializeChoice (2,0,false);
   970       SerializeInteger (thresholdEutra.range, 0, 97);
   970       SerializeInteger (thresholdEutra.range, 0, 97);
   971       break;
   971       break;
   972     case LteRrcSap::ThresholdEutra::thresholdRsrq:
   972     case LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ:
   973     default:
   973     default:
   974       SerializeChoice (2,1,false);
   974       SerializeChoice (2,1,false);
   975       SerializeInteger (thresholdEutra.range, 0, 34);
   975       SerializeInteger (thresholdEutra.range, 0, 34);
   976     }
   976     }
   977 }
   977 }
  1185 
  1185 
  1186           // Serialize ReportConfigEUTRA
  1186           // Serialize ReportConfigEUTRA
  1187           SerializeSequence (std::bitset<0> (), true);
  1187           SerializeSequence (std::bitset<0> (), true);
  1188           switch (it->reportConfigEutra.triggerType)
  1188           switch (it->reportConfigEutra.triggerType)
  1189             {
  1189             {
  1190             case LteRrcSap::ReportConfigEutra::periodical:
  1190             case LteRrcSap::ReportConfigEutra::PERIODICAL:
  1191               SerializeChoice (2, 1, false); 
  1191               SerializeChoice (2, 1, false); 
  1192               SerializeSequence (std::bitset<0> (),false);
  1192               SerializeSequence (std::bitset<0> (),false);
  1193               switch (it->reportConfigEutra.purpose)
  1193               switch (it->reportConfigEutra.purpose)
  1194                 {
  1194                 {
  1195                 case LteRrcSap::ReportConfigEutra::reportCgi:
  1195                 case LteRrcSap::ReportConfigEutra::REPORT_CGI:
  1196                   SerializeEnum (2,1);
  1196                   SerializeEnum (2,1);
  1197                   break;
  1197                   break;
  1198                 case LteRrcSap::ReportConfigEutra::reportStrongestCells:
  1198                 case LteRrcSap::ReportConfigEutra::REPORT_STRONGEST_CELLS:
  1199                 default:
  1199                 default:
  1200                   SerializeEnum (2,0);
  1200                   SerializeEnum (2,0);
  1201                 }
  1201                 }
  1202               break;
  1202               break;
  1203             case LteRrcSap::ReportConfigEutra::event:
  1203             case LteRrcSap::ReportConfigEutra::EVENT:
  1204             default: 
  1204             default: 
  1205               SerializeChoice (2, 0, false);
  1205               SerializeChoice (2, 0, false);
  1206               SerializeSequence (std::bitset<0> (),false);
  1206               SerializeSequence (std::bitset<0> (),false);
  1207               switch (it->reportConfigEutra.eventId)
  1207               switch (it->reportConfigEutra.eventId)
  1208                 {
  1208                 {
  1209                 case LteRrcSap::ReportConfigEutra::eventA1:
  1209                 case LteRrcSap::ReportConfigEutra::EVENT_A1:
  1210                   SerializeChoice (5, 0, true);
  1210                   SerializeChoice (5, 0, true);
  1211                   SerializeSequence (std::bitset<0> (),false);
  1211                   SerializeSequence (std::bitset<0> (),false);
  1212                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1212                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1213                   break;
  1213                   break;
  1214                 case LteRrcSap::ReportConfigEutra::eventA2:
  1214                 case LteRrcSap::ReportConfigEutra::EVENT_A2:
  1215                   SerializeChoice (5, 1, true);
  1215                   SerializeChoice (5, 1, true);
  1216                   SerializeSequence (std::bitset<0> (),false);
  1216                   SerializeSequence (std::bitset<0> (),false);
  1217                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1217                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1218                   break;
  1218                   break;
  1219                 case LteRrcSap::ReportConfigEutra::eventA3:
  1219                 case LteRrcSap::ReportConfigEutra::EVENT_A3:
  1220                   SerializeChoice (5, 2, true);
  1220                   SerializeChoice (5, 2, true);
  1221                   SerializeSequence (std::bitset<0> (),false);
  1221                   SerializeSequence (std::bitset<0> (),false);
  1222                   SerializeInteger (it->reportConfigEutra.a3Offset,-30,30);
  1222                   SerializeInteger (it->reportConfigEutra.a3Offset,-30,30);
  1223                   SerializeBoolean (it->reportConfigEutra.reportOnLeave);
  1223                   SerializeBoolean (it->reportConfigEutra.reportOnLeave);
  1224                   break;
  1224                   break;
  1225                 case LteRrcSap::ReportConfigEutra::eventA4:
  1225                 case LteRrcSap::ReportConfigEutra::EVENT_A4:
  1226                   SerializeChoice (5, 3, true);
  1226                   SerializeChoice (5, 3, true);
  1227                   SerializeSequence (std::bitset<0> (),false);
  1227                   SerializeSequence (std::bitset<0> (),false);
  1228                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1228                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1229                   break;
  1229                   break;
  1230                 case LteRrcSap::ReportConfigEutra::eventA5:
  1230                 case LteRrcSap::ReportConfigEutra::EVENT_A5:
  1231                 default:
  1231                 default:
  1232                   SerializeChoice (5, 4, true);
  1232                   SerializeChoice (5, 4, true);
  1233                   SerializeSequence (std::bitset<0> (),false);
  1233                   SerializeSequence (std::bitset<0> (),false);
  1234                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1234                   SerializeThresholdEutra (it->reportConfigEutra.threshold1);
  1235                   SerializeThresholdEutra (it->reportConfigEutra.threshold2);
  1235                   SerializeThresholdEutra (it->reportConfigEutra.threshold2);
  1289                   SerializeEnum (16, 15);
  1289                   SerializeEnum (16, 15);
  1290                 }
  1290                 }
  1291             } // end trigger type
  1291             } // end trigger type
  1292 
  1292 
  1293           // Serialize triggerQuantity
  1293           // Serialize triggerQuantity
  1294           if (it->reportConfigEutra.triggerQuantity == LteRrcSap::ReportConfigEutra::rsrp)
  1294           if (it->reportConfigEutra.triggerQuantity == LteRrcSap::ReportConfigEutra::RSRP)
  1295             {
  1295             {
  1296               SerializeEnum (2, 0);
  1296               SerializeEnum (2, 0);
  1297             }
  1297             }
  1298           else
  1298           else
  1299             {
  1299             {
  1300               SerializeEnum (2, 1);
  1300               SerializeEnum (2, 1);
  1301             }
  1301             }
  1302 
  1302 
  1303           // Serialize reportQuantity
  1303           // Serialize reportQuantity
  1304           if (it->reportConfigEutra.reportQuantity == LteRrcSap::ReportConfigEutra::sameAsTriggerQuantity)
  1304           if (it->reportConfigEutra.reportQuantity == LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY)
  1305             {
  1305             {
  1306               SerializeEnum (2, 0);
  1306               SerializeEnum (2, 0);
  1307             }
  1307             }
  1308           else
  1308           else
  1309             {
  1309             {
  1314           SerializeInteger (it->reportConfigEutra.maxReportCells, 1, MAX_CELL_REPORT);
  1314           SerializeInteger (it->reportConfigEutra.maxReportCells, 1, MAX_CELL_REPORT);
  1315 
  1315 
  1316           // Serialize reportInterval
  1316           // Serialize reportInterval
  1317           switch (it->reportConfigEutra.reportInterval)
  1317           switch (it->reportConfigEutra.reportInterval)
  1318             {
  1318             {
  1319             case LteRrcSap::ReportConfigEutra::ms120:
  1319             case LteRrcSap::ReportConfigEutra::MS120:
  1320               SerializeEnum (16, 0);
  1320               SerializeEnum (16, 0);
  1321               break;
  1321               break;
  1322             case LteRrcSap::ReportConfigEutra::ms240:
  1322             case LteRrcSap::ReportConfigEutra::MS240:
  1323               SerializeEnum (16, 1);
  1323               SerializeEnum (16, 1);
  1324               break;
  1324               break;
  1325             case LteRrcSap::ReportConfigEutra::ms480:
  1325             case LteRrcSap::ReportConfigEutra::MS480:
  1326               SerializeEnum (16, 2);
  1326               SerializeEnum (16, 2);
  1327               break;
  1327               break;
  1328             case LteRrcSap::ReportConfigEutra::ms640:
  1328             case LteRrcSap::ReportConfigEutra::MS640:
  1329               SerializeEnum (16, 3);
  1329               SerializeEnum (16, 3);
  1330               break;
  1330               break;
  1331             case LteRrcSap::ReportConfigEutra::ms1024:
  1331             case LteRrcSap::ReportConfigEutra::MS1024:
  1332               SerializeEnum (16, 4);
  1332               SerializeEnum (16, 4);
  1333               break;
  1333               break;
  1334             case LteRrcSap::ReportConfigEutra::ms2048:
  1334             case LteRrcSap::ReportConfigEutra::MS2048:
  1335               SerializeEnum (16, 5);
  1335               SerializeEnum (16, 5);
  1336               break;
  1336               break;
  1337             case LteRrcSap::ReportConfigEutra::ms5120:
  1337             case LteRrcSap::ReportConfigEutra::MS5120:
  1338               SerializeEnum (16, 6);
  1338               SerializeEnum (16, 6);
  1339               break;
  1339               break;
  1340             case LteRrcSap::ReportConfigEutra::ms10240:
  1340             case LteRrcSap::ReportConfigEutra::MS10240:
  1341               SerializeEnum (16, 7);
  1341               SerializeEnum (16, 7);
  1342               break;
  1342               break;
  1343             case LteRrcSap::ReportConfigEutra::min1:
  1343             case LteRrcSap::ReportConfigEutra::MIN1:
  1344               SerializeEnum (16, 8);
  1344               SerializeEnum (16, 8);
  1345               break;
  1345               break;
  1346             case LteRrcSap::ReportConfigEutra::min6:
  1346             case LteRrcSap::ReportConfigEutra::MIN6:
  1347               SerializeEnum (16, 9);
  1347               SerializeEnum (16, 9);
  1348               break;
  1348               break;
  1349             case LteRrcSap::ReportConfigEutra::min12:
  1349             case LteRrcSap::ReportConfigEutra::MIN12:
  1350               SerializeEnum (16, 10);
  1350               SerializeEnum (16, 10);
  1351               break;
  1351               break;
  1352             case LteRrcSap::ReportConfigEutra::min30:
  1352             case LteRrcSap::ReportConfigEutra::MIN30:
  1353               SerializeEnum (16, 11);
  1353               SerializeEnum (16, 11);
  1354               break;
  1354               break;
  1355             case LteRrcSap::ReportConfigEutra::min60:
  1355             case LteRrcSap::ReportConfigEutra::MIN60:
  1356               SerializeEnum (16, 12);
  1356               SerializeEnum (16, 12);
  1357               break;
  1357               break;
  1358             case LteRrcSap::ReportConfigEutra::spare3:
  1358             case LteRrcSap::ReportConfigEutra::SPARE3:
  1359               SerializeEnum (16, 13);
  1359               SerializeEnum (16, 13);
  1360               break;
  1360               break;
  1361             case LteRrcSap::ReportConfigEutra::spare2:
  1361             case LteRrcSap::ReportConfigEutra::SPARE2:
  1362               SerializeEnum (16, 14);
  1362               SerializeEnum (16, 14);
  1363               break;
  1363               break;
  1364             case LteRrcSap::ReportConfigEutra::spare1:
  1364             case LteRrcSap::ReportConfigEutra::SPARE1:
  1365             default:
  1365             default:
  1366               SerializeEnum (16, 15);
  1366               SerializeEnum (16, 15);
  1367             }
  1367             }
  1368 
  1368 
  1369           // Serialize reportAmount
  1369           // Serialize reportAmount
  1540         default:
  1540         default:
  1541           SerializeChoice (2, 1, false);
  1541           SerializeChoice (2, 1, false);
  1542           SerializeSequence (std::bitset<0> (),false);
  1542           SerializeSequence (std::bitset<0> (),false);
  1543           switch (measConfig.measGapConfig.gapOffsetChoice)
  1543           switch (measConfig.measGapConfig.gapOffsetChoice)
  1544             {
  1544             {
  1545             case LteRrcSap::MeasGapConfig::gp0:
  1545             case LteRrcSap::MeasGapConfig::GP0:
  1546               SerializeChoice (2, 0, true);
  1546               SerializeChoice (2, 0, true);
  1547               SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 39);
  1547               SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 39);
  1548               break;
  1548               break;
  1549             case LteRrcSap::MeasGapConfig::gp1:
  1549             case LteRrcSap::MeasGapConfig::GP1:
  1550             default:
  1550             default:
  1551               SerializeChoice (2, 1, true);
  1551               SerializeChoice (2, 1, true);
  1552               SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 79);
  1552               SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 79);
  1553             }
  1553             }
  1554         }
  1554         }
  1663   bIterator = DeserializeChoice (2, false, &thresholdEutraChoice, bIterator);
  1663   bIterator = DeserializeChoice (2, false, &thresholdEutraChoice, bIterator);
  1664 
  1664 
  1665   switch (thresholdEutraChoice)
  1665   switch (thresholdEutraChoice)
  1666     {
  1666     {
  1667     case 0:
  1667     case 0:
  1668       thresholdEutra->choice = LteRrcSap::ThresholdEutra::thresholdRsrp;
  1668       thresholdEutra->choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRP;
  1669       bIterator = DeserializeInteger (&range, 0, 97, bIterator);
  1669       bIterator = DeserializeInteger (&range, 0, 97, bIterator);
  1670       thresholdEutra->range = range;
  1670       thresholdEutra->range = range;
  1671       break;
  1671       break;
  1672     case 1:
  1672     case 1:
  1673     default:
  1673     default:
  1674       thresholdEutra->choice = LteRrcSap::ThresholdEutra::thresholdRsrq;
  1674       thresholdEutra->choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
  1675       bIterator = DeserializeInteger (&range, 0, 34, bIterator);
  1675       bIterator = DeserializeInteger (&range, 0, 34, bIterator);
  1676       thresholdEutra->range = range;
  1676       thresholdEutra->range = range;
  1677     }
  1677     }
  1678 
  1678 
  1679   return bIterator;
  1679   return bIterator;
  3309               bIterator = DeserializeChoice (2, false, &triggerTypeChoice, bIterator);
  3309               bIterator = DeserializeChoice (2, false, &triggerTypeChoice, bIterator);
  3310 
  3310 
  3311               if (triggerTypeChoice == 0)
  3311               if (triggerTypeChoice == 0)
  3312                 {
  3312                 {
  3313                   // event
  3313                   // event
  3314                   elem.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::event;
  3314                   elem.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::EVENT;
  3315                   bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3315                   bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3316 
  3316 
  3317                   // eventId
  3317                   // eventId
  3318                   int eventIdChoice;
  3318                   int eventIdChoice;
  3319                   bIterator = DeserializeChoice (5, true, &eventIdChoice, bIterator);
  3319                   bIterator = DeserializeChoice (5, true, &eventIdChoice, bIterator);
  3320 
  3320 
  3321                   switch (eventIdChoice)
  3321                   switch (eventIdChoice)
  3322                     {
  3322                     {
  3323                     case 0:
  3323                     case 0:
  3324                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::eventA1;
  3324                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A1;
  3325                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3325                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3326                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3326                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3327                       break;
  3327                       break;
  3328 
  3328 
  3329                     case 1:
  3329                     case 1:
  3330                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::eventA2;
  3330                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A2;
  3331                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3331                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3332                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3332                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3333                       break;
  3333                       break;
  3334 
  3334 
  3335                     case 2:
  3335                     case 2:
  3336                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::eventA3;
  3336                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A3;
  3337                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3337                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3338                       bIterator = DeserializeInteger (&n, -30, 30, bIterator);
  3338                       bIterator = DeserializeInteger (&n, -30, 30, bIterator);
  3339                       elem.reportConfigEutra.a3Offset = n;
  3339                       elem.reportConfigEutra.a3Offset = n;
  3340                       bIterator = DeserializeBoolean (&elem.reportConfigEutra.reportOnLeave, bIterator);
  3340                       bIterator = DeserializeBoolean (&elem.reportConfigEutra.reportOnLeave, bIterator);
  3341                       break;
  3341                       break;
  3342 
  3342 
  3343                     case 3:
  3343                     case 3:
  3344                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::eventA4;
  3344                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A4;
  3345                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3345                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3346                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3346                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3347                       break;
  3347                       break;
  3348 
  3348 
  3349                     case 4:
  3349                     case 4:
  3350                     default:
  3350                     default:
  3351                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::eventA5;
  3351                       elem.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A5;
  3352                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3352                       bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3353                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3353                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
  3354                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold2, bIterator);
  3354                       bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold2, bIterator);
  3355                     }
  3355                     }
  3356 
  3356 
  3413                 }
  3413                 }
  3414 
  3414 
  3415               if (triggerTypeChoice == 1)
  3415               if (triggerTypeChoice == 1)
  3416                 {
  3416                 {
  3417                   // periodical
  3417                   // periodical
  3418                   elem.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::periodical;
  3418                   elem.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::PERIODICAL;
  3419 
  3419 
  3420                   bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3420                   bIterator = DeserializeSequence (&bitset0, false, bIterator);
  3421                   bIterator = DeserializeEnum (2, &n, bIterator);
  3421                   bIterator = DeserializeEnum (2, &n, bIterator);
  3422                   if (n == 0)
  3422                   if (n == 0)
  3423                     {
  3423                     {
  3424                       elem.reportConfigEutra.purpose = LteRrcSap::ReportConfigEutra::reportStrongestCells;
  3424                       elem.reportConfigEutra.purpose = LteRrcSap::ReportConfigEutra::REPORT_STRONGEST_CELLS;
  3425                     }
  3425                     }
  3426                   else
  3426                   else
  3427                     {
  3427                     {
  3428                       elem.reportConfigEutra.purpose = LteRrcSap::ReportConfigEutra::reportCgi;
  3428                       elem.reportConfigEutra.purpose = LteRrcSap::ReportConfigEutra::REPORT_CGI;
  3429                     }
  3429                     }
  3430                 }
  3430                 }
  3431 
  3431 
  3432               // triggerQuantity
  3432               // triggerQuantity
  3433               bIterator = DeserializeEnum (2, &n, bIterator);
  3433               bIterator = DeserializeEnum (2, &n, bIterator);
  3434               if (n == 0)
  3434               if (n == 0)
  3435                 {
  3435                 {
  3436                   elem.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::rsrp;
  3436                   elem.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRP;
  3437                 }
  3437                 }
  3438               else
  3438               else
  3439                 {
  3439                 {
  3440                   elem.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::rsrq;
  3440                   elem.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
  3441                 }
  3441                 }
  3442 
  3442 
  3443               // reportQuantity
  3443               // reportQuantity
  3444               bIterator = DeserializeEnum (2, &n, bIterator);
  3444               bIterator = DeserializeEnum (2, &n, bIterator);
  3445               if (n == 0)
  3445               if (n == 0)
  3446                 {
  3446                 {
  3447                   elem.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::sameAsTriggerQuantity;
  3447                   elem.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY;
  3448                 }
  3448                 }
  3449               else
  3449               else
  3450                 {
  3450                 {
  3451                   elem.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::both;
  3451                   elem.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::BOTH;
  3452                 }
  3452                 }
  3453 
  3453 
  3454               // maxReportCells
  3454               // maxReportCells
  3455               bIterator = DeserializeInteger (&n, 1, MAX_CELL_REPORT, bIterator);
  3455               bIterator = DeserializeInteger (&n, 1, MAX_CELL_REPORT, bIterator);
  3456               elem.reportConfigEutra.maxReportCells = n;
  3456               elem.reportConfigEutra.maxReportCells = n;
  3458               // reportInterval
  3458               // reportInterval
  3459               bIterator = DeserializeEnum (16, &n, bIterator);
  3459               bIterator = DeserializeEnum (16, &n, bIterator);
  3460               switch (n)
  3460               switch (n)
  3461                 {
  3461                 {
  3462                 case 0:
  3462                 case 0:
  3463                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms120;
  3463                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS120;
  3464                   break;
  3464                   break;
  3465                 case 1:
  3465                 case 1:
  3466                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms240;
  3466                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS240;
  3467                   break;
  3467                   break;
  3468                 case 2:
  3468                 case 2:
  3469                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms480;
  3469                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS480;
  3470                   break;
  3470                   break;
  3471                 case 3:
  3471                 case 3:
  3472                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms640;
  3472                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS640;
  3473                   break;
  3473                   break;
  3474                 case 4:
  3474                 case 4:
  3475                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms1024;
  3475                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS1024;
  3476                   break;
  3476                   break;
  3477                 case 5:
  3477                 case 5:
  3478                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms2048;
  3478                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS2048;
  3479                   break;
  3479                   break;
  3480                 case 6:
  3480                 case 6:
  3481                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms5120;
  3481                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS5120;
  3482                   break;
  3482                   break;
  3483                 case 7:
  3483                 case 7:
  3484                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::ms10240;
  3484                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS10240;
  3485                   break;
  3485                   break;
  3486                 case 8:
  3486                 case 8:
  3487                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::min1;
  3487                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN1;
  3488                   break;
  3488                   break;
  3489                 case 9:
  3489                 case 9:
  3490                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::min6;
  3490                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN6;
  3491                   break;
  3491                   break;
  3492                 case 10:
  3492                 case 10:
  3493                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::min12;
  3493                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN12;
  3494                   break;
  3494                   break;
  3495                 case 11:
  3495                 case 11:
  3496                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::min30;
  3496                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN30;
  3497                   break;
  3497                   break;
  3498                 case 12:
  3498                 case 12:
  3499                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::min60;
  3499                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN60;
  3500                   break;
  3500                   break;
  3501                 case 13:
  3501                 case 13:
  3502                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::spare3;
  3502                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::SPARE3;
  3503                   break;
  3503                   break;
  3504                 case 14:
  3504                 case 14:
  3505                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::spare2;
  3505                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::SPARE2;
  3506                   break;
  3506                   break;
  3507                 case 15:
  3507                 case 15:
  3508                 default:
  3508                 default:
  3509                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::spare1;
  3509                   elem.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::SPARE1;
  3510                 }
  3510                 }
  3511 
  3511 
  3512               // reportAmount
  3512               // reportAmount
  3513               bIterator = DeserializeEnum (8, &n, bIterator);
  3513               bIterator = DeserializeEnum (8, &n, bIterator);
  3514               switch (n)
  3514               switch (n)
  3744           int gapOffsetChoice;
  3744           int gapOffsetChoice;
  3745           bIterator = DeserializeChoice (2, true, &gapOffsetChoice, bIterator);
  3745           bIterator = DeserializeChoice (2, true, &gapOffsetChoice, bIterator);
  3746           switch (gapOffsetChoice)
  3746           switch (gapOffsetChoice)
  3747             {
  3747             {
  3748             case 0:
  3748             case 0:
  3749               measConfig->measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::gp0;
  3749               measConfig->measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::GP0;
  3750               bIterator = DeserializeInteger (&n, 0, 39, bIterator);
  3750               bIterator = DeserializeInteger (&n, 0, 39, bIterator);
  3751               measConfig->measGapConfig.gapOffsetValue = n;
  3751               measConfig->measGapConfig.gapOffsetValue = n;
  3752               break;
  3752               break;
  3753             case 1:
  3753             case 1:
  3754             default:
  3754             default:
  3755               measConfig->measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::gp1;
  3755               measConfig->measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::GP1;
  3756               bIterator = DeserializeInteger (&n, 0, 79, bIterator);
  3756               bIterator = DeserializeInteger (&n, 0, 79, bIterator);
  3757               measConfig->measGapConfig.gapOffsetValue = n;
  3757               measConfig->measGapConfig.gapOffsetValue = n;
  3758             }
  3758             }
  3759         }
  3759         }
  3760     }
  3760     }
  4840           std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = auxList.begin ();
  4840           std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = auxList.begin ();
  4841           for (; it != auxList.end (); it++)
  4841           for (; it != auxList.end (); it++)
  4842             {
  4842             {
  4843               os << "    reportConfigId: " << (int)it->reportConfigId << std::endl;
  4843               os << "    reportConfigId: " << (int)it->reportConfigId << std::endl;
  4844               os << "    reportConfigEutra.triggerType  " <<  (int)it->reportConfigEutra.triggerType << std::endl;
  4844               os << "    reportConfigEutra.triggerType  " <<  (int)it->reportConfigEutra.triggerType << std::endl;
  4845               if (it->reportConfigEutra.triggerType == LteRrcSap::ReportConfigEutra::event)
  4845               if (it->reportConfigEutra.triggerType == LteRrcSap::ReportConfigEutra::EVENT)
  4846                 {
  4846                 {
  4847                   os << "    reportConfigEutra.eventId  " <<  (int)it->reportConfigEutra.eventId << std::endl;
  4847                   os << "    reportConfigEutra.eventId  " <<  (int)it->reportConfigEutra.eventId << std::endl;
  4848                   if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::eventA3)
  4848                   if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::EVENT_A3)
  4849                     {
  4849                     {
  4850                       os << "    reportConfigEutra.reportOnLeave  " <<  (int)it->reportConfigEutra.reportOnLeave << std::endl;
  4850                       os << "    reportConfigEutra.reportOnLeave  " <<  (int)it->reportConfigEutra.reportOnLeave << std::endl;
  4851                       os << "    reportConfigEutra.a3Offset  " <<  (int)it->reportConfigEutra.a3Offset << std::endl;
  4851                       os << "    reportConfigEutra.a3Offset  " <<  (int)it->reportConfigEutra.a3Offset << std::endl;
  4852                     }
  4852                     }
  4853                   else
  4853                   else
  4854                     {
  4854                     {
  4855                       os << "    reportConfigEutra.threshold1.choice  " <<  (int)it->reportConfigEutra.threshold1.choice << std::endl;
  4855                       os << "    reportConfigEutra.threshold1.choice  " <<  (int)it->reportConfigEutra.threshold1.choice << std::endl;
  4856                       os << "    reportConfigEutra.threshold1.range  " <<  (int)it->reportConfigEutra.threshold1.range << std::endl;
  4856                       os << "    reportConfigEutra.threshold1.range  " <<  (int)it->reportConfigEutra.threshold1.range << std::endl;
  4857                       if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::eventA5)
  4857                       if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::EVENT_A5)
  4858                         {
  4858                         {
  4859                           os << "    reportConfigEutra.threshold2.choice  " <<  (int)it->reportConfigEutra.threshold2.choice << std::endl;
  4859                           os << "    reportConfigEutra.threshold2.choice  " <<  (int)it->reportConfigEutra.threshold2.choice << std::endl;
  4860                           os << "    reportConfigEutra.threshold2.range  " <<  (int)it->reportConfigEutra.threshold2.range << std::endl;
  4860                           os << "    reportConfigEutra.threshold2.range  " <<  (int)it->reportConfigEutra.threshold2.range << std::endl;
  4861                         }
  4861                         }
  4862                     }
  4862                     }