Ich muss gestehen, ich habe gar nicht gewusst, dass es den /stats Endpunkt gibt. Ich habe mir die Statistiken in /info ausgegeben. Naja, dadurch weiß ich nun wenigstens, was die ganzen Zahlen bedeuten. Außerdem kann ich euch folgenden Code-Snippet
präsentieren:
Log_Println("returning tasks info", LOGLEVEL_DEBUG);
TaskStatus_t task_status_arr[20];
uint32_t pulTotalRunTime;
uint32_t taskNum = uxTaskGetNumberOfTasks();
Log_Printf(LOGLEVEL_DEBUG, "number of tasks: %u", taskNum);
uxTaskGetSystemState(task_status_arr, 20, &pulTotalRunTime);
JsonObject tasksObj = infoObj.createNestedObject("tasks");
tasksObj["taskCount"] = taskNum;
tasksObj["totalRunTime"] = pulTotalRunTime;
JsonArray tasksList = tasksObj.createNestedArray("tasksList");
for(int i = 0; i<taskNum; i++) {
Log_Printf(LOGLEVEL_DEBUG, "in tasks stats loop: %d", i);
Log_Printf(LOGLEVEL_DEBUG, "in tasks stats loop: %s", task_status_arr[i].pcTaskName);
JsonObject taskObj = tasksList.createNestedObject();
float ulStatsAsPercentage =
100.f * ((float) task_status_arr[i].ulRunTimeCounter / (float) pulTotalRunTime);
taskObj["name"] = task_status_arr[i].pcTaskName;
taskObj["runtimeCounter"] = task_status_arr[i].ulRunTimeCounter;
taskObj["core"] = task_status_arr[i].xCoreID;
taskObj["runtimePercentage"] = ulStatsAsPercentage;
taskObj["stackHighWaterMark"] = task_status_arr[i].usStackHighWaterMark;
}
Findige Frontend Freunde könnten sich nun ein Javascript Programm schreiben, welches das JSON alle paar Sekunden abfragt, die Differenz zum letzten Wert bildet und je nach Motivation die aktuelle Auslastung oder einen Graphen anzeigen.