// TraceMacros.h
#ifndef TRACE_MACROS_H
#define TRACE_MACROS_H 1
#include "UsartDriver.h"
#if( __USART0_TARCE__ == 2 )
//Called during the tick interrupt.
#define traceTASK_INCREMENT_TICK( tick ){ \
USARTputs( &USART0, " TCK" ); \
USARTputInt( &USART0, tick ); }
//Called before a new task is selected to run. At this point pxCurrentTCB contains the handle of the task about to leave the Running state.
//#define traceTASK_SWITCHED_OUT(){
//USARTputs( &USART0, "TSK_SWTCHD_OUT\t" ); }
//Called after a task has been selected to run. At this point pxCurrentTCB contains the handle of the task about to enter the Running state.
#define traceTASK_SWITCHED_IN(){ \
USARTputs( &USART0, "\n\rTSI" ); \
USARTputs( &USART0, (char*)pxCurrentTCB->pcTaskName ); }
//USARTputInt( &USART0, pxCurrentTCB ); }
//Indicates that the currently executing task is about to block following an attempt to read from an empty queue, or an attempt to 'take' an empty semaphore or mutex.
#define traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue){ \
USARTputs( &USART0, " BQR" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
// USARTputInt( &USART0, (unsigned int)pxQueue ); }
//Indicates that the currently executing task is about to block following an attempt to write to a full queue.
#define traceBLOCKING_ON_QUEUE_SEND(pxQueue){ \
USARTputs( &USART0, " BQS" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
//Called from within xSemaphoreGiveRecursive().
//#define traceGIVE_MUTEX_RECURSIVE(pxMutex)
//Called from within xQueueCreate() if the queue was successfully created.
#define traceQUEUE_CREATE( pxNewQueue ){ \
USARTputs( &USART0, " QC" ); \
USARTputs( &USART0, (char*)getQueueName(pxNewQueue) ); }
// Called from within xQueueCreate() if the queue was not successfully created due to there being insufficient heap memory available.
#define traceQUEUE_CREATE_FAILED(){ \
USARTputs( &USART0, " QCF" ); }
//#define traceCREATE_MUTEX() Called from within xSemaphoreCreateMutex() if the mutex was successfully created.
//#define traceCREATE_MUTEX_FAILED() Called from within xSemaphoreCreateMutex() if the mutex was not successfully created due to there being insufficient heap memory available.
//#define traceGIVE_MUTEX_RECURSIVE(pxMutex) Called from within xSemaphoreGiveRecursive() if the mutex was successfully 'given'.
//#define traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex) Called from within xSemaphoreGiveRecursive() if the mutex was not successfully given as the calling task was not the mutex owner.
//#define traceTAKE_MUTEX_RECURSIVE(pxMutex) Called from within xQueueTakeMutexRecursive().
// Called from within xSemaphoreCreateCounting() if the semaphore was successfully created.
#define traceCREATE_COUNTING_SEMAPHORE(){ \
USARTputs( &USART0, " CCS" ); }
// Called from within xSemaphoreCreateCounting() if the semaphore was not successfully created due to insufficient heap memory being available.
#define traceCREATE_COUNTING_SEMAPHORE_FAILED(){ \
USARTputs( &USART0, " CSF" ); }
// Called from within xQueueSend(), xQueueSendToFront(), xQueueSendToBack(), or any of the semaphore 'give' functions, when the queue send was successful.
#define traceQUEUE_SEND(pxQueue){ \
USARTputs( &USART0, " QS" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
// Called from within xQueueSend(), xQueueSendToFront(), xQueueSendToBack(), or any of the semaphore 'give' functions when the queue send operation failed due to the queue being full (after any block time that was specified).
#define traceQUEUE_SEND_FAILED(pxQueue){ \
USARTputs( &USART0, " QSF" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
// Called from within xQueueReceive() or any of the semaphore 'take' functions when the queue receive was successful.
#define traceQUEUE_RECEIVE(pxQueue){ \
USARTputs( &USART0, " QR" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
// Called from within xQueueReceive() or any of the semaphore 'take' functions when the queue receive operation failed because the queue was empty (after any block time that was specified).
#define traceQUEUE_RECEIVE_FAILED( pxQueue ){ \
USARTputs( &USART0, " QRF" ); \
USARTputs( &USART0, (char*)getQueueName(pxQueue) ); }
// Called from within xQueuePeek()
//#define traceQUEUE_PEEK()
//#define traceQUEUE_SEND_FROM_ISR(pxQueue) Called from within xQueueSendFromISR() when the send operation was successful.
//#define traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue) Called from within xQueueSendFromISR() when the send operation failed due to the queue already being full.
//#define traceQUEUE_RECEIVE_FROM_ISR(pxQueue) Called from within xQueueReceiveFromISR() when the receive operation was successful.
//#define traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue) Called from within xQueueReceiveFromISR() when the receive operation failed due to the queue already being empty.
//#define traceQUEUE_DELETE(pxQueue) Called from within vQueueDelete().
// Called from within xTaskCreate() when the task is successfully created.
#define traceTASK_CREATE(pxTask){ \
USARTputs( &USART0, " TC" ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName ); }
// Called from within xTaskCreate() when the task was not successfully created due to there being insufficient heap space available.
#define traceTASK_CREATE_FAILED( pxNewTCB ){ \
USARTputs( &USART0, " TCF" ); \
USARTputs( &USART0, (char*)pxNewTCB->pcTaskName ); }
// Called from within vTaskDelete().
#define traceTASK_DELETE(pxTask){ \
USARTputs( &USART0, " TD" ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName ); }
// Called from within vTaskDelayUntil().
#define traceTASK_DELAY_UNTIL(){ \
USARTputs( &USART0, " TDU" ); }
// Called from within vTaskDelay().
#define traceTASK_DELAY(){ \
USARTputs( &USART0, " TDY" ); }
// Called from within vTaskPrioritySet().
#define traceTASK_PRIORITY_SET(pxTask,uxNewPriority){ \
USARTputs( &USART0, " TPS" ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName ); }
// Called from within vTaskSuspend().
#define traceTASK_SUSPEND(pxTask){ \
USARTputs( &USART0, " TSP" ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName ); }
// Called from within vTaskResume().
#define traceTASK_RESUME(pxTask){ \
USARTputs( &USART0, " TRS" ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName ); }
// Called from within xTaskResumeFromISR().
//#define traceTASK_RESUME_FROM_ISR(pxTask){
// USARTputs( &USART0, "TASK_RESUME_FROM_ISR\n\r" ); }
#elif( __USART0_TARCE__ == 1 )
//Called during the tick interrupt.
#define traceTASK_INCREMENT_TICK( tick ){ \
USARTwrite( &USART0, 1 ); \
USARTwrite( &USART0, (tick>>8)&0xFF ); \
USARTwrite( &USART0, (tick>>0)&0xFF ); }
//Called before a new task is selected to run. At this point pxCurrentTCB contains the handle of the task about to leave the Running state.
//#define traceTASK_SWITCHED_OUT(){
//USARTputs( &USART0, "TSK_SWTCHD_OUT\t" ); }
//Called after a task has been selected to run. At this point pxCurrentTCB contains the handle of the task about to enter the Running state.
#define traceTASK_SWITCHED_IN(){ \
USARTwrite( &USART0, 2 ); \
USARTwrite( &USART0, ((int)pxCurrentTCB>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxCurrentTCB>>0)&0xFF ); }
//Indicates that the currently executing task is about to block following an attempt to read from an empty queue, or an attempt to 'take' an empty semaphore or mutex.
#define traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue){ \
USARTwrite( &USART0, 3 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
//Indicates that the currently executing task is about to block following an attempt to write to a full queue.
#define traceBLOCKING_ON_QUEUE_SEND(pxQueue){ \
USARTwrite( &USART0, 4 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
//Called from within xSemaphoreGiveRecursive().
//#define traceGIVE_MUTEX_RECURSIVE(pxMutex)
//Called from within xQueueCreate() if the queue was successfully created.
#define traceQUEUE_CREATE( pxNewQueue ){ \
USARTwrite( &USART0, 5 ); \
USARTputs( &USART0, (char*)getQueueName(pxNewQueue) ); \
USARTwrite( &USART0, ((int)pxNewQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxNewQueue>>0)&0xFF ); }
// Called from within xQueueCreate() if the queue was not successfully created due to there being insufficient heap memory available.
#define traceQUEUE_CREATE_FAILED(){ \
USARTwrite( &USART0, 6 ); }
//#define traceCREATE_MUTEX() Called from within xSemaphoreCreateMutex() if the mutex was successfully created.
//#define traceCREATE_MUTEX_FAILED() Called from within xSemaphoreCreateMutex() if the mutex was not successfully created due to there being insufficient heap memory available.
//#define traceGIVE_MUTEX_RECURSIVE(pxMutex) Called from within xSemaphoreGiveRecursive() if the mutex was successfully 'given'.
//#define traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex) Called from within xSemaphoreGiveRecursive() if the mutex was not successfully given as the calling task was not the mutex owner.
//#define traceTAKE_MUTEX_RECURSIVE(pxMutex) Called from within xQueueTakeMutexRecursive().
// Called from within xSemaphoreCreateCounting() if the semaphore was successfully created.
#define traceCREATE_COUNTING_SEMAPHORE(){ \
USARTwrite( &USART0, 7 ); }
// Called from within xSemaphoreCreateCounting() if the semaphore was not successfully created due to insufficient heap memory being available.
#define traceCREATE_COUNTING_SEMAPHORE_FAILED(){ \
USARTwrite( &USART0, 8 ); }
// Called from within xQueueSend(), xQueueSendToFront(), xQueueSendToBack(), or any of the semaphore 'give' functions, when the queue send was successful.
#define traceQUEUE_SEND(pxQueue){ \
USARTwrite( &USART0, 9 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
// Called from within xQueueSend(), xQueueSendToFront(), xQueueSendToBack(), or any of the semaphore 'give' functions when the queue send operation failed due to the queue being full (after any block time that was specified).
#define traceQUEUE_SEND_FAILED(pxQueue){ \
USARTwrite( &USART0, 10 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
// Called from within xQueueReceive() or any of the semaphore 'take' functions when the queue receive was successful.
#define traceQUEUE_RECEIVE(pxQueue){ \
USARTwrite( &USART0, 11 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
// Called from within xQueueReceive() or any of the semaphore 'take' functions when the queue receive operation failed because the queue was empty (after any block time that was specified).
#define traceQUEUE_RECEIVE_FAILED( pxQueue ){ \
USARTwrite( &USART0, 12 ); \
USARTwrite( &USART0, ((int)pxQueue>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxQueue>>0)&0xFF ); }
// Called from within xQueuePeek()
//#define traceQUEUE_PEEK()
//#define traceQUEUE_SEND_FROM_ISR(pxQueue) Called from within xQueueSendFromISR() when the send operation was successful.
//#define traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue) Called from within xQueueSendFromISR() when the send operation failed due to the queue already being full.
//#define traceQUEUE_RECEIVE_FROM_ISR(pxQueue) Called from within xQueueReceiveFromISR() when the receive operation was successful.
//#define traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue) Called from within xQueueReceiveFromISR() when the receive operation failed due to the queue already being empty.
//#define traceQUEUE_DELETE(pxQueue) Called from within vQueueDelete().
// Called from within xTaskCreate() when the task is successfully created.
#define traceTASK_CREATE(pxTask){ \
USARTwrite( &USART0, 13 ); \
USARTputs( &USART0, (char*)pxTask->pcTaskName );\
USARTwrite( &USART0, ((int)pxTask>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxTask>>0)&0xFF ); }
// Called from within xTaskCreate() when the task was not successfully created due to there being insufficient heap space available.
#define traceTASK_CREATE_FAILED( pxNewTCB ){ \
USARTwrite( &USART0, 14 ); \
USARTwrite( &USART0, ((int)pxNewTCB>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxNewTCB>>0)&0xFF ); }
// Called from within vTaskDelete().
#define traceTASK_DELETE(pxTask){ \
USARTwrite( &USART0, 15 ); \
USARTwrite( &USART0, ((int)pxTask>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxTask>>0)&0xFF ); }
// Called from within vTaskDelayUntil().
#define traceTASK_DELAY_UNTIL(){ \
USARTwrite( &USART0, 16 ); }
// Called from within vTaskDelay().
#define traceTASK_DELAY(){ \
USARTwrite( &USART0, 17 ); }
// Called from within vTaskPrioritySet().
#define traceTASK_PRIORITY_SET(pxTask,uxNewPriority){ \
USARTwrite( &USART0, 18 ); \
USARTwrite( &USART0, ((int)pxTask>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxTask>>0)&0xFF ); \
USARTwrite( &USART0, ((int)uxNewPriority>>0)&0xFF ); }
// Called from within vTaskSuspend().
#define traceTASK_SUSPEND(pxTask){ \
USARTwrite( &USART0, 19 ); \
USARTwrite( &USART0, ((int)pxTask>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxTask>>0)&0xFF ); }
// Called from within vTaskResume().
#define traceTASK_RESUME(pxTask){ \
USARTwrite( &USART0, 20 ); \
USARTwrite( &USART0, ((int)pxTask>>8)&0xFF ); \
USARTwrite( &USART0, ((int)pxTask>>0)&0xFF ); }
// Called from within xTaskResumeFromISR().
//#define traceTASK_RESUME_FROM_ISR(pxTask){
// USARTputs( &USART0, "TASK_RESUME_FROM_ISR\n\r" ); }
#endif
#endif