merge
This commit is contained in:
33
src/lte/model/lte-pdcp-sap.cc
Normal file
33
src/lte/model/lte-pdcp-sap.cc
Normal file
@@ -0,0 +1,33 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Manuel Requena <manuel.requena@cttc.es>
|
||||
*/
|
||||
|
||||
#include "ns3/lte-pdcp-sap.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
LtePdcpSapProvider::~LtePdcpSapProvider ()
|
||||
{
|
||||
}
|
||||
|
||||
LtePdcpSapUser::~LtePdcpSapUser ()
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
148
src/lte/model/lte-pdcp-sap.h
Normal file
148
src/lte/model/lte-pdcp-sap.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Manuel Requena <manuel.requena@cttc.es>
|
||||
*/
|
||||
|
||||
#ifndef LTE_PDCP_SAP_H
|
||||
#define LTE_PDCP_SAP_H
|
||||
|
||||
#include "ns3/packet.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
/**
|
||||
* Service Access Point (SAP) offered by the PDCP entity to the RRC entity
|
||||
* See 3GPP 36.323 Packet Data Convergence Protocol (PDCP) specification
|
||||
*
|
||||
* This is the PDCP SAP Provider
|
||||
* (i.e. the part of the SAP that contains the PDCP methods called by the RRC)
|
||||
*/
|
||||
class LtePdcpSapProvider
|
||||
{
|
||||
public:
|
||||
virtual ~LtePdcpSapProvider ();
|
||||
|
||||
/**
|
||||
* Parameters for LtePdcpSapProvider::TransmitRrcPdu
|
||||
*/
|
||||
struct TransmitRrcPduParameters
|
||||
{
|
||||
Ptr<Packet> rrcPdu; /**< the RRC PDU */
|
||||
uint16_t rnti; /**< the C-RNTI identifying the UE */
|
||||
uint8_t lcid; /**< the logical channel id corresponding to the sending RLC instance */
|
||||
};
|
||||
|
||||
/**
|
||||
* Send a RRC PDU to the RDCP for transmission
|
||||
* This method is to be called
|
||||
* when upper RRC entity has a RRC PDU ready to send
|
||||
*/
|
||||
virtual void TransmitRrcPdu (TransmitRrcPduParameters params) = 0;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Service Access Point (SAP) offered by the PDCP entity to the RRC entity
|
||||
* See 3GPP 36.323 Packet Data Convergence Protocol (PDCP) specification
|
||||
*
|
||||
* This is the PDCP SAP User
|
||||
* (i.e. the part of the SAP that contains the RRC methods called by the PDCP)
|
||||
*/
|
||||
class LtePdcpSapUser
|
||||
{
|
||||
public:
|
||||
virtual ~LtePdcpSapUser ();
|
||||
|
||||
/**
|
||||
* Called by the PDCP entity to notify the RRC entity of the reception of a new RRC PDU
|
||||
*
|
||||
* \param p the RRC PDU
|
||||
*/
|
||||
virtual void ReceiveRrcPdu (Ptr<Packet> p) = 0;
|
||||
};
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
template <class C>
|
||||
class LtePdcpSpecificLtePdcpSapProvider : public LtePdcpSapProvider
|
||||
{
|
||||
public:
|
||||
LtePdcpSpecificLtePdcpSapProvider (C* pdcp);
|
||||
|
||||
// Interface implemented from LtePdcpSapProvider
|
||||
virtual void TransmitRrcPdu (TransmitRrcPduParameters params);
|
||||
|
||||
private:
|
||||
LtePdcpSpecificLtePdcpSapProvider ();
|
||||
C* m_pdcp;
|
||||
};
|
||||
|
||||
template <class C>
|
||||
LtePdcpSpecificLtePdcpSapProvider<C>::LtePdcpSpecificLtePdcpSapProvider (C* pdcp)
|
||||
: m_pdcp (pdcp)
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
LtePdcpSpecificLtePdcpSapProvider<C>::LtePdcpSpecificLtePdcpSapProvider ()
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void LtePdcpSpecificLtePdcpSapProvider<C>::TransmitRrcPdu (TransmitRrcPduParameters params)
|
||||
{
|
||||
m_pdcp->DoTransmitRrcPdu (params.rrcPdu);
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
template <class C>
|
||||
class LtePdcpSpecificLtePdcpSapUser : public LtePdcpSapUser
|
||||
{
|
||||
public:
|
||||
LtePdcpSpecificLtePdcpSapUser (C* rrc);
|
||||
|
||||
// Interface implemented from LtePdcpSapUser
|
||||
virtual void ReceiveRrcPdu (Ptr<Packet> p);
|
||||
|
||||
private:
|
||||
LtePdcpSpecificLtePdcpSapUser ();
|
||||
C* m_rrc;
|
||||
};
|
||||
|
||||
template <class C>
|
||||
LtePdcpSpecificLtePdcpSapUser<C>::LtePdcpSpecificLtePdcpSapUser (C* rrc)
|
||||
: m_rrc (rrc)
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
LtePdcpSpecificLtePdcpSapUser<C>::LtePdcpSpecificLtePdcpSapUser ()
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void LtePdcpSpecificLtePdcpSapUser<C>::ReceiveRrcPdu (Ptr<Packet> p)
|
||||
{
|
||||
m_rrc->DoReceiveRrcPdu (p);
|
||||
}
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
#endif // LTE_PDCP_SAP_H
|
||||
33
src/lte/model/lte-rlc-sap.cc
Normal file
33
src/lte/model/lte-rlc-sap.cc
Normal file
@@ -0,0 +1,33 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Manuel Requena <manuel.requena@cttc.es>
|
||||
*/
|
||||
|
||||
#include "ns3/lte-rlc-sap.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
LteRlcSapProvider::~LteRlcSapProvider ()
|
||||
{
|
||||
}
|
||||
|
||||
LteRlcSapUser::~LteRlcSapUser ()
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
148
src/lte/model/lte-rlc-sap.h
Normal file
148
src/lte/model/lte-rlc-sap.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Manuel Requena <manuel.requena@cttc.es>
|
||||
*/
|
||||
|
||||
#ifndef LTE_RLC_SAP_H
|
||||
#define LTE_RLC_SAP_H
|
||||
|
||||
#include "ns3/packet.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
/**
|
||||
* Service Access Point (SAP) offered by the UM-RLC and AM-RLC entities to the PDCP entity
|
||||
* See 3GPP 36.322 Radio Link Control (RLC) protocol specification
|
||||
*
|
||||
* This is the RLC SAP Provider
|
||||
* (i.e. the part of the SAP that contains the RLC methods called by the PDCP)
|
||||
*/
|
||||
class LteRlcSapProvider
|
||||
{
|
||||
public:
|
||||
virtual ~LteRlcSapProvider ();
|
||||
|
||||
/**
|
||||
* Parameters for LteRlcSapProvider::TransmitPdcpPdu
|
||||
*/
|
||||
struct TransmitPdcpPduParameters
|
||||
{
|
||||
Ptr<Packet> pdcpPdu; /**< the PDCP PDU */
|
||||
uint16_t rnti; /**< the C-RNTI identifying the UE */
|
||||
uint8_t lcid; /**< the logical channel id corresponding to the sending RLC instance */
|
||||
};
|
||||
|
||||
/**
|
||||
* Send a PDCP PDU to the RLC for transmission
|
||||
* This method is to be called
|
||||
* when upper PDCP entity has a PDCP PDU ready to send
|
||||
*/
|
||||
virtual void TransmitPdcpPdu (TransmitPdcpPduParameters params) = 0;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Service Access Point (SAP) offered by the UM-RLC and AM-RLC entities to the PDCP entity
|
||||
* See 3GPP 36.322 Radio Link Control (RLC) protocol specification
|
||||
*
|
||||
* This is the RLC SAP User
|
||||
* (i.e. the part of the SAP that contains the PDCP methos called by the RLC)
|
||||
*/
|
||||
class LteRlcSapUser
|
||||
{
|
||||
public:
|
||||
virtual ~LteRlcSapUser ();
|
||||
|
||||
/**
|
||||
* Called by the RLC entity to notify the PDCP entity of the reception of a new PDCP PDU
|
||||
*
|
||||
* \param p the PDCP PDU
|
||||
*/
|
||||
virtual void ReceivePdcpPdu (Ptr<Packet> p) = 0;
|
||||
};
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
template <class C>
|
||||
class LteRlcSpecificLteRlcSapProvider : public LteRlcSapProvider
|
||||
{
|
||||
public:
|
||||
LteRlcSpecificLteRlcSapProvider (C* rlc);
|
||||
|
||||
// Interface implemented from LteRlcSapProvider
|
||||
virtual void TransmitPdcpPdu (TransmitPdcpPduParameters params);
|
||||
|
||||
private:
|
||||
LteRlcSpecificLteRlcSapProvider ();
|
||||
C* m_rlc;
|
||||
};
|
||||
|
||||
template <class C>
|
||||
LteRlcSpecificLteRlcSapProvider<C>::LteRlcSpecificLteRlcSapProvider (C* rlc)
|
||||
: m_rlc (rlc)
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
LteRlcSpecificLteRlcSapProvider<C>::LteRlcSpecificLteRlcSapProvider ()
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void LteRlcSpecificLteRlcSapProvider<C>::TransmitPdcpPdu (TransmitPdcpPduParameters params)
|
||||
{
|
||||
m_rlc->DoTransmitPdcpPdu (params.pdcpPdu);
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
template <class C>
|
||||
class LteRlcSpecificLteRlcSapUser : public LteRlcSapUser
|
||||
{
|
||||
public:
|
||||
LteRlcSpecificLteRlcSapUser (C* pdcp);
|
||||
|
||||
// Interface implemented from LteRlcSapUser
|
||||
virtual void ReceivePdcpPdu (Ptr<Packet> p);
|
||||
|
||||
private:
|
||||
LteRlcSpecificLteRlcSapUser ();
|
||||
C* m_pdcp;
|
||||
};
|
||||
|
||||
template <class C>
|
||||
LteRlcSpecificLteRlcSapUser<C>::LteRlcSpecificLteRlcSapUser (C* pdcp)
|
||||
: m_pdcp (pdcp)
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
LteRlcSpecificLteRlcSapUser<C>::LteRlcSpecificLteRlcSapUser ()
|
||||
{
|
||||
}
|
||||
|
||||
template <class C>
|
||||
void LteRlcSpecificLteRlcSapUser<C>::ReceivePdcpPdu (Ptr<Packet> p)
|
||||
{
|
||||
m_pdcp->DoReceivePdcpPdu (p);
|
||||
}
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
#endif // LTE_RLC_SAP_H
|
||||
Reference in New Issue
Block a user