libcamera: pipeline_handler: Enable silent configuration file lookup

The PipelineHandler::configurationFile() function prints an error
message when no configuration file is found. It can be useful for
pipeline handlers to silence the lookup operation and handle errors
themselves. Add a silent parameter to the function to enable this.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2025-01-10 04:30:03 +02:00
parent 2ae7b2ff74
commit 31a7378c87
2 changed files with 10 additions and 5 deletions

View file

@ -63,7 +63,8 @@ public:
void cancelRequest(Request *request);
std::string configurationFile(const std::string &subdir,
const std::string &name) const;
const std::string &name,
bool silent = false) const;
const char *name() const { return name_; }

View file

@ -581,6 +581,7 @@ void PipelineHandler::cancelRequest(Request *request)
* \brief Retrieve the absolute path to a platform configuration file
* \param[in] subdir The pipeline handler specific subdirectory name
* \param[in] name The configuration file name
* \param[in] silent Disable error messages
*
* This function locates a named platform configuration file and returns
* its absolute path to the pipeline handler. It searches the following
@ -596,7 +597,8 @@ void PipelineHandler::cancelRequest(Request *request)
* string if no configuration file can be found
*/
std::string PipelineHandler::configurationFile(const std::string &subdir,
const std::string &name) const
const std::string &name,
bool silent) const
{
std::string confPath;
struct stat statbuf;
@ -626,9 +628,11 @@ std::string PipelineHandler::configurationFile(const std::string &subdir,
if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)
return confPath;
if (!silent)
LOG(Pipeline, Error)
<< "Configuration file '" << confPath
<< "' not found for pipeline handler '" << PipelineHandler::name() << "'";
<< "' not found for pipeline handler '"
<< PipelineHandler::name() << "'";
return std::string();
}