src/lte/model/fdbet-ff-mac-scheduler.cc
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Thu, 23 May 2013 12:39:56 -0700
changeset 9808 b8ae2a7f3b0e
parent 9807 1a263c1b16c7
child 9809 290a3bb2f7c9
permissions -rw-r--r--
Use the *right* explicit value, instead of C++11 constant.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     2
/*
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     4
 *
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     8
 *
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    13
 *
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    17
 *
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    18
 * Author: Marco Miozzo <marco.miozzo@cttc.es>
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    19
 * Modification: Dizhi Zhou <dizhi.zhou@gmail.com>    // modify codes related to downlink scheduler
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    20
 */
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    21
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    22
#include <ns3/log.h>
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    23
#include <ns3/pointer.h>
9658
2b77600c9031 use #include <ns3/math.h> in updated GSoC 2012 LTE schedulers
Nicola Baldo <nbaldo@cttc.es>
parents: 9657
diff changeset
    24
#include <ns3/math.h>
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    25
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    26
#include <ns3/simulator.h>
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    27
#include <ns3/lte-amc.h>
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    28
#include <ns3/fdbet-ff-mac-scheduler.h>
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    29
#include <ns3/lte-vendor-specific-parameters.h>
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    30
#include <ns3/boolean.h>
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    31
#include <set>
9788
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
    32
#include <cfloat>
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    33
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    34
NS_LOG_COMPONENT_DEFINE ("FdBetFfMacScheduler");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    35
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    36
namespace ns3 {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    37
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    38
int FdBetType0AllocationRbg[4] = {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    39
  10,       // RGB size 1
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    40
  26,       // RGB size 2
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    41
  63,       // RGB size 3
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    42
  110       // RGB size 4
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    43
};  // see table 7.1.6.1-1 of 36.213
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    44
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    45
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    46
NS_OBJECT_ENSURE_REGISTERED (FdBetFfMacScheduler);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    47
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    48
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
    49
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    50
class FdBetSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    51
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    52
public:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    53
  FdBetSchedulerMemberCschedSapProvider (FdBetFfMacScheduler* scheduler);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    54
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    55
  // inherited from FfMacCschedSapProvider
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    56
  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    57
  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    58
  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    59
  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    60
  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    61
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    62
private:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    63
  FdBetSchedulerMemberCschedSapProvider ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    64
  FdBetFfMacScheduler* m_scheduler;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    65
};
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    66
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    67
FdBetSchedulerMemberCschedSapProvider::FdBetSchedulerMemberCschedSapProvider ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    68
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    69
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    70
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    71
FdBetSchedulerMemberCschedSapProvider::FdBetSchedulerMemberCschedSapProvider (FdBetFfMacScheduler* scheduler) : m_scheduler (scheduler)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    72
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    73
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    74
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    75
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    76
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    77
FdBetSchedulerMemberCschedSapProvider::CschedCellConfigReq (const struct CschedCellConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    78
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    79
  m_scheduler->DoCschedCellConfigReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    80
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    81
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    82
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    83
FdBetSchedulerMemberCschedSapProvider::CschedUeConfigReq (const struct CschedUeConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    84
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    85
  m_scheduler->DoCschedUeConfigReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    86
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    87
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    88
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    89
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    90
FdBetSchedulerMemberCschedSapProvider::CschedLcConfigReq (const struct CschedLcConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    91
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    92
  m_scheduler->DoCschedLcConfigReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    93
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    94
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    95
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    96
FdBetSchedulerMemberCschedSapProvider::CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    97
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    98
  m_scheduler->DoCschedLcReleaseReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
    99
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   100
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   101
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   102
FdBetSchedulerMemberCschedSapProvider::CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   103
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   104
  m_scheduler->DoCschedUeReleaseReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   105
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   106
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   107
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   108
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   109
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   110
class FdBetSchedulerMemberSchedSapProvider : public FfMacSchedSapProvider
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   111
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   112
public:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   113
  FdBetSchedulerMemberSchedSapProvider (FdBetFfMacScheduler* scheduler);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   114
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   115
  // inherited from FfMacSchedSapProvider
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   116
  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   117
  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   118
  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   119
  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   120
  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   121
  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   122
  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   123
  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   124
  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   125
  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   126
  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   127
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   128
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   129
private:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   130
  FdBetSchedulerMemberSchedSapProvider ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   131
  FdBetFfMacScheduler* m_scheduler;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   132
};
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   133
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   134
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   135
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   136
FdBetSchedulerMemberSchedSapProvider::FdBetSchedulerMemberSchedSapProvider ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   137
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   138
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   139
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   140
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   141
FdBetSchedulerMemberSchedSapProvider::FdBetSchedulerMemberSchedSapProvider (FdBetFfMacScheduler* scheduler)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   142
  : m_scheduler (scheduler)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   143
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   144
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   145
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   146
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   147
FdBetSchedulerMemberSchedSapProvider::SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   148
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   149
  m_scheduler->DoSchedDlRlcBufferReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   150
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   151
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   152
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   153
FdBetSchedulerMemberSchedSapProvider::SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   154
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   155
  m_scheduler->DoSchedDlPagingBufferReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   156
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   157
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   158
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   159
FdBetSchedulerMemberSchedSapProvider::SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   160
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   161
  m_scheduler->DoSchedDlMacBufferReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   162
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   163
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   164
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   165
FdBetSchedulerMemberSchedSapProvider::SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   166
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   167
  m_scheduler->DoSchedDlTriggerReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   168
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   169
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   170
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   171
FdBetSchedulerMemberSchedSapProvider::SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   172
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   173
  m_scheduler->DoSchedDlRachInfoReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   174
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   175
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   176
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   177
FdBetSchedulerMemberSchedSapProvider::SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   178
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   179
  m_scheduler->DoSchedDlCqiInfoReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   180
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   181
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   182
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   183
FdBetSchedulerMemberSchedSapProvider::SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   184
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   185
  m_scheduler->DoSchedUlTriggerReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   186
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   187
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   188
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   189
FdBetSchedulerMemberSchedSapProvider::SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   190
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   191
  m_scheduler->DoSchedUlNoiseInterferenceReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   192
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   193
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   194
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   195
FdBetSchedulerMemberSchedSapProvider::SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   196
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   197
  m_scheduler->DoSchedUlSrInfoReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   198
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   199
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   200
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   201
FdBetSchedulerMemberSchedSapProvider::SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   202
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   203
  m_scheduler->DoSchedUlMacCtrlInfoReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   204
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   205
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   206
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   207
FdBetSchedulerMemberSchedSapProvider::SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   208
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   209
  m_scheduler->DoSchedUlCqiInfoReq (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   210
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   211
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   212
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   213
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   214
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   215
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   216
FdBetFfMacScheduler::FdBetFfMacScheduler ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   217
  :   m_cschedSapUser (0),
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   218
    m_schedSapUser (0),
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   219
    m_timeWindow (99.0),
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   220
    m_nextRntiUl (0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   221
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   222
  m_amc = CreateObject <LteAmc> ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   223
  m_cschedSapProvider = new FdBetSchedulerMemberCschedSapProvider (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   224
  m_schedSapProvider = new FdBetSchedulerMemberSchedSapProvider (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   225
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   226
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   227
FdBetFfMacScheduler::~FdBetFfMacScheduler ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   228
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   229
  NS_LOG_FUNCTION (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   230
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   231
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   232
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   233
FdBetFfMacScheduler::DoDispose ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   234
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   235
  NS_LOG_FUNCTION (this);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   236
  m_dlHarqProcessesDciBuffer.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   237
  m_dlHarqProcessesTimer.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   238
  m_dlHarqProcessesRlcPduListBuffer.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   239
  m_dlInfoListBuffered.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   240
  m_ulHarqCurrentProcessId.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   241
  m_ulHarqProcessesStatus.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   242
  m_ulHarqProcessesDciBuffer.clear ();
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   243
  delete m_cschedSapProvider;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   244
  delete m_schedSapProvider;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   245
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   246
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   247
TypeId
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   248
FdBetFfMacScheduler::GetTypeId (void)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   249
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   250
  static TypeId tid = TypeId ("ns3::FdBetFfMacScheduler")
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   251
    .SetParent<FfMacScheduler> ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   252
    .AddConstructor<FdBetFfMacScheduler> ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   253
    .AddAttribute ("CqiTimerThreshold",
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   254
                   "The number of TTIs a CQI is valid (default 1000 - 1 sec.)",
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   255
                   UintegerValue (1000),
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   256
                   MakeUintegerAccessor (&FdBetFfMacScheduler::m_cqiTimersThreshold),
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   257
                   MakeUintegerChecker<uint32_t> ())
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   258
    .AddAttribute ("HarqEnabled",
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   259
                   "Activate/Deactivate the HARQ [by default is active].",
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   260
                   BooleanValue (true),
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   261
                   MakeBooleanAccessor (&FdBetFfMacScheduler::m_harqOn),
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   262
                   MakeBooleanChecker ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   263
    .AddAttribute ("UlGrantMcs",
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   264
                   "The MCS of the UL grant, must be [0..15] (default 0)",
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   265
                   UintegerValue (0),
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   266
                   MakeUintegerAccessor (&FdBetFfMacScheduler::m_ulGrantMcs),
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   267
                   MakeUintegerChecker<uint8_t> ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   268
  ;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   269
  return tid;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   270
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   271
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   272
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   273
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   274
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   275
FdBetFfMacScheduler::SetFfMacCschedSapUser (FfMacCschedSapUser* s)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   276
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   277
  m_cschedSapUser = s;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   278
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   279
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   280
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   281
FdBetFfMacScheduler::SetFfMacSchedSapUser (FfMacSchedSapUser* s)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   282
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   283
  m_schedSapUser = s;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   284
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   285
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   286
FfMacCschedSapProvider*
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   287
FdBetFfMacScheduler::GetFfMacCschedSapProvider ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   288
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   289
  return m_cschedSapProvider;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   290
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   291
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   292
FfMacSchedSapProvider*
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   293
FdBetFfMacScheduler::GetFfMacSchedSapProvider ()
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   294
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   295
  return m_schedSapProvider;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   296
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   297
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   298
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   299
FdBetFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   300
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   301
  NS_LOG_FUNCTION (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   302
  // Read the subset of parameters used
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   303
  m_cschedCellConfig = params;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   304
  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   305
  FfMacCschedSapUser::CschedUeConfigCnfParameters cnf;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   306
  cnf.m_result = SUCCESS;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   307
  m_cschedSapUser->CschedUeConfigCnf (cnf);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   308
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   309
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   310
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   311
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   312
FdBetFfMacScheduler::DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   313
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   314
  NS_LOG_FUNCTION (this << " RNTI " << params.m_rnti << " txMode " << (uint16_t)params.m_transmissionMode);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   315
  std::map <uint16_t,uint8_t>::iterator it = m_uesTxMode.find (params.m_rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   316
  if (it == m_uesTxMode.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   317
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   318
      m_uesTxMode.insert (std::pair <uint16_t, double> (params.m_rnti, params.m_transmissionMode));
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   319
      // generate HARQ buffers
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   320
      m_dlHarqCurrentProcessId.insert (std::pair <uint16_t,uint8_t > (params.m_rnti, 0));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   321
      DlHarqProcessesStatus_t dlHarqPrcStatus;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   322
      dlHarqPrcStatus.resize (8,0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   323
      m_dlHarqProcessesStatus.insert (std::pair <uint16_t, DlHarqProcessesStatus_t> (params.m_rnti, dlHarqPrcStatus));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   324
      DlHarqProcessesTimer_t dlHarqProcessesTimer;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   325
      dlHarqProcessesTimer.resize (8,0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   326
      m_dlHarqProcessesTimer.insert (std::pair <uint16_t, DlHarqProcessesTimer_t> (params.m_rnti, dlHarqProcessesTimer));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   327
      DlHarqProcessesDciBuffer_t dlHarqdci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   328
      dlHarqdci.resize (8);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   329
      m_dlHarqProcessesDciBuffer.insert (std::pair <uint16_t, DlHarqProcessesDciBuffer_t> (params.m_rnti, dlHarqdci));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   330
      DlHarqRlcPduListBuffer_t dlHarqRlcPdu;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   331
      dlHarqRlcPdu.resize (2);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   332
      dlHarqRlcPdu.at (0).resize (8);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   333
      dlHarqRlcPdu.at (1).resize (8);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   334
      m_dlHarqProcessesRlcPduListBuffer.insert (std::pair <uint16_t, DlHarqRlcPduListBuffer_t> (params.m_rnti, dlHarqRlcPdu));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   335
      m_ulHarqCurrentProcessId.insert (std::pair <uint16_t,uint8_t > (params.m_rnti, 0));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   336
      UlHarqProcessesStatus_t ulHarqPrcStatus;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   337
      ulHarqPrcStatus.resize (8,0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   338
      m_ulHarqProcessesStatus.insert (std::pair <uint16_t, UlHarqProcessesStatus_t> (params.m_rnti, ulHarqPrcStatus));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   339
      UlHarqProcessesDciBuffer_t ulHarqdci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   340
      ulHarqdci.resize (8);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   341
      m_ulHarqProcessesDciBuffer.insert (std::pair <uint16_t, UlHarqProcessesDciBuffer_t> (params.m_rnti, ulHarqdci));
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   342
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   343
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   344
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   345
      (*it).second = params.m_transmissionMode;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   346
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   347
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   348
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   349
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   350
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   351
FdBetFfMacScheduler::DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   352
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   353
  NS_LOG_FUNCTION (this << " New LC, rnti: "  << params.m_rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   354
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   355
  std::map <uint16_t, fdbetsFlowPerf_t>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   356
  for (uint16_t i = 0; i < params.m_logicalChannelConfigList.size (); i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   357
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   358
      it = m_flowStatsDl.find (params.m_rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   359
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   360
      if (it == m_flowStatsDl.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   361
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   362
          fdbetsFlowPerf_t flowStatsDl;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   363
          flowStatsDl.flowStart = Simulator::Now ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   364
          flowStatsDl.totalBytesTransmitted = 0;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   365
          flowStatsDl.lastTtiBytesTrasmitted = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   366
          flowStatsDl.lastAveragedThroughput = 1;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   367
          m_flowStatsDl.insert (std::pair<uint16_t, fdbetsFlowPerf_t> (params.m_rnti, flowStatsDl));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   368
          fdbetsFlowPerf_t flowStatsUl;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   369
          flowStatsUl.flowStart = Simulator::Now ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   370
          flowStatsUl.totalBytesTransmitted = 0;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   371
          flowStatsUl.lastTtiBytesTrasmitted = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   372
          flowStatsUl.lastAveragedThroughput = 1;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   373
          m_flowStatsUl.insert (std::pair<uint16_t, fdbetsFlowPerf_t> (params.m_rnti, flowStatsUl));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   374
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   375
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   376
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   377
          NS_LOG_ERROR ("RNTI already exists");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   378
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   379
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   380
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   381
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   382
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   383
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   384
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   385
FdBetFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   386
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   387
  NS_LOG_FUNCTION (this);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   388
  for (uint16_t i = 0; i < params.m_logicalChannelIdentity.size (); i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   389
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   390
      std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   391
      std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   392
      while (it!=m_rlcBufferReq.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   393
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   394
          if (((*it).first.m_rnti == params.m_rnti) && ((*it).first.m_lcId == params.m_logicalChannelIdentity.at (i)))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   395
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   396
              temp = it;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   397
              it++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   398
              m_rlcBufferReq.erase (temp);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   399
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   400
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   401
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   402
              it++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   403
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   404
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   405
    }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   406
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   407
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   408
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   409
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   410
FdBetFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   411
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   412
  NS_LOG_FUNCTION (this);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   413
  
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   414
  m_uesTxMode.erase (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   415
  m_dlHarqCurrentProcessId.erase (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   416
  m_dlHarqProcessesStatus.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   417
  m_dlHarqProcessesTimer.erase (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   418
  m_dlHarqProcessesDciBuffer.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   419
  m_dlHarqProcessesRlcPduListBuffer.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   420
  m_ulHarqCurrentProcessId.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   421
  m_ulHarqProcessesStatus.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   422
  m_ulHarqProcessesDciBuffer.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   423
  m_flowStatsDl.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   424
  m_flowStatsUl.erase  (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   425
  m_ceBsrRxed.erase (params.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   426
  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it = m_rlcBufferReq.begin ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   427
  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator temp;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   428
  while (it!=m_rlcBufferReq.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   429
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   430
      if ((*it).first.m_rnti == params.m_rnti)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   431
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   432
          temp = it;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   433
          it++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   434
          m_rlcBufferReq.erase (temp);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   435
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   436
      else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   437
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   438
          it++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   439
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   440
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   441
  if (m_nextRntiUl == params.m_rnti)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   442
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   443
      m_nextRntiUl = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   444
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   445
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   446
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   447
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   448
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   449
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   450
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   451
FdBetFfMacScheduler::DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   452
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   453
  NS_LOG_FUNCTION (this << params.m_rnti << (uint32_t) params.m_logicalChannelIdentity);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   454
  // API generated by RLC for updating RLC parameters on a LC (tx and retx queues)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   455
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   456
  std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   457
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   458
  LteFlowId_t flow (params.m_rnti, params.m_logicalChannelIdentity);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   459
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   460
  it =  m_rlcBufferReq.find (flow);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   461
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   462
  if (it == m_rlcBufferReq.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   463
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   464
      m_rlcBufferReq.insert (std::pair <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> (flow, params));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   465
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   466
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   467
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   468
      (*it).second = params;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   469
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   470
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   471
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   472
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   473
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   474
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   475
FdBetFfMacScheduler::DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   476
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   477
  NS_LOG_FUNCTION (this);
9657
4ba3220bce18 re-applied fix for bug 1532 - unimplemented LTE Scheduler methods
Nicola Baldo <nbaldo@cttc.es>
parents: 9654
diff changeset
   478
  NS_FATAL_ERROR ("method not implemented");
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   479
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   480
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   481
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   482
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   483
FdBetFfMacScheduler::DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   484
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   485
  NS_LOG_FUNCTION (this);
9657
4ba3220bce18 re-applied fix for bug 1532 - unimplemented LTE Scheduler methods
Nicola Baldo <nbaldo@cttc.es>
parents: 9654
diff changeset
   486
  NS_FATAL_ERROR ("method not implemented");
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   487
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   488
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   489
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   490
int
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   491
FdBetFfMacScheduler::GetRbgSize (int dlbandwidth)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   492
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   493
  for (int i = 0; i < 4; i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   494
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   495
      if (dlbandwidth < FdBetType0AllocationRbg[i])
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   496
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   497
          return (i + 1);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   498
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   499
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   500
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   501
  return (-1);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   502
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   503
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   504
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   505
int
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   506
FdBetFfMacScheduler::LcActivePerFlow (uint16_t rnti)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   507
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   508
  std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   509
  int lcActive = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   510
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   511
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   512
      if (((*it).first.m_rnti == rnti) && (((*it).second.m_rlcTransmissionQueueSize > 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   513
                                           || ((*it).second.m_rlcRetransmissionQueueSize > 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   514
                                           || ((*it).second.m_rlcStatusPduSize > 0) ))
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   515
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   516
          lcActive++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   517
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   518
      if ((*it).first.m_rnti > rnti)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   519
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   520
          break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   521
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   522
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   523
  return (lcActive);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   524
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   525
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   526
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   527
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   528
uint8_t
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   529
FdBetFfMacScheduler::HarqProcessAvailability (uint16_t rnti)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   530
{
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   531
  NS_LOG_FUNCTION (this << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   532
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   533
  std::map <uint16_t, uint8_t>::iterator it = m_dlHarqCurrentProcessId.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   534
  if (it == m_dlHarqCurrentProcessId.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   535
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   536
      NS_FATAL_ERROR ("No Process Id found for this RNTI " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   537
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   538
  std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   539
  if (itStat == m_dlHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   540
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   541
      NS_FATAL_ERROR ("No Process Id Statusfound for this RNTI " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   542
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   543
  uint8_t i = (*it).second;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   544
  do
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   545
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   546
      i = (i + 1) % HARQ_PROC_NUM;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   547
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   548
  while ( ((*itStat).second.at (i) != 0)&&(i != (*it).second));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   549
  if ((*itStat).second.at (i) == 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   550
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   551
      return (true);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   552
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   553
  else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   554
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   555
      return (false); // return a not valid harq proc id
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   556
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   557
}
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   558
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   559
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   560
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   561
uint8_t
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   562
FdBetFfMacScheduler::UpdateHarqProcessId (uint16_t rnti)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   563
{
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   564
  NS_LOG_FUNCTION (this << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   565
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   566
  if (m_harqOn == false)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   567
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   568
      return (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   569
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   570
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   571
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   572
  std::map <uint16_t, uint8_t>::iterator it = m_dlHarqCurrentProcessId.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   573
  if (it == m_dlHarqCurrentProcessId.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   574
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   575
      NS_FATAL_ERROR ("No Process Id found for this RNTI " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   576
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   577
  std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   578
  if (itStat == m_dlHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   579
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   580
      NS_FATAL_ERROR ("No Process Id Statusfound for this RNTI " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   581
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   582
  uint8_t i = (*it).second;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   583
  do
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   584
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   585
      i = (i + 1) % HARQ_PROC_NUM;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   586
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   587
  while ( ((*itStat).second.at (i) != 0)&&(i != (*it).second));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   588
  if ((*itStat).second.at (i) == 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   589
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   590
      (*it).second = i;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   591
      (*itStat).second.at (i) = 1;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   592
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   593
  else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   594
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   595
      NS_FATAL_ERROR ("No HARQ process available for RNTI " << rnti << " check before update with HarqProcessAvailability");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   596
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   597
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   598
  return ((*it).second);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   599
}
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   600
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   601
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   602
void
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   603
FdBetFfMacScheduler::RefreshHarqProcesses ()
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   604
{
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   605
  NS_LOG_FUNCTION (this);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   606
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   607
  std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itTimers;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   608
  for (itTimers = m_dlHarqProcessesTimer.begin (); itTimers != m_dlHarqProcessesTimer.end (); itTimers ++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   609
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   610
      for (uint16_t i = 0; i < HARQ_PROC_NUM; i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   611
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   612
          if ((*itTimers).second.at (i) == HARQ_DL_TIMEOUT)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   613
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   614
              // reset HARQ process
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   615
              
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   616
              NS_LOG_DEBUG (this << " Reset HARQ proc " << i << " for RNTI " << (*itTimers).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   617
              std::map <uint16_t, DlHarqProcessesStatus_t>::iterator itStat = m_dlHarqProcessesStatus.find ((*itTimers).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   618
              if (itStat == m_dlHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   619
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   620
                  NS_FATAL_ERROR ("No Process Id Status found for this RNTI " << (*itTimers).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   621
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   622
              (*itStat).second.at (i) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   623
              (*itTimers).second.at (i) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   624
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   625
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   626
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   627
              (*itTimers).second.at (i)++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   628
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   629
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   630
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   631
  
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   632
}
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   633
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   634
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   635
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   636
FdBetFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   637
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   638
  NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   639
  // API generated by RLC for triggering the scheduling of a DL subframe
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   640
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   641
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   642
  // evaluate the relative channel quality indicator for each UE per each RBG
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   643
  // (since we are using allocation type 0 the small unit of allocation is RBG)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   644
  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   645
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   646
  RefreshDlCqiMaps ();
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   647
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   648
  int rbgSize = GetRbgSize (m_cschedCellConfig.m_dlBandwidth);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   649
  int rbgNum = m_cschedCellConfig.m_dlBandwidth / rbgSize;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   650
  std::map <uint16_t, std::vector <uint16_t> > allocationMap; // RBs map per RNTI
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   651
  std::vector <bool> rbgMap;  // global RBGs map
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   652
  uint16_t rbgAllocatedNum = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   653
  std::set <uint16_t> rntiAllocated;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   654
  rbgMap.resize (m_cschedCellConfig.m_dlBandwidth / rbgSize, false);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   655
  FfMacSchedSapUser::SchedDlConfigIndParameters ret;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   656
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   657
  // RACH Allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   658
  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   659
  uint16_t rbStart = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   660
  std::vector <struct RachListElement_s>::iterator itRach;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   661
  for (itRach = m_rachList.begin (); itRach != m_rachList.end (); itRach++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   662
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   663
      NS_ASSERT_MSG (m_amc->GetTbSizeFromMcs (m_ulGrantMcs, m_cschedCellConfig.m_ulBandwidth) > (*itRach).m_estimatedSize, " Default UL Grant MCS does not allow to send RACH messages");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   664
      BuildRarListElement_s newRar;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   665
      newRar.m_rnti = (*itRach).m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   666
      // DL-RACH Allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   667
      // Ideal: no needs of configuring m_dci
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   668
      // UL-RACH Allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   669
      newRar.m_grant.m_rnti = newRar.m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   670
      newRar.m_grant.m_mcs = m_ulGrantMcs;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   671
      uint16_t rbLen = 1;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   672
      uint16_t tbSizeBits = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   673
      // find lowest TB size that fits UL grant estimated size
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   674
      while ((tbSizeBits < (*itRach).m_estimatedSize) && (rbStart + rbLen < m_cschedCellConfig.m_ulBandwidth))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   675
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   676
          rbLen++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   677
          tbSizeBits = m_amc->GetTbSizeFromMcs (m_ulGrantMcs, rbLen);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   678
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   679
      if (tbSizeBits < (*itRach).m_estimatedSize)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   680
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   681
          // no more allocation space: finish allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   682
          break;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   683
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   684
      newRar.m_grant.m_rbStart = rbStart;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   685
      newRar.m_grant.m_rbLen = rbLen;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   686
      newRar.m_grant.m_tbSize = tbSizeBits / 8;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   687
      newRar.m_grant.m_hopping = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   688
      newRar.m_grant.m_tpc = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   689
      newRar.m_grant.m_cqiRequest = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   690
      newRar.m_grant.m_ulDelay = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   691
      NS_LOG_INFO (this << " UL grant allocated to RNTI " << (*itRach).m_rnti << " rbStart " << rbStart << " rbLen " << rbLen << " MCS " << m_ulGrantMcs << " tbSize " << newRar.m_grant.m_tbSize);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   692
      for (uint16_t i = rbStart; i < rbStart + rbLen; i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   693
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   694
          m_rachAllocationMap.at (i) = (*itRach).m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   695
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   696
      rbStart = rbStart + rbLen;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   697
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   698
      ret.m_buildRarList.push_back (newRar);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   699
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   700
  m_rachList.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   701
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   702
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   703
  // Process DL HARQ feedback
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   704
  RefreshHarqProcesses ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   705
  // retrieve past HARQ retx buffered
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   706
  if (m_dlInfoListBuffered.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   707
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   708
      if (params.m_dlInfoList.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   709
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   710
          NS_LOG_INFO (this << " Received DL-HARQ feedback");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   711
          m_dlInfoListBuffered.insert (m_dlInfoListBuffered.end (), params.m_dlInfoList.begin (), params.m_dlInfoList.end ());
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   712
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   713
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   714
  else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   715
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   716
      if (params.m_dlInfoList.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   717
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   718
          m_dlInfoListBuffered = params.m_dlInfoList;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   719
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   720
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   721
  if (m_harqOn == false)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   722
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   723
      // Ignore HARQ feedback
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   724
      m_dlInfoListBuffered.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   725
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   726
  std::vector <struct DlInfoListElement_s> dlInfoListUntxed;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   727
  for (uint16_t i = 0; i < m_dlInfoListBuffered.size (); i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   728
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   729
      std::set <uint16_t>::iterator itRnti = rntiAllocated.find (m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   730
      if (itRnti != rntiAllocated.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   731
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   732
          // RNTI already allocated for retx
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   733
          continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   734
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   735
      uint8_t nLayers = m_dlInfoListBuffered.at (i).m_harqStatus.size ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   736
      std::vector <bool> retx;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   737
      NS_LOG_INFO (this << " Processing DLHARQ feedback");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   738
      if (nLayers == 1)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   739
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   740
          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (0) == DlInfoListElement_s::NACK);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   741
          retx.push_back (false);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   742
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   743
      else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   744
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   745
          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (0) == DlInfoListElement_s::NACK);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   746
          retx.push_back (m_dlInfoListBuffered.at (i).m_harqStatus.at (1) == DlInfoListElement_s::NACK);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   747
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   748
      if (retx.at (0) || retx.at (1))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   749
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   750
          // retrieve HARQ process information
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   751
          uint16_t rnti = m_dlInfoListBuffered.at (i).m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   752
          uint8_t harqId = m_dlInfoListBuffered.at (i).m_harqProcessId;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   753
          NS_LOG_INFO (this << " HARQ retx RNTI " << rnti << " harqId " << (uint16_t)harqId);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   754
          std::map <uint16_t, DlHarqProcessesDciBuffer_t>::iterator itHarq = m_dlHarqProcessesDciBuffer.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   755
          if (itHarq == m_dlHarqProcessesDciBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   756
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   757
              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   758
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   759
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   760
          DlDciListElement_s dci = (*itHarq).second.at (harqId);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   761
          int rv = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   762
          if (dci.m_rv.size () == 1)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   763
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   764
              rv = dci.m_rv.at (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   765
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   766
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   767
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   768
              rv = (dci.m_rv.at (0) > dci.m_rv.at (1) ? dci.m_rv.at (0) : dci.m_rv.at (1));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   769
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   770
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   771
          if (rv == 3)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   772
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   773
              // maximum number of retx reached -> drop process
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   774
              NS_LOG_INFO ("Maximum number of retransmissions reached -> drop process");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   775
              std::map <uint16_t, DlHarqProcessesStatus_t>::iterator it = m_dlHarqProcessesStatus.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   776
              if (it == m_dlHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   777
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   778
                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   779
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   780
              (*it).second.at (harqId) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   781
              std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   782
              if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   783
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   784
                  NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   785
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   786
              for (uint16_t k = 0; k < (*itRlcPdu).second.size (); k++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   787
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   788
                  (*itRlcPdu).second.at (k).at (harqId).clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   789
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   790
              continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   791
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   792
          // check the feasibility of retransmitting on the same RBGs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   793
          // translate the DCI to Spectrum framework
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   794
          std::vector <int> dciRbg;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   795
          uint32_t mask = 0x1;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   796
          NS_LOG_INFO ("Original RBGs " << dci.m_rbBitmap << " rnti " << dci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   797
          for (int j = 0; j < 32; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   798
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   799
              if (((dci.m_rbBitmap & mask) >> j) == 1)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   800
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   801
                  dciRbg.push_back (j);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   802
                  NS_LOG_INFO ("\t" << j);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   803
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   804
              mask = (mask << 1);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   805
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   806
          bool free = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   807
          for (uint8_t j = 0; j < dciRbg.size (); j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   808
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   809
              if (rbgMap.at (dciRbg.at (j)) == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   810
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   811
                  free = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   812
                  break;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   813
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   814
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   815
          if (free)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   816
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   817
              // use the same RBGs for the retx
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   818
              // reserve RBGs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   819
              for (uint8_t j = 0; j < dciRbg.size (); j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   820
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   821
                  rbgMap.at (dciRbg.at (j)) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   822
                  NS_LOG_INFO ("RBG " << dciRbg.at (j) << " assigned");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   823
                  rbgAllocatedNum++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   824
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   825
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   826
              NS_LOG_INFO (this << " Send retx in the same RBGs");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   827
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   828
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   829
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   830
              // find RBGs for sending HARQ retx
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   831
              uint8_t j = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   832
              uint8_t rbgId = (dciRbg.at (dciRbg.size () - 1) + 1) % rbgNum;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   833
              uint8_t startRbg = dciRbg.at (dciRbg.size () - 1);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   834
              std::vector <bool> rbgMapCopy = rbgMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   835
              while ((j < dciRbg.size ())&&(startRbg != rbgId))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   836
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   837
                  if (rbgMapCopy.at (rbgId) == false)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   838
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   839
                      rbgMapCopy.at (rbgId) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   840
                      dciRbg.at (j) = rbgId;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   841
                      j++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   842
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   843
                  rbgId++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   844
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   845
              if (j == dciRbg.size ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   846
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   847
                  // find new RBGs -> update DCI map
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   848
                  uint32_t rbgMask = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   849
                  for (uint16_t k = 0; k < dciRbg.size (); k++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   850
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   851
                      rbgMask = rbgMask + (0x1 << dciRbg.at (k));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   852
                      rbgAllocatedNum++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   853
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   854
                  dci.m_rbBitmap = rbgMask;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   855
                  rbgMap = rbgMapCopy;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   856
                  NS_LOG_INFO (this << " Move retx in RBGs " << dciRbg.size ());
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   857
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   858
              else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   859
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   860
                  // HARQ retx cannot be performed on this TTI -> store it
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   861
                  dlInfoListUntxed.push_back (params.m_dlInfoList.at (i));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   862
                  NS_LOG_INFO (this << " No resource for this retx -> buffer it");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   863
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   864
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   865
          // retrieve RLC PDU list for retx TBsize and update DCI
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   866
          BuildDataListElement_s newEl;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   867
          std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   868
          if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   869
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   870
              NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   871
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   872
          for (uint8_t j = 0; j < nLayers; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   873
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   874
              if (retx.at (j))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   875
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   876
                  if (j >= dci.m_ndi.size ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   877
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   878
                      // for avoiding errors in MIMO transient phases
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   879
                      dci.m_ndi.push_back (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   880
                      dci.m_rv.push_back (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   881
                      dci.m_mcs.push_back (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   882
                      dci.m_tbsSize.push_back (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   883
                      NS_LOG_INFO (this << " layer " << (uint16_t)j << " no txed (MIMO transition)");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   884
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   885
                  else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   886
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   887
                      dci.m_ndi.at (j) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   888
                      dci.m_rv.at (j)++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   889
                      (*itHarq).second.at (harqId).m_rv.at (j)++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   890
                      NS_LOG_INFO (this << " layer " << (uint16_t)j << " RV " << (uint16_t)dci.m_rv.at (j));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   891
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   892
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   893
              else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   894
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   895
                  // empty TB of layer j
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   896
                  dci.m_ndi.at (j) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   897
                  dci.m_rv.at (j) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   898
                  dci.m_mcs.at (j) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   899
                  dci.m_tbsSize.at (j) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   900
                  NS_LOG_INFO (this << " layer " << (uint16_t)j << " no retx");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   901
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   902
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   903
          for (uint16_t k = 0; k < (*itRlcPdu).second.at (0).at (dci.m_harqProcess).size (); k++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   904
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   905
              std::vector <struct RlcPduListElement_s> rlcPduListPerLc;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   906
              for (uint8_t j = 0; j < nLayers; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   907
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   908
                  if (retx.at (j))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   909
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   910
                      if (j < dci.m_ndi.size ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   911
                        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   912
                          rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   913
                        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   914
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   915
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   916
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   917
              if (rlcPduListPerLc.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   918
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   919
                  newEl.m_rlcPduList.push_back (rlcPduListPerLc);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   920
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   921
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   922
          newEl.m_rnti = rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   923
          newEl.m_dci = dci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   924
          (*itHarq).second.at (harqId).m_rv = dci.m_rv;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   925
          // refresh timer
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   926
          std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itHarqTimer = m_dlHarqProcessesTimer.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   927
          if (itHarqTimer== m_dlHarqProcessesTimer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   928
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   929
              NS_FATAL_ERROR ("Unable to find HARQ timer for RNTI " << (uint16_t)rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   930
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   931
          (*itHarqTimer).second.at (harqId) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   932
          ret.m_buildDataList.push_back (newEl);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   933
          rntiAllocated.insert (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   934
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   935
      else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   936
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   937
          // update HARQ process status
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   938
          NS_LOG_INFO (this << " HARQ received ACK for UE " << m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   939
          std::map <uint16_t, DlHarqProcessesStatus_t>::iterator it = m_dlHarqProcessesStatus.find (m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   940
          if (it == m_dlHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   941
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   942
              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   943
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   944
          (*it).second.at (m_dlInfoListBuffered.at (i).m_harqProcessId) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   945
          std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find (m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   946
          if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   947
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   948
              NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << m_dlInfoListBuffered.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   949
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   950
          for (uint16_t k = 0; k < (*itRlcPdu).second.size (); k++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   951
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   952
              (*itRlcPdu).second.at (k).at (m_dlInfoListBuffered.at (i).m_harqProcessId).clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   953
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   954
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   955
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   956
  m_dlInfoListBuffered.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   957
  m_dlInfoListBuffered = dlInfoListUntxed;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   958
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   959
  std::map <uint16_t, fdbetsFlowPerf_t>::iterator itFlow;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   960
  std::map <uint16_t, double> estAveThr;                                // store expected average throughput for UE
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   961
  std::map <uint16_t, double>::iterator itMax = estAveThr.end ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   962
  std::map <uint16_t, double>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   963
  std::map <uint16_t, int> rbgPerRntiLog;                               // record the number of RBG assigned to UE
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   964
  double metricMax = 0.0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   965
  for (itFlow = m_flowStatsDl.begin (); itFlow != m_flowStatsDl.end (); itFlow++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   966
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   967
      std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*itFlow).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   968
      if ((itRnti != rntiAllocated.end ())||(!HarqProcessAvailability ((*itFlow).first)))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   969
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   970
          // UE already allocated for HARQ or without HARQ process available -> drop it
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   971
          if (itRnti != rntiAllocated.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   972
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   973
              NS_LOG_DEBUG (this << " RNTI discared for HARQ tx" << (uint16_t)(*itFlow).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   974
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   975
          if (!HarqProcessAvailability ((*itFlow).first))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   976
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   977
              NS_LOG_DEBUG (this << " RNTI discared for HARQ id" << (uint16_t)(*itFlow).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   978
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   979
          continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   980
       }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   981
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   982
      estAveThr.insert (std::pair <uint16_t, double> ((*itFlow).first, (*itFlow).second.lastAveragedThroughput));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   983
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   984
 
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   985
  if (estAveThr.size () != 0)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   986
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   987
      // Find UE with largest priority metric
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   988
      for (it = estAveThr.begin (); it != estAveThr.end (); it++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   989
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   990
          double metric =  1 / (*it).second;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   991
          if (metric > metricMax)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   992
            {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   993
              metricMax = metric;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   994
              itMax = it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
   995
            }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   996
          rbgPerRntiLog.insert (std::pair<uint16_t, int> ((*it).first, 1));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   997
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   998
      
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
   999
    
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1000
      // The scheduler tries the best to achieve the equal throughput among all UEs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1001
      int i = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1002
      do 
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1003
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1004
          NS_LOG_INFO (this << " ALLOCATION for RBG " << i << " of " << rbgNum);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1005
          if (rbgMap.at (i) == false)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1006
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1007
              // allocate one RBG to current UE
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1008
              std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1009
              std::vector <uint16_t> tempMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1010
              itMap = allocationMap.find ((*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1011
              if (itMap == allocationMap.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1012
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1013
                  tempMap.push_back (i);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1014
                  allocationMap.insert (std::pair <uint16_t, std::vector <uint16_t> > ((*itMax).first, tempMap));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1015
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1016
              else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1017
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1018
                  (*itMap).second.push_back (i);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1019
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1020
          
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1021
              // caculate expected throughput for current UE
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1022
              std::map <uint16_t,uint8_t>::iterator itCqi;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1023
              itCqi = m_p10CqiRxed.find ((*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1024
              std::map <uint16_t,uint8_t>::iterator itTxMode;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1025
              itTxMode = m_uesTxMode.find ((*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1026
              if (itTxMode == m_uesTxMode.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1027
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1028
                  NS_FATAL_ERROR ("No Transmission Mode info on user " << (*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1029
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1030
              int nLayer = TransmissionModesLayers::TxMode2LayerNum ((*itTxMode).second);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1031
              std::vector <uint8_t> mcs;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1032
              for (uint8_t j = 0; j < nLayer; j++) 
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1033
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1034
                  if (itCqi == m_p10CqiRxed.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1035
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1036
                      mcs.push_back (0); // no info on this user -> lowest MCS
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1037
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1038
                  else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1039
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1040
                      mcs.push_back (m_amc->GetMcsFromCqi ((*itCqi).second));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1041
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1042
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1043
          
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1044
              std::map <uint16_t,int>::iterator itRbgPerRntiLog;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1045
              itRbgPerRntiLog = rbgPerRntiLog.find ((*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1046
              std::map <uint16_t, fdbetsFlowPerf_t>::iterator itPastAveThr;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1047
              itPastAveThr = m_flowStatsDl.find ((*itMax).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1048
              uint32_t bytesTxed = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1049
              for (uint8_t j = 0; j < nLayer; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1050
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1051
                  int tbSize = (m_amc->GetTbSizeFromMcs (mcs.at (0), (*itRbgPerRntiLog).second * rbgSize) / 8); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1052
                  bytesTxed += tbSize;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1053
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1054
              double expectedAveThr = ((1.0 - (1.0 / m_timeWindow)) * (*itPastAveThr).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)(bytesTxed / 0.001));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1055
          
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1056
              int rbgPerRnti = (*itRbgPerRntiLog).second;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1057
              rbgPerRnti++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1058
              rbgPerRntiLog[(*itMax).first] = rbgPerRnti;   
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1059
              estAveThr[(*itMax).first] = expectedAveThr;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1060
          
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1061
              // find new UE with largest priority metric
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1062
              metricMax = 0.0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1063
              for (it = estAveThr.begin (); it != estAveThr.end (); it++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1064
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1065
                  double metric = 1 / (*it).second;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1066
                  if (metric > metricMax)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1067
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1068
                      itMax = it;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1069
                      metricMax = metric;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1070
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1071
                } // end for estAveThr
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1072
        
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1073
              rbgMap.at (i) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1074
    
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1075
          } // end for free RBGs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1076
    
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1077
          i++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1078
      
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1079
        } 
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1080
      while ( i < rbgNum ); // end for RBGs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1081
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1082
    } // end if estAveThr
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1083
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1084
  // reset TTI stats of users
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1085
  std::map <uint16_t, fdbetsFlowPerf_t>::iterator itStats;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1086
  for (itStats = m_flowStatsDl.begin (); itStats != m_flowStatsDl.end (); itStats++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1087
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1088
      (*itStats).second.lastTtiBytesTrasmitted = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1089
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1090
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1091
  // generate the transmission opportunities by grouping the RBGs of the same RNTI and
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1092
  // creating the correspondent DCIs
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1093
  std::map <uint16_t, std::vector <uint16_t> >::iterator itMap = allocationMap.begin ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1094
  while (itMap != allocationMap.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1095
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1096
      // create new BuildDataListElement_s for this LC
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1097
      BuildDataListElement_s newEl;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1098
      newEl.m_rnti = (*itMap).first;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1099
      // create the DlDciListElement_s
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1100
      DlDciListElement_s newDci;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1101
      newDci.m_rnti = (*itMap).first;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1102
      newDci.m_harqProcess = UpdateHarqProcessId ((*itMap).first);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1103
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1104
      uint16_t lcActives = LcActivePerFlow ((*itMap).first);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1105
      NS_LOG_INFO (this << "Allocate user " << newEl.m_rnti << " rbg " << lcActives);
9788
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
  1106
      if (lcActives == 0)
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
  1107
        {
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
  1108
          // Set to max value, to avoid divide by 0 below
9808
b8ae2a7f3b0e Use the *right* explicit value, instead of C++11 constant.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9807
diff changeset
  1109
          lcActives = 65535; // UINT16_MAX;
9788
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
  1110
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1111
      uint16_t RgbPerRnti = (*itMap).second.size ();
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1112
      std::map <uint16_t,uint8_t>::iterator itCqi;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1113
      itCqi = m_p10CqiRxed.find ((*itMap).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1114
      std::map <uint16_t,uint8_t>::iterator itTxMode;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1115
      itTxMode = m_uesTxMode.find ((*itMap).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1116
      if (itTxMode == m_uesTxMode.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1117
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1118
          NS_FATAL_ERROR ("No Transmission Mode info on user " << (*itMap).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1119
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1120
      int nLayer = TransmissionModesLayers::TxMode2LayerNum ((*itTxMode).second);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1121
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1122
      uint32_t bytesTxed = 0;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1123
      for (uint8_t j = 0; j < nLayer; j++)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1124
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1125
          if (itCqi == m_p10CqiRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1126
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1127
              newDci.m_mcs.push_back (0); // no info on this user -> lowest MCS
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1128
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1129
          else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1130
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1131
              newDci.m_mcs.push_back ( m_amc->GetMcsFromCqi ((*itCqi).second) );
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1132
            }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1133
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1134
          int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (j), RgbPerRnti * rbgSize) / 8); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1135
          newDci.m_tbsSize.push_back (tbSize);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1136
          bytesTxed += tbSize;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1137
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1138
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1139
      newDci.m_resAlloc = 0;  // only allocation type 0 at this stage
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1140
      newDci.m_rbBitmap = 0; // TBD (32 bit bitmap see 7.1.6 of 36.213)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1141
      uint32_t rbgMask = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1142
      for (uint16_t k = 0; k < (*itMap).second.size (); k++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1143
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1144
          rbgMask = rbgMask + (0x1 << (*itMap).second.at (k));
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1145
          NS_LOG_INFO (this << " Allocated RBG " << (*itMap).second.at (k));
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1146
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1147
      newDci.m_rbBitmap = rbgMask; // (32 bit bitmap see 7.1.6 of 36.213)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1148
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1149
      // create the rlc PDUs -> equally divide resources among actives LCs
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1150
      std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator itBufReq;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1151
      for (itBufReq = m_rlcBufferReq.begin (); itBufReq != m_rlcBufferReq.end (); itBufReq++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1152
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1153
          if (((*itBufReq).first.m_rnti == (*itMap).first)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1154
              && (((*itBufReq).second.m_rlcTransmissionQueueSize > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1155
                  || ((*itBufReq).second.m_rlcRetransmissionQueueSize > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1156
                  || ((*itBufReq).second.m_rlcStatusPduSize > 0) ))
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1157
            {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1158
              std::vector <struct RlcPduListElement_s> newRlcPduLe;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1159
              for (uint8_t j = 0; j < nLayer; j++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1160
                {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1161
                  RlcPduListElement_s newRlcEl;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1162
                  newRlcEl.m_logicalChannelIdentity = (*itBufReq).first.m_lcId;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1163
                  newRlcEl.m_size = newDci.m_tbsSize.at (j) / lcActives;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1164
                  NS_LOG_INFO (this << " LCID " << (uint32_t) newRlcEl.m_logicalChannelIdentity << " size " << newRlcEl.m_size << " layer " << (uint16_t)j);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1165
                  newRlcPduLe.push_back (newRlcEl);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1166
                  UpdateDlRlcBufferInfo (newDci.m_rnti, newRlcEl.m_logicalChannelIdentity, newRlcEl.m_size);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1167
                  if (m_harqOn == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1168
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1169
                      // store RLC PDU list for HARQ
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1170
                      std::map <uint16_t, DlHarqRlcPduListBuffer_t>::iterator itRlcPdu =  m_dlHarqProcessesRlcPduListBuffer.find ((*itMap).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1171
                      if (itRlcPdu == m_dlHarqProcessesRlcPduListBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1172
                        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1173
                          NS_FATAL_ERROR ("Unable to find RlcPdcList in HARQ buffer for RNTI " << (*itMap).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1174
                        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1175
                      (*itRlcPdu).second.at (j).at (newDci.m_harqProcess).push_back (newRlcEl);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1176
                    }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1177
                }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1178
              newEl.m_rlcPduList.push_back (newRlcPduLe);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1179
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1180
          if ((*itBufReq).first.m_rnti > (*itMap).first)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1181
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1182
              break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1183
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1184
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1185
      for (uint8_t j = 0; j < nLayer; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1186
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1187
          newDci.m_ndi.push_back (1);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1188
          newDci.m_rv.push_back (0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1189
        }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1190
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1191
      newEl.m_dci = newDci;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1192
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1193
      if (m_harqOn == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1194
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1195
          // store DCI for HARQ
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1196
          std::map <uint16_t, DlHarqProcessesDciBuffer_t>::iterator itDci = m_dlHarqProcessesDciBuffer.find (newEl.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1197
          if (itDci == m_dlHarqProcessesDciBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1198
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1199
              NS_FATAL_ERROR ("Unable to find RNTI entry in DCI HARQ buffer for RNTI " << newEl.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1200
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1201
          (*itDci).second.at (newDci.m_harqProcess) = newDci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1202
          // refresh timer
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1203
          std::map <uint16_t, DlHarqProcessesTimer_t>::iterator itHarqTimer =  m_dlHarqProcessesTimer.find (newEl.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1204
          if (itHarqTimer== m_dlHarqProcessesTimer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1205
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1206
              NS_FATAL_ERROR ("Unable to find HARQ timer for RNTI " << (uint16_t)newEl.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1207
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1208
          (*itHarqTimer).second.at (newDci.m_harqProcess) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1209
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1210
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1211
      // ...more parameters -> ingored in this version
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1212
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1213
      ret.m_buildDataList.push_back (newEl);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1214
      // update UE stats
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1215
      std::map <uint16_t, fdbetsFlowPerf_t>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1216
      it = m_flowStatsDl.find ((*itMap).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1217
      if (it != m_flowStatsDl.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1218
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1219
          (*it).second.lastTtiBytesTrasmitted = bytesTxed;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1220
          NS_LOG_INFO (this << " UE total bytes txed " << (*it).second.lastTtiBytesTrasmitted);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1221
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1222
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1223
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1224
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1225
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1226
          NS_FATAL_ERROR (this << " No Stats for this allocated UE");
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1227
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1228
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1229
      itMap++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1230
    } // end while allocation
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1231
  ret.m_nrOfPdcchOfdmSymbols = 1;   // TODO: check correct value according the DCIs txed
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1232
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1233
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1234
  // update UEs stats
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1235
  NS_LOG_INFO (this << " Update UEs statistics");
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1236
  for (itStats = m_flowStatsDl.begin (); itStats != m_flowStatsDl.end (); itStats++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1237
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1238
      (*itStats).second.totalBytesTransmitted += (*itStats).second.lastTtiBytesTrasmitted;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1239
      // update average throughput (see eq. 12.3 of Sec 12.3.1.2 of LTE – The UMTS Long Term Evolution, Ed Wiley)
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1240
      (*itStats).second.lastAveragedThroughput = ((1.0 - (1.0 / m_timeWindow)) * (*itStats).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTrasmitted / 0.001));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1241
      NS_LOG_INFO (this << " UE total bytes " << (*itStats).second.totalBytesTransmitted);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1242
      NS_LOG_INFO (this << " UE average throughput " << (*itStats).second.lastAveragedThroughput);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1243
      (*itStats).second.lastTtiBytesTrasmitted = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1244
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1245
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1246
  m_schedSapUser->SchedDlConfigInd (ret);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1247
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1248
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1249
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1250
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1251
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1252
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1253
FdBetFfMacScheduler::DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1254
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1255
  NS_LOG_FUNCTION (this);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1256
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1257
  m_rachList = params.m_rachList;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1258
  
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1259
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1260
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1261
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1262
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1263
FdBetFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1264
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1265
  NS_LOG_FUNCTION (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1266
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1267
  for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1268
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1269
      if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::P10 )
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1270
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1271
          // wideband CQI reporting
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1272
          std::map <uint16_t,uint8_t>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1273
          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1274
          it = m_p10CqiRxed.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1275
          if (it == m_p10CqiRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1276
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1277
              // create the new entry
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1278
              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)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1279
              // generate correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1280
              m_p10CqiTimers.insert ( std::pair<uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1281
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1282
          else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1283
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1284
              // update the CQI value and refresh correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1285
              (*it).second = params.m_cqiList.at (i).m_wbCqi.at (0);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1286
              // update correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1287
              std::map <uint16_t,uint32_t>::iterator itTimers;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1288
              itTimers = m_p10CqiTimers.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1289
              (*itTimers).second = m_cqiTimersThreshold;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1290
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1291
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1292
      else if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::A30 )
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1293
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1294
          // subband CQI reporting high layer configured
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1295
          std::map <uint16_t,SbMeasResult_s>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1296
          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1297
          it = m_a30CqiRxed.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1298
          if (it == m_a30CqiRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1299
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1300
              // create the new entry
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1301
              m_a30CqiRxed.insert ( std::pair<uint16_t, SbMeasResult_s > (rnti, params.m_cqiList.at (i).m_sbMeasResult) );
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1302
              m_a30CqiTimers.insert ( std::pair<uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1303
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1304
          else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1305
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1306
              // update the CQI value and refresh correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1307
              (*it).second = params.m_cqiList.at (i).m_sbMeasResult;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1308
              std::map <uint16_t,uint32_t>::iterator itTimers;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1309
              itTimers = m_a30CqiTimers.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1310
              (*itTimers).second = m_cqiTimersThreshold;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1311
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1312
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1313
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1314
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1315
          NS_LOG_ERROR (this << " CQI type unknown");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1316
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1317
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1318
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1319
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1320
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1321
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1322
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1323
double
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1324
FdBetFfMacScheduler::EstimateUlSinr (uint16_t rnti, uint16_t rb)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1325
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1326
  std::map <uint16_t, std::vector <double> >::iterator itCqi = m_ueCqi.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1327
  if (itCqi == m_ueCqi.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1328
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1329
      // no cqi info about this UE
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1330
      return (NO_SINR);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1331
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1332
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1333
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1334
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1335
      // take the average SINR value among the available
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1336
      double sinrSum = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1337
      int sinrNum = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1338
      for (uint32_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1339
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1340
          double sinr = (*itCqi).second.at (i);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1341
          if (sinr != NO_SINR)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1342
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1343
              sinrSum += sinr;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1344
              sinrNum++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1345
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1346
        }
9788
a1c1c87153b5 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9658
diff changeset
  1347
      double estimatedSinr = (sinrNum > 0) ? (sinrSum / sinrNum) : DBL_MAX;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1348
      // store the value
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1349
      (*itCqi).second.at (rb) = estimatedSinr;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1350
      return (estimatedSinr);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1351
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1352
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1353
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1354
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1355
FdBetFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1356
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1357
  NS_LOG_FUNCTION (this << " UL - Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf) << " size " << params.m_ulInfoList.size ());
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1358
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1359
  RefreshUlCqiMaps ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1360
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1361
  // Generate RBs map
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1362
  FfMacSchedSapUser::SchedUlConfigIndParameters ret;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1363
  std::vector <bool> rbMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1364
  uint16_t rbAllocatedNum = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1365
  std::set <uint16_t> rntiAllocated;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1366
  std::vector <uint16_t> rbgAllocationMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1367
  // update with RACH allocation map
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1368
  rbgAllocationMap = m_rachAllocationMap;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1369
  //rbgAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1370
  m_rachAllocationMap.clear ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1371
  m_rachAllocationMap.resize (m_cschedCellConfig.m_ulBandwidth, 0);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1372
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1373
  rbMap.resize (m_cschedCellConfig.m_ulBandwidth, false);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1374
  // remove RACH allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1375
  for (uint16_t i = 0; i < m_cschedCellConfig.m_ulBandwidth; i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1376
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1377
      if (rbgAllocationMap.at (i) != 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1378
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1379
          rbMap.at (i) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1380
          NS_LOG_DEBUG (this << " Allocated for RACH " << i);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1381
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1382
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1383
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1384
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1385
  if (m_harqOn == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1386
    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1387
      //   Process UL HARQ feedback
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1388
      //   update UL HARQ proc id
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1389
      std::map <uint16_t, uint8_t>::iterator itProcId;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1390
      for (itProcId = m_ulHarqCurrentProcessId.begin (); itProcId != m_ulHarqCurrentProcessId.end (); itProcId++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1391
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1392
          (*itProcId).second = ((*itProcId).second + 1) % HARQ_PROC_NUM;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1393
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1394
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1395
      for (uint16_t i = 0; i < params.m_ulInfoList.size (); i++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1396
        {        
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1397
          if (params.m_ulInfoList.at (i).m_receptionStatus == UlInfoListElement_s::NotOk)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1398
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1399
              // retx correspondent block: retrieve the UL-DCI
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1400
              uint16_t rnti = params.m_ulInfoList.at (i).m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1401
              itProcId = m_ulHarqCurrentProcessId.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1402
              if (itProcId == m_ulHarqCurrentProcessId.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1403
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1404
                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1405
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1406
              uint8_t harqId = (uint8_t)((*itProcId).second - HARQ_PERIOD) % HARQ_PROC_NUM;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1407
              NS_LOG_INFO (this << " UL-HARQ retx RNTI " << rnti << " harqId " << (uint16_t)harqId << " i " << i << " size "  << params.m_ulInfoList.size ());
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1408
              std::map <uint16_t, UlHarqProcessesDciBuffer_t>::iterator itHarq = m_ulHarqProcessesDciBuffer.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1409
              if (itHarq == m_ulHarqProcessesDciBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1410
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1411
                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1412
                  continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1413
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1414
              UlDciListElement_s dci = (*itHarq).second.at (harqId);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1415
              std::map <uint16_t, UlHarqProcessesStatus_t>::iterator itStat = m_ulHarqProcessesStatus.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1416
              if (itStat == m_ulHarqProcessesStatus.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1417
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1418
                  NS_LOG_ERROR ("No info find in HARQ buffer for UE (might change eNB) " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1419
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1420
              if ((*itStat).second.at (harqId) >= 3)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1421
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1422
                  NS_LOG_INFO ("Max number of retransmissions reached (UL)-> drop process");
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1423
                  continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1424
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1425
              bool free = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1426
              for (int j = dci.m_rbStart; j < dci.m_rbStart + dci.m_rbLen; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1427
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1428
                  if (rbMap.at (j) == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1429
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1430
                      free = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1431
                      NS_LOG_INFO (this << " BUSY " << j);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1432
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1433
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1434
              if (free)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1435
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1436
                  // retx on the same RBs
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1437
                  for (int j = dci.m_rbStart; j < dci.m_rbStart + dci.m_rbLen; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1438
                    {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1439
                      rbMap.at (j) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1440
                      rbgAllocationMap.at (j) = dci.m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1441
                      NS_LOG_INFO ("\tRB " << j);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1442
                      rbAllocatedNum++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1443
                    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1444
                  NS_LOG_INFO (this << " Send retx in the same RBs " << (uint16_t)dci.m_rbStart << " to " << dci.m_rbStart + dci.m_rbLen << " RV " << (*itStat).second.at (harqId) + 1);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1445
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1446
              else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1447
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1448
                  NS_LOG_INFO ("Cannot allocate retx due to RACH allocations for UE " << rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1449
                  continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1450
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1451
              dci.m_ndi = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1452
              // Update HARQ buffers with new HarqId
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1453
              (*itStat).second.at ((*itProcId).second) = (*itStat).second.at (harqId) + 1;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1454
              (*itStat).second.at (harqId) = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1455
              (*itHarq).second.at ((*itProcId).second) = dci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1456
              ret.m_dciList.push_back (dci);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1457
              rntiAllocated.insert (dci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1458
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1459
            else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1460
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1461
              NS_LOG_INFO (this << " HARQ-ACK feedback from RNTI " << params.m_ulInfoList.at (i).m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1462
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1463
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1464
    }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1465
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1466
  std::map <uint16_t,uint32_t>::iterator it;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1467
  int nflows = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1468
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1469
  for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1470
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1471
      std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*it).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1472
      // select UEs with queues not empty and not yet allocated for HARQ
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1473
      if (((*it).second > 0)&&(itRnti == rntiAllocated.end ()))
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1474
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1475
          nflows++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1476
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1477
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1478
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1479
  if (nflows == 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1480
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1481
      if (ret.m_dciList.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1482
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1483
          m_schedSapUser->SchedUlConfigInd (ret);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1484
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1485
        
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1486
      return;  // no flows to be scheduled
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1487
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1488
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1489
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1490
  // Divide the remaining resources equally among the active users starting from the subsequent one served last scheduling trigger
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1491
  uint16_t rbPerFlow = (m_cschedCellConfig.m_ulBandwidth) / (nflows + rntiAllocated.size ());
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1492
  if (rbPerFlow < 3)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1493
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1494
      rbPerFlow = 3;  // at least 3 rbg per flow (till available resource) to ensure TxOpportunity >= 7 bytes
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1495
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1496
  int rbAllocated = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1497
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1498
  std::map <uint16_t, fdbetsFlowPerf_t>::iterator itStats;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1499
  if (m_nextRntiUl != 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1500
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1501
      for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1502
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1503
          if ((*it).first == m_nextRntiUl)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1504
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1505
              break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1506
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1507
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1508
      if (it == m_ceBsrRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1509
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1510
          NS_LOG_ERROR (this << " no user found");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1511
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1512
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1513
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1514
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1515
      it = m_ceBsrRxed.begin ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1516
      m_nextRntiUl = (*it).first;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1517
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1518
  do
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1519
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1520
      std::set <uint16_t>::iterator itRnti = rntiAllocated.find ((*it).first);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1521
      if ((itRnti != rntiAllocated.end ())||((*it).second == 0))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1522
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1523
          // UE already allocated for UL-HARQ -> skip it
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1524
          it++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1525
          if (it == m_ceBsrRxed.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1526
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1527
              // restart from the first
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1528
              it = m_ceBsrRxed.begin ();
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1529
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1530
          continue;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1531
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1532
      if (rbAllocated + rbPerFlow - 1 > m_cschedCellConfig.m_ulBandwidth)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1533
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1534
          // limit to physical resources last resource assignment
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1535
          rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1536
          // at least 3 rbg per flow to ensure TxOpportunity >= 7 bytes
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1537
          if (rbPerFlow < 3)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1538
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1539
              // terminate allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1540
              rbPerFlow = 0;      
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1541
            }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1542
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1543
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1544
      UlDciListElement_s uldci;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1545
      uldci.m_rnti = (*it).first;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1546
      uldci.m_rbLen = rbPerFlow;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1547
      bool allocated = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1548
      NS_LOG_INFO (this << " RB Allocated " << rbAllocated << " rbPerFlow " << rbPerFlow);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1549
      while ((!allocated)&&((rbAllocated + rbPerFlow - 1) < m_cschedCellConfig.m_ulBandwidth) && (rbPerFlow != 0))
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1550
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1551
          // check availability
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1552
          bool free = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1553
          for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1554
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1555
              if (rbMap.at (j) == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1556
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1557
                  free = false;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1558
                  break;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1559
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1560
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1561
          if (free)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1562
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1563
              uldci.m_rbStart = rbAllocated;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1564
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1565
              for (uint16_t j = rbAllocated; j < rbAllocated + rbPerFlow; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1566
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1567
                  rbMap.at (j) = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1568
                  // store info on allocation for managing ul-cqi interpretation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1569
                  rbgAllocationMap.at (j) = (*it).first;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1570
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1571
              rbAllocated += rbPerFlow;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1572
              allocated = true;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1573
              break;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1574
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1575
          rbAllocated++;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1576
          if (rbAllocated + rbPerFlow - 1 > m_cschedCellConfig.m_ulBandwidth)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1577
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1578
              // limit to physical resources last resource assignment
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1579
              rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1580
              // at least 3 rbg per flow to ensure TxOpportunity >= 7 bytes
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1581
              if (rbPerFlow < 3)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1582
                {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1583
                  // terminate allocation
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1584
                  rbPerFlow = 0;                 
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1585
                }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1586
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1587
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1588
      if (!allocated)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1589
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1590
          // unable to allocate new resource: finish scheduling
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1591
          m_nextRntiUl = (*it).first;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1592
          if (ret.m_dciList.size () > 0)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1593
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1594
              m_schedSapUser->SchedUlConfigInd (ret);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1595
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1596
          m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1597
          return;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1598
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1599
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1600
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1601
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1602
      std::map <uint16_t, std::vector <double> >::iterator itCqi = m_ueCqi.find ((*it).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1603
      int cqi = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1604
      if (itCqi == m_ueCqi.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1605
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1606
          // no cqi info about this UE
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1607
          uldci.m_mcs = 0; // MCS 0 -> UL-AMC TBD
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1608
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1609
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1610
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1611
          // take the lowest CQI value (worst RB)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1612
          double minSinr = (*itCqi).second.at (uldci.m_rbStart);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1613
          if (minSinr == NO_SINR)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1614
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1615
              minSinr = EstimateUlSinr ((*it).first, uldci.m_rbStart);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1616
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1617
          for (uint16_t i = uldci.m_rbStart; i < uldci.m_rbStart + uldci.m_rbLen; i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1618
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1619
              double sinr = (*itCqi).second.at (i);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1620
              if (sinr == NO_SINR)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1621
                {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1622
                  sinr = EstimateUlSinr ((*it).first, i);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1623
                }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1624
              if ((*itCqi).second.at (i) < minSinr)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1625
                {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1626
                  minSinr = (*itCqi).second.at (i);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1627
                }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1628
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1629
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1630
          // translate SINR -> cqi: WILD ACK: same as DL
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1631
          double s = log2 ( 1 + (
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1632
                              pow (10, minSinr / 10 )  /
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1633
                              ( (-log (5.0 * 0.00005 )) / 1.5) ));
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1634
          cqi = m_amc->GetCqiFromSpectralEfficiency (s);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1635
          if (cqi == 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1636
            {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1637
              it++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1638
              if (it == m_ceBsrRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1639
                {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1640
                  // restart from the first
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1641
                  it = m_ceBsrRxed.begin ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1642
                }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1643
              continue; // CQI == 0 means "out of range" (see table 7.2.3-1 of 36.213)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1644
            }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1645
          uldci.m_mcs = m_amc->GetMcsFromCqi (cqi);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1646
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1647
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1648
      uldci.m_tbSize = (m_amc->GetTbSizeFromMcs (uldci.m_mcs, rbPerFlow) / 8);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1649
      UpdateUlRlcBufferInfo (uldci.m_rnti, uldci.m_tbSize);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1650
      uldci.m_ndi = 1;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1651
      uldci.m_cceIndex = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1652
      uldci.m_aggrLevel = 1;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1653
      uldci.m_ueTxAntennaSelection = 3; // antenna selection OFF
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1654
      uldci.m_hopping = false;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1655
      uldci.m_n2Dmrs = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1656
      uldci.m_tpc = 0; // no power control
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1657
      uldci.m_cqiRequest = false; // only period CQI at this stage
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1658
      uldci.m_ulIndex = 0; // TDD parameter
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1659
      uldci.m_dai = 1; // TDD parameter
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1660
      uldci.m_freqHopping = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1661
      uldci.m_pdcchPowerOffset = 0; // not used
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1662
      ret.m_dciList.push_back (uldci);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1663
      // store DCI for HARQ_PERIOD
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1664
      uint8_t harqId = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1665
      if (m_harqOn == true)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1666
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1667
          std::map <uint16_t, uint8_t>::iterator itProcId;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1668
          itProcId = m_ulHarqCurrentProcessId.find (uldci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1669
          if (itProcId == m_ulHarqCurrentProcessId.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1670
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1671
              NS_FATAL_ERROR ("No info find in HARQ buffer for UE " << uldci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1672
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1673
          harqId = (*itProcId).second;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1674
          std::map <uint16_t, UlHarqProcessesDciBuffer_t>::iterator itDci = m_ulHarqProcessesDciBuffer.find (uldci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1675
          if (itDci == m_ulHarqProcessesDciBuffer.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1676
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1677
              NS_FATAL_ERROR ("Unable to find RNTI entry in UL DCI HARQ buffer for RNTI " << uldci.m_rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1678
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1679
          (*itDci).second.at (harqId) = uldci;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1680
        }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1681
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1682
      NS_LOG_INFO (this << " UE Allocation RNTI " << (*it).first << " startPRB " << (uint32_t)uldci.m_rbStart << " nPRB " << (uint32_t)uldci.m_rbLen << " CQI " << cqi << " MCS " << (uint32_t)uldci.m_mcs << " TBsize " << uldci.m_tbSize << " RbAlloc " << rbAllocated << " harqId " << (uint16_t)harqId);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1683
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1684
      // update TTI  UE stats
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1685
      itStats = m_flowStatsUl.find ((*it).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1686
      if (itStats != m_flowStatsUl.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1687
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1688
          (*itStats).second.lastTtiBytesTrasmitted =  uldci.m_tbSize;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1689
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1690
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1691
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1692
          NS_LOG_DEBUG (this << " No Stats for this allocated UE");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1693
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1694
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1695
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1696
      it++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1697
      if (it == m_ceBsrRxed.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1698
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1699
          // restart from the first
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1700
          it = m_ceBsrRxed.begin ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1701
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1702
      if ((rbAllocated == m_cschedCellConfig.m_ulBandwidth) || (rbPerFlow == 0))
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1703
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1704
          // Stop allocation: no more PRBs
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1705
          m_nextRntiUl = (*it).first;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1706
          break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1707
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1708
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1709
  while (((*it).first != m_nextRntiUl)&&(rbPerFlow!=0));
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1710
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1711
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1712
  // Update global UE stats
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1713
  // update UEs stats
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1714
  for (itStats = m_flowStatsUl.begin (); itStats != m_flowStatsUl.end (); itStats++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1715
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1716
      (*itStats).second.totalBytesTransmitted += (*itStats).second.lastTtiBytesTrasmitted;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1717
      // update average throughput (see eq. 12.3 of Sec 12.3.1.2 of LTE – The UMTS Long Term Evolution, Ed Wiley)
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1718
      (*itStats).second.lastAveragedThroughput = ((1.0 - (1.0 / m_timeWindow)) * (*itStats).second.lastAveragedThroughput) + ((1.0 / m_timeWindow) * (double)((*itStats).second.lastTtiBytesTrasmitted / 0.001));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1719
      NS_LOG_INFO (this << " UE total bytes " << (*itStats).second.totalBytesTransmitted);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1720
      NS_LOG_INFO (this << " UE average throughput " << (*itStats).second.lastAveragedThroughput);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1721
      (*itStats).second.lastTtiBytesTrasmitted = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1722
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1723
  m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1724
  m_schedSapUser->SchedUlConfigInd (ret);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1725
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1726
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1727
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1728
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1729
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1730
FdBetFfMacScheduler::DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1731
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1732
  NS_LOG_FUNCTION (this);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1733
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1734
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1735
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1736
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1737
FdBetFfMacScheduler::DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1738
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1739
  NS_LOG_FUNCTION (this);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1740
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1741
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1742
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1743
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1744
FdBetFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1745
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1746
  NS_LOG_FUNCTION (this);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1747
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1748
  std::map <uint16_t,uint32_t>::iterator it;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1749
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1750
  for (unsigned int i = 0; i < params.m_macCeList.size (); i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1751
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1752
      if ( params.m_macCeList.at (i).m_macCeType == MacCeListElement_s::BSR )
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1753
        {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1754
          // buffer status report
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1755
          // note that this scheduler does not differentiate the
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1756
          // allocation according to which LCGs have more/less bytes
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1757
          // to send.
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1758
          // Hence the BSR of different LCGs are just summed up to get
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1759
          // a total queue size that is used for allocation purposes.
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1760
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1761
          uint32_t buffer = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1762
          for (uint8_t lcg = 0; lcg < 4; ++lcg)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1763
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1764
              uint8_t bsrId = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (lcg);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1765
              buffer += BufferSizeLevelBsr::BsrId2BufferSize (bsrId);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1766
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1767
          
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1768
          uint16_t rnti = params.m_macCeList.at (i).m_rnti;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1769
          NS_LOG_LOGIC (this << "RNTI=" << rnti << " buffer=" << buffer);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1770
          it = m_ceBsrRxed.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1771
          if (it == m_ceBsrRxed.end ())
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1772
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1773
              // create the new entry
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1774
              m_ceBsrRxed.insert ( std::pair<uint16_t, uint32_t > (rnti, buffer));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1775
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1776
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1777
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1778
              // update the buffer size value
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1779
              (*it).second = buffer;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1780
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1781
        }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1782
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1783
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1784
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1785
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1786
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1787
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1788
FdBetFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1789
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1790
  NS_LOG_FUNCTION (this);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1791
// retrieve the allocation for this subframe
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1792
  switch (m_ulCqiFilter)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1793
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1794
    case FfMacScheduler::SRS_UL_CQI:
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1795
      {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1796
        // filter all the CQIs that are not SRS based
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1797
        if (params.m_ulCqi.m_type != UlCqi_s::SRS)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1798
          {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1799
            return;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1800
          }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1801
      }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1802
      break;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1803
    case FfMacScheduler::PUSCH_UL_CQI:
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1804
      {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1805
        // filter all the CQIs that are not SRS based
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1806
        if (params.m_ulCqi.m_type != UlCqi_s::PUSCH)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1807
          {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1808
            return;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1809
          }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1810
      }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1811
    case FfMacScheduler::ALL_UL_CQI:
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1812
      break;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1813
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1814
    default:
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1815
      NS_FATAL_ERROR ("Unknown UL CQI type");
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1816
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1817
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1818
  switch (params.m_ulCqi.m_type)
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1819
    {
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1820
    case UlCqi_s::PUSCH:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1821
      {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1822
        std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1823
        std::map <uint16_t, std::vector <double> >::iterator itCqi;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1824
        NS_LOG_DEBUG (this << " Collect PUSCH CQIs of Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1825
        itMap = m_allocationMaps.find (params.m_sfnSf);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1826
        if (itMap == m_allocationMaps.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1827
          {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1828
            return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1829
          }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1830
        for (uint32_t i = 0; i < (*itMap).second.size (); i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1831
          {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1832
            // convert from fixed point notation Sxxxxxxxxxxx.xxx to double
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1833
            double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (i));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1834
            itCqi = m_ueCqi.find ((*itMap).second.at (i));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1835
            if (itCqi == m_ueCqi.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1836
              {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1837
                // create a new entry
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1838
                std::vector <double> newCqi;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1839
                for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1840
                  {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1841
                    if (i == j)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1842
                      {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1843
                        newCqi.push_back (sinr);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1844
                      }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1845
                    else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1846
                      {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1847
                        // initialize with NO_SINR value.
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1848
                        newCqi.push_back (NO_SINR);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1849
                      }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1850
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1851
                  }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1852
                m_ueCqi.insert (std::pair <uint16_t, std::vector <double> > ((*itMap).second.at (i), newCqi));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1853
                // generate correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1854
                m_ueCqiTimers.insert (std::pair <uint16_t, uint32_t > ((*itMap).second.at (i), m_cqiTimersThreshold));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1855
              }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1856
            else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1857
              {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1858
                // update the value
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1859
                (*itCqi).second.at (i) = sinr;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1860
                NS_LOG_DEBUG (this << " RNTI " << (*itMap).second.at (i) << " RB " << i << " SINR " << sinr);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1861
                // update correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1862
                std::map <uint16_t, uint32_t>::iterator itTimers;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1863
                itTimers = m_ueCqiTimers.find ((*itMap).second.at (i));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1864
                (*itTimers).second = m_cqiTimersThreshold;
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1865
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1866
              }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1867
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1868
          }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1869
        // remove obsolete info on allocation
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1870
        m_allocationMaps.erase (itMap);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1871
      }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1872
      break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1873
    case UlCqi_s::SRS:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1874
      {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1875
        // get the RNTI from vendor specific parameters
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1876
        uint16_t rnti = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1877
        NS_ASSERT (params.m_vendorSpecificList.size () > 0);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1878
        for (uint16_t i = 0; i < params.m_vendorSpecificList.size (); i++)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1879
          {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1880
            if (params.m_vendorSpecificList.at (i).m_type == SRS_CQI_RNTI_VSP)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1881
              {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1882
                Ptr<SrsCqiRntiVsp> vsp = DynamicCast<SrsCqiRntiVsp> (params.m_vendorSpecificList.at (i).m_value);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1883
                rnti = vsp->GetRnti ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1884
              }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1885
          }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1886
        std::map <uint16_t, std::vector <double> >::iterator itCqi;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1887
        itCqi = m_ueCqi.find (rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1888
        if (itCqi == m_ueCqi.end ())
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1889
          {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1890
            // create a new entry
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1891
            std::vector <double> newCqi;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1892
            for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1893
              {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1894
                double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (j));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1895
                newCqi.push_back (sinr);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1896
                NS_LOG_INFO (this << " RNTI " << rnti << " new SRS-CQI for RB  " << j << " value " << sinr);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1897
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1898
              }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1899
            m_ueCqi.insert (std::pair <uint16_t, std::vector <double> > (rnti, newCqi));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1900
            // generate correspondent timer
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1901
            m_ueCqiTimers.insert (std::pair <uint16_t, uint32_t > (rnti, m_cqiTimersThreshold));
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1902
          }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1903
        else
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1904
          {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1905
            // update the values
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1906
            for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1907
              {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1908
                double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (j));
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1909
                (*itCqi).second.at (j) = sinr;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1910
                NS_LOG_INFO (this << " RNTI " << rnti << " update SRS-CQI for RB  " << j << " value " << sinr);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1911
              }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1912
            // update correspondent timer
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1913
            std::map <uint16_t, uint32_t>::iterator itTimers;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1914
            itTimers = m_ueCqiTimers.find (rnti);
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1915
            (*itTimers).second = m_cqiTimersThreshold;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1916
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1917
          }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1918
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1919
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1920
      }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1921
      break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1922
    case UlCqi_s::PUCCH_1:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1923
    case UlCqi_s::PUCCH_2:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1924
    case UlCqi_s::PRACH:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1925
      {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1926
        NS_FATAL_ERROR ("FdBetFfMacScheduler supports only PUSCH and SRS UL-CQIs");
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1927
      }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1928
      break;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1929
    default:
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1930
      NS_FATAL_ERROR ("Unknown type of UL-CQI");
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1931
    }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1932
  return;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1933
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1934
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1935
void
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1936
FdBetFfMacScheduler::RefreshDlCqiMaps (void)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1937
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1938
  // refresh DL CQI P01 Map
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1939
  std::map <uint16_t,uint32_t>::iterator itP10 = m_p10CqiTimers.begin ();
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1940
  while (itP10 != m_p10CqiTimers.end ())
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1941
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1942
      NS_LOG_INFO (this << " P10-CQI for user " << (*itP10).first << " is " << (uint32_t)(*itP10).second << " thr " << (uint32_t)m_cqiTimersThreshold);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1943
      if ((*itP10).second == 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1944
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1945
          // delete correspondent entries
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1946
          std::map <uint16_t,uint8_t>::iterator itMap = m_p10CqiRxed.find ((*itP10).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1947
          NS_ASSERT_MSG (itMap != m_p10CqiRxed.end (), " Does not find CQI report for user " << (*itP10).first);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1948
          NS_LOG_INFO (this << " P10-CQI expired for user " << (*itP10).first);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1949
          m_p10CqiRxed.erase (itMap);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1950
          std::map <uint16_t,uint32_t>::iterator temp = itP10;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1951
          itP10++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1952
          m_p10CqiTimers.erase (temp);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1953
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1954
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1955
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1956
          (*itP10).second--;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1957
          itP10++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1958
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1959
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1960
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1961
  // refresh DL CQI A30 Map
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1962
  std::map <uint16_t,uint32_t>::iterator itA30 = m_a30CqiTimers.begin ();
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1963
  while (itA30 != m_a30CqiTimers.end ())
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1964
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1965
      NS_LOG_INFO (this << " A30-CQI for user " << (*itA30).first << " is " << (uint32_t)(*itA30).second << " thr " << (uint32_t)m_cqiTimersThreshold);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1966
      if ((*itA30).second == 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1967
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1968
          // delete correspondent entries
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1969
          std::map <uint16_t,SbMeasResult_s>::iterator itMap = m_a30CqiRxed.find ((*itA30).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1970
          NS_ASSERT_MSG (itMap != m_a30CqiRxed.end (), " Does not find CQI report for user " << (*itA30).first);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1971
          NS_LOG_INFO (this << " A30-CQI expired for user " << (*itA30).first);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1972
          m_a30CqiRxed.erase (itMap);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1973
          std::map <uint16_t,uint32_t>::iterator temp = itA30;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1974
          itA30++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1975
          m_a30CqiTimers.erase (temp);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1976
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1977
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1978
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1979
          (*itA30).second--;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1980
          itA30++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1981
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1982
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1983
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1984
  return;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1985
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1986
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1987
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1988
void
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1989
FdBetFfMacScheduler::RefreshUlCqiMaps (void)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1990
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1991
  // refresh UL CQI  Map
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1992
  std::map <uint16_t,uint32_t>::iterator itUl = m_ueCqiTimers.begin ();
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1993
  while (itUl != m_ueCqiTimers.end ())
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1994
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  1995
      NS_LOG_INFO (this << " UL-CQI for user " << (*itUl).first << " is " << (uint32_t)(*itUl).second << " thr " << (uint32_t)m_cqiTimersThreshold);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1996
      if ((*itUl).second == 0)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1997
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1998
          // delete correspondent entries
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  1999
          std::map <uint16_t, std::vector <double> >::iterator itMap = m_ueCqi.find ((*itUl).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2000
          NS_ASSERT_MSG (itMap != m_ueCqi.end (), " Does not find CQI report for user " << (*itUl).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2001
          NS_LOG_INFO (this << " UL-CQI exired for user " << (*itUl).first);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2002
          (*itMap).second.clear ();
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2003
          m_ueCqi.erase (itMap);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2004
          std::map <uint16_t,uint32_t>::iterator temp = itUl;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2005
          itUl++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2006
          m_ueCqiTimers.erase (temp);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2007
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2008
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2009
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2010
          (*itUl).second--;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2011
          itUl++;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2012
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2013
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2014
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2015
  return;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2016
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2017
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2018
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2019
FdBetFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2020
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2021
  std::map<LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2022
  LteFlowId_t flow (rnti, lcid);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2023
  it = m_rlcBufferReq.find (flow);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2024
  if (it != m_rlcBufferReq.end ())
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2025
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2026
      NS_LOG_INFO (this << " UE " << rnti << " LC " << (uint16_t)lcid << " txqueue " << (*it).second.m_rlcTransmissionQueueSize << " retxqueue " << (*it).second.m_rlcRetransmissionQueueSize << " status " << (*it).second.m_rlcStatusPduSize << " decrease " << size);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2027
      // Update queues: RLC tx order Status, ReTx, Tx
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2028
      // Update status queue
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2029
      if (((*it).second.m_rlcStatusPduSize > 0) && (size >= (*it).second.m_rlcStatusPduSize))
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2030
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2031
           (*it).second.m_rlcStatusPduSize = 0;
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2032
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2033
      else if (((*it).second.m_rlcRetransmissionQueueSize > 0) && (size >= (*it).second.m_rlcRetransmissionQueueSize))
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2034
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2035
          (*it).second.m_rlcRetransmissionQueueSize = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2036
        }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2037
      else if ((*it).second.m_rlcTransmissionQueueSize > 0)
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2038
        {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2039
          // update transmission queue
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2040
          if ((*it).second.m_rlcTransmissionQueueSize <= size)
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2041
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2042
              (*it).second.m_rlcTransmissionQueueSize = 0;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2043
            }
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2044
          else
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2045
            {
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2046
              size -= 2; // remove minimun RLC overhead due to header
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2047
              (*it).second.m_rlcTransmissionQueueSize -= size;
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2048
            }
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2049
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2050
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2051
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2052
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2053
      NS_LOG_ERROR (this << " Does not find DL RLC Buffer Report of UE " << rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2054
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2055
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2056
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2057
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2058
FdBetFfMacScheduler::UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2059
{
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2060
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2061
  size = size - 2; // remove the minimum RLC overhead
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2062
  std::map <uint16_t,uint32_t>::iterator it = m_ceBsrRxed.find (rnti);
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2063
  if (it != m_ceBsrRxed.end ())
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2064
    {
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2065
      NS_LOG_INFO (this << " UE " << rnti << " size " << size << " BSR " << (*it).second);
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2066
      if ((*it).second >= size)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2067
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2068
          (*it).second -= size;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2069
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2070
      else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2071
        {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2072
          (*it).second = 0;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2073
        }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2074
    }
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2075
  else
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2076
    {
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2077
      NS_LOG_ERROR (this << " Does not find BSR report info of UE " << rnti);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2078
    }
9654
cd7eb841e50e updated GSoC 2012 schedulers to LENA M5 version
Dizhi Zhou <dizhi.zhou@gmail.com>
parents: 9152
diff changeset
  2079
9149
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2080
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2081
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2082
void
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2083
FdBetFfMacScheduler::TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode)
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2084
{
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2085
  NS_LOG_FUNCTION (this << " RNTI " << rnti << " txMode " << (uint16_t)txMode);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2086
  FfMacCschedSapUser::CschedUeConfigUpdateIndParameters params;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2087
  params.m_rnti = rnti;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2088
  params.m_transmissionMode = txMode;
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2089
  m_cschedSapUser->CschedUeConfigUpdateInd (params);
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2090
}
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2091
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2092
2580b67c83b3 GSoC 2012 NS-3 LTE MAC schedulers
Dizhi Zhou <dizhi.zhou@gmail.com>
parents:
diff changeset
  2093
}