src/lte/model/rr-ff-mac-scheduler.cc
author Nicola Baldo <nbaldo@cttc.es>
Mon, 14 Mar 2011 12:49:39 +0100
changeset 7888 06a7383d3bf0
parent 7887 78911c978517
child 7895 f20bb71f9b71
permissions -rw-r--r--
renamed member SAPs
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: Marco Miozzo <marco.miozzo@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
#include <ns3/log.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#include <ns3/pointer.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    23
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    24
#include "lte-amc.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    25
#include "rr-ff-mac-scheduler.h"
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    26
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    27
NS_LOG_COMPONENT_DEFINE ("RrPacketScheduler");
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
int Type0AllocationRbg[4] = {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    32
  10,       // RGB size 1
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
  26,       // RGB size 2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
  63,       // RGB size 3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
  110       // RGB size 4
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
};  // see table 7.1.6.1-1 of 36.213
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
// NS_OBJECT_ENSURE_REGISTERED (RrPacketScheduler);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    42
class RrSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    45
  RrSchedulerMemberCschedSapProvider (RrFfMacScheduler* scheduler);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
  // inherited from FfMacCschedSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    53
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
private:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    55
  RrSchedulerMemberCschedSapProvider ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
  RrFfMacScheduler* m_scheduler;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    59
RrSchedulerMemberCschedSapProvider::RrSchedulerMemberCschedSapProvider ()
7886
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
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    63
RrSchedulerMemberCschedSapProvider::RrSchedulerMemberCschedSapProvider (RrFfMacScheduler* scheduler) : m_scheduler (scheduler)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    64
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    66
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    69
RrSchedulerMemberCschedSapProvider::CschedCellConfigReq (const struct CschedCellConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
  m_scheduler->DoCschedCellConfigReq (params);
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
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    75
RrSchedulerMemberCschedSapProvider::CschedUeConfigReq (const struct CschedUeConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
  m_scheduler->DoCschedUeConfigReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
}
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
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    82
RrSchedulerMemberCschedSapProvider::CschedLcConfigReq (const struct CschedLcConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    83
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    84
  m_scheduler->DoCschedLcConfigReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    88
RrSchedulerMemberCschedSapProvider::CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
  m_scheduler->DoCschedLcReleaseReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    93
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    94
RrSchedulerMemberCschedSapProvider::CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    95
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
  m_scheduler->DoCschedUeReleaseReq (params);
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
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   102
class RrSchedulerMemberSchedSapProvider : public FfMacSchedSapProvider
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   103
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   104
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   105
  RrSchedulerMemberSchedSapProvider (RrFfMacScheduler* scheduler);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   106
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   107
  // inherited from FfMacSchedSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   108
  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   109
  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   110
  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   112
  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   114
  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   115
  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   116
  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   117
  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   118
  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   119
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   121
private:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   122
  RrSchedulerMemberSchedSapProvider ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   123
  RrFfMacScheduler* m_scheduler;
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
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   128
RrSchedulerMemberSchedSapProvider::RrSchedulerMemberSchedSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   129
{
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
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   133
RrSchedulerMemberSchedSapProvider::RrSchedulerMemberSchedSapProvider (RrFfMacScheduler* scheduler)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   134
  : m_scheduler (scheduler)
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
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   139
RrSchedulerMemberSchedSapProvider::SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   140
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   141
  m_scheduler->DoSchedDlRlcBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   142
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   143
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   144
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   145
RrSchedulerMemberSchedSapProvider::SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   146
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   147
  m_scheduler->DoSchedDlPagingBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   148
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   149
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   150
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   151
RrSchedulerMemberSchedSapProvider::SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   152
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   153
  m_scheduler->DoSchedDlMacBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   154
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   155
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   156
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   157
RrSchedulerMemberSchedSapProvider::SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   158
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   159
  m_scheduler->DoSchedDlTriggerReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   160
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   161
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   162
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   163
RrSchedulerMemberSchedSapProvider::SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   164
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   165
  m_scheduler->DoSchedDlRachInfoReq (params);
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
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   169
RrSchedulerMemberSchedSapProvider::SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   170
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   171
  m_scheduler->DoSchedDlCqiInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   172
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   173
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   174
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   175
RrSchedulerMemberSchedSapProvider::SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   176
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   177
  m_scheduler->DoSchedUlTriggerReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   178
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   179
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   180
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   181
RrSchedulerMemberSchedSapProvider::SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   182
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   183
  m_scheduler->DoSchedUlNoiseInterferenceReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   184
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   185
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   186
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   187
RrSchedulerMemberSchedSapProvider::SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   188
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   189
  m_scheduler->DoSchedUlSrInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   190
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   191
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   192
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   193
RrSchedulerMemberSchedSapProvider::SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   194
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   195
  m_scheduler->DoSchedUlMacCtrlInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   196
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   197
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   198
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   199
RrSchedulerMemberSchedSapProvider::SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   200
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   201
  m_scheduler->DoSchedUlCqiInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   202
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   203
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   204
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   205
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   206
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   207
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   208
RrFfMacScheduler::RrFfMacScheduler ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   209
  :   m_cschedSapUser (0),
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   210
    m_schedSapUser (0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   211
{
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   212
  m_cschedSapProvider = new RrSchedulerMemberCschedSapProvider (this);
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   213
  m_schedSapProvider = new RrSchedulerMemberSchedSapProvider (this);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   214
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   215
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   216
RrFfMacScheduler::~RrFfMacScheduler ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   217
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   218
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   219
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   220
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   221
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   222
RrFfMacScheduler::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   223
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   224
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   225
  delete m_cschedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   226
  delete m_schedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   227
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   228
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   229
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   230
RrFfMacScheduler::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   231
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   232
  static TypeId tid = TypeId ("RrFfMacScheduler")
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   233
    .SetParent<FfMacScheduler> ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   234
    .AddConstructor<RrFfMacScheduler> ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   235
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   236
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   237
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   238
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   239
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   240
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   241
RrFfMacScheduler::SetFfMacCschedSapUser (FfMacCschedSapUser* s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   242
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   243
  m_cschedSapUser = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   244
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   245
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   246
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   247
RrFfMacScheduler::SetFfMacSchedSapUser (FfMacSchedSapUser* s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   248
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   249
  m_schedSapUser = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   250
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   251
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   252
FfMacCschedSapProvider*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   253
RrFfMacScheduler::GetFfMacCschedSapProvider ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   254
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   255
  return m_cschedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   256
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   257
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   258
FfMacSchedSapProvider*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   259
RrFfMacScheduler::GetFfMacSchedSapProvider ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   260
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   261
  return m_schedSapProvider;
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
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   265
RrFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   266
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   267
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   268
  // Read the subset of parameters used
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   269
  m_cschedCellConfig = params;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   270
  FfMacCschedSapUser::CschedUeConfigCnfParameters cnf;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   271
  cnf.m_result = SUCCESS;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   272
  m_cschedSapUser->CschedUeConfigCnf (cnf);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   273
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   274
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   275
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   276
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   277
RrFfMacScheduler::DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   278
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   279
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   280
  // Not used at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   281
  return;
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
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   285
RrFfMacScheduler::DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   286
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   287
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   288
  // Not used at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   289
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   290
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   291
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   292
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   293
RrFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   294
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   295
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   296
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   297
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   298
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   299
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   300
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   301
RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   302
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   303
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   304
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   305
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   306
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   307
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   308
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   309
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   310
RrFfMacScheduler::DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   311
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   312
  NS_LOG_FUNCTION (this << params.m_rnti << (uint32_t) params.m_logicalChannelIdentity);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   313
  // API generated by RLC for updating RLC parameters on a LC (tx and retx queues)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   314
  std::vector<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   315
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   316
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   317
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   318
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   319
      if (((*it).m_rnti == params.m_rnti)&&((*it).m_logicalChannelIdentity == params.m_logicalChannelIdentity))
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   320
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   321
          m_rlcBufferReq.erase (it);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   322
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   323
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   324
  // add the new paramters
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   325
  m_rlcBufferReq.insert (it, params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   326
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   327
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   328
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   329
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   330
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   331
RrFfMacScheduler::DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   332
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   333
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   334
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   335
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   336
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   337
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   338
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   339
RrFfMacScheduler::DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   340
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   341
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   342
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   343
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   344
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   345
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   346
int
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   347
RrFfMacScheduler::GetRbgSize (int dlbandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   348
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   349
  for (int i = 0; i < 4; i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   350
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   351
      if (dlbandwidth < Type0AllocationRbg[i])
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   352
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   353
          return (i + 1);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   354
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   355
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   356
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   357
  return (-1);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   358
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   359
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   360
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   361
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   362
RrFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   363
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   364
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   365
  // API generated by RLC for triggering the scheduling of a DL subframe
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   366
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   367
  // Get the actual active flows (queue!=0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   368
  std::vector<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   369
  int nflows = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   370
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   371
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   372
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   373
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   374
      if ( ((*it).m_rlcTransmissionQueueSize > 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   375
           || ((*it).m_rlcRetransmissionQueueSize > 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   376
           || ((*it).m_rlcStatusPduSize > 0) )
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   377
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   378
          nflows++;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   379
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   380
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   381
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   382
  if (nflows == 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   383
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   384
      return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   385
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   386
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   387
  // Divide the resource equally among the active users according to
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   388
  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   389
  int rbgSize = GetRbgSize (m_cschedCellConfig.m_dlBandwidth);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   390
  int rbgNum = m_cschedCellConfig.m_dlBandwidth / rbgSize;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   391
  int rbgPerFlow = rbgNum / nflows;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   392
  if (rbgPerFlow == 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   393
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   394
      rbgPerFlow = 1;                // at least 1 rbg per flow (till available resource)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   395
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   396
  int rbgAllocated = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   397
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   398
  FfMacSchedSapUser::SchedDlConfigIndParameters ret;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   399
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   400
  // round robin assignment to all UE-LC registered
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   401
  // std::vector<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   402
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   403
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   404
      // create new BuildDataListElement_s for this LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   405
      BuildDataListElement_s newEl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   406
      newEl.m_rnti = (*it).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   407
      // NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " rbg " << rbgPerFlow);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   408
      // create the DlDciListElement_s
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   409
      DlDciListElement_s newDci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   410
      newDci.m_rnti = (*it).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   411
      newDci.m_resAlloc = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   412
      newDci.m_rbBitmap = 0; // TBD (32 bit bitmap see 7.1.6 of 36.213)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   413
      uint32_t rbgMask = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   414
      for (int i = 0; i < rbgPerFlow; i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   415
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   416
          rbgMask = rbgMask + (0x1 << rbgAllocated);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   417
          // NS_LOG_DEBUG (this << " Allocated PRB " << rbgAllocated);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   418
          rbgAllocated++;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   419
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   420
      newDci.m_rbBitmap = rbgMask; // (32 bit bitmap see 7.1.6 of 36.213)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   421
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   422
      int nbOfTbsInNewDci = 1;  // SISO -> only one TB
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   423
      int rlcPduSize = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   424
      for (int i = 0; i < nbOfTbsInNewDci; i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   425
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   426
          std::map <uint16_t,uint8_t>::iterator it = m_p10CqiRxed.find (newDci.m_rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   427
          if (it == m_p10CqiRxed.end ())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   428
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   429
              newDci.m_mcs.push_back (1); // no info on this user -> lowest MCS
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   430
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   431
          else
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   432
            {
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   433
              newDci.m_mcs.push_back ( LteAmc::GetMcsFromCqi ((*it).second) );
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   434
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   435
          int nPRB = rbgSize * rbgPerFlow;
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   436
          newDci.m_tbsSize.push_back ( (LteAmc::GetTbSizeFromMcs (newDci.m_mcs.at (i), nPRB) / 8) ); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   437
          newDci.m_ndi.push_back (1); // TBD (new data indicator)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   438
          newDci.m_rv.push_back (0); // TBD (redundancy version)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   439
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   440
          rlcPduSize += newDci.m_tbsSize.at (i);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   441
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   442
      newEl.m_dci = newDci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   443
      // ...more parameters -> ingored in this version
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   444
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   445
      RlcPduListElement_s newRlcEl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   446
      newRlcEl.m_logicalChannelIdentity = (*it).m_logicalChannelIdentity;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   447
      // NS_LOG_DEBUG (this << "LCID " << (uint32_t) newRlcEl.m_logicalChannelIdentity);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   448
      newRlcEl.m_size = rlcPduSize; // TBD (max length of RLC-PDU in bytes)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   449
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   450
      std::vector <struct RlcPduListElement_s> newRlcPduLe;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   451
      newRlcPduLe.push_back (newRlcEl);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   452
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   453
      newEl.m_rlcPduList.push_back (newRlcPduLe);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   454
      ret.m_buildDataList.push_back (newEl);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   455
      if (rbgAllocated == rbgNum)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   456
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   457
          break;                       // no more RGB to be allocated
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   458
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   459
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   460
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   461
  ret.m_nrOfPdcchOfdmSymbols = 1;   // TODO: check correct value according the DCIs txed
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   462
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   463
  m_schedSapUser->SchedDlConfigInd (ret);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   464
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   465
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   466
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   467
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   468
RrFfMacScheduler::DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   469
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   470
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   471
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   472
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   473
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   474
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   475
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   476
RrFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   477
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   478
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   479
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   480
  std::map <uint16_t,uint8_t>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   481
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   482
  for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   483
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   484
      if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::P10 )
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   485
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   486
          // wideband CQI reporting
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   487
          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   488
          it = m_p10CqiRxed.find (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   489
          if (it == m_p10CqiRxed.end ())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   490
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   491
              // create the new entry
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   492
              m_p10CqiRxed.insert ( std::pair<uint16_t, uint8_t > (rnti, params.m_cqiList.at (i).m_wbCqi.at (0)) ); // only codeword 0 at this stage (SISO)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   493
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   494
          else
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   495
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   496
              // update the CQI value
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   497
              (*it).second = params.m_cqiList.at (i).m_wbCqi.at (0);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   498
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   499
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   500
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   501
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   502
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   503
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   504
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   505
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   506
RrFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   507
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   508
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   509
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   510
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   511
  std::map <uint16_t,uint8_t>::iterator it; 
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   512
  int nflows = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   513
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   514
  for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   515
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   516
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   517
      if ((*it).second > 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   518
      {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   519
        nflows++;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   520
      }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   521
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   522
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   523
  if (nflows==0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   524
  {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   525
    return ;  // no flows to be scheduled
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   526
  } 
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   527
   
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   528
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   529
  // Divide the resource equally among the active users
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   530
  int rbPerFlow = m_cschedCellConfig.m_ulBandwidth / nflows;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   531
  if (rbPerFlow == 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   532
  {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   533
    rbPerFlow = 1;                // at least 1 rbg per flow (till available resource)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   534
  }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   535
  int rbAllocated = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   536
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   537
  FfMacSchedSapUser::SchedUlConfigIndParameters ret;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   538
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   539
  for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   540
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   541
      if (rbAllocated + rbPerFlow > m_cschedCellConfig.m_ulBandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   542
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   543
          // limit to physical resources last resource assignment
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   544
          rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   545
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   546
      UlDciListElement_s uldci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   547
      uldci.m_rnti = (*it).first;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   548
      uldci.m_rbStart = rbAllocated;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   549
      uldci.m_rbLen = rbPerFlow;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   550
      rbAllocated += rbPerFlow;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   551
      uldci.m_mcs = 0; // MCS 0 -> UL-AMC TBD
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   552
      uldci.m_tbSize = (LteAmc::GetTbSizeFromMcs (uldci.m_mcs, rbPerFlow) / 8); // MCS 0 -> UL-AMC TBD
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   553
      uldci.m_ndi = 1;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   554
      uldci.m_cceIndex = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   555
      uldci.m_aggrLevel = 1;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   556
      uldci.m_ueTxAntennaSelection = 3; // antenna selection OFF
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   557
      uldci.m_hopping = false;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   558
      uldci.m_n2Dmrs = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   559
      uldci.m_tpc = 0; // no power control
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   560
      uldci.m_cqiRequest = false; // only period CQI at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   561
      uldci.m_ulIndex = 0; // TDD parameter
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   562
      uldci.m_dai = 1; // TDD parameter
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   563
      uldci.m_freqHopping = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   564
      uldci.m_pdcchPowerOffset = 0; // not used
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   565
      ret.m_dciList.push_back (uldci);      
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   566
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   567
  m_schedSapUser->SchedUlConfigInd (ret);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   568
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   569
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   570
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   571
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   572
RrFfMacScheduler::DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   573
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   574
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   575
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   576
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   577
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   578
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   579
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   580
RrFfMacScheduler::DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   581
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   582
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   583
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   584
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   585
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   586
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   587
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   588
RrFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   589
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   590
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   591
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   592
  std::map <uint16_t,uint8_t>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   593
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   594
  for (unsigned int i = 0; i < params.m_macCeList.size (); i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   595
  {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   596
    if ( params.m_macCeList.at (i).m_macCeType == MacCeListElement_s::BSR )
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   597
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   598
      // buffer status report
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   599
      uint16_t rnti = params.m_macCeList.at (i).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   600
      it = m_ceBsrRxed.find(rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   601
      if (it==m_ceBsrRxed.end())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   602
      {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   603
        // create the new entry
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   604
        uint8_t bsr = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   605
        m_ceBsrRxed.insert( std::pair<uint16_t, uint8_t > (rnti, bsr)); // only 1 buffer status is working now
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   606
      }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   607
      else
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   608
      {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   609
        // update the CQI value
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   610
        (*it).second = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   611
      }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   612
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   613
  }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   614
  
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   615
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   616
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   617
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   618
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   619
RrFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   620
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   621
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   622
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   623
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   624
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   625
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   626
}