#include #include #include #include #include #include #include #include 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) { libprocess_self_init (); char commandbuf[32]; memset (commandbuf, 0, sizeof (commandbuf)); if (env_get (process_get_pgid (), "help", (void*)commandbuf, sizeof (commandbuf)) == ST_OK) { mprintf ("devices -C command\n"); mprintf ("commands: list_all\n"); return; } if (env_get (process_get_pgid (), "C", (void*)commandbuf, sizeof (commandbuf)) != ST_OK) { mprintf ("ERROR C=???. No command provided\n"); return; } if (strcmp (commandbuf, "list_all") == 0) { list_all_devices (); } }