A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
lte-rrc-sap.h
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
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
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Authors: Nicola Baldo <nbaldo@cttc.es>
19  * Lluis Parcerisa <lparcerisa@cttc.cat>
20  */
21 
22 
23 #ifndef LTE_RRC_SAP_H
24 #define LTE_RRC_SAP_H
25 
26 #include <stdint.h>
27 #include <list>
28 
29 #include <ns3/ptr.h>
30 #include <ns3/simulator.h>
31 
32 namespace ns3 {
33 
34 class LteRlcSapUser;
35 class LtePdcpSapUser;
36 class LteRlcSapProvider;
37 class LtePdcpSapProvider;
38 class Packet;
39 
52 class LteRrcSap
53 {
54 public:
55 
56  virtual ~LteRrcSap ();
57 
58  // Information Elements
59 
61  {
62  uint32_t plmnIdentity;
63  };
64 
66  {
67  PlmnIdentityInfo plmnIdentityInfo;
68  uint32_t cellIdentity;
69  bool csgIndication;
70  uint32_t csgIdentity;
71  };
72 
73  struct FreqInfo
74  {
75  uint16_t ulCarrierFreq;
76  uint8_t ulBandwidth;
77  };
78 
79  struct RlcConfig
80  {
81  enum
82  {
83  AM,
84  UM_BI_DIRECTIONAL,
85  UM_UNI_DIRECTIONAL_UL,
86  UM_UNI_DIRECTIONAL_DL
87  } choice;
88  };
89 
91  {
92  uint8_t priority;
93  uint16_t prioritizedBitRateKbps;
94  uint16_t bucketSizeDurationMs;
95  uint8_t logicalChannelGroup;
96  };
97 
99  {
100  enum {SETUP, RESET} type;
101  uint8_t srsBandwidthConfig;
102  uint8_t srsSubframeConfig;
103  };
104 
106  {
107  enum {SETUP, RESET} type;
108  uint8_t srsBandwidth;
109  uint16_t srsConfigIndex;
110  };
111 
113  {
114  uint8_t transmissionMode;
115  };
116 
117 
119  {
120  bool haveSoundingRsUlConfigDedicated;
121  SoundingRsUlConfigDedicated soundingRsUlConfigDedicated;
122  bool haveAntennaInfoDedicated;
123  AntennaInfoDedicated antennaInfo;
124  };
125 
126 
127  struct SrbToAddMod
128  {
129  uint8_t srbIdentity;
130  LogicalChannelConfig logicalChannelConfig;
131  };
132 
133  struct DrbToAddMod
134  {
135  uint8_t epsBearerIdentity;
136  uint8_t drbIdentity;
137  RlcConfig rlcConfig;
138  uint8_t logicalChannelIdentity;
139  LogicalChannelConfig logicalChannelConfig;
140  };
141 
143  {
144  uint8_t numberOfRaPreambles;
145  };
146 
148  {
149  uint8_t preambleTransMax;
150  uint8_t raResponseWindowSize;
151  };
152 
154  {
155  PreambleInfo preambleInfo;
156  RaSupervisionInfo raSupervisionInfo;
157  };
158 
160  {
161  RachConfigCommon rachConfigCommon;
162  };
163 
165  {
166  RachConfigCommon rachConfigCommon;
167  };
168 
170  {
171  std::list<SrbToAddMod> srbToAddModList;
172  std::list<DrbToAddMod> drbToAddModList;
173  std::list<uint8_t> drbToReleaseList;
174  bool havePhysicalConfigDedicated;
175  PhysicalConfigDedicated physicalConfigDedicated;
176  };
177 
179  {
180  uint8_t filterCoefficientRSRP;
181  uint8_t filterCoefficientRSRQ;
182  };
183 
185  {
186  uint8_t cellIndex;
187  uint16_t physCellId;
188  int8_t cellIndividualOffset;
189  };
190 
192  {
193  uint16_t start;
194  bool haveRange;
195  uint16_t range;
196  };
197 
199  {
200  uint8_t cellIndex;
201  PhysCellIdRange physCellIdRange;
202  };
203 
205  {
206  uint16_t carrierFreq;
207  uint8_t allowedMeasBandwidth;
208  bool presenceAntennaPort1;
209  uint8_t neighCellConfig;
210  int8_t offsetFreq;
211  std::list<uint8_t> cellsToRemoveList;
212  std::list<CellsToAddMod> cellsToAddModList;
213  std::list<uint8_t> blackCellsToRemoveList;
214  std::list<BlackCellsToAddMod> blackCellsToAddModList;
215  bool haveCellForWhichToReportCGI;
216  uint8_t cellForWhichToReportCGI;
217  };
218 
220  {
221  enum {thresholdRsrp, thresholdRsrq} choice;
222  uint8_t range;
223  };
224 
226  {
227  enum {event,periodical} triggerType;
228  enum {eventA1,eventA2,eventA3,eventA4,eventA5} eventId;
229  ThresholdEutra threshold1; // used for A1, A2, A4, A5
230  ThresholdEutra threshold2; // used for A5
231  bool reportOnLeave; // used for A3
232  int8_t a3Offset; // used for A3
233  uint8_t hysteresis;
234  uint16_t timeToTrigger;
235  enum {reportStrongestCells, reportCgi} purpose;
236  enum {rsrp, rsrq} triggerQuantity;
237  enum {sameAsTriggerQuantity, both} reportQuantity;
238  uint8_t maxReportCells;
239  enum {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240,
240  min1, min6, min12, min30, min60, spare3, spare2, spare1} reportInterval;
241  uint8_t reportAmount;
242  };
243 
245  {
246  uint8_t measObjectId;
247  MeasObjectEutra measObjectEutra;
248  };
249 
251  {
252  uint8_t reportConfigId;
253  ReportConfigEutra reportConfigEutra;
254  };
255 
257  {
258  uint8_t measId;
259  uint8_t measObjectId;
260  uint8_t reportConfigId;
261  };
262 
264  {
265  enum {SETUP, RESET} type;
266  enum {gp0, gp1} gapOffsetChoice;
267  uint8_t gapOffsetValue;
268  };
269 
271  {
272  uint8_t tEvaluation;
273  uint8_t tHystNormal;
274  uint8_t nCellChangeMedium;
275  uint8_t nCellChangeHigh;
276  };
277 
279  {
280  // 25 = oDot25, 50 = oDot5, 75 = oDot75, 100 = lDot0
281  uint8_t sfMedium;
282  uint8_t sfHigh;
283  };
284 
286  {
287  enum {SETUP, RESET} type;
288  MobilityStateParameters mobilityStateParameters;
289  SpeedStateScaleFactors timeToTriggerSf;
290  };
291 
292  struct MeasConfig
293  {
294  std::list<uint8_t> measObjectToRemoveList;
295  std::list<MeasObjectToAddMod> measObjectToAddModList;
296  std::list<uint8_t> reportConfigToRemoveList;
297  std::list<ReportConfigToAddMod> reportConfigToAddModList;
298  std::list<uint8_t> measIdToRemoveList;
299  std::list<MeasIdToAddMod> measIdToAddModList;
300  bool haveQuantityConfig;
301  QuantityConfig quantityConfig;
302  bool haveMeasGapConfig;
303  MeasGapConfig measGapConfig;
304  bool haveSmeasure;
305  uint8_t sMeasure;
306  bool haveSpeedStatePars;
307  SpeedStatePars speedStatePars;
308  };
309 
311  {
312  uint16_t dlCarrierFreq;
313  uint16_t ulCarrierFreq;
314  };
315 
317  {
318  uint8_t dlBandwidth;
319  uint8_t ulBandwidth;
320  };
321 
323  {
324  uint8_t raPreambleIndex;
325  uint8_t raPrachMaskIndex;
326  };
327 
329  {
330  uint16_t targetPhysCellId;
331  bool haveCarrierFreq;
332  CarrierFreqEutra carrierFreq;
333  bool haveCarrierBandwidth;
334  CarrierBandwidthEutra carrierBandwidth;
335  uint16_t newUeIdentity;
336  RadioResourceConfigCommon radioResourceConfigCommon;
337  bool haveRachConfigDedicated;
338  RachConfigDedicated rachConfigDedicated;
339  };
340 
342  {
343  uint16_t cRnti;
344  uint16_t physCellId;
345  };
346 
347  enum ReestablishmentCause
348  {
349  RECONFIGURATION_FAILURE,
350  HANDOVER_FAILURE,
351  OTHER_FAILURE
352  };
353 
355  {
356  uint8_t dlBandwidth;
357  uint8_t systemFrameNumber;
358  };
359 
361  {
362  CellAccessRelatedInfo cellAccessRelatedInfo;
363  };
364 
366  {
367  RadioResourceConfigCommonSib radioResourceConfigCommon;
368  FreqInfo freqInfo;
369  };
370 
372  {
373  bool haveSib2;
375  };
376 
377  struct AsConfig
378  {
379  MeasConfig sourceMeasConfig;
380  RadioResourceConfigDedicated sourceRadioResourceConfig;
381  uint16_t sourceUeIdentity;
382  MasterInformationBlock sourceMasterInformationBlock;
383  SystemInformationBlockType1 sourceSystemInformationBlockType1;
384  SystemInformationBlockType2 sourceSystemInformationBlockType2;
385  uint16_t sourceDlCarrierFreq;
386  };
387 
388  struct CgiInfo
389  {
390  uint32_t plmnIdentity;
391  uint32_t cellIdentity;
392  uint16_t trackingAreaCode;
393  std::list<uint32_t> plmnIdentityList;
394  };
395 
397  {
398  uint16_t physCellId;
399  bool haveCgiInfo;
400  CgiInfo cgiInfo;
401  bool haveRsrpResult;
402  uint8_t rsrpResult;
403  bool haveRsrqResult;
404  uint8_t rsrqResult;
405  };
406 
407  struct MeasResults
408  {
409  uint8_t measId;
410  uint8_t rsrpResult;
411  uint8_t rsrqResult;
412  bool haveMeasResultNeighCells;
413  std::list<MeasResultEutra> measResultListEutra;
414  };
415 
416  // Messages
417 
419  {
420  uint64_t ueIdentity;
421  };
422 
424  {
425  uint8_t rrcTransactionIdentifier;
426  RadioResourceConfigDedicated radioResourceConfigDedicated;
427  };
428 
430  {
431  uint8_t rrcTransactionIdentifier;
432  };
433 
435  {
436  uint8_t rrcTransactionIdentifier;
437  bool haveMeasConfig;
438  MeasConfig measConfig;
439  bool haveMobilityControlInfo;
440  MobilityControlInfo mobilityControlInfo;
441  bool haveRadioResourceConfigDedicated;
442  RadioResourceConfigDedicated radioResourceConfigDedicated;
443  };
444 
446  {
447  uint8_t rrcTransactionIdentifier;
448  };
449 
450 
452  {
453  ReestabUeIdentity ueIdentity;
454  ReestablishmentCause reestablishmentCause;
455  };
456 
458  {
459  uint8_t rrcTransactionIdentifier;
460  RadioResourceConfigDedicated radioResourceConfigDedicated;
461  };
462 
464  {
465  uint8_t rrcTransactionIdentifier;
466  };
467 
469  {
470  };
471 
473  {
474  uint8_t rrcTransactionIdentifier;
475  };
476 
478  {
479  uint8_t waitTime;
480  };
481 
483  {
484  AsConfig asConfig;
485  };
486 
488  {
489  MeasResults measResults;
490  };
491 };
492 
493 
494 
502 {
503 public:
504 
506  {
507  LteRlcSapProvider* srb0SapProvider;
508  LtePdcpSapProvider* srb1SapProvider;
509  };
510 
511  virtual void Setup (SetupParameters params) = 0;
512  virtual void SendRrcConnectionRequest (RrcConnectionRequest msg) = 0;
513  virtual void SendRrcConnectionSetupCompleted (RrcConnectionSetupCompleted msg) = 0;
514  virtual void SendRrcConnectionReconfigurationCompleted (RrcConnectionReconfigurationCompleted msg) = 0;
515  virtual void SendRrcConnectionReestablishmentRequest (RrcConnectionReestablishmentRequest msg) = 0;
516  virtual void SendRrcConnectionReestablishmentComplete (RrcConnectionReestablishmentComplete msg) = 0;
517 
518 };
519 
520 
528 {
529 public:
530 
532  {
533  LteRlcSapUser* srb0SapUser;
534  LtePdcpSapUser* srb1SapUser;
535  };
536 
537  virtual void CompleteSetup (CompleteSetupParameters params) = 0;
538  virtual void RecvMasterInformationBlock (MasterInformationBlock msg) = 0;
539  virtual void RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg) = 0;
540  virtual void RecvSystemInformation (SystemInformation msg) = 0;
541  virtual void RecvRrcConnectionSetup (RrcConnectionSetup msg) = 0;
542  virtual void RecvRrcConnectionReconfiguration (RrcConnectionReconfiguration msg) = 0;
543  virtual void RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg) = 0;
544  virtual void RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg) = 0;
545  virtual void RecvRrcConnectionRelease (RrcConnectionRelease msg) = 0;
546  virtual void RecvRrcConnectionReject (RrcConnectionReject msg) = 0;
547 
548 };
549 
550 
558 {
559 public:
560 
562  {
563  LteRlcSapProvider* srb0SapProvider;
564  LtePdcpSapProvider* srb1SapProvider;
565  };
566 
567  virtual void SetupUe (uint16_t rnti, SetupUeParameters params) = 0;
568  virtual void RemoveUe (uint16_t rnti) = 0;
569  virtual void SendSystemInformationBlockType1 (SystemInformationBlockType1 msg) = 0;
570  virtual void SendSystemInformation (SystemInformation msg) = 0;
571  virtual void SendRrcConnectionSetup (uint16_t rnti, RrcConnectionSetup msg) = 0;
572  virtual void SendRrcConnectionReconfiguration (uint16_t rnti, RrcConnectionReconfiguration msg) = 0;
573  virtual void SendRrcConnectionReestablishment (uint16_t rnti, RrcConnectionReestablishment msg) = 0;
574  virtual void SendRrcConnectionReestablishmentReject (uint16_t rnti, RrcConnectionReestablishmentReject msg) = 0;
575  virtual void SendRrcConnectionRelease (uint16_t rnti, RrcConnectionRelease msg) = 0;
576  virtual void SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg) = 0;
577  virtual Ptr<Packet> EncodeHandoverPreparationInformation (HandoverPreparationInfo msg) = 0;
578  virtual HandoverPreparationInfo DecodeHandoverPreparationInformation (Ptr<Packet> p) = 0;
579  virtual Ptr<Packet> EncodeHandoverCommand (RrcConnectionReconfiguration msg) = 0;
580  virtual RrcConnectionReconfiguration DecodeHandoverCommand (Ptr<Packet> p) = 0;
581 
582 };
583 
584 
592 {
593 public:
594 
595 
597  {
598  LteRlcSapUser* srb0SapUser;
599  LtePdcpSapUser* srb1SapUser;
600  };
601 
602  virtual void CompleteSetupUe (uint16_t rnti, CompleteSetupUeParameters params) = 0;
603  virtual void RecvRrcConnectionRequest (uint16_t rnti, RrcConnectionRequest msg) = 0;
604  virtual void RecvRrcConnectionSetupCompleted (uint16_t rnti, RrcConnectionSetupCompleted msg) = 0;
605  virtual void RecvRrcConnectionReconfigurationCompleted (uint16_t rnti, RrcConnectionReconfigurationCompleted msg) = 0;
606  virtual void RecvRrcConnectionReestablishmentRequest (uint16_t rnti, RrcConnectionReestablishmentRequest msg) = 0;
607  virtual void RecvRrcConnectionReestablishmentComplete (uint16_t rnti, RrcConnectionReestablishmentComplete msg) = 0;
608  virtual void RecvMeasurementReport (uint16_t rnti, MeasurementReport msg) = 0;
609 
610 };
611 
612 
613 
614 
615 
616 
618 // templates
620 
621 
627 template <class C>
629 {
630 public:
631  MemberLteUeRrcSapUser (C* owner);
632 
633  // inherited from LteUeRrcSapUser
634  virtual void Setup (SetupParameters params);
635  virtual void SendRrcConnectionRequest (RrcConnectionRequest msg);
636  virtual void SendRrcConnectionSetupCompleted (RrcConnectionSetupCompleted msg);
637  virtual void SendRrcConnectionReconfigurationCompleted (RrcConnectionReconfigurationCompleted msg);
638  virtual void SendRrcConnectionReestablishmentRequest (RrcConnectionReestablishmentRequest msg);
639  virtual void SendRrcConnectionReestablishmentComplete (RrcConnectionReestablishmentComplete msg);
640 
641 private:
643  C* m_owner;
644 };
645 
646 template <class C>
648  : m_owner (owner)
649 {
650 }
651 
652 template <class C>
653 MemberLteUeRrcSapUser<C>::MemberLteUeRrcSapUser ()
654 {
655 }
656 
657 template <class C>
658 void
659 MemberLteUeRrcSapUser<C>::Setup (SetupParameters params)
660 {
661  m_owner->DoSetup (params);
662 }
663 
664 template <class C>
665 void
666 MemberLteUeRrcSapUser<C>::SendRrcConnectionRequest (RrcConnectionRequest msg)
667 {
668  m_owner->DoSendRrcConnectionRequest (msg);
669 }
670 
671 template <class C>
672 void
673 MemberLteUeRrcSapUser<C>::SendRrcConnectionSetupCompleted (RrcConnectionSetupCompleted msg)
674 {
675  m_owner->DoSendRrcConnectionSetupCompleted (msg);
676 }
677 
678 template <class C>
679 void
680 MemberLteUeRrcSapUser<C>::SendRrcConnectionReconfigurationCompleted (RrcConnectionReconfigurationCompleted msg)
681 {
682  m_owner->DoSendRrcConnectionReconfigurationCompleted (msg) ;
683 }
684 
685 template <class C>
686 void
687 MemberLteUeRrcSapUser<C>::SendRrcConnectionReestablishmentRequest (RrcConnectionReestablishmentRequest msg)
688 {
689  m_owner->DoSendRrcConnectionReestablishmentRequest (msg);
690 }
691 
692 template <class C>
693 void
694 MemberLteUeRrcSapUser<C>::SendRrcConnectionReestablishmentComplete (RrcConnectionReestablishmentComplete msg)
695 {
696  m_owner->DoSendRrcConnectionReestablishmentComplete (msg);
697 }
698 
704 template <class C>
706 {
707 public:
708  MemberLteUeRrcSapProvider (C* owner);
709 
710  // methods inherited from LteUeRrcSapProvider go here
711  virtual void CompleteSetup (CompleteSetupParameters params);
712  virtual void RecvMasterInformationBlock (MasterInformationBlock msg);
713  virtual void RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg);
714  virtual void RecvSystemInformation (SystemInformation msg);
715  virtual void RecvRrcConnectionSetup (RrcConnectionSetup msg);
716  virtual void RecvRrcConnectionReconfiguration (RrcConnectionReconfiguration msg);
717  virtual void RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg);
718  virtual void RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg);
719  virtual void RecvRrcConnectionRelease (RrcConnectionRelease msg);
720  virtual void RecvRrcConnectionReject (RrcConnectionReject msg);
721 
722 private:
724  C* m_owner;
725 };
726 
727 template <class C>
729  : m_owner (owner)
730 {
731 }
732 
733 template <class C>
734 MemberLteUeRrcSapProvider<C>::MemberLteUeRrcSapProvider ()
735 {
736 }
737 
738 template <class C>
739 void
740 MemberLteUeRrcSapProvider<C>::CompleteSetup (CompleteSetupParameters params)
741 {
742  m_owner->DoCompleteSetup (params);
743 }
744 
745 template <class C>
746 void
747 MemberLteUeRrcSapProvider<C>::RecvMasterInformationBlock (MasterInformationBlock msg)
748 {
749  Simulator::ScheduleNow (&C::DoRecvMasterInformationBlock, m_owner, msg);
750 }
751 
752 template <class C>
753 void
754 MemberLteUeRrcSapProvider<C>::RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg)
755 {
756  Simulator::ScheduleNow (&C::DoRecvSystemInformationBlockType1, m_owner, msg);
757 }
758 
759 template <class C>
760 void
761 MemberLteUeRrcSapProvider<C>::RecvSystemInformation (SystemInformation msg)
762 {
763  Simulator::ScheduleNow (&C::DoRecvSystemInformation, m_owner, msg);
764 }
765 
766 template <class C>
767 void
768 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionSetup (RrcConnectionSetup msg)
769 {
770  Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetup, m_owner, msg);
771 }
772 
773 template <class C>
774 void
775 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionReconfiguration (RrcConnectionReconfiguration msg)
776 {
777  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfiguration, m_owner, msg);
778 }
779 
780 template <class C>
781 void
782 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg)
783 {
784  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishment, m_owner, msg);
785 }
786 
787 template <class C>
788 void
789 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg)
790 {
791  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentReject, m_owner, msg);
792 }
793 
794 template <class C>
795 void
796 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionRelease (RrcConnectionRelease msg)
797 {
798  Simulator::ScheduleNow (&C::DoRecvRrcConnectionRelease, m_owner, msg);
799 }
800 
801 template <class C>
802 void
803 MemberLteUeRrcSapProvider<C>::RecvRrcConnectionReject (RrcConnectionReject msg)
804 {
805  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReject, m_owner, msg);
806 }
807 
808 
814 template <class C>
816 {
817 public:
818  MemberLteEnbRrcSapUser (C* owner);
819 
820  // inherited from LteEnbRrcSapUser
821 
822  virtual void SetupUe (uint16_t rnti, SetupUeParameters params);
823  virtual void RemoveUe (uint16_t rnti);
824  virtual void SendMasterInformationBlock (MasterInformationBlock msg);
825  virtual void SendSystemInformationBlockType1 (SystemInformationBlockType1 msg);
826  virtual void SendSystemInformation (SystemInformation msg);
827  virtual void SendRrcConnectionSetup (uint16_t rnti, RrcConnectionSetup msg);
828  virtual void SendRrcConnectionReconfiguration (uint16_t rnti, RrcConnectionReconfiguration msg);
829  virtual void SendRrcConnectionReestablishment (uint16_t rnti, RrcConnectionReestablishment msg);
830  virtual void SendRrcConnectionReestablishmentReject (uint16_t rnti, RrcConnectionReestablishmentReject msg);
831  virtual void SendRrcConnectionRelease (uint16_t rnti, RrcConnectionRelease msg);
832  virtual void SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg);
833  virtual Ptr<Packet> EncodeHandoverPreparationInformation (HandoverPreparationInfo msg);
834  virtual HandoverPreparationInfo DecodeHandoverPreparationInformation (Ptr<Packet> p);
835  virtual Ptr<Packet> EncodeHandoverCommand (RrcConnectionReconfiguration msg);
836  virtual RrcConnectionReconfiguration DecodeHandoverCommand (Ptr<Packet> p);
837 
838 private:
840  C* m_owner;
841 };
842 
843 template <class C>
845  : m_owner (owner)
846 {
847 }
848 
849 template <class C>
850 MemberLteEnbRrcSapUser<C>::MemberLteEnbRrcSapUser ()
851 {
852 }
853 
854 template <class C>
855 void
856 MemberLteEnbRrcSapUser<C>::SetupUe (uint16_t rnti, SetupUeParameters params)
857 {
858  m_owner->DoSetupUe (rnti, params);
859 }
860 
861 template <class C>
862 void
863 MemberLteEnbRrcSapUser<C>::RemoveUe (uint16_t rnti)
864 {
865  m_owner->DoRemoveUe (rnti);
866 }
867 
868 template <class C>
869 void
870 MemberLteEnbRrcSapUser<C>::SendMasterInformationBlock (MasterInformationBlock msg)
871 {
872  m_owner->DoSendMasterInformationBlock (msg);
873 }
874 
875 template <class C>
876 void
877 MemberLteEnbRrcSapUser<C>::SendSystemInformationBlockType1 (SystemInformationBlockType1 msg)
878 {
879  m_owner->DoSendSystemInformationBlockType1 (msg);
880 }
881 
882 template <class C>
883 void
884 MemberLteEnbRrcSapUser<C>::SendSystemInformation (SystemInformation msg)
885 {
886  m_owner->DoSendSystemInformation (msg);
887 }
888 
889 template <class C>
890 void
891 MemberLteEnbRrcSapUser<C>::SendRrcConnectionSetup (uint16_t rnti, RrcConnectionSetup msg)
892 {
893  m_owner->DoSendRrcConnectionSetup (rnti, msg) ;
894 }
895 
896 template <class C>
897 void
898 MemberLteEnbRrcSapUser<C>::SendRrcConnectionReconfiguration (uint16_t rnti, RrcConnectionReconfiguration msg)
899 {
900  m_owner->DoSendRrcConnectionReconfiguration (rnti, msg);
901 }
902 
903 template <class C>
904 void
905 MemberLteEnbRrcSapUser<C>::SendRrcConnectionReestablishment (uint16_t rnti, RrcConnectionReestablishment msg)
906 {
907  m_owner->DoSendRrcConnectionReestablishment (rnti, msg);
908 }
909 
910 template <class C>
911 void
912 MemberLteEnbRrcSapUser<C>::SendRrcConnectionReestablishmentReject (uint16_t rnti, RrcConnectionReestablishmentReject msg)
913 {
914  m_owner->DoSendRrcConnectionReestablishmentReject (rnti, msg);
915 }
916 
917 template <class C>
918 void
919 MemberLteEnbRrcSapUser<C>::SendRrcConnectionRelease (uint16_t rnti, RrcConnectionRelease msg)
920 {
921  m_owner->DoSendRrcConnectionRelease (rnti, msg);
922 }
923 
924 template <class C>
925 void
926 MemberLteEnbRrcSapUser<C>::SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg)
927 {
928  m_owner->DoSendRrcConnectionReject (rnti, msg);
929 }
930 
931 template <class C>
932 Ptr<Packet>
933 MemberLteEnbRrcSapUser<C>::EncodeHandoverPreparationInformation (HandoverPreparationInfo msg)
934 {
935  return m_owner->DoEncodeHandoverPreparationInformation (msg);
936 }
937 
938 template <class C>
939 LteRrcSap::HandoverPreparationInfo
940 MemberLteEnbRrcSapUser<C>::DecodeHandoverPreparationInformation (Ptr<Packet> p)
941 {
942  return m_owner->DoDecodeHandoverPreparationInformation (p);
943 }
944 
945 
946 template <class C>
947 Ptr<Packet>
948 MemberLteEnbRrcSapUser<C>::EncodeHandoverCommand (RrcConnectionReconfiguration msg)
949 {
950  return m_owner->DoEncodeHandoverCommand (msg);
951 }
952 
953 template <class C>
954 LteRrcSap::RrcConnectionReconfiguration
955 MemberLteEnbRrcSapUser<C>::DecodeHandoverCommand (Ptr<Packet> p)
956 {
957  return m_owner->DoDecodeHandoverCommand (p);
958 }
959 
965 template <class C>
967 {
968 public:
969  MemberLteEnbRrcSapProvider (C* owner);
970 
971  // methods inherited from LteEnbRrcSapProvider go here
972 
973  virtual void CompleteSetupUe (uint16_t rnti, CompleteSetupUeParameters params);
974  virtual void RecvRrcConnectionRequest (uint16_t rnti, RrcConnectionRequest msg);
975  virtual void RecvRrcConnectionSetupCompleted (uint16_t rnti, RrcConnectionSetupCompleted msg);
976  virtual void RecvRrcConnectionReconfigurationCompleted (uint16_t rnti, RrcConnectionReconfigurationCompleted msg);
977  virtual void RecvRrcConnectionReestablishmentRequest (uint16_t rnti, RrcConnectionReestablishmentRequest msg);
978  virtual void RecvRrcConnectionReestablishmentComplete (uint16_t rnti, RrcConnectionReestablishmentComplete msg);
979  virtual void RecvMeasurementReport (uint16_t rnti, MeasurementReport msg);
980 
981 private:
983  C* m_owner;
984 };
985 
986 template <class C>
988  : m_owner (owner)
989 {
990 }
991 
992 template <class C>
993 MemberLteEnbRrcSapProvider<C>::MemberLteEnbRrcSapProvider ()
994 {
995 }
996 
997 template <class C>
998 void
999 MemberLteEnbRrcSapProvider<C>::CompleteSetupUe (uint16_t rnti, CompleteSetupUeParameters params)
1000 {
1001  m_owner->DoCompleteSetupUe (rnti, params);
1002 }
1003 
1004 template <class C>
1005 void
1006 MemberLteEnbRrcSapProvider<C>::RecvRrcConnectionRequest (uint16_t rnti, RrcConnectionRequest msg)
1007 {
1008  Simulator::ScheduleNow (&C::DoRecvRrcConnectionRequest, m_owner, rnti, msg);
1009 }
1010 
1011 template <class C>
1012 void
1013 MemberLteEnbRrcSapProvider<C>::RecvRrcConnectionSetupCompleted (uint16_t rnti, RrcConnectionSetupCompleted msg)
1014 {
1015  Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetupCompleted, m_owner, rnti, msg);
1016 }
1017 
1018 template <class C>
1019 void
1020 MemberLteEnbRrcSapProvider<C>::RecvRrcConnectionReconfigurationCompleted (uint16_t rnti, RrcConnectionReconfigurationCompleted msg)
1021 {
1022  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfigurationCompleted, m_owner, rnti, msg);
1023 }
1024 
1025 template <class C>
1026 void
1027 MemberLteEnbRrcSapProvider<C>::RecvRrcConnectionReestablishmentRequest (uint16_t rnti, RrcConnectionReestablishmentRequest msg)
1028 {
1029  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentRequest, m_owner, rnti, msg);
1030 }
1031 
1032 template <class C>
1033 void
1034 MemberLteEnbRrcSapProvider<C>::RecvRrcConnectionReestablishmentComplete (uint16_t rnti, RrcConnectionReestablishmentComplete msg)
1035 {
1036  Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentComplete, m_owner, rnti, msg);
1037 }
1038 
1039 template <class C>
1040 void
1041 MemberLteEnbRrcSapProvider<C>::RecvMeasurementReport (uint16_t rnti, MeasurementReport msg)
1042 {
1043  Simulator::ScheduleNow (&C::DoRecvMeasurementReport, m_owner, rnti, msg);
1044 }
1045 
1046 
1047 
1048 
1049 
1050 
1051 
1052 
1053 
1054 
1055 
1056 
1057 
1058 
1059 } // namespace ns3
1060 
1061 
1062 #endif // LTE_RRC_SAP_H
1063 
1064 
1065 
1066 
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Definition: simulator.h:981