diff --git a/src/raspberrypi/rascsi_response.cpp b/src/raspberrypi/rascsi_response.cpp index d203e8ed..fa6a3d6c 100644 --- a/src/raspberrypi/rascsi_response.cpp +++ b/src/raspberrypi/rascsi_response.cpp @@ -394,7 +394,10 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) AddOperationParameter(*parameters, "ids", "Comma-separated device ID list"); parameters = AddOperation(*operation_info, SHUT_DOWN, "Shut down or reboot"); - AddOperationParameter(*parameters, "mode", "Shutdown mode"); + PbOperationParameter *parameter = AddOperationParameter(*parameters, "mode", "Shutdown mode"); + parameter->add_values("rascsi"); + parameter->add_values("system"); + parameter->add_values("reboot"); parameters = AddOperation(*operation_info, CREATE_IMAGE, "Create an image file"); AddOperationParameter(*parameters, "file", "Image file name"); @@ -439,12 +442,14 @@ PbOperationParameters *RascsiResponse::AddOperation(PbOperationInfo& operation_i return parameters; } -void RascsiResponse::AddOperationParameter(PbOperationParameters& parameters, const string& name, const string& description, - const string& type, bool is_mandatory) +PbOperationParameter *RascsiResponse::AddOperationParameter(PbOperationParameters& parameters, const string& name, + const string& description, const string& type, bool is_mandatory) { PbOperationParameter *parameter = parameters.add_parameters(); parameter->set_name(name); (*parameter->mutable_description())["en"] = description; parameter->set_type(type); parameter->set_is_mandatory(is_mandatory); + + return parameter; } diff --git a/src/raspberrypi/rascsi_response.h b/src/raspberrypi/rascsi_response.h index c9c8be89..5ca379ad 100644 --- a/src/raspberrypi/rascsi_response.h +++ b/src/raspberrypi/rascsi_response.h @@ -54,5 +54,5 @@ private: void GetDeviceTypeProperties(PbDeviceTypesInfo&, PbDeviceType); void GetAvailableImages(PbResult& result, PbServerInfo&); PbOperationParameters *AddOperation(PbOperationInfo&, const PbOperation&, const string&); - void AddOperationParameter(PbOperationParameters&, const string&, const string&, const string& = "string", bool = true); + PbOperationParameter *AddOperationParameter(PbOperationParameters&, const string&, const string&, const string& = "string", bool = true); }; diff --git a/src/raspberrypi/rasctl_display.cpp b/src/raspberrypi/rasctl_display.cpp index 8d36f4c6..3e7f5c1c 100644 --- a/src/raspberrypi/rasctl_display.cpp +++ b/src/raspberrypi/rasctl_display.cpp @@ -295,6 +295,19 @@ void RasctlDisplay::DisplayOperationInfo(const PbOperationInfo& operation_info) cout << " (" << parameter.description().at("en") << ")"; } cout << endl; + + if (parameter.values_size()) { + cout << " Permitted values: "; + bool isFirst = true; + for (const auto& value : parameter.values()) { + if (!isFirst) { + cout << ", "; + } + isFirst = false; + cout << value; + } + cout << endl; + } } } }