src/lte/model/lte-rlc-tm.h
author Manuel Requena <manuel.requena@cttc.es>
Tue, 26 Mar 2013 10:41:49 +0100
changeset 10019 6efd95740e39
parent 9470 2f0bc0c5c7fe
permissions -rw-r--r--
Add automatic triger of the HO based on the RSRQ measures
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     2
/*
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
     3
 * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     4
 *
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     8
 *
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    13
 *
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    17
 *
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    18
 * Author: Manuel Requena <manuel.requena@cttc.es> 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    19
 *         Nicola Baldo <nbaldo@cttc.es>
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    20
 */
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    21
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    22
#ifndef LTE_RLC_TM_H
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    23
#define LTE_RLC_TM_H
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    24
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    25
#include "ns3/lte-rlc.h"
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    26
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8745
diff changeset
    27
#include <ns3/event-id.h>
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    28
#include <map>
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    29
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    30
namespace ns3 {
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    31
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    32
/**
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    33
 * LTE RLC Transparent Mode (TM), see 3GPP TS 36.322
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    34
 */
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    35
class LteRlcTm : public LteRlc
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    36
{
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    37
public:
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    38
  LteRlcTm ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    39
  virtual ~LteRlcTm ();
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    40
  static TypeId GetTypeId (void);
9451
116fd6ad4640 cancel pending events upon RLC disposal
Nicola Baldo <nbaldo@cttc.es>
parents: 9414
diff changeset
    41
  virtual void DoDispose ();
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    42
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    43
  /**
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    44
   * RLC SAP
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    45
   */
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    46
  virtual void DoTransmitPdcpPdu (Ptr<Packet> p);
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    47
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    48
  /**
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    49
   * MAC SAP
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    50
   */
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9337
diff changeset
    51
  virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    52
  virtual void DoNotifyHarqDeliveryFailure ();
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    53
  virtual void DoReceivePdu (Ptr<Packet> p);
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    54
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    55
private:
8499
c2658133775b Add timer to send RBS to MAC
Manuel Requena <manuel.requena@cttc.es>
parents: 8375
diff changeset
    56
  void ExpireRbsTimer (void);
c2658133775b Add timer to send RBS to MAC
Manuel Requena <manuel.requena@cttc.es>
parents: 8375
diff changeset
    57
  void DoReportBufferStatus ();
c2658133775b Add timer to send RBS to MAC
Manuel Requena <manuel.requena@cttc.es>
parents: 8375
diff changeset
    58
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    59
private:
8745
b94de33b24d3 Add maximum size to the RLC Transmission Buffer
Manuel Requena <manuel.requena@cttc.es>
parents: 8726
diff changeset
    60
  uint32_t m_maxTxBufferSize;
8375
201d78643209 Add support for ReportBufferStatus parameters: txQueueSize and txQueueHolDelay
Manuel Requena <manuel.requena@cttc.es>
parents: 8361
diff changeset
    61
  uint32_t m_txBufferSize;
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    62
  std::vector < Ptr<Packet> > m_txBuffer;       // Transmission buffer
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    63
8499
c2658133775b Add timer to send RBS to MAC
Manuel Requena <manuel.requena@cttc.es>
parents: 8375
diff changeset
    64
  EventId m_rbsTimer;
8361
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    65
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    66
};
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    67
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    68
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    69
} // namespace ns3
d7f82b579891 UM RLC entity
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    70
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    71
#endif // LTE_RLC_TM_H