libcamera v0.0.0+3240-f2a18172-dirty (2022-02-06T09:24:04+00:00)
Supporting cameras in Linux since 2019
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
libcamera Namespace Reference

Top-level libcamera namespace. More...

Namespaces

namespace  controls
 Namespace for libcamera controls.
 
namespace  ipa
 The IPA namespace.
 
namespace  properties
 Namespace for libcamera properties.
 

Classes

class  Backtrace
 Representation of a call stack backtrace. More...
 
class  BayerFormat
 Class to represent a raw image Bayer format. More...
 
class  BoundMethodArgs
 
class  BoundMethodBase
 
class  BoundMethodFunctor
 
class  BoundMethodMember
 
class  BoundMethodPack
 
class  BoundMethodPack< void, Args... >
 
class  BoundMethodPackBase
 
class  BoundMethodStatic
 
class  ByteStreamBuffer
 Wrap a memory buffer and provide sequential data read and write. More...
 
class  Camera
 Camera device. More...
 
class  CameraConfiguration
 Hold configuration for streams of the camera. More...
 
class  CameraControlValidator
 A control validator for Camera instances. More...
 
class  CameraManager
 Provide access and manage all cameras in the system. More...
 
class  CameraSensor
 A camera sensor based on V4L2 subdevices. More...
 
struct  CameraSensorProperties
 Database of camera sensor properties. More...
 
class  Control
 Describe a control and its intrinsic properties. More...
 
class  ControlId
 Control static metadata. More...
 
class  ControlInfo
 Describe the limits of valid values for a Control. More...
 
class  ControlInfoMap
 A map of ControlId to ControlInfo. More...
 
class  ControlList
 Associate a list of ControlId with their values for an object. More...
 
class  ControlSerializer
 Serializer and deserializer for control-related classes. More...
 
class  ControlValidator
 Interface for the control validator. More...
 
class  ControlValue
 Abstract type representing the value of a control. More...
 
class  DelayedControls
 Helper to deal with controls that take effect with a delay. More...
 
class  DeviceEnumerator
 Enumerate, store and search media devices. More...
 
class  DeviceMatch
 Description of a media device search pattern. More...
 
class  EventDispatcher
 Interface to manage the libcamera events and timers. More...
 
class  EventDispatcherPoll
 A poll-based event dispatcher. More...
 
class  EventNotifier
 Notify of activity on a file descriptor. More...
 
class  Extensible
 Base class to manage private data through a d-pointer. More...
 
class  File
 Interface for I/O operations on files. More...
 
class  FileDescriptor
 RAII-style wrapper for file descriptors. More...
 
class  Flags
 Type-safe container for enum-based bitfields. More...
 
class  FrameBuffer
 Frame buffer data and its associated dynamic metadata. More...
 
class  FrameBufferAllocator
 FrameBuffer allocator for applications. More...
 
struct  FrameMetadata
 Metadata related to a captured frame. More...
 
class  InvokeMessage
 A message carrying a method invocation across threads. More...
 
struct  IPABuffer
 Buffer information for the IPA interface. More...
 
struct  IPACameraSensorInfo
 Report the image sensor characteristics. More...
 
class  IPADataSerializer
 IPA Data Serializer. More...
 
class  IPAInterface
 C++ Interface for IPA implementation. More...
 
class  IPAManager
 Manager for IPA modules. More...
 
class  IPAModule
 Wrapper around IPA module shared object. More...
 
struct  IPAModuleInfo
 Information of an IPA module. More...
 
class  IPAProxy
 IPA Proxy. More...
 
struct  IPASettings
 IPA interface initialization settings. More...
 
struct  IPAStream
 Stream configuration for the IPA interface. More...
 
class  IPCMessage
 IPC message to be passed through IPC message pipe. More...
 
class  IPCPipe
 IPC message pipe for IPA isolation. More...
 
class  IPCUnixSocket
 IPC mechanism based on Unix sockets. More...
 
class  LogCategory
 A category of log message. More...
 
class  Loggable
 Base class to support log message extensions. More...
 
class  Logger
 Message logger. More...
 
class  LogMessage
 Internal log message representation. More...
 
class  LogOutput
 Log output. More...
 
class  MappedBuffer
 Provide an interface to support managing memory mapped buffers. More...
 
class  MappedFrameBuffer
 Map a FrameBuffer using the MappedBuffer interface. More...
 
class  MediaDevice
 The MediaDevice represents a Media Controller device with its full graph of connected objects. More...
 
class  MediaEntity
 The MediaEntity represents an entity in the media graph. More...
 
class  MediaLink
 The MediaLink represents a link between two pads in the media graph. More...
 
class  MediaObject
 Base class for all media objects. More...
 
class  MediaPad
 The MediaPad represents a pad of an entity in the media graph. More...
 
class  Message
 A message that can be posted to a Thread. More...
 
class  MessageQueue
 A queue of posted messages. More...
 
class  Object
 Base object to support automatic signal disconnection. More...
 
class  PipelineHandler
 Create and manage cameras based on a set of media devices. More...
 
class  PipelineHandlerFactory
 Registration of PipelineHandler classes and creation of instances. More...
 
class  PixelFormat
 libcamera image pixel format More...
 
class  PixelFormatInfo
 Information about pixel formats. More...
 
class  Point
 Describe a point in two-dimensional space. More...
 
class  Process
 Process object. More...
 
class  ProcessManager
 Manager of processes. More...
 
class  PubKey
 Public key wrapper for signature verification. More...
 
struct  Rectangle
 Describe a rectangle's position and dimensions. More...
 
class  Request
 A frame capture request. More...
 
class  Semaphore
 General-purpose counting semaphore. More...
 
class  Signal
 Generic signal and slot communication mechanism. More...
 
class  SignalBase
 
struct  Size
 Describe a two-dimensional size. More...
 
struct  SizeRange
 Describe a range of sizes. More...
 
class  Stream
 Video stream for a camera. More...
 
struct  StreamConfiguration
 Configuration parameters for a stream. More...
 
class  StreamFormats
 Hold information about supported stream formats. More...
 
class  Thread
 A thread of execution. More...
 
class  ThreadData
 Thread-local internal data. More...
 
class  ThreadMain
 Thread wrapper for the main thread. More...
 
class  Timer
 Single-shot timer interface. More...
 
class  V4L2BufferCache
 Hot cache of associations between V4L2 buffer indexes and FrameBuffer. More...
 
struct  V4L2Capability
 struct v4l2_capability object wrapper and helpers More...
 
class  V4L2Device
 Base class for V4L2VideoDevice and V4L2Subdevice. More...
 
class  V4L2DeviceFormat
 The V4L2 video device image format and sizes. More...
 
class  V4L2M2MDevice
 Memory-to-Memory video device. More...
 
class  V4L2PixelFormat
 V4L2 pixel format FourCC wrapper. More...
 
class  V4L2Subdevice
 A V4L2 subdevice as exposed by the Linux kernel. More...
 
struct  V4L2SubdeviceFormat
 The V4L2 sub-device image format and sizes. More...
 
class  V4L2VideoDevice
 V4L2VideoDevice object and API. More...
 

Typedefs

using Mutex = std::mutex
 An alias for std::mutex.
 
using MutexLocker = std::unique_lock< std::mutex >
 An alias for std::unique_lock<std::mutex>
 
using ControlIdMap = std::unordered_map< unsigned int, const ControlId * >
 A map of numerical control ID to ControlId. More...
 
using StreamRoles = std::vector< StreamRole >
 A vector of StreamRole.
 

Enumerations

enum  ConnectionType { ConnectionTypeAuto , ConnectionTypeDirect , ConnectionTypeQueued , ConnectionTypeBlocking }
 Connection type for asynchronous communication. More...
 
enum  LogSeverity {
  LogInvalid = -1 , LogDebug = 0 , LogInfo , LogWarning ,
  LogError , LogFatal
}
 
enum  ControlType {
  ControlTypeNone , ControlTypeBool , ControlTypeByte , ControlTypeInteger32 ,
  ControlTypeInteger64 , ControlTypeFloat , ControlTypeString , ControlTypeRectangle ,
  ControlTypeSize
}
 Define the data type of a Control. More...
 
enum  LoggingTarget { LoggingTargetNone , LoggingTargetSyslog , LoggingTargetFile , LoggingTargetStream }
 Log destination type. More...
 
enum  StreamRole { Raw , StillCapture , VideoRecording , Viewfinder }
 Identify the role a stream is intended to play. More...
 
enum class  Transform : int {
  Identity = 0 , Rot0 = Identity , HFlip = 1 , VFlip = 2 ,
  HVFlip = HFlip | VFlip , Rot180 = HVFlip , Transpose = 4 , Rot270 = HFlip | Transpose ,
  Rot90 = VFlip | Transpose , Rot180Transpose = HFlip | VFlip | Transpose
}
 Enum to represent a 2D plane transform. More...
 

Functions

LogMessage _log (const LogCategory *category, LogSeverity severity, const char *fileName, unsigned int line)
 Create a temporary LogMessage object to log a message. More...
 
bool operator== (const Point &lhs, const Point &rhs)
 Compare points for equality. More...
 
bool operator== (const Size &lhs, const Size &rhs)
 Compare sizes for equality. More...
 
bool operator< (const Size &lhs, const Size &rhs)
 Compare sizes for smaller than order. More...
 
bool operator== (const SizeRange &lhs, const SizeRange &rhs)
 Compare size ranges for equality. More...
 
bool operator== (const Rectangle &lhs, const Rectangle &rhs)
 Compare rectangles for equality. More...
 
bool operator== (const BayerFormat &lhs, const BayerFormat &rhs)
 Compare two BayerFormats for equality. More...
 
int logSetFile (const char *path)
 Direct logging to a file. More...
 
int logSetStream (std::ostream *stream)
 Direct logging to a stream. More...
 
int logSetTarget (LoggingTarget target)
 Set the logging target. More...
 
void logSetLevel (const char *category, const char *level)
 Set the log level. More...
 
constexpr Transform operator& (Transform t0, Transform t1)
 Apply bitwise AND operator between the bits in the two transforms. More...
 
constexpr Transform operator| (Transform t0, Transform t1)
 Apply bitwise OR operator between the bits in the two transforms. More...
 
constexpr Transform operator^ (Transform t0, Transform t1)
 Apply bitwise XOR operator between the bits in the two transforms. More...
 
constexpr Transformoperator&= (Transform &t0, Transform t1)
 Apply bitwise AND-assignment operator between the bits in the two transforms. More...
 
constexpr Transformoperator|= (Transform &t0, Transform t1)
 Apply bitwise OR-assignment operator between the bits in the two transforms. More...
 
constexpr Transformoperator^= (Transform &t0, Transform t1)
 Apply bitwise XOR-assignment operator between the bits in the two transforms. More...
 
Transform operator* (Transform t1, Transform t0)
 Compose two transforms together. More...
 
Transform operator- (Transform t)
 Invert a transform. More...
 
constexpr bool operator! (Transform t)
 Return true if the transform is the Identity, otherwise false More...
 
constexpr Transform operator~ (Transform t)
 Return the transform with all the bits inverted individually. More...
 
Transform transformFromRotation (int angle, bool *success)
 Return the transform representing a rotation of the given angle clockwise. More...
 
const char * transformToString (Transform t)
 Return a character string describing the transform. More...
 
IPAInterfaceipaCreate ()
 Create an instance of the IPA interface. More...
 

Variables

const struct IPAModuleInfo ipaModuleInfo
 External IPA module interface. More...
 

Detailed Description

Top-level libcamera namespace.

Typedef Documentation

◆ ControlIdMap

A map of numerical control ID to ControlId.

The map is used by ControlList instances to access controls by numerical IDs. A global map of all libcamera controls is provided by controls::controls.

Enumeration Type Documentation

◆ ConnectionType

Connection type for asynchronous communication.

This enumeration describes the possible types of asynchronous communication between a sender and a receiver. It applies to Signal::emit() and Object::invokeMethod().

Enumerator
ConnectionTypeAuto 

If the sender and the receiver live in the same thread, ConnectionTypeDirect is used. Otherwise ConnectionTypeQueued is used.

ConnectionTypeDirect 

The receiver is invoked immediately and synchronously in the sender's thread.

ConnectionTypeQueued 

The receiver is invoked asynchronously.

Invoke the receiver asynchronously in its thread when control returns to the thread's event loop. The sender proceeds without waiting for the invocation to complete.

ConnectionTypeBlocking 

The receiver is invoked synchronously.

If the sender and the receiver live in the same thread, this is equivalent to ConnectionTypeDirect. Otherwise, the receiver is invoked asynchronously in its thread when control returns to the thread's event loop. The sender blocks until the receiver signals the completion of the invocation.

◆ ControlType

Define the data type of a Control.

Enumerator
ControlTypeNone 

Invalid type, for empty values

ControlTypeBool 

The control stores a boolean value

ControlTypeByte 

The control stores a byte value as an unsigned 8-bit integer

ControlTypeInteger32 

The control stores a 32-bit integer value

ControlTypeInteger64 

The control stores a 64-bit integer value

ControlTypeFloat 

The control stores a 32-bit floating point value

ControlTypeString 

The control stores a string value as an array of char

◆ LoggingTarget

Log destination type.

Enumerator
LoggingTargetNone 

No logging destination.

See also
Logger::logSetTarget
LoggingTargetSyslog 

Log to syslog.

See also
Logger::logSetTarget
LoggingTargetFile 

Log to file.

See also
Logger::logSetFile
LoggingTargetStream 

Log to stream.

See also
Logger::logSetStream

◆ LogSeverity

Log message severity

Enumerator
LogDebug 

Debug message

LogInfo 

Informational message

LogWarning 

Warning message, signals a potential issue

LogError 

Error message, signals an unrecoverable issue

LogFatal 

Fatal message, signals an unrecoverable issue and aborts execution

◆ StreamRole

Identify the role a stream is intended to play.

The StreamRole describes how an application intends to use a stream. Roles are specified by applications and passed to cameras, that then select the most appropriate streams and their default configurations.

Enumerator
Raw 

The stream is intended to capture raw frames from the sensor.

StillCapture 

The stream is intended to capture high-resolution, high-quality still images with low frame rate. The captured frames may be exposed with flash.

VideoRecording 

The stream is intended to capture video for the purpose of recording or streaming. The video stream may produce a high frame rate and may be enhanced with video stabilization.

Viewfinder 

The stream is intended to capture video for the purpose of display on the local screen. Trade-offs between quality and usage of system resources are acceptable.

◆ Transform

enum class libcamera::Transform : int
strong

Enum to represent a 2D plane transform.

The Transform can take 8 distinct values, representing the usual 2D plane transforms listed below. Each of these transforms can be constructed out of 3 basic operations, namely a horizontal flip (mirror), a vertical flip, and a transposition (about the main diagonal). The transforms are encoded such that a single bit indicates the presence of each of the 3 basic operations:

  • bit 0 - presence of a horizontal flip
  • bit 1 - presence of a vertical flip
  • bit 2 - presence of a transposition.

We regard these 3 basic operations as being applied in a specific order: first the two flip operations (actually they commute, so the order between them is unimportant) and finally any transpose operation.

Functions are provided to manipulate directly the bits within the transform encoding, but there are also higher-level functions to invert and compose transforms. Transforms are composed according to the usual mathematical convention such that the right transform is applied first, and the left transform is applied second.

Finally, we have a total of 8 distinct transformations, as follows (a couple of them have additional synonyms for convenience). We illustrate each with its nominal effect on a rectangle with vertices labelled A, B, C and D.

See also
https://en.wikipedia.org/wiki/Examples_of_groups#dihedral_group_of_order_8

The set of 2D plane transforms is also known as the symmetry group of a square, described in the link. Note that the group can be generated by only 2 elements (the horizontal flip and a 90 degree rotation, for example), however, the encoding used here makes the presence of the vertical flip explicit.

Enumerator
Identity 

Identity transform.

A-B A-B
Input image | | goes to output image | |
C-D C-D

Numeric value: 0 (no bits set).

Rot0 

Synonym for Transform::Identity (zero degree rotation).

HFlip 

Horizontal flip.

A-B B-A
Input image | | goes to output image | |
C-D D-C

Numeric value: 1 (horizontal flip bit set only).

VFlip 

Vertical flip.

A-B C-D
Input image | | goes to output image | |
C-D A-B

Numeric value: 2 (vertical flip bit set only).

HVFlip 

Horizontal and vertical flip (identical to a 180 degree rotation).

A-B D-C
Input image | | goes to output image | |
C-D B-A

Numeric value: 3 (horizontal and vertical flip bits set).

Rot180 

Synonym for HVFlip (180 degree rotation).

Transpose 

Transpose (about the main diagonal).

A-B A-C
Input image | | goes to output image | |
C-D B-D

Numeric value: 4 (transpose bit set only).

Rot270 

Rotation by 270 degrees clockwise (90 degrees anticlockwise).

A-B B-D
Input image | | goes to output image | |
C-D A-C

Numeric value: 5 (transpose and horizontal flip bits set).

Rot90 

Rotation by 90 degrees clockwise (270 degrees anticlockwise).

A-B C-A
Input image | | goes to output image | |
C-D D-B

Numeric value: 6 (transpose and vertical flip bits set).

Rot180Transpose 

Rotation by 180 degrees followed by transpose (alternatively, transposition about the "opposite diagonal").

A-B D-B
Input image | | goes to output image | |
C-D C-A

Numeric value: 7 (all bits set).

Function Documentation

◆ _log()

LogMessage libcamera::_log ( const LogCategory category,
LogSeverity  severity,
const char *  fileName,
unsigned int  line 
)

Create a temporary LogMessage object to log a message.

Parameters
[in]categoryThe log message category
[in]severityThe log message severity
[in]fileNameThe file name where the message is logged from
[in]lineThe line number where the message is logged from

This function is used as a backend by the LOG() macro to create a log message for locations not inheriting from the Loggable class.

Returns
A log message

◆ ipaCreate()

IPAInterface * libcamera::ipaCreate ( )

Create an instance of the IPA interface.

This function is the entry point of the IPA module. It is called by the IPA manager to create an instance of the IPA interface for each camera. When matched against with a pipeline handler, the IPAManager will construct an IPA instance for each associated Camera.

◆ logSetFile()

int libcamera::logSetFile ( const char *  path)

Direct logging to a file.

Parameters
[in]pathFull path to the log file

This function directs the log output to the file identified by path. The previous log target, if any, is closed, and all new log messages will be written to the new log file.

If the function returns an error, the log target is not changed.

Returns
Zero on success, or a negative error code otherwise

◆ logSetLevel()

void libcamera::logSetLevel ( const char *  category,
const char *  level 
)

Set the log level.

Parameters
[in]categoryLogging category
[in]levelLog level

This function sets the log level of category to level. level shall be one of the following strings:

  • "DEBUG"
  • "INFO"
  • "WARN"
  • "ERROR"
  • "FATAL"

"*" is not a valid category for this function.

◆ logSetStream()

int libcamera::logSetStream ( std::ostream *  stream)

Direct logging to a stream.

Parameters
[in]streamStream to send log output to

This function directs the log output to stream. The previous log target, if any, is closed, and all new log messages will be written to the new log stream.

If the function returns an error, the log file is not changed

Returns
Zero on success, or a negative error code otherwise.

◆ logSetTarget()

int libcamera::logSetTarget ( LoggingTarget  target)

Set the logging target.

Parameters
[in]targetLogging destination

This function sets the logging output to the target specified by target. The allowed values of target are LoggingTargetNone and LoggingTargetSyslog. LoggingTargetNone will send the log output to nowhere, and LoggingTargetSyslog will send the log output to syslog. The previous log target, if any, is closed, and all new log messages will be written to the new log destination.

LoggingTargetFile and LoggingTargetStream are not valid values for target. Use logSetFile() and logSetStream() instead, respectively.

If the function returns an error, the log file is not changed.

Returns
Zero on success, or a negative error code otherwise.

◆ operator!()

libcamera::operator! ( Transform  t)
constexpr

Return true if the transform is the Identity, otherwise false

Parameters
[in]tThe transform to be tested

◆ operator&()

libcamera::operator& ( Transform  t0,
Transform  t1 
)
constexpr

Apply bitwise AND operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator&=()

libcamera::operator&= ( Transform t0,
Transform  t1 
)
constexpr

Apply bitwise AND-assignment operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator*()

Transform libcamera::operator* ( Transform  t1,
Transform  t0 
)

Compose two transforms together.

Parameters
[in]t1The second transform
[in]t0The first transform

Composing transforms follows the usual mathematical convention for composing functions. That is, when performing t1 * t0, t0 is applied first, and then t1. For example, Transpose * HFlip performs HFlip first and then the Transpose yielding Rot270, as shown below.

A-B B-A B-D
Input image | | -> HFLip -> | | -> Transpose -> | | = Rot270
C-D D-C A-C

Note that composition is generally non-commutative for Transforms, and not the same as XOR-ing the underlying bit representations.

◆ operator-()

Transform libcamera::operator- ( Transform  t)

Invert a transform.

Parameters
[in]tThe transform to be inverted

That is, we return the transform such that t * (-t) and (-t) * t both yield the identity transform.

◆ operator<()

bool libcamera::operator< ( const Size lhs,
const Size rhs 
)

Compare sizes for smaller than order.

Sizes are compared on three criteria, in the following order.

  • A size with smaller width and smaller height is smaller.
  • A size with smaller area is smaller.
  • A size with smaller width is smaller.
Returns
True if lhs is smaller than rhs, false otherwise

◆ operator==() [1/5]

bool libcamera::operator== ( const BayerFormat lhs,
const BayerFormat rhs 
)

Compare two BayerFormats for equality.

Returns
True if order, bitDepth and packing are equal, or false otherwise

◆ operator==() [2/5]

bool libcamera::operator== ( const Point lhs,
const Point rhs 
)

Compare points for equality.

Returns
True if the two points are equal, false otherwise

◆ operator==() [3/5]

bool libcamera::operator== ( const Rectangle lhs,
const Rectangle rhs 
)

Compare rectangles for equality.

Returns
True if the two rectangles are equal, false otherwise

◆ operator==() [4/5]

bool libcamera::operator== ( const Size lhs,
const Size rhs 
)

Compare sizes for equality.

Returns
True if the two sizes are equal, false otherwise

◆ operator==() [5/5]

bool libcamera::operator== ( const SizeRange lhs,
const SizeRange rhs 
)

Compare size ranges for equality.

Returns
True if the two size ranges are equal, false otherwise

◆ operator^()

libcamera::operator^ ( Transform  t0,
Transform  t1 
)
constexpr

Apply bitwise XOR operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator^=()

libcamera::operator^= ( Transform t0,
Transform  t1 
)
constexpr

Apply bitwise XOR-assignment operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator|()

libcamera::operator| ( Transform  t0,
Transform  t1 
)
constexpr

Apply bitwise OR operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator|=()

libcamera::operator|= ( Transform t0,
Transform  t1 
)
constexpr

Apply bitwise OR-assignment operator between the bits in the two transforms.

Parameters
[in]t0The first transform
[in]t1The second transform

◆ operator~()

libcamera::operator~ ( Transform  t)
constexpr

Return the transform with all the bits inverted individually.

Parameters
[in]tThe transform of which the bits will be inverted

This inverts the bits that encode the transform in a bitwise manner. Note that this is not the proper inverse of transform t (for which use operator-).

◆ transformFromRotation()

Transform libcamera::transformFromRotation ( int  angle,
bool *  success 
)

Return the transform representing a rotation of the given angle clockwise.

Parameters
[in]angleThe angle of rotation in a clockwise sense. Negative values can be used to represent anticlockwise rotations
[out]successSet to true if the angle is a multiple of 90 degrees, otherwise false
Returns
The transform corresponding to the rotation if success was set to true, otherwise the Identity transform

◆ transformToString()

const char * libcamera::transformToString ( Transform  t)

Return a character string describing the transform.

Parameters
[in]tThe transform to be described.

Variable Documentation

◆ ipaModuleInfo

libcamera::ipaModuleInfo
Initial value:
= {
1,
"PipelineHandlerIPU3",
"ipu3",
}
#define IPA_MODULE_API_VERSION
The IPA module API version.

External IPA module interface.

Information of an IPA module.

The IPAModuleInfo is required to match an IPA module construction against the intented pipeline handler with the module. The API and pipeline handler versions must match the corresponding IPA interface and pipeline handler.

See also
struct IPAModuleInfo

An IPA module must export a struct IPAModuleInfo of this name.