48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#include <cmdline_parser.h>
|
|
#include <device_info.h>
|
|
#include <devices.h>
|
|
#include <malloc.h>
|
|
#include <mprintf.h>
|
|
#include <process.h>
|
|
#include <status.h>
|
|
#include <string.h>
|
|
#include <system.h>
|
|
|
|
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();
|
|
}
|
|
}
|