From ff468aafa85a25c3f48a8bfdc1eb0a24b3fca63f Mon Sep 17 00:00:00 2001 From: Uwe Seimet Date: Fri, 17 Dec 2021 23:09:18 +0100 Subject: [PATCH] Added support for default value --- src/raspberrypi/rascsi_interface.proto | 4 +++- src/raspberrypi/rascsi_response.cpp | 15 +++++++++------ src/raspberrypi/rascsi_response.h | 3 ++- src/raspberrypi/rasctl_display.cpp | 4 ++++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/raspberrypi/rascsi_interface.proto b/src/raspberrypi/rascsi_interface.proto index 88160a78..c552cb57 100644 --- a/src/raspberrypi/rascsi_interface.proto +++ b/src/raspberrypi/rascsi_interface.proto @@ -169,7 +169,9 @@ message PbOperationParameter { string type = 3; // There is no specific set of values if empty repeated string values = 4; - bool is_mandatory = 5; + // Optional default value + string default_value = 5; + bool is_mandatory = 6; } // The list of parameters supported by an operation diff --git a/src/raspberrypi/rascsi_response.cpp b/src/raspberrypi/rascsi_response.cpp index 8f8e56ab..110ad752 100644 --- a/src/raspberrypi/rascsi_response.cpp +++ b/src/raspberrypi/rascsi_response.cpp @@ -344,8 +344,8 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) PbOperationParameter *parameter; parameters = AddOperation(*operation_info, ATTACH, "Attach device, a device-specific parameter is required"); - AddOperationParameter(*parameters, "name", "Image file name for a mass storage device", "string", false); - AddOperationParameter(*parameters, "interfaces", "Comma-separated prioritized network interface list", "string", false); + AddOperationParameter(*parameters, "name", "Image file name for a mass storage device", "string"); + AddOperationParameter(*parameters, "interfaces", "Comma-separated prioritized network interface list", "string"); AddOperation(*operation_info, DETACH, "Detach device"); @@ -403,7 +403,7 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) parameters = AddOperation(*operation_info, CREATE_IMAGE, "Create an image file"); AddOperationParameter(*parameters, "file", "Image file name"); AddOperationParameter(*parameters, "size", "Image file size in bytes", "int"); - parameter = AddOperationParameter(*parameters, "read_only", "Read-only flag, true if missing", "boolean", false); + parameter = AddOperationParameter(*parameters, "read_only", "Read-only flag", "boolean", "false"); parameter->add_values("true"); parameter->add_values("false"); @@ -417,7 +417,7 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) parameters = AddOperation(*operation_info, COPY_IMAGE, "Copy image file"); AddOperationParameter(*parameters, "from", "Source image file name image file name"); AddOperationParameter(*parameters, "to", "Destination image file name"); - parameter = AddOperationParameter(*parameters, "read_only", "Read-only flag, true if missing", "boolean", false); + parameter = AddOperationParameter(*parameters, "read_only", "Read-only flag", "boolean", "false"); parameter->add_values("true"); parameter->add_values("false"); @@ -448,13 +448,16 @@ PbOperationParameters *RascsiResponse::AddOperation(PbOperationInfo& operation_i } PbOperationParameter *RascsiResponse::AddOperationParameter(PbOperationParameters& parameters, const string& name, - const string& description, const string& type, bool is_mandatory) + const string& description, const string& type, const string& default_value) { PbOperationParameter *parameter = parameters.add_parameters(); parameter->set_name(name); (*parameter->mutable_description())["en"] = description; parameter->set_type(type); - parameter->set_is_mandatory(is_mandatory); + if (!default_value.empty()) { + parameter->set_default_value(default_value); + } + parameter->set_is_mandatory(default_value.empty()); return parameter; } diff --git a/src/raspberrypi/rascsi_response.h b/src/raspberrypi/rascsi_response.h index 5ca379ad..3f6e6dfd 100644 --- a/src/raspberrypi/rascsi_response.h +++ b/src/raspberrypi/rascsi_response.h @@ -54,5 +54,6 @@ private: void GetDeviceTypeProperties(PbDeviceTypesInfo&, PbDeviceType); void GetAvailableImages(PbResult& result, PbServerInfo&); PbOperationParameters *AddOperation(PbOperationInfo&, const PbOperation&, const string&); - PbOperationParameter *AddOperationParameter(PbOperationParameters&, const string&, const string&, const string& = "string", bool = true); + PbOperationParameter *AddOperationParameter(PbOperationParameters&, const string&, const string&, + const string& = "string", const string& = ""); }; diff --git a/src/raspberrypi/rasctl_display.cpp b/src/raspberrypi/rasctl_display.cpp index 3e7f5c1c..a746c39d 100644 --- a/src/raspberrypi/rasctl_display.cpp +++ b/src/raspberrypi/rasctl_display.cpp @@ -308,6 +308,10 @@ void RasctlDisplay::DisplayOperationInfo(const PbOperationInfo& operation_info) } cout << endl; } + + if (!parameter.default_value().empty()) { + cout << " Default value: " << parameter.default_value() << endl; + } } } }