return g_variant_new("(i)", ret);
}
+// devicectl power suspend
+// devicectl power resume
+static GVariant *dbus_power_change_state_with_reason(GDBusConnection *conn,
+ const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
+ GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data)
+{
+ uint64_t next;
+ int reason;
+
+ g_variant_get(param, "(ti)", &next, &reason);
+ power_request_change_state(next, reason);
+
+ return gdbus_new_g_variant_tuple();
+}
+
static GVariant *dbus_power_get_state(GDBusConnection *conn,
const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data)
{ "RemoveChangeTransientStateWait", "t", NULL, dbus_power_remove_change_transient_state_wait },
{ "ConfirmChangeStateWait", "t", "i", dbus_power_confirm_change_state_wait },
{ "PowerChangeState", "t", "i", dbus_power_change_state },
+ { "PowerChangeStateWithReason", "ti", NULL, dbus_power_change_state_with_reason },
{ "PowerGetState", NULL, "t", dbus_power_get_state },
{ "PowerGetWakeupReason", NULL, "i", dbus_power_get_wakeup_reason },
/* Add methods here */
#include <libsyscommon/libgdbus.h>
#include <shared/common.h>
#include "usb.h"
+#include "power/power.h"
+
/*
* devicectl [device] [action]
return ret;
}
+static int power_suspend(char **args)
+{
+ gdbus_call_sync_with_reply(DEVICED_BUS_NAME,
+ DEVICED_PATH_POWER,
+ DEVICED_INTERFACE_POWER,
+ "PowerChangeStateWithReason",
+ g_variant_new("(ti)", DEVICED_POWER_STATE_SLEEP, atoi(args[3])),
+ NULL);
+
+ return 0;
+}
+
+static int power_resume(char **args)
+{
+ gdbus_call_sync_with_reply(DEVICED_BUS_NAME,
+ DEVICED_PATH_POWER,
+ DEVICED_INTERFACE_POWER,
+ "PowerChangeStateWithReason",
+ g_variant_new("(ti)", DEVICED_POWER_STATE_NORMAL, atoi(args[3])),
+ NULL);
+
+ return 0;
+}
+
static int power_off(char **args)
{
return power_operation(args, "poweroff");
{ DEVICE_CORE, "devicelist", 3, device_list, "" },
{ DEVICE_EXTCON, "enable", 4, enable_device, "[USB|HEADPHONE|HDMI|DOCK]" },
{ DEVICE_EXTCON, "disable", 4, disable_device, "[USB|HEADPHONE|HDMI|DOCK]" },
+ { DEVICE_POWER, "suspend", 4, power_suspend, "reason(int)" },
+ { DEVICE_POWER, "resume", 4, power_resume, "reason(int)" },
{ DEVICE_POWER, "off", 3, power_off, "" },
{ DEVICE_POWER, "reboot", 3, power_reboot, "" },
};