1.10.23.20 UARTx_ReadCallbackRegister Function

C

/* x = UART instance number */

/* Non-blocking mode */

void UARTx_ReadCallbackRegister( UART_CALLBACK callback, uintptr_t context )

/* Ring buffer mode */

void UARTx_ReadCallbackRegister( UART_RING_BUFFER_CALLBACK callback, uintptr_t context)

Summary

Sets the pointer to the function (and it's context) to be called when the given UART's read events occur.

Description

This function sets the pointer to a client function to be called "back" when the given UART's read events occur. It also passes a context value (usually a pointer to a context structure) that is passed into the function when it is called.

Precondition

UARTx_Initialize must have been called for the associated UART instance.

Parameters

Param Description
callback Pointer to the function that will be called when a read request has completed. Setting this to NULL will disable the callback feature.
context A value (usually a pointer) passed (unused) into the function identified by the callback parameter.

Returns

None.

Example

Non-blocking mode

void UARTReadEventHandler ( uintptr_t context )
{
    if(UART_ERROR_NONE != UART1_ErrorGet())
    {
        //Handle error case
    }
    else
    {
        //Transfer completed successfully
    }
}

UART1_ReadCallbackRegister(UARTReadEventHandler, (uintptr_t) NULL);

Ring buffer mode

uint8_t rxBuffer[50];
uint32_t nBytes;

void UARTReadEventHandler(UART_EVENT event, uintptr_t context )
{
    uint32_t nBytesAvailable = 0;

    if (event == UART_EVENT_READ_THRESHOLD_REACHED)
    {
        // Receiver should have the thershold number of bytes in the receive buffer
        nBytesAvailable = UART1_ReadCountGet();

        nBytesRead += UART1_Read((uint8_t*)&rxBuffer[nBytesRead], nBytesAvailable);
    }
}

//----------------------------------------------------------//

// Register a callback for read events
UART1_ReadCallbackRegister(UARTReadEventHandler, (uintptr_t) NULL);

// Set a threshold value to receive a callback after every 10 characters are received
UART1_ReadThresholdSet(10);

// Enable RX event notifications
UART1_ReadNotificationEnable(true, false);

Remarks

None