12 #include <sys/ioctl.h> 19 #define HEX2(__x__) "0x" << hex << setw(2) << setfill('0') << (0xFF & uint8_t (__x__)) << dec 20 #define HEX4(__x__) "0x" << hex << setw(4) << setfill('0') << (0xFFFF & uint16_t(__x__)) << dec 21 #define HEX8(__x__) "0x" << hex << setw(8) << setfill('0') << (0xFFFFFFFF & uint32_t(__x__)) << dec 22 #define HEX16(__x__) "0x" << hex << setw(16) << setfill('0') << uint64_t(__x__) << dec 23 #define INSTP(_p_) HEX16(uint64_t(_p_)) 25 #define LDIFAIL(__x__) AJA_sERROR (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 26 #define LDIWARN(__x__) AJA_sWARNING(AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 27 #define LDINOTE(__x__) AJA_sNOTICE (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 28 #define LDIINFO(__x__) AJA_sINFO (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 29 #define LDIDBG(__x__) AJA_sDEBUG (AJA_DebugUnit_DriverInterface, INSTP(this) << "::" << AJAFUNC << ": " << __x__) 31 #define AsFrameStampStructPtr(_p_) reinterpret_cast<FRAME_STAMP_STRUCT*>(_p_) 32 #define AsStatusStructPtr(_p_) reinterpret_cast<AUTOCIRCULATE_STATUS_STRUCT*>(_p_) 33 #define AsTransferStatusStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TRANSFER_STATUS_STRUCT>(_p_) 34 #define AsRoutingTablePtr(_p_) reinterpret_cast<NTV2RoutingTable*>(_p_) 35 #define AsPTaskStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TASK_STRUCT>(_p_) 36 #define AsPTransferStruct(_p_) reinterpret_cast<PAUTOCIRCULATE_TRANSFER_STRUCT>(_p_) 37 #define AsVoidPtr(_p_) reinterpret_cast<void*>(_p_) 41 : _bitfileDirectory (
"../xilinx")
43 #
if !defined(NTV2_DEPRECATE_16_0)
60 #if !defined(NTV2_NULL_DEVICE) 66 static const string kAJANTV2(
"ajantv2");
74 ostringstream oss; oss <<
"/dev/" << kAJANTV2 <<
DEC(index);
79 if (count == inDeviceIndex)
88 {
LDIFAIL(
"Failed to open device index '" << inDeviceIndex <<
"'");
return false;}
110 #if !defined(NTV2_DEPRECATE_16_0) 113 #endif // !defined(NTV2_DEPRECATE_16_0) 124 #endif // !defined(NTV2_NULL_DEVICE) 136 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
139 #if defined(NTV2_NUB_CLIENT_SUPPORT) 142 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 155 {
LDIFAIL(
"IOCTL_NTV2_READ_REGISTER failed");
return false;}
157 #if defined(NTV2_PRETEND_DEVICE) 158 if (inRegNum ==
kRegBoardID && outValue == NTV2_PRETEND_DEVICE_FROM)
159 outValue = NTV2_PRETEND_DEVICE_TO;
162 #endif // NTV2_PRETEND_DEVICE 171 LDIFAIL(
"Shift " <<
DEC(inShift) <<
" > 31, reg=" <<
DEC(inRegNum) <<
" msk=" <<
xHEX0N(inMask,8));
174 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling 182 #endif // defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling 183 #if defined(NTV2_NUB_CLIENT_SUPPORT) 186 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 188 {
LDIFAIL(
"_hDevice is invalid (0 or -1)");
return false;}
198 {
LDIFAIL(
"IOCTL_NTV2_WRITE_REGISTER failed");
return false;}
208 {
LDIFAIL(
"IOCTL_NTV2_RESTORE_HARDWARE_PROCAMP_REGISTERS failed");
return false;}
228 intrControlStruct.
enable = bEnable;
231 LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
246 #if defined(NTV2_NUB_CLIENT_SUPPORT) 249 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 270 LDIFAIL(
"Unsupported interrupt count request. Only vertical input interrupts counted.");
283 {
LDIFAIL(
"IOCTL_NTV2_INTERRUPT_CONTROL failed");
return false;}
293 AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
AJA_DebugStat_WaitForInterruptOthers,
316 #if defined(NTV2_NUB_CLIENT_SUPPORT) 319 #endif // defined(NTV2_NUB_CLIENT_SUPPORT) 333 return waitIntrStruct.
success != 0;
344 cddmStruct.
msgSet = msgSet;
345 cddmStruct.
enable = enable;
348 LDIFAIL(
"IOCTL_NTV2_CONTROL_DRIVER_DEBUG_MESSAGES failed");
351 return cddmStruct.
success != 0;
363 LDIFAIL(
"IOCTL_NTV2_SETUP_BOARD failed");
373 #if !defined(NTV2_DEPRECATE_16_0) 387 LDIFAIL (
"MapFrameBuffers failed - couldn't get BA1MemorySize");
391 if (BA1MemorySize == 0)
393 LDIFAIL (
"BA1MemorySize is 0 -- module loaded with MapFrameBuffers=0?");
394 LDIFAIL (
"PIO mode not available, only driverbuffer DMA.");
410 LDIFAIL (
"MapFrameBuffers failed in call to mmap()");
437 LDIFAIL (
"UnmapFrameBuffers failed - couldn't get BA1MemorySize");
458 LDIFAIL (
"MapRegisters failed - couldn't get BA0MemorySize");
465 LDIFAIL (
"BA0MemorySize is 0, registers not mapped.");
527 LDIFAIL (
"MapXena2Flash failed - couldn't get BA4MemorySize");
533 LDIFAIL (
"MapXena2Flash failed - BA4MemorySize == 0");
540 PROT_READ | PROT_WRITE, MAP_SHARED,
545 LDIFAIL (
"MapXena2Flash(): mmap of BAR4 for PCI Flash failed");
576 LDIFAIL (
"MapDNXRegisters failed - couldn't get BA2MemorySize");
581 LDIFAIL (
"MapDNXRegisters failed - BA2MemorySize == 0");
589 PROT_READ | PROT_WRITE, MAP_SHARED,
595 LDIFAIL (
"MapDNXRegisters failed - couldn't map BAR2");
616 #endif // !defined(NTV2_DEPRECATE_16_0) 626 const ULWord inFrameNumber,
628 const ULWord inOffsetBytes,
630 const bool inSynchronous)
638 buffer, inOffsetBytes, 0,
643 dmaControlBuf.
engine = inDMAEngine;
649 dmaControlBuf.
numBytes = inByteCount;
655 dmaControlBuf.
poll = 0;
656 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 657 ULWord numDmaDriverBuffers;
664 dmaControlBuf.
poll = 0;
666 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 670 #define ERRMSG(s) #s " failed" 675 if (inOffsetBytes == 0)
688 if (inOffsetBytes == 0)
702 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
706 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
714 const ULWord inFrameNumber,
716 const ULWord inOffsetBytes,
718 const ULWord inNumSegments,
721 const bool inIsSynchronous)
729 inNumSegments, inHostPitch, inCardPitch, inIsSynchronous);
731 LDIDBG(
"FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" NB=" << inByteCount << (inIsRead?
" Rd":
" Wr"));
735 dmaControlBuf.
engine = inDMAEngine;
741 dmaControlBuf.
numBytes = inByteCount;
745 dmaControlBuf.
poll = 0;
746 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 747 ULWord numDmaDriverBuffers(0);
751 if (!inIsSynchronous)
756 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 760 #define ERRMSG(s) #s " failed" 792 const int result (ioctl(
int(
_hDevice), request, &dmaControlBuf));
796 LDIFAIL(errMsg <<
" FRM=" << inFrameNumber <<
" ENG=" << inDMAEngine <<
" CNT=" << inByteCount);
805 const bool inIsTarget,
806 const ULWord inFrameNumber,
807 const ULWord inCardOffsetBytes,
809 const ULWord inNumSegments,
810 const ULWord inSegmentHostPitch,
811 const ULWord inSegmentCardPitch,
818 inNumSegments, inSegmentHostPitch, inSegmentCardPitch, inP2PData);
827 ::memset (
AsVoidPtr(&dmaP2PStruct), 0,
sizeof(dmaP2PStruct));
844 dmaP2PStruct.
bRead = inIsTarget;
861 {
LDIFAIL(
"IOCTL error");
return false;}
898 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CONTROL failed");
return false;}
909 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_STATUS, failed");
return false;}
919 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
926 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
938 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
943 acFrameStampCombo.
acTask = *pTask;
948 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_FRAMESTAMP failed");
return false;}
951 *pTask = acFrameStampCombo.
acTask;
962 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
963 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 964 ULWord numDmaDriverBuffers;
967 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
968 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 974 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
977 acXferCombo.channelSpec = autoCircData.
channelSpec;
978 acXferCombo.acTransfer = *acTransfer;
979 acXferCombo.acStatus = *acStatus;
980 if (!pXena2RoutingTable)
981 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
983 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
990 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
992 *acStatus = acXferCombo.acStatus;
1003 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
1004 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 1005 ULWord numDmaDriverBuffers;
1007 if ((
unsigned long)acTransfer->
audioBuffer >= numDmaDriverBuffers && (
unsigned long)acTransfer->
audioBuffer % 4)
1008 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
1009 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 1015 memset((
void*)&acXferCombo, 0,
sizeof acXferCombo);
1018 acXferCombo.channelSpec = autoCircData.
channelSpec;
1019 acXferCombo.acTransfer = *acTransfer;
1020 acXferCombo.acStatus = *acStatus;
1021 if (!pXena2RoutingTable)
1022 memset(&acXferCombo.acXena2RoutingTable, 0,
sizeof(acXferCombo.acXena2RoutingTable));
1024 acXferCombo.acXena2RoutingTable = *pXena2RoutingTable;
1031 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1033 *acStatus = acXferCombo.acStatus;
1044 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer size not mod 4");
return false;}
1045 #if defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 1046 ULWord numDmaDriverBuffers;
1049 {
LDIFAIL (
"TransferAutoCirculate failed - audio buffer address not mod 4");
return false;}
1050 #endif // defined(NTV2_DRIVER_ALLOCATED_BUFFERS) 1056 ::memset(
AsVoidPtr(&acXferCombo), 0,
sizeof(acXferCombo));
1063 if (pXena2RoutingTable)
1066 acXferCombo.
acTask = *pTask;
1073 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_TRANSFER failed");
return false;}
1082 memset(&acFrameStampCombo, 0,
sizeof acFrameStampCombo);
1085 acFrameStampCombo.
acTask = *pTask;
1090 {
LDIFAIL(
"IOCTL_NTV2_AUTOCIRCULATE_CAPTURETASK failed");
return false;}
1095 LDIFAIL(
"Unsupported AC command type in AutoCirculate()");
1115 {
LDIFAIL(
"IOCTL_AJANTV2_MESSAGE failed");
return false;}
1120 #if !defined(NTV2_DEPRECATE_16_0) 1138 ULWord numDmaDriverBuffers;
1141 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1145 if (!numDmaDriverBuffers)
1147 LDIFAIL(
"numDmaDriverBuffers == 0");
1155 PROT_READ | PROT_WRITE,MAP_SHARED,
1182 ULWord numDmaDriverBuffers;
1185 LDIFAIL(
"GetDMANumDriverBuffers() failed");
1188 if (!numDmaDriverBuffers)
1191 LDIFAIL(
"numDmaDriverBuffers == 0");
1199 #endif // !defined(NTV2_DEPRECATE_16_0) 1211 #if !defined(NTV2_DEPRECATE_16_0) 1240 dmaControlBuf.
poll = poll;
1242 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1274 dmaControlBuf.
poll = poll;
1276 {
LDIFAIL(
"IOCTL_NTV2_DMA_WRITE_FRAME failed");
return false;}
1308 dmaControlBuf.
linePitch = linePitch == 0 ? 1 : linePitch;
1309 dmaControlBuf.
poll = poll;
1311 static bool bPrintedDownsampleDeprecatedMsg =
false;
1312 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1313 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1316 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1349 if( linePitch == 0 ) linePitch = 1;
1351 dmaControlBuf.
poll = poll;
1353 static bool bPrintedDownsampleDeprecatedMsg =
false;
1354 if (downSample && !bPrintedDownsampleDeprecatedMsg)
1355 {
LDIWARN(
"downSample is deprecated"); bPrintedDownsampleDeprecatedMsg =
true;}
1358 {
LDIFAIL(
"IOCTL_NTV2_DMA_READ_FRAME failed");
return false;}
1361 #endif // !defined(NTV2_DEPRECATE_16_0) 1386 dmaControlBuf.
poll = 0;
1390 #define ERRMSG(s) #s " failed" 1393 if (offsetSrc == 0 && offsetDest == 0)
1404 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1405 {
LDIFAIL(errMsg);
return false;}
1433 dmaControlBuf.
poll = 0;
1436 #define ERRMSG(s) #s " failed" 1439 if (offsetSrc == 0 && offsetDest == 0)
1450 if (ioctl(
int(
_hDevice), request, &dmaControlBuf))
1451 {
LDIFAIL(errMsg);
return false;}
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
#define AsTransferStatusStruct(_p_)
AUTOCIRCULATE_TRANSFER_STRUCT acTransfer
virtual bool CloseLocalPhysical(void)
Releases host resources associated with the local/physical device connection.
virtual bool DmaReadWithOffsets(NTV2DMAEngine DMAEngine, ULWord frameNumber, ULWord *pFrameBuffer, ULWord offsetSrc, ULWord offsetDest, ULWord bytes)
ULWord * _pRegisterBaseAddress
virtual bool SetupBoard(void)
defined(NTV2_DEPRECATE_17_6)
virtual bool UnmapXena2Flash(void)
virtual bool UnmapDMADriverBuffer()
virtual bool MapRegisters(void)
Declares the AJADebug class.
virtual UWord GetIndexNumber(void) const
virtual bool NTV2Message(NTV2_HEADER *pInOutMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
void setDeviceIndexNumber(const UWord num)
#define NTV2_IS_VALID_INTERRUPT_ENUM(__e__)
ULWord ulVidSegmentCardPitch
ULWord * _pDNXRegisterBaseAddress
virtual bool Close(void)
Closes me, releasing host resources that may have been allocated in a previous Open call...
virtual bool GetDMANumDriverBuffers(ULWord *pNumDmaDriverBuffers)
if(!(riid==IID_IUnknown) &&!(riid==IID_IClassFactory))
NTV2_DriverDebugMessageSet
virtual ULWord GetFrameBufferSize(void) const
#define AsFrameStampStructPtr(_p_)
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
virtual bool DmaReadFrameDriverBuffer(NTV2DMAEngine DMAEngine, ULWord frameNumber, unsigned long dmaBufferFrame, ULWord bytes, ULWord downSample, ULWord linePitch, ULWord poll)
static const uint32_t sIntEnumToStatKeys[]
#define AsRoutingTablePtr(_p_)
#define NTV2_ASSERT(_expr_)
virtual bool NTV2DMATransferRemote(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, NTV2Buffer &inOutBuffer, const ULWord inCardOffsetBytes, const ULWord inNumSegments, const ULWord inSegmentHostPitch, const ULWord inSegmentCardPitch, const bool inSynchronous)
virtual bool RestoreHardwareProcampRegisters(void)
static AJAStatus StatTimerStop(const uint32_t inKey)
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the current total number of interrupts of the given type processed by the driver's inter...
virtual bool IsRemote(void) const
AUTOCIRCULATE_TASK_STRUCT acTask
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
NTV2DeviceID _boardID
My cached device ID.
virtual bool IsOpen(void) const
virtual ~CNTV2LinuxDriverInterface()
bool _boardOpened
True if I'm open and connected to the device.
virtual void BumpEventCount(const INTERRUPT_ENUMS eInterruptType)
Atomically increments the event count tally for the given interrupt type.
#define AsPTransferStruct(_p_)
ULWord64 ullVideoBusAddress
AUTOCIRCULATE_TRANSFER_STATUS_STRUCT acStatus
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device...
virtual bool GetDMADriverBufferPhysicalAddress(ULWord *physAddr)
virtual bool ControlDriverDebugMessages(NTV2_DriverDebugMessageSet msgSet, bool enable)
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
virtual bool MapXena2Flash(void)
bool mRecordRegWrites
True if recording; otherwise false when not recording.
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &autoCircData)
Sends an AutoCirculate command to the NTV2 driver.
All new NTV2 structs start with this common header.
AJALock mRegWritesLock
Guard mutex for mRegWrites.
#define AsPTaskStruct(_p_)
virtual bool DmaWriteWithOffsets(NTV2DMAEngine DMAEngine, ULWord frameNumber, ULWord *pFrameBuffer, ULWord offsetSrc, ULWord offsetDest, ULWord bytes)
INTERRUPT_ENUMS eInterruptType
NTV2_GlobalAudioPlaybackMode
CNTV2LinuxDriverInterface()
NTV2Crosspoint channelSpec
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
virtual bool NTV2Message(NTV2_HEADER *pInMessage)
Sends a message to the NTV2 driver (the new, improved, preferred way).
Describes a user-space buffer on the host computer. I have an address and a length, plus some optional attributes (allocated by SDK?, page-aligned? etc.).
static AJAStatus StatTimerStart(const uint32_t inKey)
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
ULWord * _pXena2FlashBaseAddress
NTV2_DriverDebugMessageSet msgSet
virtual bool UnmapRegisters(void)
virtual bool UnmapFrameBuffers(void)
struct AUTOCIRCULATE_P2P_STRUCT CHANNEL_P2P_STRUCT
FRAME_STAMP_STRUCT acFrameStamp
bool NTV2DeviceIsDirectAddressable(const NTV2DeviceID inDeviceID)
ULWord * _pFrameBaseAddress
virtual bool GetBA4MemorySize(ULWord *memSize)
ULWord64 messageBusAddress
virtual bool GetBA0MemorySize(ULWord *memSize)
INTERRUPT_ENUMS eInterruptType
virtual bool ConfigureInterrupt(const bool bEnable, const INTERRUPT_ENUMS eInterruptType)
virtual bool DmaTransfer(const NTV2DMAEngine inDMAEngine, const bool inIsRead, const ULWord inFrameNumber, ULWord *pFrameBuffer, const ULWord inCardOffsetBytes, const ULWord inTotalByteCount, const bool inSynchronous=(!(0)))
Transfers data between the AJA device and the host. This function will block and not return to the ca...
ULWord ulVidSegmentHostPitch
Declares numerous NTV2 utility functions.
virtual bool UnmapDNXRegisters(void)
virtual bool WaitForInterrupt(INTERRUPT_ENUMS eInterrupt, ULWord timeOutMs=68)
Efficiently waits for the next given interrupt to be signaled on the device.
virtual bool MapDNXRegisters(void)
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInterrupt, ULWord &outCount)
Answers with the current total number of interrupts of the given type processed by the driver's inter...
ULWord videoSegmentHostPitch
ULWord * _pCh1FrameBaseAddress
AUTO_CIRC_COMMAND eCommand
#define NTV2_UNUSED(__p__)
_EventCounts mEventCounts
My event tallies, one for each interrupt type. Note that these.
Specifies channel or FrameStore 1 (or the first item).
ULWord64 ullMessageBusAddress
#define xHEX0N(__x__, __n__)
virtual bool GetBA2MemorySize(ULWord *memSize)
virtual bool SetAudioOutputMode(NTV2_GlobalAudioPlaybackMode mode)
virtual bool WaitForInterrupt(const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs=68)
Efficiently waits for the next given interrupt to be signaled on the device.
#define INVALID_HANDLE_VALUE
Declares the CNTV2LinuxDriverInterface class.
virtual bool GetBA1MemorySize(ULWord *memSize)
NTV2RoutingTable acXena2RoutingTable
Types and defines shared between NTV2 user application interface and Linux device driver...
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device...
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
#define AsStatusStructPtr(_p_)
virtual bool OpenLocalPhysical(const UWord inDeviceIndex)
Opens the local/physical device connection.
AUTOCIRCULATE_TASK_STRUCT acTask
static std::string IntName(const INTERRUPT_ENUMS id)
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
bool mSkipRegWrites
True if actual register writes are skipped while recording.
NTV2RPCAPI * _pRPCAPI
Points to remote or software device interface; otherwise NULL for local physical device.
virtual bool MapDMADriverBuffer()
virtual bool MapFrameBuffers(void)
ULWord * _pDMADriverBufferAddress
NTV2Crosspoint channelSpec
NTV2Crosspoint channelSpec
ULWord videoSegmentCardPitch
virtual bool GetDMADriverBufferAddress(ULWord **pDMADriverBuffer)
virtual bool AutoCirculate(AUTOCIRCULATE_DATA &pAutoCircData)
Sends an AutoCirculate command to the NTV2 driver.
virtual bool DmaWriteFrameDriverBuffer(NTV2DMAEngine DMAEngine, ULWord frameNumber, unsigned long dmaBufferFrame, ULWord bytes, ULWord poll)
virtual bool GetAudioOutputMode(NTV2_GlobalAudioPlaybackMode *mode)