#include #include #include "host_commands.h" static const string_quadruple_t boot_override_type_dbus = { "xyz.openbmc_project.Settings", "/xyz/openbmc_project/control/host0/boot", "xyz.openbmc_project.Control.Boot.Type", "BootType"}; static const string_quadruple_t boot_override_mode_dbus = { "xyz.openbmc_project.Settings", "/xyz/openbmc_project/control/host0/boot", "xyz.openbmc_project.Control.Boot.Mode", "BootMode"}; static const string_quadruple_t boot_override_source_dbus = { "xyz.openbmc_project.Settings", "/xyz/openbmc_project/control/host0/boot", "xyz.openbmc_project.Control.Boot.Source", "BootSource"}; static const string_quadruple_t boot_override_enable_dbus = { "xyz.openbmc_project.Settings", "/xyz/openbmc_project/control/host0/boot", "xyz.openbmc_project.Object.Enable", "Enabled"}; static const string_quadruple_t boot_override_once_dbus = { "xyz.openbmc_project.Settings", "/xyz/openbmc_project/control/host0/boot/one_time", "xyz.openbmc_project.Object.Enable", "Enabled"}; typedef enum { HOST_UNKNOWN=-1, HOST_CD, HOST_USB, 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); }