|
28 | 28 | #if MICROPY_PY_RTTHREAD |
29 | 29 |
|
30 | 30 | #include <rtthread.h> |
| 31 | +#include <string.h> |
31 | 32 |
|
32 | 33 | #include "py/runtime.h" |
33 | 34 |
|
@@ -61,18 +62,39 @@ STATIC mp_obj_t mod_stacks_analyze(void) { |
61 | 62 | } |
62 | 63 | STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_stacks_analyze_obj, mod_stacks_analyze); |
63 | 64 |
|
64 | | -STATIC mp_obj_t mp_os_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { |
65 | | - //TODO |
66 | | - MP_RTT_NOT_IMPL_PRINT; |
67 | | - return mp_const_none; |
| 65 | +STATIC mp_obj_t mod_list_device(void) { |
| 66 | + struct rt_device *device; |
| 67 | + struct rt_list_node *node; |
| 68 | + rt_ubase_t level; |
| 69 | + |
| 70 | + struct rt_object_information *info = rt_object_get_information(RT_Object_Class_Device); |
| 71 | + struct rt_list_node *list = &info->object_list; |
| 72 | + mp_obj_t mp_list = mp_obj_new_list(0, NULL); |
| 73 | + |
| 74 | + rt_enter_critical(); |
| 75 | + |
| 76 | + for (node = list->next; node != list; node = node->next) |
| 77 | + { |
| 78 | + device = (struct rt_device *)(rt_list_entry(node, struct rt_object, list)); |
| 79 | + |
| 80 | + mp_obj_tuple_t *t = mp_obj_new_tuple(2, NULL); |
| 81 | + t->items[0] = mp_obj_new_str(device->parent.name, strlen((char *)device->parent.name)); |
| 82 | + t->items[1] = MP_OBJ_NEW_SMALL_INT((device->type <= RT_Device_Class_Unknown) ? device->type : RT_Device_Class_Unknown); |
| 83 | + mp_obj_list_append(mp_list, MP_OBJ_FROM_PTR(t)); |
| 84 | + } |
| 85 | + |
| 86 | + rt_exit_critical(); |
| 87 | + |
| 88 | + return mp_list; |
68 | 89 | } |
69 | | -MP_DEFINE_CONST_FUN_OBJ_KW(mp_os_mount_obj, 2, mp_os_mount); |
| 90 | +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_list_device_obj, mod_list_device); |
70 | 91 |
|
71 | 92 | STATIC const mp_rom_map_elem_t mp_module_rtthread_globals_table[] = { |
72 | 93 | { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rtthread) }, |
73 | 94 | { MP_ROM_QSTR(MP_QSTR_is_preempt_thread), MP_ROM_PTR(&mod_is_preempt_thread_obj) }, |
74 | 95 | { MP_ROM_QSTR(MP_QSTR_current_tid), MP_ROM_PTR(&mod_current_tid_obj) }, |
75 | 96 | { MP_ROM_QSTR(MP_QSTR_stacks_analyze), MP_ROM_PTR(&mod_stacks_analyze_obj) }, |
| 97 | + { MP_ROM_QSTR(MP_QSTR_list_device), MP_ROM_PTR(&mod_list_device_obj) }, |
76 | 98 | }; |
77 | 99 |
|
78 | 100 | STATIC MP_DEFINE_CONST_DICT(mp_module_rtthread_globals, mp_module_rtthread_globals_table); |
|
0 commit comments