# 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.

- CosmicSDK class
- I2C API
- SPI API
- UART API
- GPIOs API
- I3C API

## C++ Asynchronous API

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

- CosmicAsyncSDK class
- I2C API
- SPI API
- UART API
- GPIOs API
- I3C API

## C API

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

- C API
- I2C API
- SPI API
- UART API
- GPIOs API
- I3C API

## Structures

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

- I3C Structures
- Notification Structures

## Parameters

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

- System Constants
- I2C Constants
- SPI Constants
- UART Constants
- GPIO Constants
- I3C Constants

## 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.

- SDK Result Codes
- Generic Result Codes
- System Result Codes
- I2C Result Codes
- GPIO Result Codes
- I3C Result Codes