From d66af2abdf437d00783e78eaa83c7b8f5f0cb12f Mon Sep 17 00:00:00 2001 From: Andrew Jeffery Date: Fri, 24 Aug 2018 08:28:13 +0930 Subject: transport: dbus: Implement flush Change-Id: If34f2f6cac002fae417d99baec8c08f675cdb974 Signed-off-by: Andrew Jeffery --- transport_dbus.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/transport_dbus.c b/transport_dbus.c index 044e8dc..e04db67 100644 --- a/transport_dbus.c +++ b/transport_dbus.c @@ -341,6 +341,32 @@ static int transport_dbus_mark_dirty(sd_bus_message *m, void *userdata, return sd_bus_send(NULL, n, NULL); } +static int transport_dbus_write_flush(sd_bus_message *m, void *userdata, + sd_bus_error *ret_error) +{ + struct mbox_context *context = userdata; + sd_bus_message *n; + int rc; + + if (!context) { + MSG_ERR("DBUS Internal Error\n"); + return -EINVAL; + } + + rc = context->protocol->flush(context, NULL /* No args in v2 */); + if (rc < 0) { + return rc; + } + + rc = sd_bus_message_new_method_return(m, &n); + if (rc < 0) { + MSG_ERR("sd_bus_message_new_method_return failed: %d\n", rc); + return rc; + } + + return sd_bus_send(NULL, n, NULL); +} + static int transport_dbus_ack(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { @@ -430,6 +456,8 @@ static const sd_bus_vtable protocol_v2_vtable[] = { SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("MarkDirty", "qq", NULL, &transport_dbus_mark_dirty, SD_BUS_VTABLE_UNPRIVILEGED), + SD_BUS_METHOD("Flush", NULL, NULL, &transport_dbus_write_flush, + SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("Ack", "y", NULL, &transport_dbus_ack, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_PROPERTY("FlashControlLost", "b", transport_dbus_get_property, -- cgit v1.2.1