diff --git a/src/raspberrypi/rascsi_interface.proto b/src/raspberrypi/rascsi_interface.proto index ca6dc557..3ecfd1bb 100644 --- a/src/raspberrypi/rascsi_interface.proto +++ b/src/raspberrypi/rascsi_interface.proto @@ -178,8 +178,10 @@ message PbOperationParameter { map description = 2; // There is no specific set of permitted values if empty repeated string permitted_values = 3; - // Optional default value. If there is no default the value is mandatory. + // Optional default value string default_value = 4; + // True if this parameter is mandatory + bool is_mandatory = 5; } // The list of parameters supported by an operation diff --git a/src/raspberrypi/rascsi_response.cpp b/src/raspberrypi/rascsi_response.cpp index 0404ba39..1d922220 100644 --- a/src/raspberrypi/rascsi_response.cpp +++ b/src/raspberrypi/rascsi_response.cpp @@ -378,7 +378,7 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) CreateOperation(operation_info, meta_data, STOP, "Stop device, device-specific parameters are required"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); CreateOperation(operation_info, meta_data, INSERT, "Insert medium, device-specific parameters are required"); meta_data = new PbOperationMetaData(); @@ -408,7 +408,7 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) CreateOperation(operation_info, meta_data, DEFAULT_IMAGE_FILES_INFO, "Get information on available image files"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); CreateOperation(operation_info, meta_data, IMAGE_FILE_INFO, "Get information on image file"); meta_data = new PbOperationMetaData(); @@ -424,59 +424,59 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) CreateOperation(operation_info, meta_data, RESERVED_IDS_INFO, "Get list of reserved device IDs"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "folder", "Default image file folder name"); + AddOperationParameter(meta_data, "folder", "Default image file folder name", "", true); CreateOperation(operation_info, meta_data, DEFAULT_FOLDER, "Set default image file folder"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "level", "New log level"); + AddOperationParameter(meta_data, "level", "New log level", "", true); CreateOperation(operation_info, meta_data, LOG_LEVEL, "Set log level"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "ids", "Comma-separated device ID list"); + AddOperationParameter(meta_data, "ids", "Comma-separated device ID list", "", true); CreateOperation(operation_info, meta_data, RESERVE_IDS, "Reserve device IDs"); meta_data = new PbOperationMetaData(); - PbOperationParameter *parameter = AddOperationParameter(meta_data, "mode", "Shutdown mode"); + PbOperationParameter *parameter = AddOperationParameter(meta_data, "mode", "Shutdown mode", "", true); parameter->add_permitted_values("rascsi"); parameter->add_permitted_values("system"); parameter->add_permitted_values("reboot"); CreateOperation(operation_info, meta_data, SHUT_DOWN, "Shut down or reboot"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); - AddOperationParameter(meta_data, "size", "Image file size in bytes"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); + AddOperationParameter(meta_data, "size", "Image file size in bytes", "", true); parameter = AddOperationParameter(meta_data, "read_only", "Read-only flag", "false"); parameter->add_permitted_values("true"); parameter->add_permitted_values("false"); CreateOperation(operation_info, meta_data, CREATE_IMAGE, "Create an image file"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); CreateOperation(operation_info, meta_data, DELETE_IMAGE, "Delete image file"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "from", "Source image file name"); - AddOperationParameter(meta_data, "to", "Destination image file name"); + AddOperationParameter(meta_data, "from", "Source image file name", "", true); + AddOperationParameter(meta_data, "to", "Destination image file name", "", true); CreateOperation(operation_info, meta_data, RENAME_IMAGE, "Rename image file"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "from", "Source image file name image file name"); - AddOperationParameter(meta_data, "to", "Destination image file name"); + AddOperationParameter(meta_data, "from", "Source image file name image file name", "", true); + AddOperationParameter(meta_data, "to", "Destination image file name", "", true); parameter = AddOperationParameter(meta_data, "read_only", "Read-only flag", "false"); parameter->add_permitted_values("true"); parameter->add_permitted_values("false"); CreateOperation(operation_info, meta_data, COPY_IMAGE, "Copy image file"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); CreateOperation(operation_info, meta_data, PROTECT_IMAGE, "Write-protect image file"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "file", "Image file name"); + AddOperationParameter(meta_data, "file", "Image file name", "", true); CreateOperation(operation_info, meta_data, UNPROTECT_IMAGE, "Make image file writable"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "token", "Authentication token to be checked"); + AddOperationParameter(meta_data, "token", "Authentication token to be checked", "", true); CreateOperation(operation_info, meta_data, CHECK_AUTHENTICATION, "Check whether an authentication token is valid"); meta_data = new PbOperationMetaData(); @@ -500,7 +500,7 @@ void RascsiResponse::CreateOperation(PbOperationInfo *operation_info, PbOperatio } PbOperationParameter *RascsiResponse::AddOperationParameter(PbOperationMetaData *meta_data, const string& name, - const string& description, const string& default_value) + const string& description, const string& default_value, bool is_mandatory) { PbOperationParameter *parameter = meta_data->add_parameters(); parameter->set_name(name); @@ -508,6 +508,9 @@ PbOperationParameter *RascsiResponse::AddOperationParameter(PbOperationMetaData if (!default_value.empty()) { parameter->set_default_value(default_value); } + else { + parameter->set_is_mandatory(is_mandatory); + } return parameter; } diff --git a/src/raspberrypi/rascsi_response.h b/src/raspberrypi/rascsi_response.h index b9cea859..da607277 100644 --- a/src/raspberrypi/rascsi_response.h +++ b/src/raspberrypi/rascsi_response.h @@ -56,5 +56,5 @@ private: void GetAvailableImages(PbResult& result, PbServerInfo&, const string&, int); void CreateOperation(PbOperationInfo *, PbOperationMetaData *, const PbOperation&, const string&); PbOperationParameter *AddOperationParameter(PbOperationMetaData *, const string&, const string&, - const string& = ""); + const string& = "", bool = false); }; diff --git a/src/raspberrypi/rasctl_display.cpp b/src/raspberrypi/rasctl_display.cpp index 21deb463..cf25e403 100644 --- a/src/raspberrypi/rasctl_display.cpp +++ b/src/raspberrypi/rasctl_display.cpp @@ -303,7 +303,7 @@ void RasctlDisplay::DisplayOperationInfo(const PbOperationInfo& operation_info) for (const auto& parameter : operation.second.parameters()) { cout << " " << parameter.name() << ": " - << (parameter.default_value().empty() ? "mandatory" : "optional"); + << (parameter.is_mandatory() ? "mandatory" : "optional"); if (!parameter.description().empty()) { cout << " (" << parameter.description().at("en") << ")"; }