summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Alexeev <e.alekseev@k-soft-spb.ru>2022-10-06 16:23:42 +0300
committerEvgeniy Alexeev <e.alekseev@k-soft-spb.ru>2022-10-06 16:23:42 +0300
commit94427ebcf778a2c0cc148c0344002491abdb052c (patch)
tree0800fead8595750dbc8a236941cf7f4fd4e9fed9
parent6888ffd32af65cb984792a47f65983207c00467e (diff)
downloadsila-shell-94427ebcf778a2c0cc148c0344002491abdb052c.tar.xz
Add server power commands help
-rw-r--r--src/power_commands.c59
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);