diff --git a/pycardium/modules/os.c b/pycardium/modules/os.c index e5c625ef4f2dde5e138a08a28591935cb7fc0f97..dbac311c924dbcf17d7ad1fe7a3a01061d352605 100644 --- a/pycardium/modules/os.c +++ b/pycardium/modules/os.c @@ -89,12 +89,43 @@ static mp_obj_t mp_os_unlink(mp_obj_t py_path) } static MP_DEFINE_CONST_FUN_OBJ_1(unlink_obj, mp_os_unlink); +enum usb_config_device { + USB_Device_None, + USB_Device_Flash, + USB_Device_Serial, +}; + +static mp_obj_t mp_os_usbconfig(mp_obj_t dev) +{ + int device = mp_obj_get_int(dev); + switch (device) { + case USB_Device_None: + epic_usb_shutdown(); + break; + case USB_Device_Flash: + epic_usb_storage(); + break; + case USB_Device_Serial: + epic_usb_cdcacm(); + break; + default: + mp_raise_ValueError("Invalid parameter"); + } + return mp_const_none; +} +static MP_DEFINE_CONST_FUN_OBJ_1(usbconfig_obj, mp_os_usbconfig); + static const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_os) }, { MP_ROM_QSTR(MP_QSTR_exit), MP_ROM_PTR(&exit_obj) }, { MP_ROM_QSTR(MP_QSTR_exec), MP_ROM_PTR(&exec_obj) }, { MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&listdir_obj) }, { MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&unlink_obj) }, + { MP_ROM_QSTR(MP_QSTR_usbconfig), MP_ROM_PTR(&usbconfig_obj) }, + + { MP_ROM_QSTR(MP_QSTR_SERIAL), MP_ROM_INT(USB_Device_None) }, + { MP_ROM_QSTR(MP_QSTR_FLASH), MP_ROM_INT(USB_Device_Flash) }, + { MP_ROM_QSTR(MP_QSTR_NONE), MP_ROM_INT(USB_Device_Serial) }, }; static MP_DEFINE_CONST_DICT(os_module_globals, os_module_globals_table); diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h index 49ad16f40b8dd7ae88e4a756be3270739b7625d8..6d195bf80ec3feac15816a3b831cb41f0620403b 100644 --- a/pycardium/modules/qstrdefs.h +++ b/pycardium/modules/qstrdefs.h @@ -100,6 +100,10 @@ Q(exit) Q(exec) Q(listdir) Q(unlink) +Q(usbconfig) +Q(FLASH) +Q(SERIAL) +Q(NONE) /* gpio */ Q(gpio)