portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, char cOutChar, portTickType xBlockTime ) { if( xQueueSend( pxPort->xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) { return pdFAIL; } vInterruptOn( pxPort, serTX_HOLD_EMPTY_INT ); return pdPASS; }
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime ) { /* Return false if after the block time there is no room on the Tx queue. */ if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) { return pdFAIL; } vInterruptOn(); return pdPASS; }
void vSerialPutString( xComPortHandle pxPort, const char * const pcString, unsigned short usStringLength ) { unsigned short usByte; char *pcNextChar; pcNextChar = ( char * ) pcString; for( usByte = 0; usByte < usStringLength; usByte++ ) { xQueueSend( pxPort->xCharsForTx, pcNextChar, serDONT_BLOCK ); pcNextChar++; } vInterruptOn( pxPort, serTX_HOLD_EMPTY_INT ); }
inline portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, unsigned portBASE_TYPE cOutChar, portTickType xBlockTime ) { /* Only one port is supported. */ ( void ) pxPort; /* Return false if after the block time there is no room on the Tx queue. */ if( xQueueSendToBack( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) { return pdFAIL; } vInterruptOn(); return pdPASS; }
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime ) { /* Place the character in the queue of characters to be transmitted. */ if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS ) { return pdFAIL; } /* Turn on the Tx interrupt so the ISR will remove the character from the queue and send it. This does not need to be in a critical section as if the interrupt has already removed the character the next interrupt will simply turn off the Tx interrupt again. */ vInterruptOn(); return pdPASS; }