1.26.5.18 FLEXCOMx_USART_ReadCallbackRegister Function

C

/* x = FLEXCOM instance number */

/* Non-blocking mode */

void FLEXCOMx_USART_ReadCallbackRegister( FLEXCOM_USART_CALLBACK callback, uintptr_t context )

/* Ring buffer mode */

void FLEXCOMx_USART_ReadCallbackRegister( FLEXCOM_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

FLEXCOMx_USART_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 != FLEXCOM0_USART_ErrorGet())
    {
        //Handle error case
    }
    else
    {
        //Transfer completed successfully
    }
}

FLEXCOM0_USART_ReadCallbackRegister(usartReadEventHandler, (uintptr_t) NULL);

Ring buffer mode

uint8_t rxBuffer[50];
uint32_t nBytes;

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

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

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

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

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

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

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

Remarks

None