libcamera  v0.2.0+150-2031e2f2
Supporting cameras in Linux since 2019
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
libcamera::IPAProxy Class Reference

IPA Proxy. More...

Inheritance diagram for libcamera::IPAProxy:
Inheritance graph
[legend]
Collaboration diagram for libcamera::IPAProxy:
Collaboration graph
[legend]

Public Types

enum  ProxyState { ProxyStopped, ProxyStopping, ProxyRunning }
 Identifies the available operational states of the proxy. More...
 

Public Member Functions

 IPAProxy (IPAModule *ipam)
 Construct an IPAProxy instance. More...
 
bool isValid () const
 Check if the IPAProxy instance is valid. More...
 
std::string configurationFile (const std::string &file) const
 Retrieve the absolute path to an IPA configuration file. More...
 

Protected Member Functions

std::string resolvePath (const std::string &file) const
 Find a valid full path for a proxy worker for a given executable name. More...
 

Protected Attributes

bool valid_
 Flag to indicate if the IPAProxy instance is valid. More...
 
ProxyState state_
 Current state of the IPAProxy. More...
 

Detailed Description

IPA Proxy.

Isolate IPA into separate process.

Member Enumeration Documentation

◆ ProxyState

Identifies the available operational states of the proxy.

Enumerator
ProxyStopped 

The proxy is not active and only synchronous operations are permitted.

ProxyStopping 

No new tasks can be submitted to the proxy, however existing events can be completed.

ProxyRunning 

The Proxy is active and asynchronous tasks may be queued.

Constructor & Destructor Documentation

◆ IPAProxy()

libcamera::IPAProxy::IPAProxy ( IPAModule ipam)

Construct an IPAProxy instance.

Parameters
[in]ipamThe IPA module

Member Function Documentation

◆ configurationFile()

std::string libcamera::IPAProxy::configurationFile ( const std::string &  name) const

Retrieve the absolute path to an IPA configuration file.

Parameters
[in]nameThe configuration file name

This function locates the configuration file for an IPA and returns its absolute path. It searches the following directories, in order:

  • All directories specified in the colon-separated LIBCAMERA_IPA_CONFIG_PATH environment variable ; or
  • If libcamera is not installed, the src/ipa/ directory within the source tree ; otherwise
  • The system sysconf (etc/libcamera/ipa) and the data (share/libcamera/ipa/) directories.

The system directories are not searched if libcamera is not installed.

Within each of those directories, the function looks for a subdirectory named after the IPA module name, as reported in IPAModuleInfo::name, and for a file named name within that directory. The name is IPA-specific.

Returns
The full path to the IPA configuration file, or an empty string if no configuration file can be found

◆ isValid()

libcamera::IPAProxy::isValid ( ) const
inline

Check if the IPAProxy instance is valid.

An IPAProxy instance is valid if the IPA interface is successfully created in isolation, and IPC is successfully set up.

Returns
True if the IPAProxy is valid, false otherwise

◆ resolvePath()

std::string libcamera::IPAProxy::resolvePath ( const std::string &  file) const
protected

Find a valid full path for a proxy worker for a given executable name.

Parameters
[in]fileFile name of proxy worker executable

A proxy worker's executable could be found in either the global installation directory, or in the paths specified by the environment variable LIBCAMERA_IPA_PROXY_PATH. This function checks the global install directory first, then LIBCAMERA_IPA_PROXY_PATH in order, and returns the full path to the proxy worker executable that is specified by file. The proxy worker executable shall have exec permission.

Returns
The full path to the proxy worker executable, or an empty string if no valid executable path

Member Data Documentation

◆ state_

libcamera::IPAProxy::state_
protected

Current state of the IPAProxy.

The IPAProxy can be Running, Stopped, or Stopping.

This state provides a means to ensure that asynchronous functions are only called while the proxy is running, and prevent new tasks being submitted while still enabling events to complete when the IPAProxy is stopping.

◆ valid_

libcamera::IPAProxy::valid_
protected

Flag to indicate if the IPAProxy instance is valid.

A IPAProxy instance is valid if the IPA interface is successfully created in isolation, and IPC is successfully set up.

This flag can be read via IPAProxy::isValid().

Implementations of the IPAProxy class should set this flag upon successful construction.


The documentation for this class was generated from the following files: