src/lte/model/lte-enb-cmac-sap.h
author Marco Miozzo <marco.miozzo@cttc.es>
Thu, 08 Mar 2012 12:03:44 +0100
changeset 8674 2bd42ffd4fe8
parent 8007 845888b95c15
child 8714 398bbcbb3f42
permissions -rw-r--r--
Introduce sanity checks on LteFfConverter::double2fpS11dot3
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_ENB_CMAC_SAP_H
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#define LTE_ENB_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>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    27
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    28
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    31
class LteMacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    32
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
/**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
 * Service Access Point (SAP) offered by the eNB MAC to the eNB RRC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
 * See Femto Forum MAC Scheduler Interface Specification v 1.11, Figure 1
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
 * 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
    38
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
class LteEnbCmacSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
public:
7909
82b1281ea0a3 Updates for MACOS compilation (virtual destructors and variable types)
mmiozzo
parents: 7886
diff changeset
    42
  virtual ~LteEnbCmacSapProvider ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    45
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
   * @param ulBandwidth
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
   * @param dlBandwidth
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
  virtual void ConfigureMac (uint8_t ulBandwidth,
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
                             uint8_t dlBandwidth) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    53
  virtual void AddUe (uint16_t rnti) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
   * Logical Channel information to be passed to CmacSapProvider::ConfigureLc
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
  struct LcInfo
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    61
  {
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7909
diff changeset
    62
    uint16_t rnti;   /**< C-RNTI identifying the UE */
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
    uint8_t  lcId;    /**< logical channel identifier */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    64
    uint8_t  lcGroup; /**< logical channel group */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
    uint8_t  qci;     /**< QoS Class Identifier */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    66
    bool     isGbr;   /**< true if the bearer is GBR, false if the bearer is NON-GBR */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
    uint64_t mbrUl;   /**< maximum bitrate in uplink */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
    uint64_t mbrDl;   /**< maximum bitrate in downlink */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
    uint64_t gbrUl;   /**< guaranteed bitrate in uplink */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
    uint64_t gbrDl;   /**< guaranteed bitrate in downlink */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
  };
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    74
   * Add a new logical channel
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
   * \param lcinfo
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
   * \param msu
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    79
  virtual void AddLc (LcInfo lcinfo, LteMacSapUser* msu) = 0;
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
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    83
   * Reconfigure an existing logical channel
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    84
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
   * \param lcinfo
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
  virtual void ReconfigureLc (LcInfo lcinfo) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
   * release an existing logical channel
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    93
   * \param rnti
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    94
   * \param lcid
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    95
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
  virtual void ReleaseLc (uint16_t rnti, uint8_t lcid) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    98
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    99
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   100
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   101
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
 * Service Access Point (SAP) offered by the MAC to the RRC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   105
 * See Femto Forum MAC Scheduler Interface Specification v 1.11, Figure 1
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   106
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   107
 * 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
   108
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   109
class LteEnbCmacSapUser
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   110
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
public:
7909
82b1281ea0a3 Updates for MACOS compilation (virtual destructors and variable types)
mmiozzo
parents: 7886
diff changeset
   112
  virtual ~LteEnbCmacSapUser ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   114
   * notify the result of the last LC config operation
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   115
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   116
   * \param rnti the rnti of the user
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   117
   * \param lcid the logical channel id
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   118
   * \param success true if the operation was successful, false otherwise
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   119
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
  virtual void NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   121
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   122
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   126
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   127
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   128
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   129
} // namespace ns3
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
#endif // MAC_SAP_H