..    Copyright (c) 2020 Intel
..
..  Licensed under the Apache License, Version 2.0 (the "License");
..  you may not use this file except in compliance with the License.
..  You may obtain a copy of the License at
..
..      http://www.apache.org/licenses/LICENSE-2.0
..
..  Unless required by applicable law or agreed to in writing, software
..  distributed under the License is distributed on an "AS IS" BASIS,
..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
..  See the License for the specific language governing permissions and
..  limitations under the License.

.. ODULOW documentation master

.. _odulow documentation master:

O-RAN O-DU Low
==============

**User Guide, May 2020**
  
.. toctree::
   :maxdepth: 2
  
   overview1.rst
   Assumptions_Dependencies.rst
   build_prerequisite.rst   

.. _odulow_phy_fhi_library:

.. fhi library documentation master

FHI Library
===========


.. toctree::
   :maxdepth: 2

   overview.rst
   Introduction_fh.rst
   release-notes.rst

* :ref:`search`

WLS Library
===========

.. toctree::
   :maxdepth: 2
   
   wls-lib.rst
   wls-lib-installation-guide.rst
   wls-lib-release-notes.rst
 
* :ref:`search` 

FAPI 5G TM
==========

.. toctree::
   :maxdepth: 2

   fapi_5g_tm_overview.rst
   fapi_5g_tm_build.rst
   fapi_5g_tm_rel-notes.rst

* :ref:`search`

Running L1 and TESTMAC
======================

.. toctree::
   :maxdepth: 2

   run_l1.rst

* :ref:`search`

Test Cases for the Bronze Release
=================================

.. toctree::
   :maxdepth: 2

   test_cases.rst

* :ref:`search`
