From fc389504eba3356e2f3d25e00f10ce27bc82f628 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Thu, 19 May 2011 18:25:53 +0200 Subject: [PATCH] ff-api.rst merged into lte-design.rst --- .hgignore | 5 ++- src/lte/doc/source/ff-api.rst | 63 ------------------------------- src/lte/doc/source/lte-design.rst | 63 ++++++++++++++++++++++++++++++- src/lte/doc/source/lte.rst | 1 - 4 files changed, 66 insertions(+), 66 deletions(-) delete mode 100644 src/lte/doc/source/ff-api.rst diff --git a/.hgignore b/.hgignore index ba9effb2d..cd5797518 100644 --- a/.hgignore +++ b/.hgignore @@ -22,7 +22,10 @@ ^doc/manual/figures/.*eps ^doc/manual/figures/.*pdf ^doc/manual/figures/.*png -^bindings/python/pybindgen/ +^src/.*/doc/build +^src/.*/doc/source/figures/.*.eps +^src/.*/doc/source/figures/.*.pdf +^src/.*/doc/source/figures/.*.png ms_print.* massif.* \.patch$ diff --git a/src/lte/doc/source/ff-api.rst b/src/lte/doc/source/ff-api.rst deleted file mode 100644 index c6a8a93ab..000000000 --- a/src/lte/doc/source/ff-api.rst +++ /dev/null @@ -1,63 +0,0 @@ -.. include:: replace.txt - -.. _ff-mac-sched-api: - -FemtoForum MAC Scheduler Interface ----------------------------------- - -This section describes the ns-3 specific version of the `FemtoForum LTE MAC Scheduler Interface Specification v1.11 `_ - -The goals of the definition of this MAC scheduler API in the |ns3| network simulator are: - -* to let MAC's developers to implement its own MAC schedulers allowing these developers to provide the standard MAC scheduler API. -* to let MAC's users to use different MAC schedulers using always the same standard MAC scheduler API. - -Design -****** - -The MAC Scheduler interface is **specified** or defined as **abstract classes**. The MAC Scheduler interface is **implemented** as **derived classes** from the abstract classes. We have splitted the MAC Scheduler interface into 4 abstract classes: - -* SCHED SAP API - - * Provider Side is specified in the ``FfMacSchedSapProvider`` class - * User Side is specified in the ``FfMacSchedSapUser`` class - -* CSCHED SAP API - - * Provider Side is specified in the ``FfMacCschedSapProvider`` class - * User Side is specified in the ``FfMacCschedSapUser`` class - -Blocks -###### - -There are 3 blocks involved in the MAC Scheduler interface: Control block, Subframe block and Scheduler block. Each of these blocks provide one part of the MAC Scheduler interface. The following figure shows the relationship between the blocks and the Service Access Points they provide. - -.. figure:: figures/ff-mac-saps.png - -Implementation details -********************** - -This subsection details the criteria adopted during the development of the FF MAC API: - -* The definition of the MAC Scheduler interface follows the naming conventions of the |ns3| Coding Style. In particular, we follow the CamelCase convention for the primitive names. For example, the primitive **CSCHED_CELL_CONFIG_REG** is translated to ``CschedCellConfigReg`` in the |ns3| code. - -* The same naming conventions are followed for the primitive parameters. As the primitive parameters are member variables of classes, they are also prefixed with a ``m_``. - -* FF MAC API is a C-based oriented API but |ns3| network simulator is written in C++. So, STL vectors (``std::vector``) are used, instead of using C arrays as the FF MAC API document suggests. - -* In C++, members with constructors and destructors are not allow in ``unions``. These ``unions`` have been converted to ``structs``. - - - -Usage in the ns-3 LTE module -**************************** - -The files ``rr-ff-mac-scheduler.{cc,h}`` implement a Round Robin MAC scheduler. To interact with the MAC of the eNB, the Round Robin scheduler implements the Provider side of the SCHED SAP and CSCHED SAP interface. If you plan to develop your own scheduler, we advise to create your own class taking inspiration from the Round Robin scheduler. - - -The User side of both the CSCHED SAP and the SCHED SAP are implemented in the file ``lte-enb-mac.cc``. You are normally not expected to modify these files in order to implement your own scheduler. - - -.. figure:: figures/ff-example.png - - diff --git a/src/lte/doc/source/lte-design.rst b/src/lte/doc/source/lte-design.rst index 9308e3314..5ce642525 100644 --- a/src/lte/doc/source/lte-design.rst +++ b/src/lte/doc/source/lte-design.rst @@ -52,6 +52,67 @@ The overall architecture of the LTE module is represented in the following figur Detailed description of the components ************************************** +.. _ff-mac-sched-api: + +The FemtoForum MAC Scheduler Interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This section describes the ns-3 specific version of the `FemtoForum LTE MAC Scheduler Interface Specification v1.11 `_ + +The goals of the definition of this MAC scheduler API in the |ns3| network simulator are: + +* to let MAC's developers to implement its own MAC schedulers allowing these developers to provide the standard MAC scheduler API. +* to let MAC's users to use different MAC schedulers using always the same standard MAC scheduler API. + +Design +++++++ + +The MAC Scheduler interface is **specified** or defined as **abstract classes**. The MAC Scheduler interface is **implemented** as **derived classes** from the abstract classes. We have splitted the MAC Scheduler interface into 4 abstract classes: + +* SCHED SAP API + + * Provider Side is specified in the ``FfMacSchedSapProvider`` class + * User Side is specified in the ``FfMacSchedSapUser`` class + +* CSCHED SAP API + + * Provider Side is specified in the ``FfMacCschedSapProvider`` class + * User Side is specified in the ``FfMacCschedSapUser`` class + + +There are 3 blocks involved in the MAC Scheduler interface: Control block, Subframe block and Scheduler block. Each of these blocks provide one part of the MAC Scheduler interface. The following figure shows the relationship between the blocks and the Service Access Points they provide. + +.. figure:: figures/ff-mac-saps.png + +Implementation details +++++++++++++++++++++++ + +This subsection details the criteria adopted during the development of the FF MAC API: + +* The definition of the MAC Scheduler interface follows the naming conventions of the |ns3| Coding Style. In particular, we follow the CamelCase convention for the primitive names. For example, the primitive **CSCHED_CELL_CONFIG_REG** is translated to ``CschedCellConfigReg`` in the |ns3| code. + +* The same naming conventions are followed for the primitive parameters. As the primitive parameters are member variables of classes, they are also prefixed with a ``m_``. + +* FF MAC API is a C-based oriented API but |ns3| network simulator is written in C++. So, STL vectors (``std::vector``) are used, instead of using C arrays as the FF MAC API document suggests. + +* In C++, members with constructors and destructors are not allow in ``unions``. These ``unions`` have been converted to ``structs``. + + + +Usage in the ns-3 LTE module +++++++++++++++++++++++++++++ + +The files ``rr-ff-mac-scheduler.{cc,h}`` implement a Round Robin MAC scheduler. To interact with the MAC of the eNB, the Round Robin scheduler implements the Provider side of the SCHED SAP and CSCHED SAP interface. If you plan to develop your own scheduler, we advise to create your own class taking inspiration from the Round Robin scheduler. + + +The User side of both the CSCHED SAP and the SCHED SAP are implemented in the file ``lte-enb-mac.cc``. You are normally not expected to modify these files in order to implement your own scheduler. + + +.. figure:: figures/ff-example.png + + + + LTE Spectrum Model ~~~~~~~~~~~~~~~~~~ @@ -131,7 +192,7 @@ to the eNB using the ideal control channel. References ----------- +********** .. [1] N. Baldo and M. Miozzo, Spectrum-aware Channel and PHY layer modeling for ns3, Proceedings of ICST NSTools 2009, Pisa, Italy. The framework is designed to simulate only data diff --git a/src/lte/doc/source/lte.rst b/src/lte/doc/source/lte.rst index c3be7a794..75c3a11a7 100644 --- a/src/lte/doc/source/lte.rst +++ b/src/lte/doc/source/lte.rst @@ -11,7 +11,6 @@ This chapter describes the ns-3 LTE module located in ``src/lte``. .. toctree:: lte-design - ff-api lte-user lte-testing