# I3C Structures

This page aggregates all I3C-related structures used by functions and methods from the C and C++ APIs.

group I3C-related structures
  union I3cTargetConfiguration
    #include <definitions.h>

    Represents configurable behavior and capabilities of an I3C target device.

    This union allows accessing the device configuration either as a raw byte or as individual bit fields.

    Each bit enables or describes specific target capabilities or behavior related to Dynamic Address Assignment (DAA), In-Band Interrupt (IBI), and Controller Role (CR) support.

    Public Members

    uint8_t byte

      Raw configuration byte representation

    uint8_t targetType

      0 = I3C target, 1 = Legacy I2C target

    bool IBIRequest

      Target supports generating In-Band Interrupt (IBI)

    bool CRRequest

      Target supports Controller Role request. Reserved for future.

    bool daaUseSETDASA

      Use SETDASA during Dynamic Address Assignment

    bool daaUseSETAASA

      Use SETAASA during Dynamic Address Assignment

    bool daaUseENTDAA

      Use ENTDAA during Dynamic Address Assignment

    bool ibiTimestampEnable

      Enables timestamping for received IBIs. Reserved for future.

    bool pendingReadCapability

      Target supports pending read notification. Reserved for future.

    struct I3cTargetConfiguration.[anonymous] bits

      Bit-field representation of the target configuration byte.

  union I3cBCR
    #include <definitions.h>

    Represents the I3C Bus Characteristics Register (BCR).

    The Bus Characteristics Register (BCR) defines the fundamental protocol capabilities of an I3C target as specified by the MIPI I3C specification.

    This union allows accessing the BCR either as a raw byte or through individual capability fields.

    Public Members

    uint8_t byte

      Raw BCR register value

    uint8_t maxDataSpeedLimit

      Indicates presence of maximum data speed limitation

    uint8_t ibiRequestCapable

      Target is capable of issuing IBI

    uint8_t ibiPayload

      Target supports IBI with payload

    uint8_t offlineCapable

      Target supports offline mode

    uint8_t virtualTargetSupport

      Target supports Virtual Target feature

    uint8_t advancedCapabilities

      Target supports advanced capability extensions

    uint8_t deviceRole

      Device role (Target / Secondary Controller / etc.)

    struct I3cBCR.[anonymous] bits

      Bit-field representation of the BCR register value.

  struct I3cTargetInfo
    #include <definitions.h>

    Contains complete information about an I3C target device.

    This structure represents a target entry stored in the internal device table after device discovery or Dynamic Address Assignment.

    It includes identification data, capability registers, protocol limits, and runtime configuration.

    Public Members

    uint8_t staticAddress

      Static address (if applicable). 0 if none.

    uint8_t dynamicAddress

      Assigned dynamic address on the I3C bus.

    uint8_t pid[6]

      48-bit Provisional ID (PID), MSB first.

    I3cBCR bcr

      Bus Characteristics Register.

    uint8_t dcr

      Device Characteristics Register.

    uint16_t mwl

      Maximum Write Length supported by the target. Reserved for future use.

    uint16_t mrl

      Maximum Read Length supported by the target. Reserved for future use.

    uint8_t maxIbiPayloadLength

      Maximum payload length for IBI. Reserved for future use.

    I3cTargetConfiguration configuration

      Current configuration flags.