Transmit

Informative

How a channel transmits data, and the two completion-notification styles. Binding rules: CHI-UART-MUST-08CHI-UART-MUST-11 in Uart — Requirements.

Start a transmission

Std_ReturnType r = Uart_StartTxTransaction(0u, txData, len);   /* channel, buffer, length>0 */

The call moves the channel to BUSY and returns immediately; the transfer completes asynchronously. Keep txData valid until the completion / streaming callout fires. You may start the next transaction only when the channel is not BUSY (i.e. IDLE or, for streaming, READY).

Completion style: HwCompletion

For a channel configured transmission_callback_type: HwCompletion, the driver notifies when the whole buffer has left the UART bus (FIFO and shift register empty):

void Uart_Callout_OnTransmission(uint8 channelId, uint16 length)
{
    /* all `length` bytes are physically sent; safe to reuse the buffer */
}

Completion style: Streaming

For transmission_callback_type: Streaming, the driver notifies as soon as the software buffer has been handed to the hardware — the channel enters READY and you can immediately queue the next buffer to keep the bus continuously fed:

void Uart_Callout_OnStreamingDataRequest(uint8 channelId, uint16 length)
{
    /* the SW buffer is empty (HW may still be draining) — stage the next chunk now */
    Uart_StartTxTransaction(channelId, nextChunk, nextLen);
}

Note

A channel uses either Uart_Callout_OnTransmission or Uart_Callout_OnStreamingDataRequest, never both — the style is fixed by configuration. TX errors, where the hardware reports them, are logged via LogM_Report at runtime-error level with UART_RTERR_TX (CHI-UART-SHOULD-02).