/********************************************************************* // <pcTaskName[0]), \ pxNewTCB->uxPriority, \ (U32)pxNewTCB->pxStack, \ ((U32)pxNewTCB->pxTopOfStack - (U32)pxNewTCB->pxStack) \ ); \ } #else #define traceTASK_CREATE(pxNewTCB) if (pxNewTCB != NULL) { \ SEGGER_SYSVIEW_OnTaskCreate((U32)pxNewTCB); \ SYSVIEW_AddTask((U32)pxNewTCB, \ &(pxNewTCB->pcTaskName[0]), \ pxNewTCB->uxPriority, \ (U32)pxNewTCB->pxStack, \ (U32)(pxNewTCB->pxStack-pxNewTCB->pxTopOfStack) \ ); \ } #endif #if 0 /* << EST */ #define traceTASK_PRIORITY_SET(pxTask, uxNewPriority) { \ SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET+apiID_VTASKPRIORITYSET, \ SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), \ uxNewPriority \ ); \ SYSVIEW_UpdateTask((U32)pxTask, \ &(pxTask->pcTaskName[0]), \ uxNewPriority, \ (U32)pxTask->pxStack, \ 0 \ ); \ } #else /* << EST */ #define traceTASK_PRIORITY_SET(pxTask, uxNewPriority) { \ SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET+apiID_VTASKPRIORITYSET, \ SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), \ uxNewPriority \ ); \ SYSVIEW_UpdateTask((U32)pxTask, \ &(pxTask->pcTaskName[0]), \ uxNewPriority, \ (U32)pxTask->pxStack, \ (portSTACK_GROWTH<0)? \ (U32)(pxTask->pxTopOfStack-pxTask->pxStack)\ :(U32)(pxTask->pxStack-pxTask->pxTopOfStack)\ ); \ } #endif /* << EST */ // // Define INCLUDE_xTaskGetIdleTaskHandle as 1 in FreeRTOSConfig.h to allow identification of Idle state. // #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) #define traceTASK_SWITCHED_IN() if(prvGetTCBFromHandle(NULL) == xIdleTaskHandles[0]) { \ SEGGER_SYSVIEW_OnIdle(); \ } else { \ SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB); \ } #else #define traceTASK_SWITCHED_IN() { \ if (memcmp(pxCurrentTCB->pcTaskName, "IDLE", 5) != 0) { \ SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB); \ } else { \ SEGGER_SYSVIEW_OnIdle(); \ } \ } #endif #if 1 /* << EST */ #define traceMOVED_TASK_TO_READY_STATE(pxTCB) #define tracePOST_MOVED_TASK_TO_READY_STATE(pxTCB) SEGGER_SYSVIEW_OnTaskStartReady((U32)pxTCB) #else #define traceMOVED_TASK_TO_READY_STATE(pxTCB) SEGGER_SYSVIEW_OnTaskStartReady((U32)pxTCB) #endif #define traceREADDED_TASK_TO_READY_STATE(pxTCB) #define traceMOVED_TASK_TO_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB, (1u << 2)) #define traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB, (1u << 2)) #define traceMOVED_TASK_TO_SUSPENDED_LIST(pxTCB) SEGGER_SYSVIEW_OnTaskStopReady((U32)pxTCB, ((3u << 3) | 3)) #if McuSystemView_CONFIG_GENERATE_ISR_EVENTS /* << EST */ #define traceISR_EXIT_TO_SCHEDULER() SEGGER_SYSVIEW_RecordExitISRToScheduler() #define traceISR_EXIT() SEGGER_SYSVIEW_RecordExitISR() #define traceISR_ENTER() SEGGER_SYSVIEW_RecordEnterISR() #endif /* #if McuSystemView_CONFIG_GENERATE_QUEUE_EVENTS */ #endif /* configUSE_SEGGER_SYSTEM_VIEWER_HOOKS */ /* << EST */ /********************************************************************* * * API functions * ********************************************************************** */ #ifdef __cplusplus extern "C" { #endif void SYSVIEW_AddTask (U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark); void SYSVIEW_UpdateTask (U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark); void SYSVIEW_DeleteTask (U32 xHandle); void SYSVIEW_SendTaskInfo (U32 TaskID, const char* sName, unsigned Prio, U32 StackBase, unsigned StackSize); #ifdef __cplusplus } #endif #endif /*************************** End of file ****************************/