summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2018-08-24 09:36:44 +0930
committerAndrew Jeffery <andrew@aj.id.au>2018-09-14 16:52:34 +0930
commitea5400f5718cc2faec9c35d44153e45ef7dd3628 (patch)
tree5a83fe0e0cb939e2af7e0f4f9faedfa105797dd1
parentd66af2abdf437d00783e78eaa83c7b8f5f0cb12f (diff)
downloadphosphor-mboxbridge-ea5400f5718cc2faec9c35d44153e45ef7dd3628.tar.gz
phosphor-mboxbridge-ea5400f5718cc2faec9c35d44153e45ef7dd3628.zip
transport: dbus: Implement erase
Change-Id: Ic10ba2be78deb6307af195fc01daceb19a82ef95 Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
-rw-r--r--transport_dbus.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/transport_dbus.c b/transport_dbus.c
index e04db67..3ad0dad 100644
--- a/transport_dbus.c
+++ b/transport_dbus.c
@@ -400,6 +400,39 @@ static int transport_dbus_ack(sd_bus_message *m, void *userdata,
return sd_bus_send(NULL, n, NULL);
}
+static int transport_dbus_erase(sd_bus_message *m, void *userdata,
+ sd_bus_error *ret_error)
+{
+ struct mbox_context *context = userdata;
+ struct protocol_erase io;
+ sd_bus_message *n;
+ int rc;
+
+ if (!context) {
+ MSG_ERR("DBUS Internal Error\n");
+ return -EINVAL;
+ }
+
+ rc = sd_bus_message_read(m, "qq", &io.req.offset, &io.req.size);
+ if (rc < 0) {
+ MSG_ERR("DBUS error reading message: %s\n", strerror(-rc));
+ return rc;
+ }
+
+ rc = context->protocol->erase(context, &io);
+ 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_get_property(sd_bus *bus,
const char *path,
const char *interface,
@@ -460,6 +493,8 @@ static const sd_bus_vtable protocol_v2_vtable[] = {
SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_METHOD("Ack", "y", NULL, &transport_dbus_ack,
SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("Erase", "qq", NULL, &transport_dbus_erase,
+ SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_PROPERTY("FlashControlLost", "b", transport_dbus_get_property,
0, /* Just a pointer to struct mbox_context */
SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
OpenPOWER on IntegriCloud