OLD | NEW |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) | 3 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 * \return the C-RNTI of the user | 268 * \return the C-RNTI of the user |
269 */ | 269 */ |
270 uint16_t GetRnti () const; | 270 uint16_t GetRnti () const; |
271 | 271 |
272 /** | 272 /** |
273 * | 273 * |
274 * \return the CellId of the attached Enb | 274 * \return the CellId of the attached Enb |
275 */ | 275 */ |
276 uint16_t GetCellId () const; | 276 uint16_t GetCellId () const; |
277 | 277 |
| 278 /** |
| 279 * \param cellId cell identifier |
| 280 * \return true if cellId is the serving cell for this UE |
| 281 */ |
| 282 bool IsServingCell (uint16_t cellId) const; |
| 283 |
278 /**· | 284 /**· |
279 * \return the uplink bandwidth in RBs | 285 * \return the uplink bandwidth in RBs |
280 */ | 286 */ |
281 uint8_t GetUlBandwidth () const; | 287 uint8_t GetUlBandwidth () const; |
282 | 288 |
283 /**· | 289 /**· |
284 * \return the downlink bandwidth in RBs | 290 * \return the downlink bandwidth in RBs |
285 */ | 291 */ |
286 uint8_t GetDlBandwidth () const; | 292 uint8_t GetDlBandwidth () const; |
287 | 293 |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 */ | 573 */ |
568 void ApplyMeasConfig (LteRrcSap::MeasConfig mc); | 574 void ApplyMeasConfig (LteRrcSap::MeasConfig mc); |
569 | 575 |
570 /** | 576 /** |
571 * \brief Keep the given measurement result as the latest measurement figures, | 577 * \brief Keep the given measurement result as the latest measurement figures, |
572 * to be utilised by UE RRC functions. | 578 * to be utilised by UE RRC functions. |
573 * \param cellId the cell ID of the measured cell | 579 * \param cellId the cell ID of the measured cell |
574 * \param rsrp measured RSRP value to be saved (in dBm) | 580 * \param rsrp measured RSRP value to be saved (in dBm) |
575 * \param rsrq measured RSRQ value to be saved (in dB) | 581 * \param rsrq measured RSRQ value to be saved (in dB) |
576 * \param useLayer3Filtering | 582 * \param useLayer3Filtering |
| 583 * \param componentCarrierId |
577 * \todo Remove the useLayer3Filtering argument | 584 * \todo Remove the useLayer3Filtering argument |
578 * | 585 * |
579 * Implements Section 5.5.3.2 "Layer 3 filtering" of 3GPP TS 36.331. *Layer-3 | 586 * Implements Section 5.5.3.2 "Layer 3 filtering" of 3GPP TS 36.331. *Layer-3 |
580 * filtering* is applied to the given measurement results before saved to | 587 * filtering* is applied to the given measurement results before saved to |
581 * #m_storedMeasValues. The filtering is however disabled when the UE is in | 588 * #m_storedMeasValues. The filtering is however disabled when the UE is in |
582 * IDLE mode, i.e., saving unfiltered values. | 589 * IDLE mode, i.e., saving unfiltered values. |
583 * | 590 * |
584 * Layer-3 filtering is influenced by a filter coefficient, which determines | 591 * Layer-3 filtering is influenced by a filter coefficient, which determines |
585 * the strength of the filtering. This coefficient is provided by the active | 592 * the strength of the filtering. This coefficient is provided by the active |
586 * *quantity configuration* in #m_varMeasConfig, which is configured by the | 593 * *quantity configuration* in #m_varMeasConfig, which is configured by the |
587 * LteUeRrc::ApplyMeasConfig. Details on how the coefficient works and how to | 594 * LteUeRrc::ApplyMeasConfig. Details on how the coefficient works and how to |
588 * modify it can be found in LTE module's Design Documentation. | 595 * modify it can be found in LTE module's Design Documentation. |
589 * | 596 * |
590 * \sa LteUeRrc::m_storedMeasValues | 597 * \sa LteUeRrc::m_storedMeasValues |
591 */ | 598 */ |
592 void SaveUeMeasurements (uint16_t cellId, double rsrp, double rsrq, | 599 void SaveUeMeasurements (uint16_t cellId, double rsrp, double rsrq, |
593 bool useLayer3Filtering); | 600 bool useLayer3Filtering, uint8_t componentCarrierId); |
594 | 601 |
595 /** | 602 /** |
596 * \brief keep the given measurement result as the latest measurement figures, | |
597 * to be utilised by UE RRC functions. | |
598 * \param cellId the cell ID of the measured cell | |
599 * \param rsrp measured RSRP value to be saved (in dBm) | |
600 * \param rsrq measured RSRQ value to be saved (in dB) | |
601 * \param useLayer3Filtering | |
602 * \param componentCarrierId | |
603 * \todo Remove the useLayer3Filtering argument | |
604 * | |
605 * As for SaveUeMeasurements, this function aims to store the latest measureme
nts | |
606 * related to the secondary component carriers. | |
607 * in the current implementation it saves only measurements related on the ser
ving· | |
608 * secondary carriers while, measurements related to the Neighbor Cell are fil
tered | |
609 */ | |
610 | |
611 void SaveScellUeMeasurements (uint16_t cellId, double rsrp, double rsrq, | |
612 bool useLayer3Filtering, uint16_t componentCarri
erId); | |
613 /** | |
614 * \brief Evaluate the reporting criteria of a measurement identity and | 603 * \brief Evaluate the reporting criteria of a measurement identity and |
615 * invoke some reporting actions based on the result. | 604 * invoke some reporting actions based on the result. |
616 * \param measId the measurement identity to be evaluated | 605 * \param measId the measurement identity to be evaluated |
617 * | 606 * |
618 * Implements Section 5.5.4.1 "Measurement report triggering - General" of | 607 * Implements Section 5.5.4.1 "Measurement report triggering - General" of |
619 * 3GPP TS 36.331. This function take into use the latest measurement results | 608 * 3GPP TS 36.331. This function take into use the latest measurement results |
620 * and evaluate them against the *entering condition* and the *leaving | 609 * and evaluate them against the *entering condition* and the *leaving |
621 * condition* of the measurement identity's reporting criteria. The evaluation | 610 * condition* of the measurement identity's reporting criteria. The evaluation |
622 * also take into account other defined criteria, such as *hysteresis* and | 611 * also take into account other defined criteria, such as *hysteresis* and |
623 * *time-to-trigger*. | 612 * *time-to-trigger*. |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
969 */ | 958 */ |
970 void VarMeasReportListClear (uint8_t measId); | 959 void VarMeasReportListClear (uint8_t measId); |
971 | 960 |
972 /** | 961 /** |
973 * \brief Represents a measurement result from a certain cell. | 962 * \brief Represents a measurement result from a certain cell. |
974 */ | 963 */ |
975 struct MeasValues | 964 struct MeasValues |
976 { | 965 { |
977 double rsrp; ///< Measured RSRP in dBm. | 966 double rsrp; ///< Measured RSRP in dBm. |
978 double rsrq; ///< Measured RSRQ in dB. | 967 double rsrq; ///< Measured RSRQ in dB. |
979 Time timestamp; ///< Not used. \todo Should be removed. | 968 uint32_t carrierFreq; //< Measurement object frequency |
980 }; | 969 }; |
981 | 970 |
982 /** | 971 /** |
983 * \brief Internal storage of the latest measurement results from all detected | 972 * \brief Internal storage of the latest measurement results from all detected |
984 * detected cells, indexed by the cell ID where the measurement was | 973 * detected cells, indexed by the cell ID where the measurement was |
985 * taken from. | 974 * taken from. |
986 * | 975 * |
987 * Each *measurement result* comprises of RSRP (in dBm) and RSRQ (in dB). | 976 * Each *measurement result* comprises of RSRP (in dBm) and RSRQ (in dB). |
988 * | 977 * |
989 * In IDLE mode, the measurement results are used by the *initial cell | 978 * In IDLE mode, the measurement results are used by the *initial cell |
990 * selection* procedure. While in CONNECTED mode, *layer-3 filtering* is | 979 * selection* procedure. While in CONNECTED mode, *layer-3 filtering* is |
991 * applied to the measurement results and they are used by *UE measurements* | 980 * applied to the measurement results and they are used by *UE measurements* |
992 * function (LteUeRrc::MeasurementReportTriggering and | 981 * function (LteUeRrc::MeasurementReportTriggering and |
993 * LteUeRrc::SendMeasurementReport). | 982 * LteUeRrc::SendMeasurementReport). |
994 */ | 983 */ |
995 std::map<uint16_t, MeasValues> m_storedMeasValues; | 984 std::map<uint16_t, MeasValues> m_storedMeasValues; |
996 | 985 |
997 /** | 986 /** |
998 * \brief Stored measure values per carrier. | |
999 */ | |
1000 std::map<uint16_t, std::map <uint8_t, MeasValues> > m_storedMeasValuesPerCarri
er; | |
1001 | |
1002 /** | |
1003 * \brief Internal storage of the latest measurement results from all detected | |
1004 * detected Secondary carrier component, indexed by the carrier compone
nt ID· | |
1005 * where the measurement was taken from. | |
1006 * | |
1007 * Each *measurement result* comprises of RSRP (in dBm) and RSRQ (in dB). | |
1008 * | |
1009 * In IDLE mode, the measurement results are used by the *initial cell | |
1010 * selection* procedure. While in CONNECTED mode, *layer-3 filtering* is | |
1011 * applied to the measurement results and they are used by *UE measurements* | |
1012 * function: | |
1013 * - LteUeRrc::MeasurementReportTriggering: in this case it is not set any | |
1014 * measurment related to seconday carrier components since the· | |
1015 * A6 event is not implemented | |
1016 * - LteUeRrc::SendMeasurementReport: in this case the report are sent. | |
1017 */ | |
1018 std::map<uint16_t, MeasValues> m_storedScellMeasValues; | |
1019 | |
1020 /** | |
1021 * \brief Represents a single triggered event from a measurement identity | 987 * \brief Represents a single triggered event from a measurement identity |
1022 * which reporting criteria have been fulfilled, but delayed by | 988 * which reporting criteria have been fulfilled, but delayed by |
1023 * time-to-trigger. | 989 * time-to-trigger. |
1024 */ | 990 */ |
1025 struct PendingTrigger_t | 991 struct PendingTrigger_t |
1026 { | 992 { |
1027 uint8_t measId; ///< The measurement identity which raised the trigger. | 993 uint8_t measId; ///< The measurement identity which raised the trigger. |
1028 ConcernedCells_t concernedCells; ///< The list of cells responsible for this
trigger. | 994 ConcernedCells_t concernedCells; ///< The list of cells responsible for this
trigger. |
1029 EventId timer; ///< The pending reporting event, scheduled at the end of the
time-to-trigger. | 995 EventId timer; ///< The pending reporting event, scheduled at the end of the
time-to-trigger. |
1030 }; | 996 }; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1156 * The number of component carriers. | 1122 * The number of component carriers. |
1157 */ | 1123 */ |
1158 uint16_t m_numberOfComponentCarriers; | 1124 uint16_t m_numberOfComponentCarriers; |
1159 | 1125 |
1160 }; // end of class LteUeRrc | 1126 }; // end of class LteUeRrc |
1161 | 1127 |
1162 | 1128 |
1163 } // namespace ns3 | 1129 } // namespace ns3 |
1164 | 1130 |
1165 #endif // LTE_UE_RRC_H | 1131 #endif // LTE_UE_RRC_H |
OLD | NEW |