diff options
author | Evgeniy Alexeev <e.alekseev@k-soft-spb.ru> | 2022-10-12 10:19:45 +0300 |
---|---|---|
committer | Evgeniy Alexeev <e.alekseev@k-soft-spb.ru> | 2022-10-12 10:19:45 +0300 |
commit | 4ca788c95231709813bbe99220f93b4ef3e9c4ef (patch) | |
tree | f0ba53fe12d3e25acf9a505c05e96c16b4f2cb72 /src/host_commands.c | |
parent | 21c36beefd0304a600a2f781a60559f647d569fb (diff) | |
download | sila-shell-4ca788c95231709813bbe99220f93b4ef3e9c4ef.tar.xz |
Add host boot commands, pooulate variant functionsadd-server-commands
Diffstat (limited to 'src/host_commands.c')
-rw-r--r-- | src/host_commands.c | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/src/host_commands.c b/src/host_commands.c index df2d93a..d832ef8 100644 --- a/src/host_commands.c +++ b/src/host_commands.c @@ -1,3 +1,6 @@ +#include <stdio.h> +#include <stdbool.h> + #include "host_commands.h" static const string_quadruple_t boot_override_type_dbus = { @@ -35,9 +38,64 @@ typedef enum HOST_UNKNOWN=-1, HOST_CD, HOST_USB, - HOST_BIOS, + HOST_BOOT_OVERRIDE, + HOST_BOOT_NO_OVERRIDE, + HOST_BOOT_REGULAR, + HOST_BOOT_BIOS, + HOST_BOOT_SAFE, HOST_ONE_TIME, HOST_CONTINOUS, HOST_LEGACY, HOST_UEFI }host_command_t; + +static universal_command_t host_commands[] = { + { "cd", HOST_CD, "Boot from virtual CD-ROM"}, + { "usb", HOST_USB, "Boot from virtual USB drive"}, + { "override", HOST_BOOT_OVERRIDE, "Override host chosen boot options"}, + { "no-override", HOST_BOOT_NO_OVERRIDE, "Don't override host chosen boot options"}, + { "regular", HOST_BOOT_REGULAR, "Regular boot type"}, + { "bios", HOST_BOOT_BIOS, "Boot into BIOS"}, + { "safe", HOST_BOOT_SAFE, "Boot in safe mode"}, + { "override-once", HOST_ONE_TIME, "Override only next boot"}, + { "override-always", HOST_CONTINOUS, "Override always"}, + { "legacy", HOST_LEGACY, "Legacy type boot"}, + { "uefi", HOST_UEFI, "UEFI boot"}, + { NULL, 0, NULL } +}; + +static const command_dbus_path_t host_command_paths[] = { + { HOST_CD, &boot_override_source_dbus }, + { HOST_USB, &boot_override_source_dbus }, + { HOST_BOOT_OVERRIDE, &boot_override_enable_dbus }, + { HOST_BOOT_NO_OVERRIDE, &boot_override_enable_dbus }, + { HOST_BOOT_REGULAR, &boot_override_mode_dbus }, + { HOST_BOOT_BIOS, &boot_override_mode_dbus }, + { HOST_BOOT_SAFE, &boot_override_mode_dbus }, + { HOST_ONE_TIME, &boot_override_once_dbus }, + { HOST_CONTINOUS, &boot_override_once_dbus }, + { HOST_LEGACY, &boot_override_type_dbus }, + { HOST_UEFI, &boot_override_type_dbus }, + { 0, NULL } +}; + +static const command_dbus_member_t host_command_values[] = { + { HOST_CD, { .type="s", .string="xyz.openbmc_project.Control.Boot.Source.Sources.ExternalMedia"}}, + { HOST_USB, { .type="s", .string="xyz.openbmc_project.Control.Boot.Source.Sources.RemovableMedia"}}, + { HOST_BOOT_OVERRIDE, { .type="b", .boolean=true}}, + { HOST_BOOT_NO_OVERRIDE, { .type="b", .boolean=false}}, + { HOST_BOOT_REGULAR, { .type="s", .string="xyz.openbmc_project.Control.Boot.Mode.Modes.Regular"}}, + { HOST_BOOT_BIOS, { .type="s", .string="xyz.openbmc_project.Control.Boot.Mode.Modes.Setup"}}, + { HOST_BOOT_SAFE,{ .type="s", .string="xyz.openbmc_project.Control.Boot.Mode.Modes.Safe"}}, + { HOST_ONE_TIME, { .type="b", .boolean=true}}, + { HOST_CONTINOUS, { .type="b", .boolean=false}}, + { HOST_LEGACY, { .type="s", .string="xyz.openbmc_project.Control.Boot.Type.Types.Legacy"} }, + { HOST_UEFI, { .type="s", .string="xyz.openbmc_project.Control.Boot.Type.Types.EFI"} }, + { 0, {.type=NULL, .integer=0}} +}; + +int com_boot( char *arg ) +{ + //if(strcmp(arg, "status")==0)return power_status(); + return com_dbus_property(arg, host_commands, host_command_paths, host_command_values); +} |