src/lte/model/lte-rlc.cc
author mmiozzo
Mon, 08 Oct 2012 17:18:22 +0200
changeset 9351 6e074e67a1ad
parent 8726 f6f0e2531457
child 9451 116fd6ad4640
permissions -rw-r--r--
HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
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
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    22
#include "ns3/log.h"
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    23
#include "ns3/simulator.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    24
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    25
#include "ns3/lte-rlc.h"
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    26
#include "ns3/lte-rlc-tag.h"
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    27
// #include "lte-mac-sap.h"
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    28
#include "ns3/lte-rlc-sap.h"
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    29
// #include "ff-mac-sched-sap.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    31
NS_LOG_COMPONENT_DEFINE ("LteRlc");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    32
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    36
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
///////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    38
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
class LteRlcSpecificLteMacSapUser : public LteMacSapUser
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
public:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    42
  LteRlcSpecificLteMacSapUser (LteRlc* rlc);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    44
  // Interface implemented from LteMacSapUser
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 8726
diff changeset
    45
  virtual void NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
  virtual void NotifyHarqDeliveryFailure ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
  virtual void ReceivePdu (Ptr<Packet> p);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
private:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
  LteRlcSpecificLteMacSapUser ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
  LteRlc* m_rlc;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    53
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
LteRlcSpecificLteMacSapUser::LteRlcSpecificLteMacSapUser (LteRlc* rlc)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
  : m_rlc (rlc)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
LteRlcSpecificLteMacSapUser::LteRlcSpecificLteMacSapUser ()
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
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 8726
diff changeset
    64
LteRlcSpecificLteMacSapUser::NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
{
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 8726
diff changeset
    66
  m_rlc->DoNotifyTxOpportunity (bytes, layer, harqId);
7886
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
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
LteRlcSpecificLteMacSapUser::NotifyHarqDeliveryFailure ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
  m_rlc->DoNotifyHarqDeliveryFailure ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    74
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
LteRlcSpecificLteMacSapUser::ReceivePdu (Ptr<Packet> p)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
  m_rlc->DoReceivePdu (p);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    79
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    80
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    81
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    82
///////////////////////////////////////
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    83
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
    84
NS_OBJECT_ENSURE_REGISTERED (LteRlc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
LteRlc::LteRlc ()
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    87
  : m_rlcSapUser (0),
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    88
    m_macSapProvider (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
    m_rnti (0),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
    m_lcid (0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
  NS_LOG_FUNCTION (this);
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
    93
  m_rlcSapProvider = new LteRlcSpecificLteRlcSapProvider<LteRlc> (this);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    94
  m_macSapUser = new LteRlcSpecificLteMacSapUser (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    95
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
    97
TypeId LteRlc::GetTypeId (void)
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
    98
{
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
    99
  static TypeId tid = TypeId ("ns3::LteRlc")
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   100
    .SetParent<Object> ()
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   101
    .AddTraceSource ("TxPDU",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   102
                     "PDU transmission notified to the MAC.",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   103
                     MakeTraceSourceAccessor (&LteRlc::m_txPdu))
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   104
    .AddTraceSource ("RxPDU",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   105
                     "PDU received.",
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   106
                     MakeTraceSourceAccessor (&LteRlc::m_rxPdu))
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   107
    ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   108
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   109
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   110
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
void
8374
5a07200122a6 coding style and rnti issue
Manuel Requena <manuel.requena@cttc.es>
parents: 8364
diff changeset
   112
LteRlc::SetRnti (uint16_t rnti)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
{
8374
5a07200122a6 coding style and rnti issue
Manuel Requena <manuel.requena@cttc.es>
parents: 8364
diff changeset
   114
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   115
  m_rnti = rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   116
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   117
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   118
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   119
LteRlc::SetLcId (uint8_t lcId)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   121
  NS_LOG_FUNCTION (this << (uint32_t) lcId);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   122
  m_lcid = lcId;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   123
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   124
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   125
LteRlc::~LteRlc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   126
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   127
  NS_LOG_FUNCTION (this);
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   128
  delete (m_rlcSapProvider);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   129
  delete (m_macSapUser);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   130
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   131
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   132
void
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   133
LteRlc::SetLteRlcSapUser (LteRlcSapUser * s)
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   134
{
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   135
  NS_LOG_FUNCTION (this << s);
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   136
  m_rlcSapUser = s;
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   137
}
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   138
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   139
LteRlcSapProvider*
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   140
LteRlc::GetLteRlcSapProvider ()
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   141
{
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   142
  NS_LOG_FUNCTION (this);
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   143
  return m_rlcSapProvider;
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   144
}
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   145
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   146
void
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   147
LteRlc::SetLteMacSapProvider (LteMacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   148
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   149
  NS_LOG_FUNCTION (this << s);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   150
  m_macSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   151
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   152
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   153
LteMacSapUser*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   154
LteRlc::GetLteMacSapUser ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   155
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   156
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   157
  return m_macSapUser;
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   161
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   162
////////////////////////////////////////
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   163
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   164
NS_OBJECT_ENSURE_REGISTERED (LteRlcSm);
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   165
8090
bb044038a72a LteRlc: Remove debug code
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8034
diff changeset
   166
LteRlcSm::LteRlcSm ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   167
{
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   168
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   169
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   170
  Simulator::ScheduleNow (&LteRlcSm::Start, this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   171
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   172
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   173
LteRlcSm::~LteRlcSm ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   174
{
8090
bb044038a72a LteRlc: Remove debug code
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8034
diff changeset
   175
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   176
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   177
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   178
TypeId
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   179
LteRlcSm::GetTypeId (void)
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   180
{
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   181
  static TypeId tid = TypeId ("ns3::LteRlcSm")
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   182
    .SetParent<LteRlc> ()
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   183
    .AddConstructor<LteRlcSm> ()
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   184
    ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   185
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   186
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   187
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   188
void
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   189
LteRlcSm::DoTransmitPdcpPdu (Ptr<Packet> p)
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   190
{
8392
d4fcab8ee39a fixed connection of RLC traces
Nicola Baldo <nbaldo@cttc.es>
parents: 8374
diff changeset
   191
  NS_LOG_FUNCTION (this << p);
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   192
}
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   193
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   194
void
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   195
LteRlcSm::DoReceivePdu (Ptr<Packet> p)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   196
{
8392
d4fcab8ee39a fixed connection of RLC traces
Nicola Baldo <nbaldo@cttc.es>
parents: 8374
diff changeset
   197
  NS_LOG_FUNCTION (this << p);
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   198
  // RLC Performance evaluation
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   199
  RlcTag rlcTag;
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7901
diff changeset
   200
  Time delay;
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   201
  if (p->FindFirstMatchingByteTag(rlcTag))
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   202
    {
8374
5a07200122a6 coding style and rnti issue
Manuel Requena <manuel.requena@cttc.es>
parents: 8364
diff changeset
   203
      delay = Simulator::Now() - rlcTag.GetSenderTimestamp ();
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   204
    }
8600
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   205
  NS_LOG_LOGIC (" RNTI=" << m_rnti 
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   206
                << " LCID=" << (uint32_t) m_lcid 
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   207
                << " size=" << p->GetSize () 
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   208
                << " delay=" << delay.GetNanoSeconds ());
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   209
  m_rxPdu(m_rnti, m_lcid, p->GetSize (), delay.GetNanoSeconds () );
7886
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
void
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 8726
diff changeset
   213
LteRlcSm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   214
{
8392
d4fcab8ee39a fixed connection of RLC traces
Nicola Baldo <nbaldo@cttc.es>
parents: 8374
diff changeset
   215
  NS_LOG_FUNCTION (this << bytes);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   216
  LteMacSapProvider::TransmitPduParameters params;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   217
  params.pdu = Create<Packet> (bytes);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   218
  params.rnti = m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   219
  params.lcid = m_lcid;
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8425
diff changeset
   220
  params.layer = layer;
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 8726
diff changeset
   221
  params.harqProcessId = harqId;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   222
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   223
  // RLC Performance evaluation
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   224
  RlcTag tag (Simulator::Now());
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   225
  params.pdu->AddByteTag (tag);
8600
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   226
  NS_LOG_LOGIC (" RNTI=" << m_rnti 
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   227
                << " LCID=" << (uint32_t) m_lcid 
c46da3ab9bf5 proper use of log macros in lte-rlc.cc
Nicola Baldo <nbaldo@cttc.es>
parents: 8425
diff changeset
   228
                << " size=" << bytes);
8364
0d7da39de404 Add new RLC interfaces to the generic RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents: 8148
diff changeset
   229
  m_txPdu(m_rnti, m_lcid, bytes);
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7886
diff changeset
   230
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   231
  m_macSapProvider->TransmitPdu (params);
8425
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   232
  ReportBufferStatus ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   233
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   234
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   235
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   236
LteRlcSm::DoNotifyHarqDeliveryFailure ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   237
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   238
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   239
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   240
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   241
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   242
LteRlcSm::Start ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   243
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   244
  NS_LOG_FUNCTION (this);
8425
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   245
  ReportBufferStatus ();
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   246
}
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   247
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   248
void
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   249
LteRlcSm::ReportBufferStatus ()
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   250
{
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   251
  NS_LOG_FUNCTION (this);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   252
  LteMacSapProvider::ReportBufferStatusParameters p;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   253
  p.rnti = m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   254
  p.lcid = m_lcid;
8425
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   255
  p.txQueueSize = 80000;
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   256
  p.txQueueHolDelay = 10;
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   257
  p.retxQueueSize = 0;
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   258
  p.retxQueueHolDelay = 0;
1c3cdeda035c make RlcSm send repeated buffer status reports
Nicola Baldo <nbaldo@cttc.es>
parents: 8392
diff changeset
   259
  p.statusPduSize = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   260
  m_macSapProvider->ReportBufferStatus (p);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   261
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   262
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   263
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   264
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   265
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   266
//////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   267
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   268
// LteRlcTm::~LteRlcTm ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   269
// {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   270
// }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   271
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   272
//////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   273
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   274
// LteRlcUm::~LteRlcUm ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   275
// {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   276
// }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   277
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   278
//////////////////////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   279
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   280
// LteRlcAm::~LteRlcAm ()
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   285
} // namespace ns3