static char dev_internal_scsi = '\0';
static char dev_internal_emul = '\0';
+static int block_start(void *data);
+static int block_stop(void *data);
+
static int add_operation(struct block_device *bdev,
enum block_dev_operation operation,
dbus_method_reply_handle_h reply_handle, void *data);
return reply;
}
+
+static DBusMessage *request_control_block(dbus_method_reply_handle_h reply_handle,
+ DBusMessage *msg)
+{
+ int ret;
+ int enable;
+ DBusMessage *reply;
+ DBusMessageIter iter;
+
+ ret = dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_INT32, &enable,
+ DBUS_TYPE_INVALID);
+ if (!ret) {
+ ret = -1;
+ goto out;
+ }
+
+ if (enable == 1) {
+ _I("control block Enable");
+ block_start(NULL);
+ } else if (enable == 0) {
+ _I("control block Disable");
+ block_stop(NULL);
+ } else {
+ _E("control block : Wrong request by client");
+ ret = -1;
+ goto out;
+ }
+
+out:
+ reply = dbus_message_new_method_return(msg);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &ret);
+
+ return reply;
+}
+
+static DBusMessage *request_getcontrol_block(dbus_method_reply_handle_h reply_handle,
+ DBusMessage *msg)
+{
+ int is_enabled;
+ DBusMessage *reply;
+ DBusMessageIter iter;
+
+ _I("getcontrol block");
+
+ is_enabled = block_control;
+
+ reply = dbus_message_new_method_return(msg);
+ dbus_message_iter_init_append(reply, &iter);
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &is_enabled);
+
+ return reply;
+}
+
/*
Method name Method call format string Reply format string
{ "ShowDeviceList", NULL, NULL, request_show_device_list },
{ "PrivateMount", "is", request_private_mount_block },
{ "PrivateUnmount", "ii", request_private_unmount_block },
{ "CheckSpeed", "i", request_check_speed },
+ { "Control", "i", request_control_block },
+ { "GetControl", "i", request_getcontrol_block },
};
static dbus_interface_s block_interface = {