Index: firmware/App/Drivers/Comm.c =================================================================== diff -u -ra303cd4258157a8fbcbd8af4dd2bbaadec1a736c -rf068446fdb7889d320ddb6ffbd58f347ce0501e7 --- firmware/App/Drivers/Comm.c (.../Comm.c) (revision a303cd4258157a8fbcbd8af4dd2bbaadec1a736c) +++ firmware/App/Drivers/Comm.c (.../Comm.c) (revision f068446fdb7889d320ddb6ffbd58f347ce0501e7) @@ -24,7 +24,72 @@ #define DMA_CH_STATUS_BIT(ch) ((U32)1U << (ch)) +// ********** private data ********** + +static volatile BOOL canXmitsInProgress = FALSE; +static volatile BOOL uartXmitsInProgress = FALSE; + /************************************************************************* + * @brief signalCANXmitsInitiated + * The signalCANXmitsInitiated function sets the CAN transmits in \n + * progress flag. + * @details + * Inputs : none + * Outputs : canXmitsInProgress + * @param none + * @return none + *************************************************************************/ +void signalCANXmitsInitiated( void ) +{ + canXmitsInProgress = TRUE; +} + +/************************************************************************* + * @brief signalCANXmitsCompleted + * The signalCANXmitsCompleted function resets the CAN transmits in \n + * progress flag. + * @details + * Inputs : none + * Outputs : canXmitsInProgress + * @param none + * @return none + *************************************************************************/ +void signalCANXmitsCompleted( void ) +{ + canXmitsInProgress = FALSE; +} + +/************************************************************************* + * @brief signalSCI1XmitsInitiated + * The signalSCI1XmitsInitiated function sets the SCI1 transmits in \n + * progress flag. + * @details + * Inputs : none + * Outputs : uartXmitsInProgress + * @param none + * @return none + *************************************************************************/ +void signalSCI1XmitsInitiated( void ) +{ + uartXmitsInProgress = TRUE; +} + +/************************************************************************* + * @brief signalSCI1XmitsCompleted + * The signalSCI1XmitsCompleted function resets the SCI1 transmits in \n + * progress flag. + * @details + * Inputs : none + * Outputs : uartXmitsInProgress + * @param none + * @return none + *************************************************************************/ +void signalSCI1XmitsCompleted( void ) +{ + uartXmitsInProgress = FALSE; +} + +/************************************************************************* * @brief setSCI1DMAReceiveInterrupt * The setSCI1DMAReceiveInterrupt function enables DMA receive interrupts \n * for the SCI1 peripheral. @@ -145,6 +210,38 @@ } /************************************************************************* + * @brief clearSCI1CommErrors + * The clearSCI1CommErrors function clears framing and/or overrun error flags \ + * for the SCI1 peripheral. + * @details + * Inputs : none + * Outputs : SCI1 error flags cleared. + * @param none + * @return none + *************************************************************************/ +void clearSCI1CommErrors( void ) +{ + sciReceiveByte( sciREG ); + sciREG->FLR |= ( SCI_FE_INT | SCI_OE_INT ); +} + +/************************************************************************* + * @brief clearSCI2CommErrors + * The clearSCI2CommErrors function clears framing and/or overrun error flags \n + * for the SCI2 peripheral. + * @details + * Inputs : none + * Outputs : SCI2 error flags cleared. + * @param none + * @return none + *************************************************************************/ +void clearSCI2CommErrors( void ) +{ + sciReceiveByte( scilinREG ); + scilinREG->FLR |= ( SCI_FE_INT | SCI_OE_INT ); +} + +/************************************************************************* * @brief isSCI1DMATransmitInProgress * The isSCI2DMATransmitInProgress function determines whether a DMA transmit \n * is in progress on the SCI1 peripheral. @@ -160,7 +257,7 @@ BOOL dmaTransmitterBusy = ( ( dmaREG->PEND & DMA_CH_STATUS_BIT(DMA_CH3) ) != 0U ? TRUE : FALSE ); - return ( ( transmitterBusy == TRUE ) || ( dmaTransmitterBusy == TRUE ) ? TRUE : FALSE ); + return ( ( TRUE == uartXmitsInProgress ) || ( transmitterBusy == TRUE ) || ( dmaTransmitterBusy == TRUE ) ? TRUE : FALSE ); } /************************************************************************* @@ -193,7 +290,7 @@ *************************************************************************/ BOOL isCAN1TransmitInProgress( void ) { - BOOL result = ( ( canREG1->TXRQx[0] != 0 ) || ( canREG1->TXRQx[1] != 0 ) ? TRUE : FALSE ); + BOOL result = ( ( TRUE == canXmitsInProgress ) || ( canREG1->TXRQx[ 0 ] != 0 ) || ( canREG1->TXRQx[ 1 ] != 0 ) ? TRUE : FALSE ); return result; }