1.27.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