Skip to content

Commit a69be15

Browse files
Riksu9000JF002
authored andcommitted
Add task state info to SystemInfo
1 parent 7a6cead commit a69be15

1 file changed

Lines changed: 32 additions & 10 deletions

File tree

src/displayapp/screens/SystemInfo.cpp

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,28 +207,50 @@ bool SystemInfo::sortById(const TaskStatus_t& lhs, const TaskStatus_t& rhs) {
207207
std::unique_ptr<Screen> SystemInfo::CreateScreen4() {
208208
TaskStatus_t tasksStatus[7];
209209
lv_obj_t* infoTask = lv_table_create(lv_scr_act(), NULL);
210-
lv_table_set_col_cnt(infoTask, 3);
210+
lv_table_set_col_cnt(infoTask, 4);
211211
lv_table_set_row_cnt(infoTask, 8);
212-
lv_obj_set_pos(infoTask, 10, 10);
212+
lv_obj_set_pos(infoTask, 0, 10);
213213

214214
lv_table_set_cell_value(infoTask, 0, 0, "#");
215-
lv_table_set_col_width(infoTask, 0, 50);
216-
lv_table_set_cell_value(infoTask, 0, 1, "Task");
217-
lv_table_set_col_width(infoTask, 1, 80);
218-
lv_table_set_cell_value(infoTask, 0, 2, "Free");
219-
lv_table_set_col_width(infoTask, 2, 90);
215+
lv_table_set_col_width(infoTask, 0, 30);
216+
lv_table_set_cell_value(infoTask, 0, 1, "S"); // State
217+
lv_table_set_col_width(infoTask, 1, 30);
218+
lv_table_set_cell_value(infoTask, 0, 2, "Task");
219+
lv_table_set_col_width(infoTask, 2, 80);
220+
lv_table_set_cell_value(infoTask, 0, 3, "Free");
221+
lv_table_set_col_width(infoTask, 3, 90);
220222

221223
auto nb = uxTaskGetSystemState(tasksStatus, 7, nullptr);
222224
std::sort(tasksStatus, tasksStatus + nb, sortById);
223225
for (uint8_t i = 0; i < nb; i++) {
224226

225227
lv_table_set_cell_value(infoTask, i + 1, 0, std::to_string(tasksStatus[i].xTaskNumber).c_str());
226-
lv_table_set_cell_value(infoTask, i + 1, 1, tasksStatus[i].pcTaskName);
228+
char state[2] = {0};
229+
switch (tasksStatus[i].eCurrentState) {
230+
case eReady:
231+
case eRunning:
232+
state[0] = 'R';
233+
break;
234+
case eBlocked:
235+
state[0] = 'B';
236+
break;
237+
case eSuspended:
238+
state[0] = 'S';
239+
break;
240+
case eDeleted:
241+
state[0] = 'D';
242+
break;
243+
default:
244+
state[0] = 'I'; // Invalid
245+
break;
246+
}
247+
lv_table_set_cell_value(infoTask, i + 1, 1, state);
248+
lv_table_set_cell_value(infoTask, i + 1, 2, tasksStatus[i].pcTaskName);
227249
if (tasksStatus[i].usStackHighWaterMark < 20) {
228250
std::string str1 = std::to_string(tasksStatus[i].usStackHighWaterMark) + " low";
229-
lv_table_set_cell_value(infoTask, i + 1, 2, str1.c_str());
251+
lv_table_set_cell_value(infoTask, i + 1, 3, str1.c_str());
230252
} else {
231-
lv_table_set_cell_value(infoTask, i + 1, 2, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str());
253+
lv_table_set_cell_value(infoTask, i + 1, 3, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str());
232254
}
233255
}
234256
return std::make_unique<Screens::Label>(3, 5, app, infoTask);

0 commit comments

Comments
 (0)