src/lte/model/lte-enb-phy-sap.h
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Thu, 13 Aug 2015 12:10:01 -0700
changeset 11577 0210ca11dad1
parent 9414 7b0db3dbf19b
permissions -rw-r--r--
GetDevice() should be const.
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 <mmiozzo@cttc.es>
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    19
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    20
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    21
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    23
#ifndef LTE_ENB_PHY_SAP_H
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    24
#define LTE_ENB_PHY_SAP_H
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    25
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    26
#include <ns3/packet.h>
7934
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7886
diff changeset
    27
#include <ns3/ff-mac-common.h>
9039
5bdf0c1be85f Add SRS based UL-CQI and update RR and PF schedulers for managing them
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9038
diff changeset
    28
#include <ns3/ff-mac-sched-sap.h>
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    29
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    31
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8729
diff changeset
    32
class LteControlMessage;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    33
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    34
/**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    35
 * Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    36
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    37
 * This is the PHY SAP Provider, i.e., the part of the SAP that contains
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    38
 * the PHY methods called by the MAC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    40
class LteEnbPhySapProvider
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    41
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    42
public:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    43
  virtual ~LteEnbPhySapProvider ();
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    44
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    45
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    46
   * \brief Send the MAC PDU to the channel
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    47
   * \param p the MAC PDU to send
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
   * \return true if
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    50
  virtual void SendMacPdu (Ptr<Packet> p) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
  /** 
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8729
diff changeset
    53
   * \brief Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
   * \param msg the Ideal Control Message to send
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
   */
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8729
diff changeset
    56
  virtual void SendLteControlMessage (Ptr<LteControlMessage> msg) = 0;
8729
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    57
  
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    58
  /**
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    59
  * \brief Get the delay from MAC to Channel expressed in TTIs
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    60
  *
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    61
  */
74de12409ee5 Update m_macChTtiDelay fixed to 4 in UL (standard) and make schedulers unaware of channel delays (tests updated according to new delay)
mmiozzo
parents: 8714
diff changeset
    62
  virtual uint8_t GetMacChTtiDelay () = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
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
/**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
 * Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
 * This is the MAC SAP User, i.e., the part of the SAP that contains the MAC
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
 * methods called by the PHY
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    74
class LteEnbPhySapUser
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
public:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
  virtual ~LteEnbPhySapUser ();
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
   * Called by the Phy to notify the MAC of the reception of a new PHY-PDU
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    82
   *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    83
   * \param p
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    84
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
  virtual void ReceivePhyPdu (Ptr<Packet> p) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    86
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
  /**
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
   * \brief Trigger the start from a new frame (input from Phy layer)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
   * \param frameNo frame number
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
   * \param subframeNo subframe number
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    91
   */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    92
  virtual void SubframeIndication (uint32_t frameNo, uint32_t subframeNo) = 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    93
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    94
  /**
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8729
diff changeset
    95
   * \brief Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    96
   * \param msg the Ideal Control Message to receive
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
   */
9035
e40974228d94 Update Phy Layer for managing different frames for different set of channels (data vs. ctrl and srs)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8729
diff changeset
    98
  virtual void ReceiveLteControlMessage (Ptr<LteControlMessage> msg) = 0;
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 7934
diff changeset
    99
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   100
  /** 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   101
   * notify the reception of a RACH preamble on the PRACH 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   102
   * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   103
   * \param prachId the ID of the preamble
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   104
   */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   105
  virtual void ReceiveRachPreamble (uint32_t prachId) = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   106
7934
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7886
diff changeset
   107
  /**
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7886
diff changeset
   108
   * \brief Returns to MAC level the UL-CQI evaluated
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7886
diff changeset
   109
   * \param ulcqi the UL-CQI (see FF MAC API 4.3.29)
0f09fc707a8c Convert UL-CQI from IdealControlMessage to PhySap Primitive
mmiozzo
parents: 7886
diff changeset
   110
   */
9039
5bdf0c1be85f Add SRS based UL-CQI and update RR and PF schedulers for managing them
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9038
diff changeset
   111
  virtual void UlCqiReport (FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi) = 0;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   112
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   113
  /**
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   114
   * Notify the HARQ on the UL tranmission status
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   115
   *
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   116
   * \param params
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   117
   */
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   118
  virtual void UlInfoListElementHarqFeeback (UlInfoListElement_s params) = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   119
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   120
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   121
  /**
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   122
   * Notify the HARQ on the DL tranmission status
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   123
   *
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   124
   * \param params
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   125
   */
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   126
  virtual void DlInfoListElementHarqFeeback (DlInfoListElement_s params) = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9346
diff changeset
   127
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   128
};
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
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   133
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   134
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   135
#endif // LTE_ENB_PHY_SAP_H