summaryrefslogtreecommitdiff
path: root/src/power_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/power_commands.c')
-rw-r--r--src/power_commands.c70
1 files changed, 69 insertions, 1 deletions
diff --git a/src/power_commands.c b/src/power_commands.c
index 4000733..9c98a25 100644
--- a/src/power_commands.c
+++ b/src/power_commands.c
@@ -2,8 +2,9 @@
#include <string.h>
#include <errno.h>
-#include "d_bus_commands.h"
+#include "utils.h"
+#include "d_bus_commands.h"
#include "power_commands.h"
static const string_quadruple_t chassis_dbus = {
@@ -100,12 +101,79 @@ const command_dbus_member_t power_command_policy_values[] = {
{ 0, NULL }
};
+int com_status(const universal_command_t *commands, const command_dbus_path_t * paths, const command_dbus_member_t * values)
+{
+ for(const command_dbus_path_t * cur_path = paths;cur_path->path !=NULL; cur_path++)
+ {
+ _cleanup_string_ char * value = dbus_get_property_string(cur_path->path);
+ if(!value)continue;
+ const command_dbus_member_t* member = get_dbus_command_by_member(value, values);
+ if(!member)continue;
+ const universal_command_t* cur_cmd = get_command_by_enum(member->command, commands);
+ if(!cur_cmd)
+ continue;
+ printf("Current status: %s - %s\n", cur_cmd->name, cur_cmd->help);
+
+ }
+ return 0;
+}
+
+static int power_status()
+{
+
+ _cleanup_string_ char * host_value = dbus_get_property_string(&host_dbus);
+ if(!host_value)
+ return -EOPNOTSUPP;
+ const command_dbus_member_t* member = get_dbus_command_by_member(host_value, power_command_values);
+ if(!member)
+ return -EOPNOTSUPP;
+ const universal_command_t* cur_cmd = get_command_by_enum(member->command, power_commands);
+ if(!cur_cmd)
+ return -EOPNOTSUPP;
+ printf("Power status: \n");
+ printf("\tHost: %s - %s\n", cur_cmd->name, cur_cmd->help);
+ _cleanup_string_ char * chassis_value = dbus_get_property_string(&chassis_dbus);
+ if(!host_value)
+ return -EOPNOTSUPP;
+ member = get_dbus_command_by_member(host_value, power_command_values);
+ if(!member)
+ return -EOPNOTSUPP;
+ cur_cmd = get_command_by_enum(member->command, power_commands);
+ if(!cur_cmd)
+ return -EOPNOTSUPP;
+
+ printf("\tChassis: %s - %s\n", cur_cmd->name, cur_cmd->help);
+
+
+ return 0;
+}
+
+static int power_policy_status()
+{
+
+ _cleanup_string_ char * host_value = dbus_get_property_string(&host_dbus);
+ if(!host_value)
+ return -EOPNOTSUPP;
+ const command_dbus_member_t* member = get_dbus_command_by_member(host_value, power_command_values);
+ if(!member)
+ return -EOPNOTSUPP;
+ const universal_command_t* cur_cmd = get_command_by_enum(member->command, power_commands);
+ if(!cur_cmd)
+ return -EOPNOTSUPP;
+ printf("Power policy tatus: \n");
+ printf("\tHost: %s - %s\n", cur_cmd->name, cur_cmd->help);
+
+ return 0;
+}
+
int com_power( char *arg )
{
+ power_status();
return com_dbus_property(arg, power_commands, power_command_paths, power_command_values);
}
int com_power_policy( char* arg )
{
+ power_policy_status();
return com_dbus_property(arg, power_policy_commands, power_command_policy_paths, power_command_policy_values);
}