|
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); |