diff options
Diffstat (limited to 'src/power_commands.c')
-rw-r--r-- | src/power_commands.c | 70 |
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); } |