src/lte/model/eps-bearer.cc
author Nicola Baldo <nbaldo@cttc.es>
Wed, 19 Dec 2012 17:34:54 +0100
changeset 9594 63d9b752f99c
parent 9337 ae7126b266ce
child 9653 382d27da8905
permissions -rw-r--r--
initialize member variables of EpsBearer upon construction
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#include "eps-bearer.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/fatal-error.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    25
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    26
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    27
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    28
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
9594
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    30
GbrQosInformation::GbrQosInformation ()
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    31
  : gbrDl (0),
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    32
    gbrUl (0),
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    33
    mbrDl (0),
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    34
    mbrUl (0)
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    35
{
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    36
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
9594
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    38
AllocationRetentionPriority::AllocationRetentionPriority ()
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    39
  : priorityLevel (0),
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    40
    preemptionCapability (false),
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    41
    preemptionVulnerability (false)
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    42
{
63d9b752f99c initialize member variables of EpsBearer upon construction
Nicola Baldo <nbaldo@cttc.es>
parents: 9337
diff changeset
    43
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    45
EpsBearer::EpsBearer ()
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    46
  : qci (NGBR_VIDEO_TCP_DEFAULT)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
EpsBearer::EpsBearer (Qci x)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
  : qci (x)
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
bool
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
EpsBearer::IsGbr () const
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
  // 3GPP 23.203 Section 6.1.7.2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
  switch (qci)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    61
    case GBR_CONV_VOICE:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    62
    case GBR_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
    case GBR_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    64
    case GBR_NON_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
      return true;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    66
    case NGBR_IMS:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
    case NGBR_VIDEO_TCP_OPERATOR:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
    case NGBR_VOICE_VIDEO_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
    case NGBR_VIDEO_TCP_PREMIUM:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
    case NGBR_VIDEO_TCP_DEFAULT:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
      return false;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
    default:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
      NS_FATAL_ERROR ("unknown QCI value " << qci);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    74
      return false;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
uint8_t
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    79
EpsBearer::GetPriority () const
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    80
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    81
  // 3GPP 23.203 Section 6.1.7.2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    82
  switch (qci)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    83
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    84
    case GBR_CONV_VOICE:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
      return 2;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
    case GBR_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
      return 4;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
    case GBR_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
      return 3;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
    case GBR_NON_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
      return 5;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
    case NGBR_IMS:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    93
      return 1;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    94
    case NGBR_VIDEO_TCP_OPERATOR:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    95
      return 6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
    case NGBR_VOICE_VIDEO_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
      return 7;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    98
    case NGBR_VIDEO_TCP_PREMIUM:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    99
      return 8;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   100
    case NGBR_VIDEO_TCP_DEFAULT:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   101
      return 9;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   102
    default:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   103
      NS_FATAL_ERROR ("unknown QCI value " << qci);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   104
      return 0;
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
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   108
uint16_t
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   109
EpsBearer::GetPacketDelayBudgetMs () const
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   110
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
  // 3GPP 23.203 Section 6.1.7.2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   112
  switch (qci)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   114
    case GBR_CONV_VOICE:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   115
      return 100;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   116
    case GBR_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   117
      return 150;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   118
    case GBR_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   119
      return 50;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
    case GBR_NON_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   121
      return 300;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   122
    case NGBR_IMS:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   123
      return 100;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   124
    case NGBR_VIDEO_TCP_OPERATOR:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   125
      return 300;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   126
    case NGBR_VOICE_VIDEO_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   127
      return 100;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   128
    case NGBR_VIDEO_TCP_PREMIUM:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   129
      return 300;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   130
    case NGBR_VIDEO_TCP_DEFAULT:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   131
      return 300;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   132
    default:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   133
      NS_FATAL_ERROR ("unknown QCI value " << qci);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   134
      return 0;
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
double
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   139
EpsBearer::GetPacketErrorLossRate () const
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   140
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   141
  // 3GPP 23.203 Section 6.1.7.2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   142
  switch (qci)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   143
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   144
    case GBR_CONV_VOICE:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   145
      return 1.0e-2;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   146
    case GBR_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   147
      return 1.0e-3;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   148
    case GBR_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   149
      return 1.0e-3;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   150
    case GBR_NON_CONV_VIDEO:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   151
      return 1.0e-6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   152
    case NGBR_IMS:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   153
      return 1.0e-6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   154
    case NGBR_VIDEO_TCP_OPERATOR:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   155
      return 1.0e-6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   156
    case NGBR_VOICE_VIDEO_GAMING:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   157
      return 1.0e-3;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   158
    case NGBR_VIDEO_TCP_PREMIUM:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   159
      return 1.0e-6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   160
    case NGBR_VIDEO_TCP_DEFAULT:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   161
      return 1.0e-6;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   162
    default:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   163
      NS_FATAL_ERROR ("unknown QCI value " << qci);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   164
      return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   165
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   166
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   167
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   168
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   169
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   170
} // namespace ns3