/* param base The I3C peripheral base address. param data IBI data pointer param dataSize IBI data length  */
void I3C_SlaveRequestIBIWithData(I3C_Type *base, i3c_slave_handle_t *handle, uint8_t *data, size_t dataSize)
/* param base The I3C peripheral base address. param data IBI data pointer param dataSize IBI data length  */
void I3C_SlaveRequestIBIWithData(I3C_Type *base, i3c_slave_handle_t *handle, uint8_t *data, size_t dataSize)
{
    uint32_t ctrlValue = base->SCTRL;
    ctrlValue &= ~(I3C_SCTRL_EVENT_MASK | I3C_SCTRL_IBIDATA_MASK);
    ctrlValue |= I3C_SCTRL_EVENT(1U) | I3C_SCTRL_IBIDATA(*data);
    if (dataSize > 1U)
    {
        handle->ibiData     = &data[1];
        handle->ibiDataSize = dataSize - 1U;
    }
    base->SCTRL = ctrlValue;
}