NVIDIA DRIVE OS Linux SDK API Reference

6.0.3 Release
NvSIPLCamera.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved.
3  *
4  * NVIDIA CORPORATION and its licensors retain all intellectual property
5  * and proprietary rights in and to this software, related documentation
6  * and any modifications thereto. Any use, reproduction, disclosure or
7  * distribution of this software and related documentation without an express
8  * license agreement from NVIDIA CORPORATION is strictly prohibited.
9  */
10 #ifndef NVSIPLCAMERA_HPP
11 #define NVSIPLCAMERA_HPP
12 
13 #include "NvSIPLCommon.hpp"
14 #include "NvSIPLPlatformCfg.hpp"
15 #include "NvSIPLPipelineMgr.hpp"
16 #include "INvSiplControlAuto.hpp"
17 #include "NvSIPLClient.hpp"
18 #include "INvSIPLDeviceInterfaceProvider.hpp"
19 
20 #if !NV_IS_SAFETY
21 #include "nvmedia_image.h"
22 #endif // !NV_IS_SAFETY
23 
24 #include "nvscisync.h"
25 #include "nvscistream.h"
26 #include "nvscibuf.h"
27 
28 #include <cstdint>
29 #include <memory>
30 #include <vector>
31 
47 namespace nvsipl
48 {
49 
54 #if !NV_IS_SAFETY
55 const size_t NITO_PARAMETER_SET_ID_SIZE = 16U;
56 const size_t NITO_SCHEMA_HASH_SIZE = 32U;
57 const size_t NITO_DATA_HASH_SIZE = 32U;
58 
64 {
65  uint8_t parameterSetID[NITO_PARAMETER_SET_ID_SIZE]; //< Identifier of the parameter set
66  uint8_t schemaHash[NITO_SCHEMA_HASH_SIZE]; //< Hash value of the parameter set schema
67  uint8_t dataHash[NITO_DATA_HASH_SIZE]; //< Hash value of parameter values
68 };
69 
106 SIPLStatus GetNitoMetadataFromMemory(uint8_t const *const nitoMem,
107  size_t const nitoMemLength,
108  NvSIPLNitoMetadata *const metadataArray,
109  size_t const metadataArrayLength,
110  size_t *const metadataCount);
111 
112 #endif // NV_IS_SAFETY
113 
114 typedef enum
115 {
119  /* For a given SyncObj SIPL acts as a waiter. This type corresponds to
120  * prefences to SIPL */
122  /* For a given SyncObj SIPL acts as both signaler and waiter. */
125 
129 typedef enum {
150 
152 
153 
162 {
163  public:
189  static std::unique_ptr<INvSIPLCamera> GetInstance();
190 
220  virtual SIPLStatus SetPlatformCfg(const PlatformCfg *const platformConfig) = 0;
221 
254  virtual SIPLStatus SetPlatformCfg(const PlatformCfg *const platformConfig, NvSIPLDeviceBlockQueues &queues) = 0;
255 
284  virtual SIPLStatus SetPipelineCfg(uint32_t index,
285  const NvSIPLPipelineConfiguration &pipelineCfg,
286  NvSIPLPipelineQueues& queues) = 0;
287 
318  virtual SIPLStatus RegisterAutoControlPlugin(uint32_t index,
319  PluginType type,
320  ISiplControlAuto *const autoControl,
321  const std::vector<uint8_t>& blob) = 0;
322 
351  virtual SIPLStatus Init() = 0;
352 
353 #if !NV_IS_SAFETY
354 
389  virtual SIPLStatus SetSensorCharMode(uint32_t index, uint8_t expNo) = 0;
390 
434  virtual SIPLStatus GetImageAttributes(uint32_t index,
436  NvSIPLImageAttr &imageAttr)
437  NVM_DEPRECATED_MSG("Removed in future release") = 0;
438 #endif // !NV_IS_SAFETY
439 
516  virtual SIPLStatus GetImageAttributes(uint32_t index,
518  NvSciBufAttrList &imageAttr) = 0;
519 
553  virtual SIPLStatus ReadEEPROMData(const uint32_t index,
554  const uint16_t address,
555  const uint32_t length,
556  uint8_t * const buffer) = 0;
557 
558 #if !NV_IS_SAFETY
559 
602  virtual SIPLStatus RegisterImageGroups(uint32_t const index,
603  const std::vector<NvMediaImageGroup*> &imageGroups)
604  NVM_DEPRECATED_MSG("Removed in future release") = 0;
605 
662  virtual SIPLStatus RegisterImages(uint32_t const index,
664  const std::vector<NvMediaImage*> &images)
665  NVM_DEPRECATED_MSG("Removed in future release") = 0;
666 #endif
667 
732  virtual SIPLStatus RegisterImages(uint32_t const index,
734  const std::vector<NvSciBufObj> &images) = 0;
735 
763  virtual SIPLStatus Start() = 0;
764 
791  virtual SIPLStatus Stop() = 0;
792 
820  virtual SIPLStatus Deinit() = 0;
821 
855  virtual SIPLStatus GetMaxErrorSize(const uint32_t devBlkIndex,
856  size_t & maxErrorSize) = 0;
857 
891  virtual SIPLStatus GetErrorGPIOEventInfo(const uint32_t devBlkIndex,
892  const uint32_t gpioIndex,
893  SIPLGpioEvent &event) = 0;
894 
938  virtual SIPLStatus GetDeserializerErrorInfo(const uint32_t devBlkIndex,
939  SIPLErrorDetails * const deserializerErrorInfo,
940  bool & isRemoteError,
941  uint8_t& linkErrorMask) = 0;
942 
991  virtual SIPLStatus GetModuleErrorInfo(const uint32_t index,
992  SIPLErrorDetails * const serializerErrorInfo,
993  SIPLErrorDetails * const sensorErrorInfo,
994  const SIPLModuleErrorReadFlag errorsToRead
996 
1026  virtual SIPLStatus DisableLink(uint32_t index) = 0;
1027 
1059  virtual SIPLStatus EnableLink(uint32_t index, bool const resetModule) = 0;
1060 
1061 #if !NV_IS_SAFETY
1062 
1091  virtual SIPLStatus ToggleLED(uint32_t index, bool enable) = 0;
1092 #endif // !NV_IS_SAFETY
1093 
1095  virtual ~INvSIPLCamera() = default;
1096 
1131  virtual SIPLStatus FillNvSciSyncAttrList(uint32_t index,
1133  NvSciSyncAttrList const attrList,
1134  NvMediaNvSciSyncClientType const clientType)
1135  NVM_DEPRECATED_MSG("Removed in future release") = 0;
1136 
1169  virtual SIPLStatus FillNvSciSyncAttrList(uint32_t index,
1171  NvSciSyncAttrList const attrList,
1172  NvSiplNvSciSyncClientType const clientType) = 0;
1173 
1205  virtual SIPLStatus RegisterNvSciSyncObj(uint32_t index,
1207  NvMediaNvSciSyncObjType const syncobjtype,
1208  NvSciSyncObj const syncobj)
1209  NVM_DEPRECATED_MSG("Removed in future release") = 0;
1210 
1211 
1241  virtual SIPLStatus RegisterNvSciSyncObj(uint32_t index,
1243  NvSiplNvSciSyncObjType const syncobjtype,
1244  NvSciSyncObj const syncobj) = 0;
1245 
1246 
1247 
1279  virtual SIPLStatus GetDeserializerInterfaceProvider(uint32_t const devBlkIndex,
1280  IInterfaceProvider *&interfaceProvider) = 0;
1281 
1314  virtual SIPLStatus GetModuleInterfaceProvider(uint32_t const index,
1315  IInterfaceProvider *&interfaceProvider) = 0;
1316 
1317 }; // INvSIPLCamera
1318 
1320 } // namespace nvsipl
1321 
1322 
1323 
1324 #endif // NVSIPLCAMERA_HPP
nvsipl::INvSIPLCamera::RegisterImageGroups
virtual SIPLStatus RegisterImageGroups(uint32_t const index, const std::vector< NvMediaImageGroup * > &imageGroups) NVM_DEPRECATED_MSG("Removed in future release")=0
Register image groups.
NvSIPLClient.hpp
NVIDIA SIPL: Client Interface - NvSIPL Client
nvsipl::INvSIPLCamera::GetDeserializerInterfaceProvider
virtual SIPLStatus GetDeserializerInterfaceProvider(uint32_t const devBlkIndex, IInterfaceProvider *&interfaceProvider)=0
Retrieve custom interface provider for deserializer.
nvsipl::INvSIPLCamera::GetErrorGPIOEventInfo
virtual SIPLStatus GetErrorGPIOEventInfo(const uint32_t devBlkIndex, const uint32_t gpioIndex, SIPLGpioEvent &event)=0
Get the error interrupt event information for a GPIO activation.
INvSiplControlAuto.hpp
NVIDIA SIPL: Auto Control Interface - SIPL Auto Control
nvsipl::INvSIPLCamera::GetDeserializerErrorInfo
virtual SIPLStatus GetDeserializerErrorInfo(const uint32_t devBlkIndex, SIPLErrorDetails *const deserializerErrorInfo, bool &isRemoteError, uint8_t &linkErrorMask)=0
Get generic deserializer error information.
nvsipl::NITO_DATA_HASH_SIZE
const size_t NITO_DATA_HASH_SIZE
Definition: NvSIPLCamera.hpp:57
nvsipl::INvSIPLCamera::ToggleLED
virtual SIPLStatus ToggleLED(uint32_t index, bool enable)=0
Control the LED on the associated camera module.
nvsipl::SIPL_WAITER
@ SIPL_WAITER
Definition: NvSIPLCamera.hpp:121
nvsipl::INvSIPLCamera::Stop
virtual SIPLStatus Stop()=0
Stop streaming from all sensors in the selected platform configuration.
NvMediaNvSciSyncObjType
NvMediaNvSciSyncObjType
Defines NvMedia NvSciSyncObj types.
Definition: tvmr/include/nvmedia_core.h:273
nvsipl::INvSIPLCamera::GetInstance
static std::unique_ptr< INvSIPLCamera > GetInstance()
Get a handle to an INvSIPLCamera instance.
nvsipl::SIPL_SIGNALER_WAITER
@ SIPL_SIGNALER_WAITER
Definition: NvSIPLCamera.hpp:123
nvsipl::INvSIPLCamera::SetSensorCharMode
virtual SIPLStatus SetSensorCharMode(uint32_t index, uint8_t expNo)=0
Set sensor in characterization mode.
nvsipl::SIPLGpioEvent
SIPLGpioEvent
CDAC GPIO event codes.
Definition: NvSIPLCommon.hpp:95
NvSIPLCommon.hpp
NVIDIA SIPL: Common Data Structures - SIPL
nvsipl::SIPL_SIGNALER
@ SIPL_SIGNALER
For a given SyncObj SIPL acts as a signaler.
Definition: NvSIPLCamera.hpp:118
nvsipl::SIPLModuleErrorReadFlag
SIPLModuleErrorReadFlag
Flag indicating which module errors to read.
Definition: NvSIPLCommon.hpp:145
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:314
nvsipl::SIPLErrorDetails
Error details for a particular device.
Definition: NvSIPLCommon.hpp:126
nvsipl::NvSIPLNitoMetadata::schemaHash
uint8_t schemaHash[NITO_SCHEMA_HASH_SIZE]
Definition: NvSIPLCamera.hpp:66
NvSIPLPlatformCfg.hpp
NVIDIA SIPL: Camera Platform Configuration
nvsipl::NITO_SCHEMA_HASH_SIZE
const size_t NITO_SCHEMA_HASH_SIZE
Definition: NvSIPLCamera.hpp:56
nvsipl::INvSIPLCamera::EnableLink
virtual SIPLStatus EnableLink(uint32_t index, bool const resetModule)=0
Enable a given link.
nvscisync.h
NVIDIA Software Communications Interface (SCI) : NvSciSync
nvsipl::NVSIPL_MODULE_ERROR_READ_ALL
@ NVSIPL_MODULE_ERROR_READ_ALL
Read both sensor and serializer error information when getting error details.
Definition: NvSIPLCommon.hpp:160
nvsipl::INvSIPLCamera::Init
virtual SIPLStatus Init()=0
Initialize the API for the selected platform configuration.
nvsipl::INvSIPLCamera::RegisterNvSciSyncObj
virtual SIPLStatus RegisterNvSciSyncObj(uint32_t index, INvSIPLClient::ConsumerDesc::OutputType const outType, NvMediaNvSciSyncObjType const syncobjtype, NvSciSyncObj const syncobj) NVM_DEPRECATED_MSG("Removed in future release")=0
Register an NvSciSyncObj.
nvsipl::INvSIPLCamera::Deinit
virtual SIPLStatus Deinit()=0
Deinitialize the API for the selected platform configuration.
nvsipl::INvSIPLClient::ConsumerDesc::OutputType
OutputType
Defines the types of the SIPL pipeline output.
Definition: NvSIPLClient.hpp:417
nvsipl::GetNitoMetadataFromMemory
SIPLStatus GetNitoMetadataFromMemory(uint8_t const *const nitoMem, size_t const nitoMemLength, NvSIPLNitoMetadata *const metadataArray, size_t const metadataArrayLength, size_t *const metadataCount)
Get NITO Metadata (knobset UUID, schema hash, data hash) from a NITO memory buffer.
nvsipl::PlatformCfg
Defines the camera platform configuration.
Definition: NvSIPLPlatformCfg.hpp:52
nvsipl::NvSIPLPipelineQueues
This is the output structure for SetPipelineCfg().
Definition: NvSIPLPipelineMgr.hpp:471
nvsipl::INvSIPLCamera::SetPlatformCfg
virtual SIPLStatus SetPlatformCfg(const PlatformCfg *const platformConfig)=0
Set a platform configuration.
nvsipl::NVSIPL_PRESYNCOBJ
@ NVSIPL_PRESYNCOBJ
Specifies an NvSciSyncObj type for which SIPL acts as a waiter.
Definition: NvSIPLCamera.hpp:131
nvsipl::INvSIPLCamera::GetModuleInterfaceProvider
virtual SIPLStatus GetModuleInterfaceProvider(uint32_t const index, IInterfaceProvider *&interfaceProvider)=0
Retrieve custom interface provider for module.
nvsipl::NVSIPL_EOF_PRESYNCOBJ
@ NVSIPL_EOF_PRESYNCOBJ
Specifies an NvSciSyncObj type for which SIPL acts both as a signaler, signaling EOFFence,...
Definition: NvSIPLCamera.hpp:142
nvsipl::INvSIPLCamera::ReadEEPROMData
virtual SIPLStatus ReadEEPROMData(const uint32_t index, const uint16_t address, const uint32_t length, uint8_t *const buffer)=0
Read from an EEPROM in a camera module.
nvsipl::NvSIPLPipelineConfiguration
Defines the camera pipeline configuration.
Definition: NvSIPLPipelineMgr.hpp:278
nvsipl::NvSIPLImageAttr
Describes attributes of images used in image processing pipeline.
Definition: NvSIPLPipelineMgr.hpp:265
nvsipl::INvSIPLCamera::GetImageAttributes
virtual SIPLStatus GetImageAttributes(uint32_t index, INvSIPLClient::ConsumerDesc::OutputType const outType, NvSIPLImageAttr &imageAttr) NVM_DEPRECATED_MSG("Removed in future release")=0
Get image attributes.
nvsipl::SIPLStatus
SIPLStatus
Defines the status codes returned by functions in SIPL modules.
Definition: NvSIPLCommon.hpp:64
NvSIPLPipelineMgr.hpp
NVIDIA SIPL: Pipeline Manager - NvSIPL Pipeline Manager
nvsipl::NvSiplNvSciSyncObjType
NvSiplNvSciSyncObjType
Defines SIPL NvSciSyncObj types.
Definition: NvSIPLCamera.hpp:129
nvsipl::INvSIPLCamera::DisableLink
virtual SIPLStatus DisableLink(uint32_t index)=0
Disable a given link.
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
A container constituting an attribute list which contains.
Definition: nvscibuf.h:2596
nvsipl::INvSIPLCamera
The top-level API for SIPL.
Definition: NvSIPLCamera.hpp:161
nvscistream.h
NVIDIA Software Communications Interface (SCI) : NvSciStream
nvsipl::INvSIPLCamera::SetPipelineCfg
virtual SIPLStatus SetPipelineCfg(uint32_t index, const NvSIPLPipelineConfiguration &pipelineCfg, NvSIPLPipelineQueues &queues)=0
Set a pipeline configuration.
nvscibuf.h
NVIDIA Software Communications Interface (SCI) : NvSciBuf
nvsipl::NvSiplNvSciSyncClientType
NvSiplNvSciSyncClientType
Definition: NvSIPLCamera.hpp:114
nvsipl::INvSIPLCamera::RegisterImages
virtual SIPLStatus RegisterImages(uint32_t const index, INvSIPLClient::ConsumerDesc::OutputType const outType, const std::vector< NvMediaImage * > &images) NVM_DEPRECATED_MSG("Removed in future release")=0
Register images.
nvsipl::INvSIPLCamera::GetMaxErrorSize
virtual SIPLStatus GetMaxErrorSize(const uint32_t devBlkIndex, size_t &maxErrorSize)=0
Get maximum size of error information.
nvsipl::NVSIPL_SOF_PRESYNCOBJ
@ NVSIPL_SOF_PRESYNCOBJ
Specifies an NvSciSyncObj type for which an NvMedia component acts as a signaler, signaling SOFFence,...
Definition: NvSIPLCamera.hpp:149
nvsipl::INvSIPLCamera::RegisterAutoControlPlugin
virtual SIPLStatus RegisterAutoControlPlugin(uint32_t index, PluginType type, ISiplControlAuto *const autoControl, const std::vector< uint8_t > &blob)=0
Register the Auto Control plugin to be used for a specific pipeline.
nvsipl::NVSIPL_EOFSYNCOBJ
@ NVSIPL_EOFSYNCOBJ
Specifies an NvSciSyncObj type for which SIPL acts as a signaler, signaling EOFFence.
Definition: NvSIPLCamera.hpp:133
nvsipl
Contains the classes and variables for implementation of SIPL.
Definition: INvSiplControlAuto.hpp:33
nvsipl::NITO_PARAMETER_SET_ID_SIZE
const size_t NITO_PARAMETER_SET_ID_SIZE
Definition: NvSIPLCamera.hpp:55
nvsipl::NvSIPLNitoMetadata::dataHash
uint8_t dataHash[NITO_DATA_HASH_SIZE]
Definition: NvSIPLCamera.hpp:67
nvsipl::NVSIPL_SOFSYNCOBJ
@ NVSIPL_SOFSYNCOBJ
Specifies an NvSciSyncObj type for which SIPL acts as a signaler, signaling SOFFence.
Definition: NvSIPLCamera.hpp:135
nvsipl::NvSIPLNitoMetadata
NvSIPLNitoMetadata defines the 3-tuple returned by a successful call to GetNitoMetadataFromMemory().
Definition: NvSIPLCamera.hpp:63
nvsipl::PluginType
PluginType
Defines types of SIPL Control Auto plug-ins.
Definition: NvSIPLControlAutoDef.hpp:32
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:295
nvsipl::ISiplControlAuto
Defines SIPL Control Auto Interface Class.
Definition: INvSiplControlAuto.hpp:44
nvmedia_image.h
NVIDIA Media Interface: Image Processing
nvsipl::INvSIPLCamera::~INvSIPLCamera
virtual ~INvSIPLCamera()=default
Default destructor.
nvsipl::NvSIPLNitoMetadata::parameterSetID
uint8_t parameterSetID[NITO_PARAMETER_SET_ID_SIZE]
Definition: NvSIPLCamera.hpp:65
nvsipl::NvSIPLDeviceBlockQueues
Holds the queues used by the client to receive device block event notifications.
Definition: NvSIPLPipelineMgr.hpp:504
nvsipl::INvSIPLCamera::Start
virtual SIPLStatus Start()=0
Begin streaming from all sensors in the selected platform configuration.
nvsipl::INvSIPLCamera::FillNvSciSyncAttrList
virtual SIPLStatus FillNvSciSyncAttrList(uint32_t index, INvSIPLClient::ConsumerDesc::OutputType const outType, NvSciSyncAttrList const attrList, NvMediaNvSciSyncClientType const clientType) NVM_DEPRECATED_MSG("Removed in future release")=0
Fill an NvSciSyncAttrList.
NVM_DEPRECATED_MSG
#define NVM_DEPRECATED_MSG(fmt)
Definition: tvmr/include/nvmedia_core.h:39
nvsipl::INvSIPLCamera::GetModuleErrorInfo
virtual SIPLStatus GetModuleErrorInfo(const uint32_t index, SIPLErrorDetails *const serializerErrorInfo, SIPLErrorDetails *const sensorErrorInfo, const SIPLModuleErrorReadFlag errorsToRead=NVSIPL_MODULE_ERROR_READ_ALL)=0
Gets generic module error information.
NvMediaNvSciSyncClientType
NvMediaNvSciSyncClientType
NvMedia NvSciSync Client Type.
Definition: tvmr/include/nvmedia_core.h:260