diff --git a/pycardium/modules/os.c b/pycardium/modules/os.c index 874a069322faaefaff63c493ebb10d3aa8ffb382..1633def0d9ea69dece38040f304445153295e21d 100644 --- a/pycardium/modules/os.c +++ b/pycardium/modules/os.c @@ -182,6 +182,31 @@ static mp_obj_t mp_os_urandom(mp_obj_t size_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } static MP_DEFINE_CONST_FUN_OBJ_1(urandom_obj, mp_os_urandom); +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) }, @@ -194,6 +219,11 @@ static const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&rename_obj) }, { MP_ROM_QSTR(MP_QSTR_read_battery), MP_ROM_PTR(&read_battery_obj) }, { MP_ROM_QSTR(MP_QSTR_urandom), MP_ROM_PTR(&urandom_obj) }, + { MP_ROM_QSTR(MP_QSTR_usbconfig), MP_ROM_PTR(&usbconfig_obj) }, + + { MP_ROM_QSTR(MP_QSTR_SERIAL), MP_ROM_INT(USB_Device_Serial) }, + { MP_ROM_QSTR(MP_QSTR_FLASH), MP_ROM_INT(USB_Device_Flash) }, + { MP_ROM_QSTR(MP_QSTR_NONE), MP_ROM_INT(USB_Device_None) }, }; 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 c5813602f9990763e91c17dc25746f59e83eb07c..2cf62ed1223632e9508f684f6ff0fbade9fd7c29 100644 --- a/pycardium/modules/qstrdefs.h +++ b/pycardium/modules/qstrdefs.h @@ -137,6 +137,10 @@ Q(mkdir) Q(rename) Q(read_battery) Q(urandom) +Q(usbconfig) +Q(FLASH) +Q(SERIAL) +Q(NONE) /* gpio */ Q(gpio)