devices utility app
This commit is contained in:
50
devices/devices.c
Normal file
50
devices/devices.c
Normal file
@@ -0,0 +1,50 @@
|
||||
#include <device_info.h>
|
||||
#include <devices.h>
|
||||
#include <malloc.h>
|
||||
#include <mprintf.h>
|
||||
#include <process_self.h>
|
||||
#include <status.h>
|
||||
#include <string.h>
|
||||
#include <system.h>
|
||||
|
||||
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 ();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user