It is the serial interrupt function in the USART initialization:
/********************************************************************************************
; Function: USART1_IntInit
; Description: Initializes USART1
; Inputs: ULONG – baud rate
; UBYTE – control word (parity, stop, word length)
; UBYTE – fifo control word
; Returns: SUCCESS – SUCCESS
***********************************************************************************************/
ERRCODE USART1_IntInit(UCB* ucb)
{
ERRCODE ec = SUCCESS;
/* Initialize SOFTWARE FIFO */
USART1_DATA.rxHead = USART1_DATA.rxTail =0;
USART1_DATA.txHead = USART1_DATA.txTail =0;
USART1_DATA.errors=0;
USART1_DATA.overflows=0;
USART1_DATA.rxCnt=0;
USART1_DATA.txCnt=0;
USART1_DATA.transferState = USART1_TRANSFER_COMPLETE;
USART1_DATA.transferComplete = ucb->transferComplete;
USART1_DATA.rxSignal = ucb->rxSignal = NULL;
USART1_DATA.rxSignalParameter = ucb->rxSignalParameter = NULL;
USART1_DATA.txSignal = ucb->txSignal = NULL;
USART1_DATA.txSignalParameter = ucb->txSignalParameter = NULL;
//
ucb->getRxCounter = USART1_GetRxCounter;
ucb->getTxCounter = USART1_GetTxCounter;
ucb->setData = USART1_SetData;
ucb->getData = USART1_GetData;
ucb->setFiFoData = USART1_SetFiFoData;
ucb->getFiFoData = USART1_GetFiFoData;
ucb->isTxFiFoAvailable = USART1_IsTxFiFoAvailable;
ucb->getErrors = USART1_GetErrors;
ucb->getOverflows = USART1_GetOverflows;
ucb->getRxCnt = USART1_GetRxCnt;
ucb->getTxCnt = USART1_GetTxCnt;
//
/* Initialize UART interface */
switch(ucb->iface) {
case SERIALAPI_USART1_INTERFACE:
break;
default:
ec = SERIALAPI_INTERFACE_ERROR;
break;
}
if (ec) goto func_end;
//
switch(ucb->word_length) {
case SERIALAPI_WORLD_LENGTH_8:
break;
default:
ec = SERIALAPI_WORD_LENGTH_ERROR;
break;
}
if (ec) goto func_end;
//
switch(ucb->stop) {
case SERIALAPI_STOP_1:
break;
default:
ec = SERIALAPI_STOP_ERROR;
break;
}
if (ec) goto func_end;
//
switch(ucb->parity) {
case SERIALAPI_PARITY_NO:
break;
default:
ec = SERIALAPI_PARITY_ERROR;
break;
}
USART1_DATA.pSerialPort = &USART1_PORT;
USART1_DATA.pSerialPort->baud(ucb->baudRate);
// Setup a serial interrupt function to receive data
USART1_DATA.pSerialPort->attach(&INT_USART1_RX_Handler, Serial::RxIrq);
// Setup a serial interrupt function to transmit data
USART1_DATA.pSerialPort->attach(&INT_USART1_TX_Handler, Serial::TxIrq);
func_end:
return ec;
}