|
|
| 45 |
|
45 |
|
| 46 |
NS_LOG_COMPONENT_DEFINE ("RrcHeader"); |
46 |
NS_LOG_COMPONENT_DEFINE ("RrcHeader"); |
| 47 |
|
47 |
|
|
|
48 |
|
| 48 |
//////////////////// RrcAsn1Header class /////////////////////////////// |
49 |
//////////////////// RrcAsn1Header class /////////////////////////////// |
| 49 |
RrcAsn1Header::RrcAsn1Header () |
50 |
RrcAsn1Header::RrcAsn1Header () |
| 50 |
{ |
51 |
{ |
|
|
| 72 |
return m_messageType; |
73 |
return m_messageType; |
| 73 |
} |
74 |
} |
| 74 |
|
75 |
|
|
|
76 |
int |
| 77 |
RrcAsn1Header::BandwidthToEnum (uint8_t bandwidth) const |
| 78 |
{ |
| 79 |
int n; |
| 80 |
switch (bandwidth) |
| 81 |
{ |
| 82 |
case 6: n = 0; break; |
| 83 |
case 15: n = 1; break; |
| 84 |
case 25: n = 2; break; |
| 85 |
case 50: n = 3; break; |
| 86 |
case 75: n = 4; break; |
| 87 |
case 100: n = 5; break; |
| 88 |
default: |
| 89 |
NS_FATAL_ERROR ("Wrong bandwidth: " << (uint16_t) bandwidth); |
| 90 |
} |
| 91 |
return n; |
| 92 |
} |
| 93 |
|
| 94 |
uint8_t |
| 95 |
RrcAsn1Header::EnumToBandwidth (int n) const |
| 96 |
{ |
| 97 |
uint8_t bw; |
| 98 |
switch (n) |
| 99 |
{ |
| 100 |
case 0: bw = 6; break; |
| 101 |
case 1: bw = 15; break; |
| 102 |
case 2: bw = 25; break; |
| 103 |
case 3: bw = 50; break; |
| 104 |
case 4: bw = 75; break; |
| 105 |
case 5: bw = 100; break; |
| 106 |
default: |
| 107 |
NS_FATAL_ERROR ("Wrong enum value for bandwidth: " << n); |
| 108 |
} |
| 109 |
return bw; |
| 110 |
} |
| 111 |
|
| 75 |
void |
112 |
void |
| 76 |
RrcAsn1Header::SerializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> drbToAddModList) const |
113 |
RrcAsn1Header::SerializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> drbToAddModList) const |
| 77 |
{ |
114 |
{ |
|
|
| 565 |
SerializeSequence (std::bitset<0> (0),false); |
602 |
SerializeSequence (std::bitset<0> (0),false); |
| 566 |
SerializeInteger (0,-126,24); // p0-NominalPUSCH |
603 |
SerializeInteger (0,-126,24); // p0-NominalPUSCH |
| 567 |
SerializeEnum (8,0); // alpha |
604 |
SerializeEnum (8,0); // alpha |
| 568 |
SerializeInteger (-50,-127,-96); // p0-NominalPUCCH |
605 |
SerializeInteger (-110,-127,-96); // p0-NominalPUCCH |
| 569 |
SerializeSequence (std::bitset<0> (0),false); // deltaFList-PUCCH |
606 |
SerializeSequence (std::bitset<0> (0),false); // deltaFList-PUCCH |
| 570 |
SerializeEnum (3,0); // deltaF-PUCCH-Format1 |
607 |
SerializeEnum (3,0); // deltaF-PUCCH-Format1 |
| 571 |
SerializeEnum (3,0); // deltaF-PUCCH-Format1b |
608 |
SerializeEnum (3,0); // deltaF-PUCCH-Format1b |
|
|
| 597 |
// freqInfo |
634 |
// freqInfo |
| 598 |
SerializeSequence (std::bitset<2> (3),false); |
635 |
SerializeSequence (std::bitset<2> (3),false); |
| 599 |
SerializeInteger ((int) systemInformationBlockType2.freqInfo.ulCarrierFreq, 0, MAX_EARFCN); |
636 |
SerializeInteger ((int) systemInformationBlockType2.freqInfo.ulCarrierFreq, 0, MAX_EARFCN); |
| 600 |
switch (systemInformationBlockType2.freqInfo.ulBandwidth) |
637 |
SerializeEnum (6, BandwidthToEnum (systemInformationBlockType2.freqInfo.ulBandwidth)); |
| 601 |
{ |
|
|
| 602 |
case 6: |
| 603 |
SerializeEnum (6,0); |
| 604 |
break; |
| 605 |
case 15: |
| 606 |
SerializeEnum (6,1); |
| 607 |
break; |
| 608 |
case 25: |
| 609 |
SerializeEnum (6,2); |
| 610 |
break; |
| 611 |
case 50: |
| 612 |
SerializeEnum (6,3); |
| 613 |
break; |
| 614 |
case 75: |
| 615 |
SerializeEnum (6,4); |
| 616 |
break; |
| 617 |
case 100: |
| 618 |
SerializeEnum (6,5); |
| 619 |
break; |
| 620 |
default: |
| 621 |
SerializeEnum (6,0); |
| 622 |
} |
| 623 |
|
638 |
|
| 624 |
SerializeInteger (29,1,32); // additionalSpectrumEmission |
639 |
SerializeInteger (29,1,32); // additionalSpectrumEmission |
| 625 |
// timeAlignmentTimerCommon |
640 |
// timeAlignmentTimerCommon |
|
|
| 1083 |
SerializeInteger (it->measObjectEutra.carrierFreq, 0, MAX_EARFCN); |
1098 |
SerializeInteger (it->measObjectEutra.carrierFreq, 0, MAX_EARFCN); |
| 1084 |
|
1099 |
|
| 1085 |
// Serialize allowedMeasBandwidth |
1100 |
// Serialize allowedMeasBandwidth |
| 1086 |
switch (it->measObjectEutra.allowedMeasBandwidth) |
1101 |
SerializeEnum (6, BandwidthToEnum (it->measObjectEutra.allowedMeasBandwidth)); |
| 1087 |
{ |
|
|
| 1088 |
case 6: |
| 1089 |
SerializeEnum (6,0); |
| 1090 |
break; |
| 1091 |
case 15: |
| 1092 |
SerializeEnum (6,1); |
| 1093 |
break; |
| 1094 |
case 25: |
| 1095 |
SerializeEnum (6,2); |
| 1096 |
break; |
| 1097 |
case 50: |
| 1098 |
SerializeEnum (6,3); |
| 1099 |
break; |
| 1100 |
case 75: |
| 1101 |
SerializeEnum (6,4); |
| 1102 |
break; |
| 1103 |
case 100: |
| 1104 |
SerializeEnum (6,5); |
| 1105 |
break; |
| 1106 |
default: |
| 1107 |
SerializeEnum (6,0); |
| 1108 |
} |
| 1109 |
|
1102 |
|
| 1110 |
SerializeBoolean (it->measObjectEutra.presenceAntennaPort1); |
1103 |
SerializeBoolean (it->measObjectEutra.presenceAntennaPort1); |
| 1111 |
SerializeBitstring (std::bitset<2> (it->measObjectEutra.neighCellConfig)); |
1104 |
SerializeBitstring (std::bitset<2> (it->measObjectEutra.neighCellConfig)); |
|
|
| 3100 |
{ |
3093 |
{ |
| 3101 |
// Deserialize ul-Bandwidth |
3094 |
// Deserialize ul-Bandwidth |
| 3102 |
bIterator = DeserializeEnum (6, &n, bIterator); |
3095 |
bIterator = DeserializeEnum (6, &n, bIterator); |
| 3103 |
switch (n) |
3096 |
systemInformationBlockType2->freqInfo.ulBandwidth = EnumToBandwidth (n); |
| 3104 |
{ |
|
|
| 3105 |
case 0: |
| 3106 |
systemInformationBlockType2->freqInfo.ulBandwidth = 6; |
| 3107 |
break; |
| 3108 |
case 1: |
| 3109 |
systemInformationBlockType2->freqInfo.ulBandwidth = 15; |
| 3110 |
break; |
| 3111 |
case 2: |
| 3112 |
systemInformationBlockType2->freqInfo.ulBandwidth = 25; |
| 3113 |
break; |
| 3114 |
case 3: |
| 3115 |
systemInformationBlockType2->freqInfo.ulBandwidth = 50; |
| 3116 |
break; |
| 3117 |
case 4: |
| 3118 |
systemInformationBlockType2->freqInfo.ulBandwidth = 75; |
| 3119 |
break; |
| 3120 |
case 5: |
| 3121 |
systemInformationBlockType2->freqInfo.ulBandwidth = 100; |
| 3122 |
break; |
| 3123 |
default: |
| 3124 |
systemInformationBlockType2->freqInfo.ulBandwidth = 6; |
| 3125 |
} |
| 3126 |
} |
3097 |
} |
| 3127 |
|
3098 |
|
| 3128 |
// additionalSpectrumEmission |
3099 |
// additionalSpectrumEmission |
|
|
| 3806 |
|
3777 |
|
| 3807 |
// allowedMeasBandwidth |
3778 |
// allowedMeasBandwidth |
| 3808 |
bIterator = DeserializeEnum (6, &n, bIterator); |
3779 |
bIterator = DeserializeEnum (6, &n, bIterator); |
| 3809 |
switch (n) |
3780 |
elem.measObjectEutra.allowedMeasBandwidth = EnumToBandwidth (n); |
| 3810 |
{ |
|
|
| 3811 |
case 0: |
| 3812 |
elem.measObjectEutra.allowedMeasBandwidth = 6; |
| 3813 |
break; |
| 3814 |
case 1: |
| 3815 |
elem.measObjectEutra.allowedMeasBandwidth = 15; |
| 3816 |
break; |
| 3817 |
case 2: |
| 3818 |
elem.measObjectEutra.allowedMeasBandwidth = 25; |
| 3819 |
break; |
| 3820 |
case 3: |
| 3821 |
elem.measObjectEutra.allowedMeasBandwidth = 50; |
| 3822 |
break; |
| 3823 |
case 4: |
| 3824 |
elem.measObjectEutra.allowedMeasBandwidth = 75; |
| 3825 |
break; |
| 3826 |
case 5: |
| 3827 |
default: |
| 3828 |
elem.measObjectEutra.allowedMeasBandwidth = 100; |
| 3829 |
break; |
| 3830 |
} |
| 3831 |
|
3781 |
|
| 3832 |
// presenceAntennaPort1 |
3782 |
// presenceAntennaPort1 |
| 3833 |
bIterator = DeserializeBoolean (&elem.measObjectEutra.presenceAntennaPort1, bIterator); |
3783 |
bIterator = DeserializeBoolean (&elem.measObjectEutra.presenceAntennaPort1, bIterator); |
|
|
| 4570 |
} |
4520 |
} |
| 4571 |
return bIterator; |
4521 |
return bIterator; |
| 4572 |
} |
4522 |
} |
|
|
4523 |
|
| 4573 |
//////////////////// RrcConnectionRequest class //////////////////////// |
4524 |
//////////////////// RrcConnectionRequest class //////////////////////// |
| 4574 |
|
4525 |
|
| 4575 |
// Constructor |
4526 |
// Constructor |
|
|
| 5167 |
SerializeSequence (std::bitset<1> (1),false); |
5118 |
SerializeSequence (std::bitset<1> (1),false); |
| 5168 |
|
5119 |
|
| 5169 |
// Serialize dl-Bandwidth |
5120 |
// Serialize dl-Bandwidth |
| 5170 |
switch (m_mobilityControlInfo.carrierBandwidth.dlBandwidth) |
5121 |
SerializeEnum (16, BandwidthToEnum (m_mobilityControlInfo.carrierBandwidth.dlBandwidth)); |
| 5171 |
{ |
|
|
| 5172 |
case 6: |
| 5173 |
SerializeEnum (16,0); |
| 5174 |
break; |
| 5175 |
case 15: |
| 5176 |
SerializeEnum (16,1); |
| 5177 |
break; |
| 5178 |
case 25: |
| 5179 |
SerializeEnum (16,2); |
| 5180 |
break; |
| 5181 |
case 50: |
| 5182 |
SerializeEnum (16,3); |
| 5183 |
break; |
| 5184 |
case 75: |
| 5185 |
SerializeEnum (16,4); |
| 5186 |
break; |
| 5187 |
case 100: |
| 5188 |
SerializeEnum (16,5); |
| 5189 |
break; |
| 5190 |
default: |
| 5191 |
SerializeEnum (16,6); |
| 5192 |
} |
| 5193 |
|
5122 |
|
| 5194 |
// Serialize ul-Bandwidth |
5123 |
// Serialize ul-Bandwidth |
| 5195 |
switch (m_mobilityControlInfo.carrierBandwidth.ulBandwidth) |
5124 |
SerializeEnum (16, BandwidthToEnum (m_mobilityControlInfo.carrierBandwidth.ulBandwidth)); |
| 5196 |
{ |
|
|
| 5197 |
case 6: |
| 5198 |
SerializeEnum (16,0); |
| 5199 |
break; |
| 5200 |
case 15: |
| 5201 |
SerializeEnum (16,1); |
| 5202 |
break; |
| 5203 |
case 25: |
| 5204 |
SerializeEnum (16,2); |
| 5205 |
break; |
| 5206 |
case 50: |
| 5207 |
SerializeEnum (16,3); |
| 5208 |
break; |
| 5209 |
case 75: |
| 5210 |
SerializeEnum (16,4); |
| 5211 |
break; |
| 5212 |
case 100: |
| 5213 |
SerializeEnum (16,5); |
| 5214 |
break; |
| 5215 |
default: |
| 5216 |
SerializeEnum (16,6); |
| 5217 |
} |
| 5218 |
} |
5125 |
} |
| 5219 |
|
5126 |
|
| 5220 |
// Serialize t304 |
5127 |
// Serialize t304 |
|
|
| 5346 |
bIterator = DeserializeSequence (&ulBandwidthPresent,false,bIterator); |
5253 |
bIterator = DeserializeSequence (&ulBandwidthPresent,false,bIterator); |
| 5347 |
|
5254 |
|
| 5348 |
bIterator = DeserializeEnum (16,&n,bIterator); |
5255 |
bIterator = DeserializeEnum (16,&n,bIterator); |
| 5349 |
switch (n) |
5256 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = EnumToBandwidth (n); |
| 5350 |
{ |
|
|
| 5351 |
case 0: |
| 5352 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 6; |
| 5353 |
break; |
| 5354 |
case 1: |
| 5355 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 15; |
| 5356 |
break; |
| 5357 |
case 2: |
| 5358 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 25; |
| 5359 |
break; |
| 5360 |
case 3: |
| 5361 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 50; |
| 5362 |
break; |
| 5363 |
case 4: |
| 5364 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 75; |
| 5365 |
break; |
| 5366 |
case 5: |
| 5367 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 100; |
| 5368 |
break; |
| 5369 |
case 6: |
| 5370 |
m_mobilityControlInfo.carrierBandwidth.dlBandwidth = 0; |
| 5371 |
break; |
| 5372 |
} |
| 5373 |
|
5257 |
|
| 5374 |
if (ulBandwidthPresent[0]) |
5258 |
if (ulBandwidthPresent[0]) |
| 5375 |
{ |
5259 |
{ |
| 5376 |
bIterator = DeserializeEnum (16,&n,bIterator); |
5260 |
bIterator = DeserializeEnum (16,&n,bIterator); |
| 5377 |
switch (n) |
5261 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = EnumToBandwidth (n); |
| 5378 |
{ |
|
|
| 5379 |
case 0: |
| 5380 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 6; |
| 5381 |
break; |
| 5382 |
case 1: |
| 5383 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 15; |
| 5384 |
break; |
| 5385 |
case 2: |
| 5386 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 25; |
| 5387 |
break; |
| 5388 |
case 3: |
| 5389 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 50; |
| 5390 |
break; |
| 5391 |
case 4: |
| 5392 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 75; |
| 5393 |
break; |
| 5394 |
case 5: |
| 5395 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 100; |
| 5396 |
break; |
| 5397 |
case 6: |
| 5398 |
m_mobilityControlInfo.carrierBandwidth.ulBandwidth = 0; |
| 5399 |
break; |
| 5400 |
} |
| 5401 |
} |
5262 |
} |
| 5402 |
} |
5263 |
} |
| 5403 |
|
5264 |
|
|
|
| 5873 |
|
5734 |
|
| 5874 |
// Serialize sourceMasterInformationBlock |
5735 |
// Serialize sourceMasterInformationBlock |
| 5875 |
SerializeSequence (std::bitset<0> (),false); |
5736 |
SerializeSequence (std::bitset<0> (),false); |
| 5876 |
SerializeEnum (6,m_asConfig.sourceMasterInformationBlock.dlBandwidth); // dl-Bandwidth |
5737 |
SerializeEnum (6, BandwidthToEnum (m_asConfig.sourceMasterInformationBlock.dlBandwidth)); // dl-Bandwidth |
| 5877 |
SerializeSequence (std::bitset<0> (),false); // phich-Config sequence |
5738 |
SerializeSequence (std::bitset<0> (),false); // phich-Config sequence |
| 5878 |
SerializeEnum (2,0); // phich-Duration |
5739 |
SerializeEnum (2,0); // phich-Duration |
| 5879 |
SerializeEnum (4,0); // phich-Resource |
5740 |
SerializeEnum (4,0); // phich-Resource |
|
|
| 5963 |
// Deserialize sourceMasterInformationBlock |
5824 |
// Deserialize sourceMasterInformationBlock |
| 5964 |
bIterator = DeserializeSequence (&bitset0,false,bIterator); |
5825 |
bIterator = DeserializeSequence (&bitset0,false,bIterator); |
| 5965 |
bIterator = DeserializeEnum (6,&n,bIterator); // dl-Bandwidth |
5826 |
bIterator = DeserializeEnum (6,&n,bIterator); // dl-Bandwidth |
| 5966 |
m_asConfig.sourceMasterInformationBlock.dlBandwidth = n; |
5827 |
m_asConfig.sourceMasterInformationBlock.dlBandwidth = EnumToBandwidth (n); |
| 5967 |
|
5828 |
|
| 5968 |
// phich-Config |
5829 |
// phich-Config |
| 5969 |
bIterator = DeserializeSequence (&bitset0,false,bIterator); |
5830 |
bIterator = DeserializeSequence (&bitset0,false,bIterator); |