# CosmicSDK class

This page describes the CosmicSDK C++ class and its generic public methods. For each specific protocol APIs, please refer to the corresponding sections.

group CosmicSDK C++ blocking API

  High-level blocking C++ interface to Binho devices.

  This module provides the main blocking C++ API used to connect to a Binho host adapter, configure it, and perform different operations to interact with downstream devices over different interfaces and protocols such as I2C, I3C, SPI, UART and GPIOs.

  class CosmicSDK
    #include <CosmicSDK.hpp>

    This class provides a blocking C++ interface. This means that each method call will wait for the operation to complete before returning. The returned values are passed directly back to the caller through a return value and output parameters.

    Public Types

    using NotificationCallback = std::function<void(const Notification&)>

      Type definition for notification callback functions.

    Public Functions

    CosmicSDK(int timeout = -1)

      Construct a new Cosmic SDK object.

      Parameters:

        timeout – Timeout in milliseconds for operations. Use -1 for no timeout

    ~CosmicSDK()

      Destructor: cleans up the CosmicSDK and its components.

    inline void onNotification(NotificationCallback callback)

      Registers a callback to be invoked when an asynchronous notification is received.

      Parameters:

        callback – Function that will receive a const reference to a Notification object.

    bool connect(const std::string &devicePath = "")

      Connects to a Binho Host Adapter device, such as Pulsar or Supernova. If no device path is provided, it will attempt to connect to the first available device.

      Parameters:

        devicePath – The path to the device (e.g., COM3 on Windows or /dev/ttyUSB0 on Linux). If empty, connects to the first available device.

      Returns:

        True if the connection was successful, false otherwise.

    bool connectWithSerialNumber(const std::string &serial)

      Connects to a Binho Host Adapter device using its serial number.

      Parameters:

        serial – The serial number of the device to connect to.

      Returns:

        True if the connection was successful, false otherwise.

    void disconnect()

      Disconnects from the currently connected Binho Host Adapter device.

    uint16_t getUsbString(std::vector<uint8_t> &outData, uint8_t subCmd)

      Gets the Usb String object.

      Parameters:

        - outData – The data received from the device

        - subCmd – The sub-command to be sent to the device

      Returns:

        The status code of the operation

    uint16_t getDeviceInfo(DeviceInfo &info)

      Gets the device information.

      Parameters:

        info – The device information object to be filled with data

      Returns:

        The status code of the operation

    uint16_t enterBootMode()

      Puts the device into boot mode. Once the device process the request, it immediately jumps into the bootloader. After the user has flashed the device with a firmware, a new connection needs to be done to continue using the device.

      Returns:

        SUCCESS or SDK_ERROR_DISCONNECT if the device is not connected

    Public Static Functions

    static inline std::string getVersion()

      Gets the CosmicSDK library version string.

      Returns a string containing the version number of the linked CosmicSDK library. This allows verification at startup that the linked library matches what they were built against.

      Returns:

        A version string in the format “MAJOR.MINOR.PATCH”, e.g. “1.2.3”

    struct DeviceInfo
      #include <CosmicSDK.hpp>

      Structure to hold device information.

      Public Members

      std::string manufacturer

        Manufacturer string.

      std::string productName

        Product name string.

      std::string serialNumber

        Device serial number string.

      std::string fwVersion

        Firmware version string.

      std::string hwVersion

        Hardware version string.