src/lte/model/lte-ue-cmac-sap.h
author Manuel Requena <manuel.requena@cttc.es>
Tue, 26 Mar 2013 10:41:49 +0100
changeset 10019 6efd95740e39
parent 9413 20f1c6678ee2
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:
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
#ifndef LTE_UE_CMAC_SAP_H
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#define LTE_UE_CMAC_SAP_H
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    23
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    24
#include <ns3/packet.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    25
#include <ns3/ff-mac-common.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    26
#include <ns3/eps-bearer.h>
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7909
diff changeset
    27
#include <ns3/lte-common.h>
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    28
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    31
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    32
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
class LteMacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
/**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
 * Service Access Point (SAP) offered by the UE MAC to the UE RRC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    38
 * This is the MAC SAP Provider, i.e., the part of the SAP that contains the MAC methods called by the RRC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
class LteUeCmacSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    42
public:
7909
82b1281ea0a3 Updates for MACOS compilation (virtual destructors and variable types)
mmiozzo
parents: 7886
diff changeset
    43
  virtual ~LteUeCmacSapProvider ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    44
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    45
  struct RachConfig
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    46
  {
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    47
    uint8_t numberOfRaPreambles;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    48
    uint8_t preambleTransMax;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    49
    uint8_t raResponseWindowSize;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    50
  };
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    51
  
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    52
  virtual void ConfigureRach (RachConfig rc) = 0;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    53
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    54
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    55
   * tell the MAC to start a contention-based random access procedure,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    56
   * e.g., to perform RRC connection establishment 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    57
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    58
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    59
  virtual void StartContentionBasedRandomAccessProcedure () = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    60
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    61
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    62
   * tell the MAC to start a non-contention-based random access
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    63
   * procedure, e.g., as a consequence of handover
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    64
   * 
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
   * \param rnti
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    66
   * \param rapId Random Access Preamble Identifier
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    67
   * \param prachMask 
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
   */
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9406
diff changeset
    69
  virtual void StartNonContentionBasedRandomAccessProcedure (uint16_t rnti, uint8_t rapId, uint8_t prachMask) = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    70
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    72
  struct LogicalChannelConfig
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    73
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    74
    uint8_t priority;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    75
    uint16_t prioritizedBitRateKbps;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    76
    uint16_t bucketSizeDurationMs;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    77
    uint8_t logicalChannelGroup;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    78
  };
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    79
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    80
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    81
   * add a new Logical Channel (LC) 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    82
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    83
   * \param lcId the ID of the LC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    84
   * \param lcConfig the LC configuration provided by the RRC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    85
   * \param msu the corresponding LteMacSapUser
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    86
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    87
  virtual void AddLc (uint8_t lcId, LogicalChannelConfig lcConfig, LteMacSapUser* msu) = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    89
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    90
   * remove an existing LC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    91
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    92
   * \param lcId 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    93
   */
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    94
  virtual void RemoveLc (uint8_t lcId) = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    95
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    96
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    97
   * reset the MAC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    98
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    99
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   100
  virtual void Reset () = 0;
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7909
diff changeset
   101
  
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   102
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   103
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   104
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   105
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   106
/**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   107
 * Service Access Point (SAP) offered by the UE MAC to the UE RRC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   108
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   109
 * This is the MAC SAP User, i.e., the part of the SAP that contains the RRC methods called by the MAC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   110
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
class LteUeCmacSapUser
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   112
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
public:
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   114
7909
82b1281ea0a3 Updates for MACOS compilation (virtual destructors and variable types)
mmiozzo
parents: 7886
diff changeset
   115
  virtual ~LteUeCmacSapUser ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   116
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   117
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   118
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   119
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   120
   * \param rnti the T-C-RNTI, which will eventually become the C-RNTI after contention resolution
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   121
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   122
  virtual void SetTemporaryCellRnti (uint16_t rnti) = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   123
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   124
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   125
   * Notify the RRC that the MAC Random Access procedure completed successfully
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   126
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   127
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   128
  virtual void NotifyRandomAccessSuccessful () = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   129
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   130
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   131
   * Notify the RRC that the MAC Random Access procedure failed
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   132
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   133
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
   134
  virtual void NotifyRandomAccessFailed () = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   135
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   136
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   137
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   138
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   139
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   140
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   141
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   142
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   143
#endif // LTE_UE_CMAC_SAP_H