src/lte/model/rr-ff-mac-scheduler.cc
author Nicola Baldo <nbaldo@cttc.es>
Fri, 17 Jun 2011 17:32:20 +0200
changeset 8148 09e2d03022a2
parent 8086 8a03b3d2fa43
child 8264 e3a90cfb6ac2
permissions -rw-r--r--
run check-style on src/lte/model
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     2
/*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     4
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     7
 * published by the Free Software Foundation;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     8
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    12
 * GNU General Public License for more details.
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    13
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    17
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    18
 * Author: Marco Miozzo <marco.miozzo@cttc.es>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    19
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    20
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    21
#include <ns3/log.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
#include <ns3/pointer.h>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    23
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
    24
#include "lte-amc.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    25
#include "rr-ff-mac-scheduler.h"
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    26
7906
d58de34e41d3 MAC, RRC and Scheduler created by LenaHelper
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7897
diff changeset
    27
NS_LOG_COMPONENT_DEFINE ("RrFfMacScheduler");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    28
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    31
int Type0AllocationRbg[4] = {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    32
  10,       // RGB size 1
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
  26,       // RGB size 2
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
  63,       // RGB size 3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
  110       // RGB size 4
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
};  // see table 7.1.6.1-1 of 36.213
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    38
7906
d58de34e41d3 MAC, RRC and Scheduler created by LenaHelper
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7897
diff changeset
    39
NS_OBJECT_ENSURE_REGISTERED (RrFfMacScheduler);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    42
class RrSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    45
  RrSchedulerMemberCschedSapProvider (RrFfMacScheduler* scheduler);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
  // inherited from FfMacCschedSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    53
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
private:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    55
  RrSchedulerMemberCschedSapProvider ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
  RrFfMacScheduler* m_scheduler;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    59
RrSchedulerMemberCschedSapProvider::RrSchedulerMemberCschedSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    61
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    62
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    63
RrSchedulerMemberCschedSapProvider::RrSchedulerMemberCschedSapProvider (RrFfMacScheduler* scheduler) : m_scheduler (scheduler)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    64
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    66
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    68
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    69
RrSchedulerMemberCschedSapProvider::CschedCellConfigReq (const struct CschedCellConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
  m_scheduler->DoCschedCellConfigReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    74
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    75
RrSchedulerMemberCschedSapProvider::CschedUeConfigReq (const struct CschedUeConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
  m_scheduler->DoCschedUeConfigReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    79
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    80
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    81
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    82
RrSchedulerMemberCschedSapProvider::CschedLcConfigReq (const struct CschedLcConfigReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    83
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    84
  m_scheduler->DoCschedLcConfigReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    88
RrSchedulerMemberCschedSapProvider::CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
  m_scheduler->DoCschedLcReleaseReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    93
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
    94
RrSchedulerMemberCschedSapProvider::CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    95
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
  m_scheduler->DoCschedUeReleaseReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    98
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    99
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   100
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   101
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   102
class RrSchedulerMemberSchedSapProvider : public FfMacSchedSapProvider
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   103
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   104
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   105
  RrSchedulerMemberSchedSapProvider (RrFfMacScheduler* scheduler);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   106
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   107
  // inherited from FfMacSchedSapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   108
  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   109
  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   110
  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   111
  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   112
  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   113
  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   114
  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   115
  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   116
  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   117
  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   118
  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   119
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   121
private:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   122
  RrSchedulerMemberSchedSapProvider ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   123
  RrFfMacScheduler* m_scheduler;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   124
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   125
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   126
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   127
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   128
RrSchedulerMemberSchedSapProvider::RrSchedulerMemberSchedSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   129
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   130
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   131
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   132
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   133
RrSchedulerMemberSchedSapProvider::RrSchedulerMemberSchedSapProvider (RrFfMacScheduler* scheduler)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   134
  : m_scheduler (scheduler)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   135
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   136
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   137
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   138
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   139
RrSchedulerMemberSchedSapProvider::SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   140
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   141
  m_scheduler->DoSchedDlRlcBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   142
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   143
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   144
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   145
RrSchedulerMemberSchedSapProvider::SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   146
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   147
  m_scheduler->DoSchedDlPagingBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   148
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   149
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   150
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   151
RrSchedulerMemberSchedSapProvider::SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   152
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   153
  m_scheduler->DoSchedDlMacBufferReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   154
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   155
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   156
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   157
RrSchedulerMemberSchedSapProvider::SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   158
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   159
  m_scheduler->DoSchedDlTriggerReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   160
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   161
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   162
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   163
RrSchedulerMemberSchedSapProvider::SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   164
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   165
  m_scheduler->DoSchedDlRachInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   166
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   167
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   168
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   169
RrSchedulerMemberSchedSapProvider::SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   170
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   171
  m_scheduler->DoSchedDlCqiInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   172
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   173
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   174
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   175
RrSchedulerMemberSchedSapProvider::SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   176
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   177
  m_scheduler->DoSchedUlTriggerReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   178
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   179
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   180
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   181
RrSchedulerMemberSchedSapProvider::SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   182
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   183
  m_scheduler->DoSchedUlNoiseInterferenceReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   184
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   185
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   186
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   187
RrSchedulerMemberSchedSapProvider::SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   188
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   189
  m_scheduler->DoSchedUlSrInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   190
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   191
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   192
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   193
RrSchedulerMemberSchedSapProvider::SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   194
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   195
  m_scheduler->DoSchedUlMacCtrlInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   196
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   197
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   198
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   199
RrSchedulerMemberSchedSapProvider::SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   200
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   201
  m_scheduler->DoSchedUlCqiInfoReq (params);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   202
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   203
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   204
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   205
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   206
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   207
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   208
RrFfMacScheduler::RrFfMacScheduler ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   209
  :   m_cschedSapUser (0),
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   210
    m_schedSapUser (0),
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   211
    m_schedTtiDelay (2),
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   212
    // WILD ACK: based on a m_macChTtiDelay = 1
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   213
    m_nextRntiDl (0),
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   214
    m_nextRntiUl (0)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   215
{
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   216
  m_cschedSapProvider = new RrSchedulerMemberCschedSapProvider (this);
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7887
diff changeset
   217
  m_schedSapProvider = new RrSchedulerMemberSchedSapProvider (this);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   218
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   219
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   220
RrFfMacScheduler::~RrFfMacScheduler ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   221
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   222
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   223
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   224
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   225
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   226
RrFfMacScheduler::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   227
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   228
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   229
  delete m_cschedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   230
  delete m_schedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   231
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   232
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   233
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   234
RrFfMacScheduler::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   235
{
7983
b91d5a39aabc scheduler and propagation model configurable through ConfigStore
Nicola Baldo <nbaldo@cttc.es>
parents: 7977
diff changeset
   236
  static TypeId tid = TypeId ("ns3::RrFfMacScheduler")
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   237
    .SetParent<FfMacScheduler> ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   238
    .AddConstructor<RrFfMacScheduler> ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   239
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   240
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   241
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   242
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   243
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   244
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   245
RrFfMacScheduler::SetFfMacCschedSapUser (FfMacCschedSapUser* s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   246
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   247
  m_cschedSapUser = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   248
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   249
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   250
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   251
RrFfMacScheduler::SetFfMacSchedSapUser (FfMacSchedSapUser* s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   252
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   253
  m_schedSapUser = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   254
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   255
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   256
FfMacCschedSapProvider*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   257
RrFfMacScheduler::GetFfMacCschedSapProvider ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   258
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   259
  return m_cschedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   260
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   261
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   262
FfMacSchedSapProvider*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   263
RrFfMacScheduler::GetFfMacSchedSapProvider ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   264
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   265
  return m_schedSapProvider;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   266
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   267
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   268
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   269
RrFfMacScheduler::DoCschedCellConfigReq (const struct FfMacCschedSapProvider::CschedCellConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   270
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   271
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   272
  // Read the subset of parameters used
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   273
  m_cschedCellConfig = params;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   274
  FfMacCschedSapUser::CschedUeConfigCnfParameters cnf;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   275
  cnf.m_result = SUCCESS;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   276
  m_cschedSapUser->CschedUeConfigCnf (cnf);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   277
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   278
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   279
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   280
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   281
RrFfMacScheduler::DoCschedUeConfigReq (const struct FfMacCschedSapProvider::CschedUeConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   282
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   283
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   284
  // Not used at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   285
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   286
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   287
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   288
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   289
RrFfMacScheduler::DoCschedLcConfigReq (const struct FfMacCschedSapProvider::CschedLcConfigReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   290
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   291
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   292
  // Not used at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   293
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   294
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   295
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   296
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   297
RrFfMacScheduler::DoCschedLcReleaseReq (const struct FfMacCschedSapProvider::CschedLcReleaseReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   298
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   299
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   300
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   301
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   302
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   303
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   304
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   305
RrFfMacScheduler::DoCschedUeReleaseReq (const struct FfMacCschedSapProvider::CschedUeReleaseReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   306
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   307
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   308
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   309
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   310
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   311
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   312
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   313
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   314
RrFfMacScheduler::DoSchedDlRlcBufferReq (const struct FfMacSchedSapProvider::SchedDlRlcBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   315
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   316
  NS_LOG_FUNCTION (this << params.m_rnti << (uint32_t) params.m_logicalChannelIdentity);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   317
  // API generated by RLC for updating RLC parameters on a LC (tx and retx queues)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   318
  std::vector<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
7972
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   319
  bool newLc = true;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   320
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   321
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   322
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   323
      if (((*it).m_rnti == params.m_rnti)&&((*it).m_logicalChannelIdentity == params.m_logicalChannelIdentity))
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   324
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   325
          m_rlcBufferReq.erase (it);
7972
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   326
          newLc = false;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   327
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   328
    }
7972
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   329
  // add the new parameters
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   330
  m_rlcBufferReq.insert (it, params);
7972
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   331
  // initialize statistics of the flow in case of new flows
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   332
  if (newLc == true)
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   333
    {
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   334
      m_p10CqiRxed.insert ( std::pair<uint16_t, uint8_t > (params.m_rnti, 1)); // only codeword 0 at this stage (SISO)
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   335
      // initialized to 1 (i.e., the lowest value for transmitting a signal)
6d24eb482e41 LENA-80 RrFfMacScheduler::DoSchedDlTriggerReq solved issue on nFlows
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7966
diff changeset
   336
    }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   337
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   338
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   339
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   340
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   341
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   342
RrFfMacScheduler::DoSchedDlPagingBufferReq (const struct FfMacSchedSapProvider::SchedDlPagingBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   343
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   344
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   345
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   346
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   347
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   348
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   349
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   350
RrFfMacScheduler::DoSchedDlMacBufferReq (const struct FfMacSchedSapProvider::SchedDlMacBufferReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   351
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   352
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   353
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   354
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   355
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   356
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   357
int
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   358
RrFfMacScheduler::GetRbgSize (int dlbandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   359
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   360
  for (int i = 0; i < 4; i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   361
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   362
      if (dlbandwidth < Type0AllocationRbg[i])
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   363
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   364
          return (i + 1);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   365
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   366
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   367
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   368
  return (-1);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   369
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   370
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   371
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   372
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   373
RrFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::SchedDlTriggerReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   374
{
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   375
  NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   376
  // API generated by RLC for triggering the scheduling of a DL subframe
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   377
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   378
  // Get the actual active flows (queue!=0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   379
  std::vector<FfMacSchedSapProvider::SchedDlRlcBufferReqParameters>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   380
  int nflows = 0;
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   381
  std::map <uint16_t,uint8_t> lcActivesPerRnti;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   382
  std::map <uint16_t,uint8_t>::iterator itLcRnti;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   383
  for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   384
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   385
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   386
      if ( ((*it).m_rlcTransmissionQueueSize > 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   387
           || ((*it).m_rlcRetransmissionQueueSize > 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   388
           || ((*it).m_rlcStatusPduSize > 0) )
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   389
        {
7966
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   390
          std::map <uint16_t,uint8_t>::iterator itCqi = m_p10CqiRxed.find ((*it).m_rnti);
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   391
          if (itCqi != m_p10CqiRxed.end ())
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   392
            {
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   393
              if ((*itCqi).second != 0)
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   394
                {
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   395
                  // CQI == 0 means "out of range" (see table 7.2.3-1 of 36.213)
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   396
                  nflows++;
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   397
                  itLcRnti = lcActivesPerRnti.find ((*it).m_rnti);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   398
                  if (itLcRnti != lcActivesPerRnti.end ())
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   399
                    {
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   400
                      (*itLcRnti).second++;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   401
                    }
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   402
                  else
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   403
                    {
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   404
                      lcActivesPerRnti.insert (std::pair<uint16_t, uint8_t > ((*it).m_rnti, 1));
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   405
                    }
7966
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   406
                }
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   407
            }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   408
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   409
    }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   410
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   411
  if (nflows == 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   412
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   413
      return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   414
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   415
  // Divide the resource equally among the active users according to
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   416
  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   417
  int rbgSize = GetRbgSize (m_cschedCellConfig.m_dlBandwidth);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   418
  int rbgNum = m_cschedCellConfig.m_dlBandwidth / rbgSize;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   419
  int rbgPerFlow = rbgNum / nflows;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   420
  if (rbgPerFlow == 0)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   421
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   422
      rbgPerFlow = 1;                // at least 1 rbg per flow (till available resource)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   423
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   424
  int rbgAllocated = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   425
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   426
  FfMacSchedSapUser::SchedDlConfigIndParameters ret;
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   427
  // round robin assignment to all UE-LC registered starting from the subsequent of the one
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   428
  // served last scheduling trigger
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   429
  //NS_LOG_DEBUG (this << " next to be served " << m_nextRntiDl << " nflows " << nflows);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   430
  if (m_nextRntiDl != 0)
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   431
    {
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   432
      for (it = m_rlcBufferReq.begin (); it != m_rlcBufferReq.end (); it++)
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   433
        {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   434
          if ((*it).m_rnti == m_nextRntiDl)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   435
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   436
              break;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   437
            }
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   438
        }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   439
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   440
      if (it == m_rlcBufferReq.end ())
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   441
        {
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   442
          NS_LOG_ERROR (this << " no user found");
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   443
        }
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   444
    }
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   445
  else
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   446
    {
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   447
      it = m_rlcBufferReq.begin ();
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   448
      m_nextRntiDl = (*it).m_rnti;
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   449
    }
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   450
  do
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   451
    {
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   452
      itLcRnti = lcActivesPerRnti.find ((*it).m_rnti);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   453
      if (itLcRnti == lcActivesPerRnti.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   454
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   455
          // skip this entry
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   456
          it++;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   457
          if (it == m_rlcBufferReq.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   458
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   459
              // restart from the first
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   460
              it = m_rlcBufferReq.begin ();
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   461
            }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   462
          continue;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   463
        }
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   464
      int lcNum = (*itLcRnti).second;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   465
      // create new BuildDataListElement_s for this RNTI
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   466
      BuildDataListElement_s newEl;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   467
      newEl.m_rnti = (*it).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   468
      // create the DlDciListElement_s
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   469
      DlDciListElement_s newDci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   470
      newDci.m_rnti = (*it).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   471
      newDci.m_resAlloc = 0;
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   472
      newDci.m_rbBitmap = 0;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   473
      std::map <uint16_t,uint8_t>::iterator itCqi = m_p10CqiRxed.find (newEl.m_rnti);
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   474
      if (itCqi == m_p10CqiRxed.end ())
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   475
        {
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   476
          newDci.m_mcs.push_back (0); // no info on this user -> lowest MCS
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   477
        }
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   478
      else
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   479
        {
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   480
          newDci.m_mcs.push_back ( LteAmc::GetMcsFromCqi ((*itCqi).second) );
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   481
        }
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   482
      // group the LCs of this RNTI
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   483
      std::vector <struct RlcPduListElement_s> newRlcPduLe;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   484
      int totRbg = lcNum * rbgPerFlow;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   485
      int tbSize = (LteAmc::GetTbSizeFromMcs (newDci.m_mcs.at (0), totRbg * rbgSize) / 8);
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   486
//       NS_LOG_DEBUG (this << "Allocate user " << newEl.m_rnti << " LCs " << (uint16_t)(*itLcRnti).second << " bytes " << tbSize << " PRBs " << totRbg * rbgSize << " mcs " << (uint16_t) newDci.m_mcs.at (0));
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   487
      uint16_t rlcPduSize = tbSize / lcNum;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   488
      for (int i = 0; i < lcNum ; i++)
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   489
        {
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   490
          RlcPduListElement_s newRlcEl;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   491
          newRlcEl.m_logicalChannelIdentity = (*it).m_logicalChannelIdentity;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   492
          //NS_LOG_DEBUG (this << "LCID " << (uint32_t) newRlcEl.m_logicalChannelIdentity << " size " << rlcPduSize);
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   493
          newRlcEl.m_size = rlcPduSize;
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   494
          newRlcPduLe.push_back (newRlcEl);
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   495
          it++;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   496
          if (it == m_rlcBufferReq.end ())
8020
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   497
            {
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   498
              // restart from the first
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   499
              it = m_rlcBufferReq.begin ();
fc705bc87348 Round Robin circular scheduling upgrade
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7983
diff changeset
   500
            }
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   501
        }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   502
      uint32_t rbgMask = 0;
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   503
      for (int i = 0; i < totRbg; i++)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   504
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   505
          rbgMask = rbgMask + (0x1 << rbgAllocated);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   506
          rbgAllocated++;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   507
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   508
      newDci.m_rbBitmap = rbgMask; // (32 bit bitmap see 7.1.6 of 36.213)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   509
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   510
      int nbOfTbsInNewDci = 1;  // SISO -> only one TB
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   511
      for (int i = 0; i < nbOfTbsInNewDci; i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   512
        {
7977
9a44dfd0056d LENA-68 RrFfMacScheduler 1 TB per RNTI
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7972
diff changeset
   513
          newDci.m_tbsSize.push_back (tbSize);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   514
          newDci.m_ndi.push_back (1); // TBD (new data indicator)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   515
          newDci.m_rv.push_back (0); // TBD (redundancy version)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   516
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   517
      newEl.m_dci = newDci;
7897
313a02778014 DL PF Scheduler
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7895
diff changeset
   518
      // ...more parameters -> ignored in this version
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   519
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   520
7953
1db2126cb7c9 PfFfMacScheduler updated for multiples rlcPdu
mmiozzo
parents: 7948
diff changeset
   521
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   522
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   523
      newEl.m_rlcPduList.push_back (newRlcPduLe);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   524
      ret.m_buildDataList.push_back (newEl);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   525
      if (rbgAllocated == rbgNum)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   526
        {
8035
d2e70680881a LenaTestPfFfMacSchedulerSuite works with distance 0
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8020
diff changeset
   527
          //NS_LOG_DEBUG (this << " FULL " << (*it).m_rnti);
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   528
          m_nextRntiDl = (*it).m_rnti; // store last RNTI served
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   529
          break;                       // no more RGB to be allocated
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   530
        }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   531
    }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   532
  while ((*it).m_rnti != m_nextRntiDl);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   533
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   534
  ret.m_nrOfPdcchOfdmSymbols = 1;   // TODO: check correct value according the DCIs txed
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   535
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   536
  m_schedSapUser->SchedDlConfigInd (ret);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   537
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   538
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   539
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   540
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   541
RrFfMacScheduler::DoSchedDlRachInfoReq (const struct FfMacSchedSapProvider::SchedDlRachInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   542
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   543
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   544
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   545
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   546
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   547
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   548
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   549
RrFfMacScheduler::DoSchedDlCqiInfoReq (const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   550
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   551
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   552
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   553
  std::map <uint16_t,uint8_t>::iterator it;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   554
  for (unsigned int i = 0; i < params.m_cqiList.size (); i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   555
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   556
      if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::P10 )
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   557
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   558
          // wideband CQI reporting
7895
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   559
          std::map <uint16_t,uint8_t>::iterator it;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   560
          uint16_t rnti = params.m_cqiList.at (i).m_rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   561
          it = m_p10CqiRxed.find (rnti);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   562
          if (it == m_p10CqiRxed.end ())
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   563
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   564
              // create the new entry
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   565
              m_p10CqiRxed.insert ( std::pair<uint16_t, uint8_t > (rnti, params.m_cqiList.at (i).m_wbCqi.at (0)) ); // only codeword 0 at this stage (SISO)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   566
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   567
          else
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   568
            {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   569
              // update the CQI value
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   570
              (*it).second = params.m_cqiList.at (i).m_wbCqi.at (0);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   571
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   572
        }
7895
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   573
      else if ( params.m_cqiList.at (i).m_cqiType == CqiListElement_s::A30 )
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   574
        {
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   575
          // subband CQI reporting high layer configured 
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   576
          // Not used by RR Scheduler
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   577
        }
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   578
      else
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   579
        {
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   580
          NS_LOG_ERROR (this << " CQI type unknown");
f20bb71f9b71 Aperiodic high layer configured subband CQI (A30 type) implemented
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7888
diff changeset
   581
        }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   582
    }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   583
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   584
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   585
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   586
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   587
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   588
RrFfMacScheduler::DoSchedUlTriggerReq (const struct FfMacSchedSapProvider::SchedUlTriggerReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   589
{
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   590
  NS_LOG_FUNCTION (this << " Frame no. " << (params.m_sfnSf >> 4) << " subframe no. " << (0xF & params.m_sfnSf));
8080
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   591
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   592
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   593
  std::map <uint16_t,uint8_t>::iterator it; 
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   594
  int nflows = 0;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   595
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   596
  for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   597
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   598
      // remove old entries of this UE-LC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   599
      if ((*it).second > 0)
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   600
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   601
          nflows++;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   602
        }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   603
    }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   604
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   605
  if (nflows == 0)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   606
    {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   607
      return ; // no flows to be scheduled
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   608
    }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   609
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   610
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   611
  // Divide the resource equally among the active users starting from the subsequent one served last scheduling trigger
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   612
  int rbPerFlow = m_cschedCellConfig.m_ulBandwidth / nflows;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   613
  if (rbPerFlow == 0)
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   614
    {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   615
      rbPerFlow = 1;              // at least 1 rbg per flow (till available resource)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   616
    }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   617
  int rbAllocated = 0;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   618
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   619
  FfMacSchedSapUser::SchedUlConfigIndParameters ret;
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   620
  std::vector <uint16_t> rbgAllocationMap;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   621
  if (m_nextRntiUl != 0)
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   622
    {
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   623
      for (it = m_ceBsrRxed.begin (); it != m_ceBsrRxed.end (); it++)
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   624
        {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   625
          if ((*it).first == m_nextRntiUl)
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   626
            {
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   627
              break;
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   628
            }
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   629
        }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   630
      if (it == m_ceBsrRxed.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   631
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   632
          NS_LOG_ERROR (this << " no user found");
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   633
        }
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   634
    }
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   635
  else
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   636
    {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   637
      it = m_ceBsrRxed.begin ();
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   638
      m_nextRntiUl = (*it).first;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   639
    }
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   640
  do
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   641
    {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   642
      if (rbAllocated + rbPerFlow > m_cschedCellConfig.m_ulBandwidth)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   643
        {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   644
          // limit to physical resources last resource assignment
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   645
          rbPerFlow = m_cschedCellConfig.m_ulBandwidth - rbAllocated;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   646
        }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   647
      // store info on allocation for managing ul-cqi interpretation
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   648
      for (int i = 0; i < rbPerFlow; i++)
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   649
        {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   650
          rbgAllocationMap.push_back ((*it).first);
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   651
        }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   652
      UlDciListElement_s uldci;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   653
      uldci.m_rnti = (*it).first;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   654
      uldci.m_rbStart = rbAllocated;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   655
      uldci.m_rbLen = rbPerFlow;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   656
      rbAllocated += rbPerFlow;
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   657
      std::map <uint16_t, std::vector <double> >::iterator itCqi = m_ueCqi.find ((*it).first);
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   658
      int cqi = 0;
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   659
      if (itCqi == m_ueCqi.end ())
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   660
        {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   661
          // no cqi info about this UE
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   662
          uldci.m_mcs = 0; // MCS 0 -> UL-AMC TBD
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   663
          //NS_LOG_DEBUG (this << " UE does not have ULCQI " << (*it).first );
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   664
        }
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   665
      else
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   666
        {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   667
          // take the lowest CQI value (worst RB)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   668
          double minSinr = (*itCqi).second.at (uldci.m_rbStart);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   669
          for (uint16_t i = uldci.m_rbStart; i < uldci.m_rbStart + uldci.m_rbLen; i++)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   670
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   671
              //NS_LOG_DEBUG (this << " UE " << (*it).first << " has CQI " << (*itCqi).second.at(i));
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   672
              if ((*itCqi).second.at (i) < minSinr)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   673
                {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   674
                  minSinr = (*itCqi).second.at (i);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   675
                }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   676
            }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   677
          // translate SINR -> cqi: WILD ACK: same as DL
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   678
          double s = log2 ( 1 + (
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   679
                              pow (10, minSinr / 10 )  /
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   680
                              ( (-log (5.0 * 0.00005 )) / 1.5) ));
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   681
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   682
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   683
          cqi = LteAmc::GetCqiFromSpectralEfficiency (s);
7966
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   684
          if (cqi == 0)
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   685
            {
8080
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   686
              it++;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   687
              if (it == m_ceBsrRxed.end ())
8080
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   688
                {
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   689
                  // restart from the first
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   690
                  it = m_ceBsrRxed.begin ();
62d2fccef672 Refinements to RR and PF uplink scheduling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8077
diff changeset
   691
                }
7966
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   692
              continue; // CQI == 0 means "out of range" (see table 7.2.3-1 of 36.213)
c2cfb1a64d66 LENA-72 CQI=0 behaviour
Marco Miozzo <marco.miozzo@cttc.es>
parents: 7953
diff changeset
   693
            }
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   694
          uldci.m_mcs = LteAmc::GetMcsFromCqi (cqi);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   695
          //NS_LOG_DEBUG (this << " UE " <<  (*it).first << " minsinr " << minSinr << " -> mcs " << (uint16_t)uldci.m_mcs);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   696
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   697
        }
7887
78911c978517 renamed several LTE files and classes
CTTC
parents: 7886
diff changeset
   698
      uldci.m_tbSize = (LteAmc::GetTbSizeFromMcs (uldci.m_mcs, rbPerFlow) / 8); // MCS 0 -> UL-AMC TBD
8086
8a03b3d2fa43 LenaTestPfFfMacSchedulerSuite updated with uplink tests (work in progress)
mmiozzo
parents: 8084
diff changeset
   699
//       NS_LOG_DEBUG (this << " UE " << (*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);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   700
      uldci.m_ndi = 1;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   701
      uldci.m_cceIndex = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   702
      uldci.m_aggrLevel = 1;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   703
      uldci.m_ueTxAntennaSelection = 3; // antenna selection OFF
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   704
      uldci.m_hopping = false;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   705
      uldci.m_n2Dmrs = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   706
      uldci.m_tpc = 0; // no power control
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   707
      uldci.m_cqiRequest = false; // only period CQI at this stage
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   708
      uldci.m_ulIndex = 0; // TDD parameter
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   709
      uldci.m_dai = 1; // TDD parameter
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   710
      uldci.m_freqHopping = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   711
      uldci.m_pdcchPowerOffset = 0; // not used
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   712
      ret.m_dciList.push_back (uldci);
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   713
      it++;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   714
      if (it == m_ceBsrRxed.end ())
8077
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   715
        {
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   716
          // restart from the first
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   717
          it = m_ceBsrRxed.begin ();
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   718
        }
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   719
      if (rbAllocated == m_cschedCellConfig.m_ulBandwidth)
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   720
        {
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   721
          // Stop allocation: no more PRBs
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   722
          m_nextRntiUl = (*it).first;
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   723
          break;
6416d09febbf RrFfMacScheduler updated to circular allocation in uplink
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8067
diff changeset
   724
        }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   725
    }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   726
  while ((*it).first != m_nextRntiUl);
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   727
  m_allocationMaps.insert (std::pair <uint16_t, std::vector <uint16_t> > (params.m_sfnSf, rbgAllocationMap));
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   728
  m_schedSapUser->SchedUlConfigInd (ret);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   729
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   730
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   731
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   732
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   733
RrFfMacScheduler::DoSchedUlNoiseInterferenceReq (const struct FfMacSchedSapProvider::SchedUlNoiseInterferenceReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   734
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   735
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   736
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   737
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   738
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   739
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   740
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   741
RrFfMacScheduler::DoSchedUlSrInfoReq (const struct FfMacSchedSapProvider::SchedUlSrInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   742
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   743
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   744
  // TODO: Implementation of the API
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   745
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   746
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   747
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   748
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   749
RrFfMacScheduler::DoSchedUlMacCtrlInfoReq (const struct FfMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   750
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   751
  NS_LOG_FUNCTION (this);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   752
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   753
  std::map <uint16_t,uint8_t>::iterator it;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   754
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   755
  for (unsigned int i = 0; i < params.m_macCeList.size (); i++)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   756
    {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   757
      if ( params.m_macCeList.at (i).m_macCeType == MacCeListElement_s::BSR )
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   758
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   759
          // buffer status report
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   760
          uint16_t rnti = params.m_macCeList.at (i).m_rnti;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   761
          it = m_ceBsrRxed.find (rnti);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   762
          if (it == m_ceBsrRxed.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   763
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   764
              // create the new entry
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   765
              uint8_t bsr = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   766
              m_ceBsrRxed.insert ( std::pair<uint16_t, uint8_t > (rnti, bsr)); // only 1 buffer status is working now
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   767
            }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   768
          else
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   769
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   770
              // update the CQI value
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   771
              (*it).second = params.m_macCeList.at (i).m_macCeValue.m_bufferStatus.at (0);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   772
            }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   773
        }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   774
    }
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   775
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   776
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   777
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   778
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   779
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   780
RrFfMacScheduler::DoSchedUlCqiInfoReq (const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   781
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   782
  NS_LOG_FUNCTION (this);
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   783
  //NS_LOG_DEBUG (this << " RX UL CQI at " << params.m_sfnSf);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   784
  // correlate info on UL-CQIs with previous scheduling -> calculate m_sfnSf of transmission
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   785
  uint32_t frameNo = (0xFF & params.m_sfnSf) >> 4;
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   786
  uint32_t subframeNo = (0xF & params.m_sfnSf);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   787
  //NS_LOG_DEBUG (this << " sfn " << frameNo << " sbfn " << subframeNo);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   788
  if (subframeNo - m_schedTtiDelay < 0)
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   789
    {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   790
      frameNo--;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   791
    }
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   792
  subframeNo = (subframeNo - m_schedTtiDelay) % 10;
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   793
  //NS_LOG_DEBUG (this << " Actual sfn " << frameNo << " sbfn " << subframeNo);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   794
  uint16_t sfnSf = ((0xFF & frameNo) << 4) | (0xF & subframeNo);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   795
  // retrieve the allocation for this subframe
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   796
  std::map <uint16_t, std::vector <uint16_t> >::iterator itMap;
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   797
  std::map <uint16_t, std::vector <double> >::iterator itCqi;
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   798
  itMap = m_allocationMaps.find (sfnSf);
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   799
  if (itMap == m_allocationMaps.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   800
    {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   801
      NS_LOG_DEBUG (this << " Does not find info on allocation");
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   802
      return;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   803
    }
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   804
  for (uint32_t i = 0; i < (*itMap).second.size (); i++)
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   805
    {
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   806
      // convert from fixed point notation Sxxxxxxxxxxx.xxx to double
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   807
      double sinr = LteFfConverter::fpS11dot3toDouble (params.m_ulCqi.m_sinr.at (i));
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   808
      //NS_LOG_DEBUG (this << " UE " << (*itMap).second.at (i) << " SINRfp " << params.m_ulCqi.m_sinr.at (i) << " sinrdb " << sinr);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   809
      itCqi = m_ueCqi.find ((*itMap).second.at (i));
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   810
      if (itCqi == m_ueCqi.end ())
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   811
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   812
          // create a new entry
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   813
          std::vector <double> newCqi;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   814
          for (uint32_t j = 0; j < m_cschedCellConfig.m_ulBandwidth; j++)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   815
            {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   816
              if (i == j)
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   817
                {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   818
                  newCqi.push_back (sinr);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   819
                }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   820
              else
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   821
                {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   822
                  // initialize with maximum value according to the fixed point notation
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   823
                  newCqi.push_back (30.0);
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   824
                }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   825
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   826
            }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   827
          m_ueCqi.insert (std::pair <uint16_t, std::vector <double> > ((*itMap).second.at (i), newCqi));
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   828
        }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   829
      else
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   830
        {
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   831
          // update the value
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   832
          (*itCqi).second.at (i) = sinr;
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   833
        }
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   834
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8086
diff changeset
   835
    }
7948
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   836
  // remove obsolete info on allocation
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   837
  m_allocationMaps.erase (m_allocationMaps.begin (), ++itMap);
7a7b4ad007b0 UL-CQI and AMC in RrFfMacScheduler
mmiozzo
parents: 7906
diff changeset
   838
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   839
  return;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   840
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   841
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   842
}