src/lte/model/lte-enb-rrc.cc
author Nicola Baldo <nbaldo@cttc.es>
Fri, 04 Nov 2011 13:29:20 +0000
changeset 8389 cb215987eb77
parent 8156 7933ae8fcfc6
child 8390 fb2bef5bb0e2
permissions -rw-r--r--
LTE-EPC end-to-end data plane imlemented and partially working
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     2
/*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     4
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     7
 * published by the Free Software Foundation;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     8
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    12
 * GNU General Public License for more details.
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    13
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    17
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    19
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    20
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    21
#include <ns3/fatal-error.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#include <ns3/log.h>
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    23
#include <ns3/abort.h>
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    24
#include "ns3/pointer.h"
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    25
#include "ns3/object-map.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    26
#include "ns3/object-factory.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    27
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    28
#include "lte-enb-rrc.h"
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
#include "lte-rlc.h"
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    30
#include "lte-pdcp.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    31
#include "lte-pdcp-sap.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    32
#include "lte-radio-bearer-info.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    33
#include "lte-mac-tag.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
NS_LOG_COMPONENT_DEFINE ("LteEnbRrc");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    38
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
    41
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
    42
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
// CMAC SAP forwarder
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    45
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    47
class EnbRrcMemberLteEnbCmacSapUser : public LteEnbCmacSapUser
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    50
  EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
  virtual void NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    53
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
private:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
  LteEnbRrc* m_rrc;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    58
EnbRrcMemberLteEnbCmacSapUser::EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
  : m_rrc (rrc)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    61
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    62
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    64
EnbRrcMemberLteEnbCmacSapUser::NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    66
  m_rrc->DoNotifyLcConfigResult (rnti, lcid, success);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    70
////////////////////////////////
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    71
// PDCP SAP Forwarder
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    72
////////////////////////////////
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    74
// not needed any more if the template works
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    76
// class EnbRrcMemberLtePdcpSapUser : public LtePdcpSapUser
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    77
// {
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    78
// public:
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    79
//   MemberLtePdcpSapUser (LteEnbRrc* rrc);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    80
//   virtual void ReceiveRrcPdu (Ptr<Packet> p);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    81
// private:
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    82
//   LteEnbRrc* m_rrc;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    83
// };
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    84
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
    85
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    86
// EnbRrcMemberLtePdcpSapUser::EnbRrcMemberLtePdcpSapUser (LteEnbRrc* rrc)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    87
//   : m_rrc (rrc)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    88
// {
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    89
// }
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    90
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    91
// void EnbRrcMemberLtePdcpSapUser::ReceiveRrcPdu (Ptr<Packet> p)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    92
// {
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    93
//   m_rrc->DoReceiveRrcPdu (p);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    94
// }
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    95
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    96
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    97
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    98
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    99
///////////////////////////////////////////
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   100
// UeInfo 
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   101
///////////////////////////////////////////
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   102
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   103
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   104
NS_OBJECT_ENSURE_REGISTERED (UeInfo);
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   105
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   106
UeInfo::UeInfo (void)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   107
  : m_lastAllocatedId (0)
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   108
{
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   109
  m_imsi = 0;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   110
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   112
UeInfo::UeInfo (uint64_t imsi)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   113
  : m_lastAllocatedId (0)
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   114
{
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   115
  m_imsi = imsi;
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   116
}
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   117
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   118
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   119
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   120
UeInfo::~UeInfo (void)
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   121
{
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   122
  // Nothing to do here
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   123
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   124
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   125
TypeId UeInfo::GetTypeId (void)
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   126
{
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   127
  static TypeId  tid = TypeId ("ns3::UeInfo")
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   128
    .SetParent<Object> ()
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   129
    .AddConstructor<UeInfo> ()
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   130
    .AddAttribute ("RadioBearerMap", "List of UE RadioBearerInfo by LCID.",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   131
                   ObjectMapValue (),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   132
                   MakeObjectMapAccessor (&UeInfo::m_rbMap),
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   133
                   MakeObjectMapChecker<LteRadioBearerInfo> ())
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   134
  ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   135
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   136
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   137
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   138
uint64_t
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   139
UeInfo::GetImsi (void)
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   140
{
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   141
  return m_imsi;
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   142
}
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   143
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   144
uint8_t
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   145
UeInfo::AddRadioBearer (Ptr<LteRadioBearerInfo> rbi)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   146
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   147
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   148
  for (uint8_t lcid = m_lastAllocatedId; lcid != m_lastAllocatedId - 1; ++lcid)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   149
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   150
      if (lcid != 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   151
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   152
          if (m_rbMap.find (lcid) == m_rbMap.end ())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   153
            {
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   154
              m_rbMap.insert (std::pair<uint8_t, Ptr<LteRadioBearerInfo> > (lcid, rbi));
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   155
              m_lastAllocatedId = lcid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   156
              return lcid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   157
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   158
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   159
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   160
  NS_LOG_WARN ("no more logical channel ids available");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   161
  return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   162
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   163
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   164
Ptr<LteRadioBearerInfo>
8152
325396a9f9bf fixed misspelling in UeInfo::GetRadioBearer
Nicola Baldo <nbaldo@cttc.es>
parents: 8148
diff changeset
   165
UeInfo::GetRadioBearer (uint8_t lcid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   166
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   167
  NS_LOG_FUNCTION (this << (uint32_t) lcid);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   168
  NS_ASSERT (0 != lcid);
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   169
  std::map<uint8_t, Ptr<LteRadioBearerInfo> >::iterator it = m_rbMap.find (lcid);  
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   170
  NS_ABORT_IF (it == m_rbMap.end ());
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   171
  return it->second;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   172
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   173
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   174
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   175
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   176
UeInfo::RemoveRadioBearer (uint8_t lcid)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   177
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   178
  NS_LOG_FUNCTION (this << (uint32_t) lcid);
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   179
  std::map <uint8_t, Ptr<LteRadioBearerInfo> >::iterator it = m_rbMap.find (lcid);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   180
  NS_ASSERT_MSG (it != m_rbMap.end (), "request to remove radio bearer with unknown lcid " << lcid);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   181
  m_rbMap.erase (it);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   182
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   183
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   184
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   185
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   186
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   187
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   188
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   189
// eNB RRC methods
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   190
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   191
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   192
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   193
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   194
LteEnbRrc::LteEnbRrc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   195
  : m_cmacSapProvider (0),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   196
    m_ffMacSchedSapProvider (0),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   197
    m_macSapProvider (0),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   198
    m_configured (false),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   199
    m_lastAllocatedRnti (0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   200
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   201
  NS_LOG_FUNCTION (this);
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
   202
  m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   203
  m_pdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<LteEnbRrc> (this);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   204
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   205
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   206
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   207
LteEnbRrc::~LteEnbRrc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   208
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   209
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   210
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   211
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   212
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   213
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   214
LteEnbRrc::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   215
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   216
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   217
  delete m_cmacSapUser;
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   218
  delete m_pdcpSapUser;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   219
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   220
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   221
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   222
LteEnbRrc::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   223
{
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   224
  NS_LOG_FUNCTION ("LteEnbRrc::GetTypeId");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   225
  static TypeId tid = TypeId ("ns3::LteEnbRrc")
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   226
    .SetParent<Object> ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   227
    .AddConstructor<LteEnbRrc> ()
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   228
    .AddAttribute ("UeMap", "List of UE Info by C-RNTI.",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   229
                   ObjectMapValue (),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   230
                   MakeObjectMapAccessor (&LteEnbRrc::m_ueMap),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   231
                   MakeObjectMapChecker<UeInfo> ())
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   232
  ;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   233
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   234
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   235
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   236
uint16_t
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   237
LteEnbRrc::GetLastAllocatedRnti () const
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   238
{
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   239
  NS_LOG_FUNCTION (this);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   240
  return m_lastAllocatedRnti;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   241
}
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   242
std::map<uint16_t,Ptr<UeInfo> > LteEnbRrc::GetUeMap (void) const
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   243
{
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   244
  return m_ueMap;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   245
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   246
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   247
void LteEnbRrc::SetUeMap (std::map<uint16_t,Ptr<UeInfo> > ueMap)
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   248
{
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   249
  this->m_ueMap = ueMap;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   250
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   251
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   252
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   253
void
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   254
LteEnbRrc::SetLastAllocatedRnti (uint16_t lastAllocatedRnti)
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   255
{
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   256
  NS_LOG_FUNCTION (this << lastAllocatedRnti);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   257
  m_lastAllocatedRnti = lastAllocatedRnti;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   258
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   259
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   260
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   261
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   262
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   263
LteEnbRrc::SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   264
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   265
  NS_LOG_FUNCTION (this << s);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   266
  m_cmacSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   267
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   268
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   269
LteEnbCmacSapUser*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   270
LteEnbRrc::GetLteEnbCmacSapUser ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   271
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   272
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   273
  return m_cmacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   274
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   275
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   276
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   277
LteEnbRrc::SetFfMacSchedSapProvider (FfMacSchedSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   278
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   279
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   280
  m_ffMacSchedSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   281
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   282
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   283
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   284
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   285
LteEnbRrc::SetLteMacSapProvider (LteMacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   286
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   287
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   288
  m_macSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   289
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   290
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   291
LtePdcpSapProvider* 
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   292
LteEnbRrc::GetLtePdcpSapProvider (uint16_t rnti, uint8_t lcid)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   293
{
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   294
  return GetUeInfo (rnti)->GetRadioBearer (lcid)->m_pdcp->GetLtePdcpSapProvider ();
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   295
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   296
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   297
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   298
LteEnbRrc::ConfigureCell (uint8_t ulBandwidth, uint8_t dlBandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   299
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   300
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   301
  NS_ASSERT (!m_configured);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   302
  m_cmacSapProvider->ConfigureMac (ulBandwidth, dlBandwidth);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   303
  m_configured = true;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   304
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   305
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   306
uint16_t
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   307
LteEnbRrc::AddUe (uint64_t imsi)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   308
{
8032
ecc5171f1f96 fixed IMSI initialization
Nicola Baldo <nbaldo@cttc.es>
parents: 8007
diff changeset
   309
  NS_LOG_FUNCTION (this << imsi);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   310
  // no Call Admission Control for now
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   311
  uint16_t rnti = CreateUeInfo (imsi); // side effect: create UeInfo for this UE
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   312
  NS_ASSERT_MSG (rnti != 0, "CreateUeInfo returned RNTI==0");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   313
  m_cmacSapProvider->AddUe (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   314
  return rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   315
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   316
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   317
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   318
LteEnbRrc::RemoveUe (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   319
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   320
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   321
  RemoveUeInfo (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   322
  NS_FATAL_ERROR ("missing RemoveUe method in CMAC SAP");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   323
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   324
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   325
uint8_t
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   326
LteEnbRrc::SetupRadioBearer (uint16_t rnti, EpsBearer bearer, TypeId rlcTypeId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   327
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   328
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   329
  Ptr<UeInfo> ueInfo = GetUeInfo (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   330
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   331
  // create RLC instance
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   332
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   333
  ObjectFactory rlcObjectFactory;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   334
  rlcObjectFactory.SetTypeId (rlcTypeId);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   335
  Ptr<LteRlc> rlc = rlcObjectFactory.Create ()->GetObject<LteRlc> ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   336
  rlc->SetLteMacSapProvider (m_macSapProvider);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   337
  rlc->SetRnti (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   338
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   339
  Ptr<LteRadioBearerInfo> rbInfo = CreateObject<LteRadioBearerInfo> ();
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   340
  rbInfo->m_rlc = rlc;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   341
  uint8_t lcid = ueInfo->AddRadioBearer (rbInfo);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   342
  rlc->SetLcId (lcid);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   343
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   344
  // we need PDCP only for real RLC, i.e., RLC/UM or RLC/AM
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   345
  // if we are using RLC/SM we don't care of anything above RLC
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   346
  if (rlcTypeId != LteRlcSm::GetTypeId ())
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   347
    {
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   348
      Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   349
      pdcp->SetRnti (rnti);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   350
      pdcp->SetLcId (lcid);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   351
      pdcp->SetLtePdcpSapUser (m_pdcpSapUser);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   352
      pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   353
      rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   354
      rbInfo->m_pdcp = pdcp;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   355
    }
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   356
    
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   357
  LteEnbCmacSapProvider::LcInfo lcinfo;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   358
  lcinfo.rnti = rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   359
  lcinfo.lcId = lcid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   360
  lcinfo.lcGroup = 0; // TBD
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   361
  lcinfo.qci = bearer.qci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   362
  lcinfo.isGbr = bearer.IsGbr ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   363
  lcinfo.mbrUl = bearer.gbrQosInfo.mbrUl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   364
  lcinfo.mbrDl = bearer.gbrQosInfo.mbrDl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   365
  lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   366
  lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   367
  m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   368
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   369
  return lcid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   370
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   371
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   372
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   373
LteEnbRrc::ReleaseRadioBearer (uint16_t rnti, uint8_t lcId)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   374
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   375
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   376
  Ptr<UeInfo> ueInfo = GetUeInfo (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   377
  ueInfo->RemoveRadioBearer (lcId);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   378
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   379
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   380
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   381
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   382
bool
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   383
LteEnbRrc::Send (Ptr<Packet> packet)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   384
{
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   385
  NS_LOG_FUNCTION (this << packet);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   386
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   387
  LteMacTag tag;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   388
  bool found = packet->RemovePacketTag (tag);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   389
  NS_ASSERT (found);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   390
  
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   391
  LtePdcpSapProvider::TransmitRrcPduParameters params;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   392
  params.rrcPdu = packet;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   393
  params.rnti = tag.GetRnti ();
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   394
  params.lcid = tag.GetLcid ();
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   395
  LtePdcpSapProvider* pdcpSapProvider = GetLtePdcpSapProvider (tag.GetRnti (), tag.GetLcid ());
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   396
  pdcpSapProvider->TransmitRrcPdu (params);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   397
  
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   398
  return true;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   399
}
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   400
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   401
void 
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   402
LteEnbRrc::SetForwardUpCallback (Callback <void, Ptr<Packet> > cb)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   403
{
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   404
  m_forwardUpCallback = cb;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   405
}
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   406
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   407
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   408
void
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   409
LteEnbRrc::DoReceiveRrcPdu (LtePdcpSapUser::ReceiveRrcPduParameters params)
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   410
{
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   411
  NS_LOG_FUNCTION (this);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   412
  // this tag is needed by the EpcEnbApplication to determine the S1 bearer that corresponds to this radio bearer
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   413
  LteMacTag tag;
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   414
  tag.SetRnti (params.rnti);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   415
  tag.SetLcid (params.lcid);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   416
  params.rrcPdu->AddPacketTag (tag);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   417
  m_forwardUpCallback (params.rrcPdu);
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   418
}
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   419
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   420
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   421
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   422
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   423
LteEnbRrc::DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   424
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   425
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   426
  NS_FATAL_ERROR ("not implemented");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   427
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   428
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   429
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   430
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   431
// /////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   432
// management of multiple UE info instances
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   433
// /////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   434
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   435
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   436
uint16_t
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   437
LteEnbRrc::CreateUeInfo (uint64_t imsi)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   438
{
8032
ecc5171f1f96 fixed IMSI initialization
Nicola Baldo <nbaldo@cttc.es>
parents: 8007
diff changeset
   439
  NS_LOG_FUNCTION (this << imsi);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   440
  for (uint16_t rnti = m_lastAllocatedRnti; rnti != m_lastAllocatedRnti - 1; ++rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   441
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   442
      if (rnti != 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   443
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   444
          if (m_ueMap.find (rnti) == m_ueMap.end ())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   445
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   446
              m_lastAllocatedRnti = rnti;
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   447
              m_ueMap.insert (std::pair<uint16_t, Ptr<UeInfo> > (rnti, CreateObject<UeInfo> (imsi)));
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   448
              return rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   449
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   450
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   451
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   452
  return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   453
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   454
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   455
Ptr<UeInfo>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   456
LteEnbRrc::GetUeInfo (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   457
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   458
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   459
  NS_ASSERT (0 != rnti);
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   460
  std::map<uint16_t, Ptr<UeInfo> >::iterator it = m_ueMap.find (rnti);  
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   461
  NS_ABORT_IF (it == m_ueMap.end ());
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   462
  return it->second;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   463
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   464
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   465
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   466
LteEnbRrc::RemoveUeInfo (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   467
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   468
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   469
  std::map <uint16_t, Ptr<UeInfo> >::iterator it = m_ueMap.find (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   470
  NS_ASSERT_MSG (it != m_ueMap.end (), "request to remove UE info with unknown rnti " << rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   471
  m_ueMap.erase (it);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   472
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   473
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   474
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   475
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   476
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   477
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   478
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   479