--- a/src/lte/doc/source/conf.py Wed Oct 19 19:01:50 2011 +0200
+++ b/src/lte/doc/source/conf.py Wed Oct 19 19:04:02 2011 +0200
@@ -25,7 +25,8 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.pngmath']
+extensions = ['sphinx.ext.pngmath',
+ 'sphinxcontrib.seqdiag']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lte/doc/source/helpers.seqdiag Wed Oct 19 19:04:02 2011 +0200
@@ -0,0 +1,27 @@
+
+
+diagram {
+
+LenaHelper => EpcHelper [label="AddEnb"] {
+ EpcHelper -> EpcHelper [label="create EpcEnbApplication"];
+ EpcHelper -> EpcHelper [label="Setup S1 link"];
+ EpcHelper => EpcSgwPgwApplication [label="AddEnb (enbIpv4Address)"];
+}
+
+
+LenaHelper => LteUeRrc [label="GetRnti", return="RNTI"]
+LenaHelper => LteEnbRrc [label="SetupRadioBearer", return="LCID"]
+
+LenaHelper => EpcHelper [label="ActivateEpsBearer(UE IP, eNB IP, TFT, RNTI, LCID)"] {
+ EpcHelper => EpcSgwPgwApplication [label="ActivateS1Bearer (UE IP, eNB IP, TFT)", return="TEID"] {
+ EpcSgwPgwApplication => EpcSgwPgwApplication [label="Store UE IP<->eNB IP mapping"];
+ EpcSgwPgwApplication => EpcSgwPgwApplication [label="Create GTP-U tunnel endpoint"];
+ }
+ EpcHelper => EpcEnbApplication [label="ErabSetupRequest(TEID, RNTI, LCID )"] {
+ EpcEnbApplication -> EpcEnbApplication [label="Create GTP-U tunnel endpoint (TEID)"];
+ EpcEnbApplication -> EpcEnbApplication [label="store TEID<->(RNTI,LCID) mapping"]
+ }
+}
+
+
+}
\ No newline at end of file
--- a/src/lte/doc/source/lte-design.rst Wed Oct 19 19:01:50 2011 +0200
+++ b/src/lte/doc/source/lte-design.rst Wed Oct 19 19:04:02 2011 +0200
@@ -95,16 +95,11 @@
Architecture of the LTE UE
-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:
- * Provider Side is specified in the ``FfMacSchedSapProvider`` class
- * User Side is specified in the ``FfMacSchedSapUser`` class
+Description of the components
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* CSCHED SAP API
The FemtoForum MAC Scheduler Interface
++++++++++++++++++++++++++++++++++++++
@@ -371,3 +366,53 @@
of periodic wideband CQI (i.e., a single value of channel state that is deemed representative of all RBs
in use) and inband CQIs (i.e., a set of value representing the channel state for each RB).
+
+
+
+Sequence Diagrams
+~~~~~~~~~~~~~~~~~
+
+In this section we provide some sequence diagram that illustrate some important interactions among the components of the LTE module.
+
+
+Physical Layer
+++++++++++++++
+
+TODO: add diagram showing interference calculation
+
+
+RLC buffer status report
+++++++++++++++++++++++++
+
+These sequence diagrams represent how the RLC buffer status is updated in the different cases of the downlink and the uplink.
+
+For the downlink:
+
+.. seqdiag:: rlc_buffer_status_report_downlink.seqdiag
+
+
+For the uplink:
+
+.. seqdiag:: rlc_buffer_status_report_uplink.seqdiag
+
+
+Helpers
++++++++
+
+
+.. seqdiag:: helpers.seqdiag
+
+A few notes on the above diagram:
+
+ * the role of the MME is taken by the EpcHelper, since we don't have
+ an MME at the moment (the current code supports data plane only);
+
+ * in a real LTE/EPC system, the setup of the RadioBearer comes after
+ the setup of the S1 bearer, but here due to the use of Helpers
+ instead of S1-AP messages we do it the other way around
+ (RadioBearers first, then S1 bearer) because of easier
+ implementation. This is fine to do since the current code focuses
+ on control plane only.
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lte/doc/source/rlc_buffer_status_report_downlink.seqdiag Wed Oct 19 19:04:02 2011 +0200
@@ -0,0 +1,15 @@
+
+diagram {
+
+ LtePdcp -> LteRlc [label="send SDU"]
+ LteRlc -> LteMacSapProvider [label="ReportBufferStatus ()"]
+ LteMacSapProvider -> LteEnbMac [label="DoReportBufferStatus ()"]
+ LteEnbMac -> FfMacSchedSapProvider [label="SchedDlRlcBufferReq ()"]
+ FfMacSchedSapProvider -> Scheduler [label="DoSchedDlRlcBufferReq ()"]
+ FfMacSchedSapProvider <-- Scheduler
+ LteEnbMac <-- FfMacSchedSapProvider
+ LteMacSapProvider <-- LteEnbMac
+ LteRlc <-- LteMacSapProvider
+ LtePdcp <-- LteRlc
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lte/doc/source/rlc_buffer_status_report_uplink.seqdiag Wed Oct 19 19:04:02 2011 +0200
@@ -0,0 +1,17 @@
+
+ diagram {
+
+ LtePdcp -> LteRlc [label="send SDU"]
+ LteRlc -> LteMacSapProvider [label="ReportBufferStatus ()"]
+ LteMacSapProvider -> LteUeMac [label="DoReportBufferStatus ()"]
+ LteUeMac -->> LteEnbMac [label="send ideal CTRL message"]
+ LteMacSapProvider <-- LteUeMac
+ LteRlc <-- LteMacSapProvider
+ LtePdcp <-- LteRlc
+ LteEnbMac -> FfMacSchedSapProvider [label="SchedUlMacCtrlInfoReq ()"]
+ FfMacSchedSapProvider -> Scheduler [label="DoSchedUlMacCtrlInfoReq ()"]
+ FfMacSchedSapProvider <-- Scheduler
+ LteEnbMac <-- FfMacSchedSapProvider
+ }
+
+