1.35.21.19 USARTx_ReadCallbackRegister Function

C

/* x = USART instance number */

/* Non-blocking mode */

void USARTx_ReadCallbackRegister( USART_CALLBACK callback, uintptr_t context )

/* Ring buffer mode */

void USARTx_ReadCallbackRegister( USART_RING_BUFFER_CALLBACK callback, uintptr_t context)

Summary

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

Description

This function sets the pointer to a client function to be called "back" when the given USART'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

USARTx_Initialize must have been called for the associated USART 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 usartReadEventHandler ( uintptr_t context )
{
    if(USART_ERROR_NONE != USART1_ErrorGet())
    {
        //Handle error case
    }
    else
    {
        //Transfer completed successfully
    }
}

USART1_ReadCallbackRegister(usartReadEventHandler, (uintptr_t)NULL);

Ring buffer mode

uint8_t rxBuffer[50];
uint32_t nBytes;

void usartReadEventHandler(USART_EVENT event, uintptr_t context )
{
    uint32_t nBytesAvailable = 0;

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

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

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

// Register a callback for read events
USART1_ReadCallbackRegister(usartReadEventHandler, (uintptr_t) NULL);

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

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

Remarks

None