#include #include #include #include #include #include #include #include #include static bool cmdline_list_all = false; static struct cmdline_opt cmdline_opts[] = { CMDLINE_OPT("la", "list-all", CMDLINE_OPT_VALUE_BOOL, false, &cmdline_list_all), CMDLINE_END(), }; static const char* device_types_str[] = { [DEVICE_TYPE_DEBUGCONSOLE] = "Debug console", [DEVICE_TYPE_TERMINAL] = "System terminal", [DEVICE_TYPE_KEYBOARD] = "Keyboard", [DEVICE_TYPE_DRIVE] = "Drive", [DEVICE_TYPE_USB_CTRL] = "USB controller", }; static void list_all_devices(void) { struct device_info* infos = malloc(sizeof(struct device_info) * 1024); memset(infos, 0, sizeof(struct device_info) * 1024); int device_count = get_device_info(infos, 1024); mprintf("%-30s %-20s\n", "NAME", "TYPE"); for (int dev = 0; dev < device_count; dev++) { struct device_info* info = &infos[dev]; mprintf("%-30s %-20s\n", info->key, device_types_str[info->type]); } } void app_main(void) { if (cmdline_parse(get_cmdline(), cmdline_opts) < 0) { mprintf("Failed to parse commandline arguments\n"); return; } if (cmdline_list_all) { list_all_devices(); } }