HVAC_M7_MONO/MODULES/HVAC_M7_Command/TasksInfo.c

60 lines
1.5 KiB
C

//
// Created by cfif on 17.12.2024.
//
#include <stdio.h>
#include <string.h>
#include "CommandLines.h"
#include "CliRedirectTable.h"
#include "CmsisRtosThreadUtils.h"
#include "LoggerInterface.h"
char bufSprintf[1024];
const char* eTaskState_Strings[] = {
"Running",
"Ready",
"Blocked",
"Suspended",
"Deleted",
"Invalid"
};
int32_t vTaskGetRunTime(void *env, tCliCmd *cli) {
tCommandLine *envCommandLine = env;
volatile UBaseType_t uxArraySize, x;
uxArraySize = uxTaskGetNumberOfTasks();
TaskStatus_t pxTaskStatusArray[uxArraySize];
uxArraySize = uxTaskGetSystemState((void *) pxTaskStatusArray, uxArraySize, NULL);
uint16_t p = 1;
bufSprintf[0] = '\n';
for (x = 0; x < uxArraySize; x++) {
sprintf(&bufSprintf[p], "%lu\t%d\t%s\t%s\n",
pxTaskStatusArray[x].xTaskNumber,
pxTaskStatusArray[x].usStackHighWaterMark,
eTaskState_Strings[pxTaskStatusArray[x].eCurrentState],
pxTaskStatusArray[x].pcTaskName);
p = strlen(bufSprintf);
}
CliCmd_Print(cli, bufSprintf, p);
sprintf(bufSprintf, "Free Heap Size = %u bytes\n", (unsigned int)xPortGetFreeHeapSize());
p = strlen(bufSprintf);
CliCmd_Print(cli, bufSprintf, p);
sprintf(bufSprintf, "Free Logger Buf Size = %u\n", MAX_COUNT_BUF_LOG - (unsigned int)envCommandLine->loggerToSerialPort->countBufLoggerNames);
p = strlen(bufSprintf);
CliCmd_Print(cli, bufSprintf, p);
return 0;
}