Integrating UDDF Drivers with SIPL#

This page explains how to make your Unified Device Driver Framework (UDDF) driver discoverable to the Safe Image Processing Library (SIPL). UDDF provides a standardized way to integrate camera and transport drivers with SIPL.

Driver Configuration#

SIPL uses a name-matching system to connect drivers with camera configurations. The key requirement is that the driver name in your configuration must exactly match the name in your driver’s metadata.

Driver Information Structure#

Your driver must export its identity through the DriverInfo structure. For example:

const uddf::ddi::DriverInfo g_sampleCameraDriverInfo = {
    .name         = "SampleCameraDriver",        // ← This name is the key
    .description  = "Sample CoE camera driver",
    .vendor       = "NVIDIA Corporation",
    .revision     = "1.0.0",
    .driverTypeId = uddf::ddi::drivers::COE_MODULE_DRIVER_ID
};

const uddf::ddi::DriverInfo g_sampleTransportDriverInfo = {
    .name         = "SampleTransportDriver",     // ← Transport driver name
    .description  = "Sample HSB transport driver",
    .vendor       = "NVIDIA Corporation",
    .revision     = "1.0.0",
    .driverTypeId = uddf::ddi::drivers::HSB_TRANSPORT_DRIVER_ID
};

Camera Configuration#

The name of the driver in the CameraSystemConfig JSON configuration must match the name in the DriverInfo structure.

The following is an example configuration:

{
    "cameraConfigs": [
        {
            "name": "SampleCoECamera",
            "type": "CoE",
            "sensorInfo": {
                "driverName": "SampleCameraDriver",  // ← Must match DriverInfo.name exactly
                "name": "MySensor",
                "id": 0
            },
            // ... other camera configuration
        }
    ]
    "transportSettings": [
        {
            "name": "SampleTransport",
            "compatible_name": "SampleTransportDriver",  // ← For transport drivers, must match DriverInfo.name exactly
            "type": "CoE"
            // ... other transport configuration
        }
    ]
}

Important

sensorInfo.driverName must exactly match your camera driver’s DriverInfo.name.

transportSettings.compatible_name must exactly match your transport driver’s DriverInfo.name.

Driver names are case-sensitive.

Driver Installation and Discovery#

SIPL automatically discovers drivers from the standard location:

/usr/lib/nvsipl_uddf

Therefore, you must install your driver shared library to this directory.

Set up your packaging scripts and compilation makefiles to install your compiled driver shared library to this directory.

SIPL automatically scans this directory, loads your library, calls your uddf_discover_drivers() function, and matches the returned driver names with your configuration files.