@@ -212,6 +212,49 @@ static mp_obj_t esp32_idf_heap_info(const mp_obj_t cap_in) {
212
212
}
213
213
static MP_DEFINE_CONST_FUN_OBJ_1 (esp32_idf_heap_info_obj , esp32_idf_heap_info ) ;
214
214
215
+ #if CONFIG_FREERTOS_USE_TRACE_FACILITY
216
+ static mp_obj_t esp32_idf_task_info (void ) {
217
+ const size_t task_count_max = uxTaskGetNumberOfTasks ();
218
+ TaskStatus_t * task_array = m_new (TaskStatus_t , task_count_max );
219
+ uint32_t total_time ;
220
+ const size_t task_count = uxTaskGetSystemState (task_array , task_count_max , & total_time );
221
+
222
+ mp_obj_list_t * task_list = MP_OBJ_TO_PTR (mp_obj_new_list (task_count , NULL ));
223
+ for (size_t i = 0 ; i < task_count ; i ++ ) {
224
+ mp_obj_t task_data [] = {
225
+ mp_obj_new_int_from_uint ((mp_uint_t )task_array [i ].xHandle ),
226
+ mp_obj_new_str (task_array [i ].pcTaskName , strlen (task_array [i ].pcTaskName )),
227
+ MP_OBJ_NEW_SMALL_INT (task_array [i ].eCurrentState ),
228
+ MP_OBJ_NEW_SMALL_INT (task_array [i ].uxCurrentPriority ),
229
+ #if CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
230
+ mp_obj_new_int_from_uint (task_array [i ].ulRunTimeCounter ),
231
+ #else
232
+ mp_const_none ,
233
+ #endif
234
+ mp_obj_new_int_from_uint (task_array [i ].usStackHighWaterMark ),
235
+ #if CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
236
+ MP_OBJ_NEW_SMALL_INT (task_array [i ].xCoreID ),
237
+ #else
238
+ mp_const_none ,
239
+ #endif
240
+ };
241
+ task_list -> items [i ] = mp_obj_new_tuple (7 , task_data );
242
+ }
243
+
244
+ m_del (TaskStatus_t , task_array , task_count_max );
245
+ mp_obj_t task_stats [] = {
246
+ #if CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
247
+ MP_OBJ_NEW_SMALL_INT (total_time ),
248
+ #else
249
+ mp_const_none ,
250
+ #endif
251
+ task_list
252
+ };
253
+ return mp_obj_new_tuple (2 , task_stats );
254
+ }
255
+ static MP_DEFINE_CONST_FUN_OBJ_0 (esp32_idf_task_info_obj , esp32_idf_task_info );
256
+ #endif
257
+
215
258
static const mp_rom_map_elem_t esp32_module_globals_table [] = {
216
259
{ MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_esp32 ) },
217
260
@@ -228,6 +271,9 @@ static const mp_rom_map_elem_t esp32_module_globals_table[] = {
228
271
{ MP_ROM_QSTR (MP_QSTR_mcu_temperature ), MP_ROM_PTR (& esp32_mcu_temperature_obj ) },
229
272
#endif
230
273
{ MP_ROM_QSTR (MP_QSTR_idf_heap_info ), MP_ROM_PTR (& esp32_idf_heap_info_obj ) },
274
+ #if CONFIG_FREERTOS_USE_TRACE_FACILITY
275
+ { MP_ROM_QSTR (MP_QSTR_idf_task_info ), MP_ROM_PTR (& esp32_idf_task_info_obj ) },
276
+ #endif
231
277
232
278
{ MP_ROM_QSTR (MP_QSTR_NVS ), MP_ROM_PTR (& esp32_nvs_type ) },
233
279
{ MP_ROM_QSTR (MP_QSTR_Partition ), MP_ROM_PTR (& esp32_partition_type ) },
0 commit comments