/* retval #kStatus_Success Slave transfers were successfully started. retval #kStatus_I3C_Busy Slave transfers have already been started on this handle.  */
status_t I3C_SlaveTransferNonBlocking(I3C_Type *base, i3c_slave_handle_t *handle, uint32_t eventMask)
/* retval #kStatus_Success Slave transfers were successfully started. retval #kStatus_I3C_Busy Slave transfers have already been started on this handle.  */
status_t I3C_SlaveTransferNonBlocking(I3C_Type *base, i3c_slave_handle_t *handle, uint32_t eventMask)
{
    assert(NULL != handle);
    if (handle->isBusy)
    {
        return kStatus_I3C_Busy;
    }
    I3C_SlaveDisableInterrupts(base, (uint32_t)kSlaveIrqFlags);
    (void)memset(&handle->transfer, 0, sizeof(handle->transfer));
    handle->eventMask = eventMask | (uint32_t)kI3C_SlaveTransmitEvent | (uint32_t)kI3C_SlaveReceiveEvent;
    I3C_SlaveClearStatusFlags(base, (uint32_t)kSlaveClearFlags);
    I3C_SlaveEnableInterrupts(base, (uint32_t)kSlaveIrqFlags);
    return kStatus_Success;
}