@@ -207,28 +207,50 @@ bool SystemInfo::sortById(const TaskStatus_t& lhs, const TaskStatus_t& rhs) {
207207std::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