API Reference
=============

This section documents the user-facing APIs methods and constants of CosmicSDK, grouped by class
and protocol.

C++ Blocking API
-------------------

These pages cover the blocking C++ API defined in ``CosmicSDK.hpp``, grouped
by protocol.

.. toctree::
   :maxdepth: 1

   cpp_blocking/cosmicsdk
   cpp_blocking/i2c
   cpp_blocking/spi
   cpp_blocking/uart
   cpp_blocking/gpio
   cpp_blocking/i3c

C++ Asynchronous API
--------------------

These pages cover the non-blocking C++ API defined in ``CosmicAsyncSDK.hpp``,
grouped by protocol.

.. toctree::
   :maxdepth: 1

   cpp_async/cosmicasyncsdk
   cpp_async/i2c
   cpp_async/spi
   cpp_async/uart
   cpp_async/gpio
   cpp_async/i3c

C API
-----

These pages cover the C API defined in ``CosmicSDK_API_c.h``, grouped by
protocol.

.. toctree::
   :maxdepth: 1

   c/cosmicsdk_api_c
   c/i2c
   c/spi
   c/uart
   c/gpio
   c/i3c

Structures
----------

These pages cover all structures used by the C and C++ APIs, grouped by protocol.

.. toctree::
   :maxdepth: 1
   
   structures/i3c
   structures/notifications

Parameters
----------

These pages cover all the constants that can be passed as parameters to the C and C++ APIs methods, grouped by protocol.

.. toctree::
   :maxdepth: 1
   
   constants/system
   constants/i2c
   constants/spi
   constants/uart
   constants/gpio
   constants/i3c

Result Codes
------------

These pages cover all result codes returned by the C and C++ APIs, grouped by protocol. 
Those result codes whose name has the `FW_` prefix are returned by the firmware, while those with the `SDK_` prefix are returned by the SDK. 
The result code `SUCCESS` is returned by both the SDK and the firmware.

.. toctree::
   :maxdepth: 1
   
   result_codes/sdk
   result_codes/generic
   result_codes/system
   result_codes/i2c
   result_codes/gpio
   result_codes/i3c
