1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ 2 /* 3 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * published by the Free Software Foundation; 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 * Author: Marco Miozzo <mmiozzo@cttc.es> 19 */ 20 21 22 23 #ifndef LTE_ENB_PHY_SAP_H 24 #define LTE_ENB_PHY_SAP_H 25 26 #include <ns3/packet.h> 27 #include <ns3/ff-mac-common.h> 28 #include <ns3/ff-mac-sched-sap.h> 29 30 namespace ns3 { 31 32 class LteControlMessage; 33 34 /** 35 * Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC 36 * 37 * This is the PHY SAP Provider, i.e., the part of the SAP that contains 38 * the PHY methods called by the MAC 39 */ 40 class LteEnbPhySapProvider 41 { 42 public: 43 virtual ~LteEnbPhySapProvider (); 44 45 /** 46 * \brief Send the MAC PDU to the channel 47 * \param p the MAC PDU to send 48 * \return true if 49 */ 50 virtual void SendMacPdu (Ptr<Packet> p) = 0; 51 52 /** 53 * \brief Send SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel 54 * \param msg the Ideal Control Message to send 55 */ 56 virtual void SendLteControlMessage (Ptr<LteControlMessage> msg) = 0; 57 58 /** 59 * \brief Get the delay from MAC to Channel expressed in TTIs 60 * \returns MAC channel TTI delay 61 */ 62 virtual uint8_t GetMacChTtiDelay () = 0; 63 64 65 }; 66 67 68 /** 69 * Service Access Point (SAP) offered by the eNB-PHY to the eNB-MAC 70 * 71 * This is the MAC SAP User, i.e., the part of the SAP that contains the MAC 72 * methods called by the PHY 73 */ 74 class LteEnbPhySapUser 75 { 76 public: 77 virtual ~LteEnbPhySapUser (); 78 79 80 /** 81 * Called by the Phy to notify the MAC of the reception of a new PHY-PDU 82 * 83 * \param p 84 */ 85 virtual void ReceivePhyPdu (Ptr<Packet> p) = 0; 86 87 /** 88 * \brief Trigger the start from a new frame (input from Phy layer) 89 * \param frameNo frame number 90 * \param subframeNo subframe number 91 */ 92 virtual void SubframeIndication (uint32_t frameNo, uint32_t subframeNo) = 0; 93 94 /** 95 * \brief Receive SendLteControlMessage (PDCCH map, CQI feedbacks) using the ideal control channel 96 * \param msg the Ideal Control Message to receive 97 */ 98 virtual void ReceiveLteControlMessage (Ptr<LteControlMessage> msg) = 0; 99 100 /** 101 * notify the reception of a RACH preamble on the PRACH 102 * 103 * \param prachId the ID of the preamble 104 */ 105 virtual void ReceiveRachPreamble (uint32_t prachId) = 0; 106 107 /** 108 * \brief Returns to MAC level the UL-CQI evaluated 109 * \param ulcqi the UL-CQI (see FF MAC API 4.3.29) 110 */ 111 virtual void UlCqiReport (FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ulcqi) = 0; 112 113 /** 114 * Notify the HARQ on the UL tranmission status 115 * 116 * \param params 117 */ 118 virtual void UlInfoListElementHarqFeeback (UlInfoListElement_s params) = 0; 119 120 121 /** 122 * Notify the HARQ on the DL tranmission status 123 * 124 * \param params 125 */ 126 virtual void DlInfoListElementHarqFeeback (DlInfoListElement_s params) = 0; 127 128 }; 129 130 131 132 } // namespace ns3 133 134 135 #endif // LTE_ENB_PHY_SAP_H 136