Skip to content

Commit

Permalink
doc: add documentation
Browse files Browse the repository at this point in the history
Add repository's documentation.

Signed-off-by: Wille Backman <[email protected]>
Co-authored-by: Michal Leksinski <[email protected]>
  • Loading branch information
2 people authored and edmont committed Nov 15, 2024
1 parent c3c0094 commit b634593
Show file tree
Hide file tree
Showing 1,850 changed files with 302,081 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ __pycache__/
/twister-out*

# docs
/doc/_build*
/docs/_build*
39 changes: 37 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,37 @@
# ncs-zigbee
Zigbee nRF Connect add-on
# Zigbee add-on for nRF Connect SDK (Experimental support)

> This is an [experimental](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/releases_and_maturity/software_maturity.html) release of Zigbee support for Nordic Semiconductor’s nRF54L15 SoC.
The Zigbee add-on for the nRF Connect SDK provides support for developing Zigbee applications based on the third-party precompiled ZBOSS stack. This stack is included as the ZBOSS Zigbee R23 stack library. In combination with the nRF Connect SDK, the Zigbee add-on allows for development of low-power connected solutions.

## Getting started
To get started with Zigbee add-on for nRF Connect SDK, follow [documentation](https://github.com/nrfconnect/ncs-zigbee).

## Documentation
Pre-build documentation is available [here](https://nrfconnect.github.io/ncs-zigbee).

A minimal documentation setup is provided for Sphinx. To build the
documentation first change to the ``docs`` folder:

```shell
cd docs
```
To install Sphinx, make sure you have a Python installation in place and run:

```shell
pip install -r requirements.txt
```

The Sphinx documentation (HTML) can be built using the following command:

```shell
make html
```

The output will be stored in the ``_build_sphinx`` folder. You may check for
other output formats other than HTML by running ``make help``.


## License
* Source code included within this repository is licensed under the [LicenseRef-Nordic-5-Clause](https://github.com/nrfconnect/ncs-zigbee/blob/main/LICENSE)
* Pre-compiled ZBOSS libraries (`lib/zboss`) included within this repository are licensed under the [DSR Corporation License](https://github.com/nrfconnect/ncs-zigbee/blob/main/lib/zboss/license.txt)
2,739 changes: 2,739 additions & 0 deletions docs/Doxyfile

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build_sphinx

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
5 changes: 5 additions & 0 deletions docs/_doxygen/main.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Introduction

This is the Doxygen documentation for [ncs-zigbee].

[ncs-zigbee]: https://github.com/nrfconnect/ncs-zigbee
81 changes: 81 additions & 0 deletions docs/about.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
.. _zigbee_about:

About Zigbee protocol
#####################

.. note::
.. include:: /includes/experimental_note.txt

The |addon| for the |NCS| uses the ZBOSS library, a third-party precompiled Zigbee stack.
It includes all mandatory features of the |zigbee_version| specification and provides an Application Programming Interface (API) to access different services.
The stack comes with the following features:

* Complete implementation of the Zigbee core specification and Zigbee Pro feature set, revision 21, 22, and 23.
* Support for all device roles: Coordinator, Router, and End Device.
* Zigbee Cluster Library.
* Base Device Behavior version 3.0.1.
* Zigbee Cluster Library, revision 8.
* Zigbee Green Power Proxy Basic.

See `Software maturity levels`_ in the |NCS| documentation for what experimental support means.
Experimental support also means that the feature is either not certified or no sample is provided for the given feature (or both).

See the :ref:`zigbee_zboss` page and the `external ZBOSS development guide and API documentation`_ for more information about the ZBOSS library.

For more information about Zigbee, download the `Zigbee Specification <CSA Specifications Download Request_>`_ from Connectivity Standards Alliance.

.. _zigbee_topologies:

Zigbee topologies
*****************

Depending on the available device types and their number, Zigbee supports the following network topologies:

Star topology
The coordinator communicates directly with the end devices and no routers are actively present, meaning they are either not present or not routing packets within the network.

Tree topology
The routers are located beyond their mutual radio range and are not able to communicate with each other.
However, unlike in the star topology, the routers continue to move packets through the network.

Mesh topology
This topology allows full peer-to-peer communication.

.. figure:: images/zigbee_topology_types.svg
:alt: Zigbee topology types

Zigbee topology types

.. _zigbee_roles:

In each topology, the nodes have the following responsibilities:

* *Zigbee Coordinator* - Initiates and maintains the devices on the network.
It also chooses the key network parameters.
The coordinator's radio is continuously listening for frames.
* *Zigbee Router* - Extends the range of the network.
For this reason, the router has the radio enabled at all times.
However, in the star topology it is not moving packets through the network.
* *Zigbee End Device* - Receives messages from the parent device.

In every Zigbee topology, each router and end device that joins the Zigbee network after its creation by the coordinator needs a parent device.
When a device wants to join the network, it sends a beacon request to scan for available devices.
The devices that can route the packets respond with beacons.
Based on different factors of responses, such as signal strength, the new device selects the parent.

For end devices, the parent device (a coordinator or a router) can store information meant for them.
This is required because the end devices do not receive packets directly from other devices.
Each packet meant for an end device needs to go through its parent, and the end devices need to regularly request and respond to packets from the parents.
For example, in the |addon| for the |NCS|, the Zigbee light switch device requests packets from the parent every three seconds.
The end device does not route packets.
It can also disable its radio to reduce the power consumption between the regular packet requests if the Sleepy End Device behavior is enabled.

Additional information
**********************

If you want to learn more about the Zigbee topics and terminology mentioned in this guide, read the following pages:

* :ref:`ug_zigbee_architectures` page to learn more about the Zigbee architecture.
* `Common ZCL terms and definitions`_ section in the ZBOSS user guide.
* Zigbee topologies in section 1.1.4 of the `Zigbee Specification <CSA Specifications Download Request_>`_.
* :ref:`zigbee_ug_sed` section on the :ref:`ug_zigbee_configuring` page.
Loading

0 comments on commit b634593

Please sign in to comment.