diff options
author | Evgeniy Alexeev <e.alekseev@k-soft-spb.ru> | 2022-10-06 16:23:42 +0300 |
---|---|---|
committer | Evgeniy Alexeev <e.alekseev@k-soft-spb.ru> | 2022-10-06 16:23:42 +0300 |
commit | 94427ebcf778a2c0cc148c0344002491abdb052c (patch) | |
tree | 0800fead8595750dbc8a236941cf7f4fd4e9fed9 | |
parent | 6888ffd32af65cb984792a47f65983207c00467e (diff) | |
download | sila-shell-94427ebcf778a2c0cc148c0344002491abdb052c.tar.xz |
Add server power commands help
-rw-r--r-- | src/power_commands.c | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/src/power_commands.c b/src/power_commands.c index 40684fd..144dbe8 100644 --- a/src/power_commands.c +++ b/src/power_commands.c @@ -17,13 +17,14 @@ typedef struct const char* fourth; }string_quadruple_t; -const string_quadruple_t chassis_dbus = { + +static const string_quadruple_t chassis_dbus = { "xyz.openbmc_project.State.Chassis", "/xyz/openbmc_project/state/chassis0", "xyz.openbmc_project.State.Chassis", "RequestedPowerTransition"}; -const string_quadruple_t host_dbus = { +static const string_quadruple_t host_dbus = { "xyz.openbmc_project.State.Host", "/xyz/openbmc_project/state/host0", "xyz.openbmc_project.State.Host", @@ -40,27 +41,42 @@ typedef enum POWER_RESET_FORCE }power_command_t; +static struct +{ + const char* name; + power_command_t command; + const char* help; +} commands[] = { + {"on-graceful", POWER_ON_GRACEFUL, "Graceful Power On"}, + {"on", POWER_ON_GRACEFUL, "Graceful Power On"}, + {"on-force", POWER_ON_FORCE, "Force Power On"}, + { "off-graceful", POWER_OFF_GRACEFUL, "Graceful Power Off"}, + { "off", POWER_OFF_GRACEFUL, "Graceful Power Off"}, + { "off-force", POWER_OFF_FORCE, "Force Power Off"}, + { "reset-graceful", POWER_RESET_GRACEFUL, "Graceful Reset"}, + { "reset", POWER_RESET_GRACEFUL, "Graceful Reset"}, + { "reset-force", POWER_RESET_FORCE, "Force Reset"} +}; + +static void print_power_help() +{ + printf("Power commands list: \n"); + for(int i=0;i<(sizeof(commands)/sizeof(commands[0]));i++) + { + printf("\t %s - %s \n", commands[i].name, commands[i].help); + } + +} + static power_command_t parse_power_command(const char* command) { - if(strcmp(command,"on-graceful")==0) - return POWER_ON_GRACEFUL; - if(strcmp(command,"on")==0) - return POWER_ON_GRACEFUL; - if(strcmp(command,"on-force")==0) - return POWER_ON_FORCE; - if(strcmp(command,"off-graceful")==0) - return POWER_OFF_GRACEFUL; - if(strcmp(command,"off")==0) - return POWER_OFF_GRACEFUL; - if(strcmp(command,"off-force")==0) - return POWER_OFF_FORCE; - if(strcmp(command,"reset-graceful")==0) - return POWER_RESET_GRACEFUL; - if(strcmp(command,"reset")==0) - return POWER_RESET_GRACEFUL; - if(strcmp(command,"reset-force")==0) - return POWER_RESET_FORCE; - return POWER_UNKNOWN; + power_command_t result = POWER_UNKNOWN; + for(int i=0;i<(sizeof(commands)/sizeof(commands[0]));i++) + { + if(strcmp(command, commands[i].name)==0) + result = commands[i].command; + } + return result; } const string_quadruple_t* get_dbus_power_interface(power_command_t cmd) @@ -103,6 +119,7 @@ int com_power( char *arg ) power_command_t cmd = parse_power_command(arg); if(cmd==POWER_UNKNOWN) { fprintf(stderr, "Unknown command: %s\n", arg); + print_power_help(); return -EOPNOTSUPP; } const string_quadruple_t* dbus_power_interface = get_dbus_power_interface(cmd); |