#include #include #include #include #include #include "utils.h" #include "d_bus_variant.h" #include "d_bus.h" int dbus_set_property_string(const string_quadruple_t* path, const char* value) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; _cleanup_bus_unref_ sd_bus *bus = NULL; int r; /* Connect to the system bus */ r = sd_bus_open_system(&bus); if (r >= 0) { r = sd_bus_set_property( bus, path->first, path->second, path->third, path->fourth, &error, "s", value); } if (r < 0) { fprintf(stderr, "Failed to issue dbus call: %d %s\n", r, error.message); } return (r>0?(0):(r)); } int dbus_set_property(const string_quadruple_t* path, dbus_value_variant_t value) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; _cleanup_bus_unref_ sd_bus *bus = NULL; int r; /* Connect to the system bus */ r = sd_bus_open_system(&bus); if (r >= 0) { if(strcmp(value.type, "s") ==0 ) { r = sd_bus_set_property( bus, path->first, path->second, path->third, path->fourth, &error, value.type, value.string); } else if(strcmp(value.type, "b") ==0 ) { r = sd_bus_set_property( bus, path->first, path->second, path->third, path->fourth, &error, value.type, value.boolean); } else { fprintf(stderr, "Failed to find type: %s\n", value.type); return -EOPNOTSUPP; } } if (r < 0) { fprintf(stderr, "Failed to issue dbus call: %d %s\n", r, error.message); } return (r>0?(0):(r)); } char* dbus_get_property_string(const string_quadruple_t* path ) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; _cleanup_bus_unref_ sd_bus *bus = NULL; char *state = NULL; int r; /* Connect to the system bus */ r = sd_bus_open_system(&bus); if (r >= 0) { r = sd_bus_get_property_string( bus, path->first, path->second, path->third, path->fourth, &error, &state); /* Issue the method call and store the respons message in m */ } if (r < 0) { fprintf(stderr, "Failed to issue dbus call: %d %s\n", r, error.message); } return (r>=0?(state):(NULL)); }