.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

Configuration
=============

.. note::
   * This section is used to describe the options a software component offers for configuration.

   * Configuration is typically: provided for platform-component and sdk projects;
     and referenced in developer and user guides.

   * This note must be removed after content has been added.



Example ...

You can provide the following in ``basic.conf``

``host=ADDRESS``
  The address of the host

``port=PORT``
  The port used for signaling

  Optional. Default: ``8080``