diff --git a/src/raspberrypi/rascsi.cpp b/src/raspberrypi/rascsi.cpp index a3f2cb08..987f0580 100644 --- a/src/raspberrypi/rascsi.cpp +++ b/src/raspberrypi/rascsi.cpp @@ -1545,7 +1545,7 @@ static void *MonThread(void *param) } case OPERATION_INFO: { - result.set_allocated_operation_info(rascsi_response.GetOperationInfo(result)); + result.set_allocated_operation_info(rascsi_response.GetOperationInfo(result, scan_depth)); SerializeMessage(fd, result); break; } @@ -1597,7 +1597,7 @@ int main(int argc, char* argv[]) // Get temporary operation info, in order to trigger an assertion on startup if the operation list is incomplete PbResult pb_operation_info_result; - rascsi_response.GetOperationInfo(pb_operation_info_result); + rascsi_response.GetOperationInfo(pb_operation_info_result, 0); int actid; BUS::phase_t phase; diff --git a/src/raspberrypi/rascsi_response.cpp b/src/raspberrypi/rascsi_response.cpp index bf723497..84109cb2 100644 --- a/src/raspberrypi/rascsi_response.cpp +++ b/src/raspberrypi/rascsi_response.cpp @@ -304,7 +304,7 @@ PbServerInfo *RascsiResponse::GetServerInfo(PbResult& result, const vectorset_allocated_mapping_info(GetMappingInfo(result)); GetDevices(*server_info, devices); server_info->set_allocated_reserved_ids_info(GetReservedIds(result, reserved_ids)); - server_info->set_allocated_operation_info(GetOperationInfo(result)); + server_info->set_allocated_operation_info(GetOperationInfo(result, scan_depth)); result.set_status(true); @@ -365,7 +365,7 @@ PbMappingInfo *RascsiResponse::GetMappingInfo(PbResult& result) return mapping_info; } -PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) +PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result, int scan_depth) { PbOperationInfo *operation_info = new PbOperationInfo(); @@ -400,7 +400,10 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) CreateOperation(operation_info, meta_data, UNPROTECT, "Unprotect medium, device-specific parameters are required"); meta_data = new PbOperationMetaData(); - AddOperationParameter(meta_data, "filename_pattern", "Pattern for filtering image file names"); + if (scan_depth) { + AddOperationParameter(meta_data, "folder_pattern", "Pattern for filtering folder names"); + } + AddOperationParameter(meta_data, "file_pattern", "Pattern for filtering image file names"); CreateOperation(operation_info, meta_data, SERVER_INFO, "Get rascsi server information"); meta_data = new PbOperationMetaData(); @@ -414,6 +417,10 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) meta_data = new PbOperationMetaData(); AddOperationParameter(meta_data, "filename_pattern", "Pattern for filtering image file names"); + if (scan_depth) { + AddOperationParameter(meta_data, "folder_pattern", "Pattern for filtering folder names"); + } + AddOperationParameter(meta_data, "file_pattern", "Pattern for filtering image file names"); CreateOperation(operation_info, meta_data, DEFAULT_IMAGE_FILES_INFO, "Get information on available image files"); meta_data = new PbOperationMetaData(); diff --git a/src/raspberrypi/rascsi_response.h b/src/raspberrypi/rascsi_response.h index 7fbcdebe..460d9925 100644 --- a/src/raspberrypi/rascsi_response.h +++ b/src/raspberrypi/rascsi_response.h @@ -40,7 +40,7 @@ public: PbNetworkInterfacesInfo *GetNetworkInterfacesInfo(PbResult&); PbMappingInfo *GetMappingInfo(PbResult&); PbLogLevelInfo *GetLogLevelInfo(PbResult&, const string&); - PbOperationInfo *GetOperationInfo(PbResult&); + PbOperationInfo *GetOperationInfo(PbResult&, int); private: diff --git a/src/raspberrypi/rasctl.cpp b/src/raspberrypi/rasctl.cpp index 495d7ab2..c4b86e88 100644 --- a/src/raspberrypi/rasctl.cpp +++ b/src/raspberrypi/rasctl.cpp @@ -156,7 +156,7 @@ int main(int argc, char* argv[]) opterr = 1; int opt; - while ((opt = getopt(argc, argv, "e::lmsvDINOTVXa:b:c:d:f:h:i:n:p:r:t:u:x:C:E:F:L:P::R:")) != -1) { + while ((opt = getopt(argc, argv, "e::lmosvDINOTVXa:b:c:d:f:h:i:n:p:r:t:u:x:C:E:F:L:P::R:")) != -1) { switch (opt) { case 'i': { int id;