AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
ntv2driverinterface.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2DRIVERINTERFACE_H
9 #define NTV2DRIVERINTERFACE_H
10 
11 #include "ajatypes.h"
12 #include "ntv2enums.h"
13 #include "ntv2nubtypes.h"
14 #include "ntv2nubaccess.h"
15 #include "ntv2publicinterface.h"
16 #include "ntv2utils.h"
17 #include "ntv2devicefeatures.h"
18 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
19  #include "ajabase/system/lock.h"
20 #endif // NTV2_WRITEREG_PROFILING Register Write Profiling
21 #include <string>
22 
23 // Check consistent use of AJA_USE_CPLUSPLUS11 and NTV2_USE_CPLUSPLUS11
24 #ifdef AJA_USE_CPLUSPLUS11
25  #ifndef NTV2_USE_CPLUSPLUS11
26  #error "AJA_USE_CPLUSPLUS11 && !NTV2_USE_CPLUSPLUS11"
27  #else
28  //#warning "AJA_USE_CPLUSPLUS11 && NTV2_USE_CPLUSPLUS11"
29  #endif
30 #else
31  #ifdef NTV2_USE_CPLUSPLUS11
32  #error "!AJA_USE_CPLUSPLUS11 && NTV2_USE_CPLUSPLUS11"
33  #else
34  //#warning "!AJA_USE_CPLUSPLUS11 && !NTV2_USE_CPLUSPLUS11"
35  #endif
36 #endif
37 
38 #if defined(AJALinux ) || defined(AJAMac)
39 // #include <sys/types.h> // ** MrBill ** Not needed for AJALinux, needed for AJAMac?
40 // #include <netinet/in.h> // ** MrBill ** Not needed for AJALinux, needed for AJAMac?
41  #include <unistd.h> // for usleep
42 #elif defined(MSWindows)
43  #include <WinSock2.h>
44  #include <assert.h>
45 #endif
46 
47 
48 typedef struct
49 {
50  std::string buildNumber;
51  std::string packageNumber;
52  std::string date;
53  std::string time;
55 
56 
61 {
62  // STATIC (CLASS) METHODS
63  public:
64  static NTV2StringList GetLegalSchemeNames (void);
65  static inline UWord MaxNumDevices (void) {return 32;}
66 
72  static void SetShareMode (const bool inSharedMode);
73  static bool GetShareMode (void);
74 
80  static void SetOverlappedMode (const bool inOverlapMode);
81  static bool GetOverlappedMode (void);
82 
86  public:
89  virtual ~CNTV2DriverInterface();
90 
91  private:
98  CNTV2DriverInterface & operator = (const CNTV2DriverInterface & inRHS);
99 
105  CNTV2DriverInterface (const CNTV2DriverInterface & inObjToCopy);
107 
108  public:
112  AJA_VIRTUAL NTV2DeviceID GetDeviceID (void);
114  AJA_VIRTUAL inline UWord GetIndexNumber (void) const {return _boardNumber;}
115  AJA_VIRTUAL inline bool IsOpen (void) const {return _boardOpened;}
116 
124  AJA_VIRTUAL bool IsDeviceReady (const bool inCheckValid = false);
125  AJA_VIRTUAL bool IsMBSystemValid (void);
126  AJA_VIRTUAL bool IsMBSystemReady (void);
129  AJA_VIRTUAL bool IsLPSystemReady (void);
131 
135 
142  AJA_VIRTUAL bool Open (const UWord inDeviceIndex);
143 
150  AJA_VIRTUAL bool Open (const std::string & inURLSpec);
151 
158  AJA_VIRTUAL bool Close (void);
160 
164 
187  AJA_VIRTUAL bool WriteRegister (const ULWord inRegNum, const ULWord inValue, const ULWord inMask = 0xFFFFFFFF, const ULWord inShift = 0);
188 
203  AJA_VIRTUAL bool ReadRegister (const ULWord inRegNum, ULWord & outValue, const ULWord inMask = 0xFFFFFFFF, const ULWord inShift = 0);
204 
220  template<typename T> bool ReadRegister(const ULWord inRegNum, T & outValue, const ULWord inMask = 0xFFFFFFFF, const ULWord inShift = 0)
221  {
222  ULWord regValue(0);
223  bool result (ReadRegister(inRegNum, regValue, inMask, inShift));
224  if (result)
225  outValue = T(regValue);
226  return result;
227  }
228 
229 #if !defined(READREGMULTICHANGE)
230 
236  AJA_VIRTUAL bool ReadRegisters (NTV2RegisterReads & inOutValues);
237 #endif // !defined(READREGMULTICHANGE)
238  //AJA_VIRTUAL inline bool RestoreHardwareProcampRegisters (void) {return false;}
240 
244 
262  AJA_VIRTUAL bool DmaTransfer (const NTV2DMAEngine inDMAEngine,
263  const bool inIsRead,
264  const ULWord inFrameNumber,
265  ULWord * pFrameBuffer,
266  const ULWord inCardOffsetBytes,
267  const ULWord inTotalByteCount,
268  const bool inSynchronous = true);
269 
297  AJA_VIRTUAL bool DmaTransfer (const NTV2DMAEngine inDMAEngine,
298  const bool inIsRead,
299  const ULWord inFrameNumber,
300  ULWord * pFrameBuffer,
301  const ULWord inCardOffsetBytes,
302  const ULWord inTotalByteCount,
303  const ULWord inNumSegments,
304  const ULWord inHostPitchPerSeg,
305  const ULWord inCardPitchPerSeg,
306  const bool inSynchronous = true);
307 
308  AJA_VIRTUAL bool DmaTransfer (const NTV2DMAEngine inDMAEngine,
309  const NTV2Channel inDMAChannel,
310  const bool inTarget,
311  const ULWord inFrameNumber,
312  const ULWord inCardOffsetBytes,
313  const ULWord inByteCount,
314  const ULWord inNumSegments,
315  const ULWord inSegmentHostPitch,
316  const ULWord inSegmentCardPitch,
317  const PCHANNEL_P2P_STRUCT & inP2PData);
319 
323  AJA_VIRTUAL bool ConfigureSubscription (const bool bSubscribe, const INTERRUPT_ENUMS inInterruptType, PULWord & outSubcriptionHdl);
325  AJA_VIRTUAL bool ConfigureInterrupt (const bool bEnable, const INTERRUPT_ENUMS eInterruptType);
332  AJA_VIRTUAL bool GetInterruptCount (const INTERRUPT_ENUMS eInterrupt, ULWord & outCount);
333 
334  AJA_VIRTUAL bool WaitForInterrupt (const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs = 68);
335 
336  AJA_VIRTUAL HANDLE GetInterruptEvent (const INTERRUPT_ENUMS eInterruptType);
344  AJA_VIRTUAL bool GetInterruptEventCount (const INTERRUPT_ENUMS inEventCode, ULWord & outCount);
345 
353  AJA_VIRTUAL bool SetInterruptEventCount (const INTERRUPT_ENUMS inEventCode, const ULWord inCount);
355 
359 
365  AJA_VIRTUAL bool AutoCirculate (AUTOCIRCULATE_DATA & pAutoCircData);
366 
373  AJA_VIRTUAL bool NTV2Message (NTV2_HEADER * pInMessage);
374 
375  AJA_VIRTUAL bool ControlDriverDebugMessages (NTV2_DriverDebugMessageSet msgSet, bool enable);
377 
378 #if !defined(NTV2_DEPRECATE_17_2)
379  AJA_VIRTUAL inline NTV2_DEPRECATED_17_2(ULWord GetNumFrameBuffers (void) const) {return _ulNumFrameBuffers;}
380  AJA_VIRTUAL inline NTV2_DEPRECATED_17_2(ULWord GetFrameBufferSize (void) const) {return _ulFrameBufferSize;}
381 #endif
382 
383 
389  AJA_VIRTUAL bool DriverGetBitFileInformation (BITFILE_INFO_STRUCT & outBitFileInfo, const NTV2BitFileType inBitFileType = NTV2_VideoProcBitFile);
390 
396  AJA_VIRTUAL bool DriverGetBuildInformation (BUILD_INFO_STRUCT & outBuildInfo);
397 
403  AJA_VIRTUAL bool GetPackageInformation (PACKAGE_INFO_STRUCT & outPkgInfo);
404 
405  AJA_VIRTUAL bool BitstreamWrite (const NTV2Buffer & inBuffer, const bool inFragment, const bool inSwap);
406  AJA_VIRTUAL bool BitstreamReset (const bool inConfiguration, const bool inInterface);
407  AJA_VIRTUAL bool BitstreamStatus (NTV2ULWordVector & outRegValues);
408  AJA_VIRTUAL bool BitstreamLoad (const bool inSuspend, const bool inResume);
409 
413 
419  AJA_VIRTUAL bool IsSupported (const NTV2BoolParamID inParamID) // New in SDK 17.0
420  { ULWord value(0);
421  if (IsOpen())
422  GetBoolParam (ULWord(inParamID), value);
423  return bool(value);
424  }
430  AJA_VIRTUAL ULWord GetNumSupported (const NTV2NumericParamID inParamID) // New in SDK 17.0
431  { ULWord value(0);
432  if (IsOpen())
433  GetNumericParam (ULWord(inParamID), value);
434  return value;
435  }
436 
442  AJA_VIRTUAL ULWordSet GetSupportedItems (const NTV2EnumsID inEnumsID); // New in SDK 17.0
444 
445  // stream channel operations
446  AJA_VIRTUAL bool StreamChannelOps (const NTV2Channel inChannel, ULWord flags, NTV2StreamChannel & status);
447 
448  // stream buffer operations
449  AJA_VIRTUAL bool StreamBufferOps (const NTV2Channel inChannel, NTV2Buffer & inBuffer,
450  ULWord64 bufferCookie, ULWord flags, NTV2StreamBuffer & status);
451 
452  // mail buffer operations
453  AJA_VIRTUAL bool MailBufferOps (const NTV2Channel inChannel, NTV2Buffer & inBuffer,
454  ULWord dataSize, ULWord flags,
455  ULWord delay, ULWord timeout,
456  NTV2MailBuffer & status);
460 
478  AJA_VIRTUAL bool AcquireStreamForApplicationWithReference (const ULWord inAppType, const int32_t inProcessID);
479 
496  AJA_VIRTUAL bool ReleaseStreamForApplicationWithReference (const ULWord inAppType, const int32_t inProcessID);
497 
516  AJA_VIRTUAL bool AcquireStreamForApplication (const ULWord inAppType, const int32_t inProcessID);
517 
534  AJA_VIRTUAL bool ReleaseStreamForApplication (const ULWord inAppType, const int32_t inProcessID);
535 
549  AJA_VIRTUAL bool SetStreamingApplication (const ULWord inAppType, const int32_t inProcessID);
550 
563  AJA_VIRTUAL bool GetStreamingApplication (ULWord & outAppType, int32_t & outProcessID);
565 
566  AJA_VIRTUAL bool ReadRP188Registers (const NTV2Channel inChannel, RP188_STRUCT * pRP188Data);
567  AJA_VIRTUAL inline std::string GetHostName (void) const {return IsRemote() ? _pRPCAPI->Name() : "";}
568  AJA_VIRTUAL inline bool IsRemote (void) const {return _pRPCAPI ? true : false;}
569  AJA_VIRTUAL inline bool IsRemoteConnected (void) const {return IsRemote() ? _pRPCAPI->IsConnected() : false;}
570 
573  AJA_VIRTUAL std::string GetDescription (void) const; // New in SDK 17.0
574 #if defined(NTV2_NUB_CLIENT_SUPPORT) && !defined(NTV2_DEPRECATE_16_3)
575  AJA_VIRTUAL inline NTV2_DEPRECATED_16_3(NTV2NubProtocolVersion GetNubProtocolVersion (void) const) {return 0;}
576 #endif
577 
580  virtual NTV2Dictionary ConnectParams (void) const; // New in SDK 17.1
581 
582  // DEPRECATED FUNCTIONS
583 #if !defined(NTV2_DEPRECATE_16_0)
584  // SuspendAudio/ResumeAudio were only implemented on MacOS
585  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool SuspendAudio(void)) {return true;}
586  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool ResumeAudio(const ULWord inFBSize)) {(void) inFBSize; return true;}
587  // Memory Mapping/Unmapping
588  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool MapFrameBuffers(void)) {return false;}
589  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool UnmapFrameBuffers(void)) {return true;}
590  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool MapRegisters(void)) {return false;}
591  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool UnmapRegisters(void)) {return true;}
592  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool MapXena2Flash(void)) {return false;}
593  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool UnmapXena2Flash(void)) {return true;}
594  // Others
595  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool DmaUnlock(void)) {return false;}
596  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool CompleteMemoryForDMA(ULWord * pHostBuffer)) {(void)pHostBuffer; return false;}
597  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool PrepareMemoryForDMA(ULWord * pHostBuffer, const ULWord inNumBytes)) {(void)pHostBuffer; (void)inNumBytes; return false;}
598  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(bool GetInterruptCount(const INTERRUPT_ENUMS eInt, ULWord *pCnt)) {return pCnt ? GetInterruptCount(eInt, *pCnt) : false;}
599  AJA_VIRTUAL NTV2_DEPRECATED_16_0(bool ReadRegisterMulti(const ULWord numRegs, ULWord * pOutWhichRegFailed, NTV2RegInfo aRegs[]));
600  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(ULWord GetPCISlotNumber(void) const) {return _pciSlot;}
601  AJA_VIRTUAL NTV2_DEPRECATED_16_0(Word SleepMs(const LWord msec));
602  AJA_VIRTUAL inline NTV2_DEPRECATED_16_0(ULWord GetAudioFrameBufferNumber(void) const) {return GetNumFrameBuffers() - 1;}
603 #endif // !defined(NTV2_DEPRECATE_16_0)
604 #if !defined(NTV2_DEPRECATE_16_3)
605  AJA_VIRTUAL inline NTV2_DEPRECATED_16_3(bool SetDefaultDeviceForPID(const int32_t procID)) {(void)procID; return false;}
606  AJA_VIRTUAL inline NTV2_DEPRECATED_16_3(bool IsDefaultDeviceForPID(const int32_t procID)) {(void)procID; return false;}
607 #endif // !defined(NTV2_DEPRECATE_16_3)
608 #if !defined(NTV2_DEPRECATE_17_6)
609  AJA_VIRTUAL inline bool NTV2_DEPRECATED_17_6(HevcSendMessage(HevcMessageHeader* pMsg)) {(void)pMsg; return false;}
610 #endif
611 
612 #if defined(NTV2_WRITEREG_PROFILING) // Register Write Profiling
613 
616  AJA_VIRTUAL bool GetRecordedRegisterWrites (NTV2RegisterWrites & outRegWrites) const;
618  AJA_VIRTUAL bool StartRecordRegisterWrites (const bool inSkipActualWrites = false);
619  AJA_VIRTUAL bool IsRecordingRegisterWrites (void) const;
620  AJA_VIRTUAL bool StopRecordRegisterWrites (void);
621  AJA_VIRTUAL bool PauseRecordRegisterWrites (void);
622  AJA_VIRTUAL bool ResumeRecordRegisterWrites (void);
623  AJA_VIRTUAL ULWord GetNumRecordedRegisterWrites (void) const;
624 #endif // NTV2_WRITEREG_PROFILING // Register Write Profiling
626 
627 
628  // PROTECTED METHODS
629  protected:
635  AJA_VIRTUAL bool OpenRemote (const NTV2DeviceSpecParser & inSpec);
636  AJA_VIRTUAL bool CloseRemote (void);
637  AJA_VIRTUAL bool OpenLocalPhysical (const UWord inDeviceIndex);
638  AJA_VIRTUAL bool CloseLocalPhysical (void);
639  AJA_VIRTUAL bool ParseFlashHeader (BITFILE_INFO_STRUCT & outBitfileInfo);
640  AJA_VIRTUAL bool GetBoolParam (const ULWord inParamID, ULWord & outValue); // New in SDK 17.0
641  AJA_VIRTUAL bool GetNumericParam (const ULWord inParamID, ULWord & outValue); // New in SDK 17.0
642 
650  AJA_VIRTUAL bool GetRegInfoForBoolParam (const NTV2BoolParamID inParamID, NTV2RegInfo & outRegInfo, bool & outFlipSense);
657  AJA_VIRTUAL bool GetRegInfoForNumericParam (const NTV2NumericParamID inParamID, NTV2RegInfo & outRegInfo);
658 
663  AJA_VIRTUAL void BumpEventCount (const INTERRUPT_ENUMS eInterruptType);
664 
668  AJA_VIRTUAL void FinishOpen (void);
669  AJA_VIRTUAL bool ReadFlashULWord (const ULWord inAddress, ULWord & outValue, const ULWord inRetryCount = 1000);
670 
671 
672  // PRIVATE TYPES
673  protected:
674  typedef std::vector<ULWord> _EventCounts;
675  typedef std::vector<PULWord> _EventHandles;
676 
677 
678  // MEMBER DATA
679  protected:
680  void setDeviceIndexNumber (const UWord num);
684 #if defined(NTV2_WRITEREG_PROFILING)
687 #endif // NTV2_WRITEREG_PROFILING
692 #if defined(NTV2_WRITEREG_PROFILING)
695 #endif // NTV2_WRITEREG_PROFILING
696 #if !defined(NTV2_DEPRECATE_16_0)
703 #endif // !defined(NTV2_DEPRECATE_16_0)
704 #if !defined(NTV2_DEPRECATE_17_2)
707 #endif
708 #if !defined(NTV2_DEPRECATE_16_0)
709  ULWord _pciSlot; // DEPRECATE!
710 #endif // !defined(NTV2_DEPRECATE_16_0)
711 
712 }; // CNTV2DriverInterface
713 
714 #endif // NTV2DRIVERINTERFACE_H
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
#define NTV2_DEPRECATED_18_0(__f__)
Definition: ajatypes.h:573
enum _NTV2NumericParamID NTV2NumericParamID
Used with CNTV2DriverInterface::GetNumericParam to determine device capabilities. ...
virtual bool IsSupported(const NTV2BoolParamID inParamID)
virtual bool UnmapFrameBuffers(void)
Declares the AJALock class.
#define NTV2_DEPRECATED_17_2(__f__)
Definition: ajatypes.h:558
virtual bool HevcSendMessage(HevcMessageHeader *pMsg)
bool NTV2DeviceCanDo25GIP(const NTV2DeviceID inDeviceID)
UWord _boardNumber
My device index number.
virtual bool MapFrameBuffers(void)
#define NTV2_DEPRECATED_16_3(__f__)
Definition: ajatypes.h:543
uint32_t * PULWord
Definition: ajatypes.h:224
enum _NTV2EnumsID NTV2EnumsID
Identifies NTV2 enumerated types, used in CNTV2DriverInterface::GetSupportedItems.
bool ReadRegister(const ULWord inRegNum, T &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
This template function reads all or part of the 32-bit contents of a specific register (real or virtu...
virtual bool IsDefaultDeviceForPID(const int32_t procID)
virtual UWord GetIndexNumber(void) const
enum _NTV2BoolParamID NTV2BoolParamID
Used with CNTV2DriverInterface::GetBoolParam to determine device capabilities.
ULWord _pciSlot
defined(NTV2_DEPRECATE_17_2)
virtual bool UnmapRegisters(void)
#define NTV2_DEPRECATED_17_6(__f__)
Definition: ajatypes.h:568
int32_t LWord
Definition: ajatypes.h:222
One-stop shop for parsing device specifications. (New in SDK 16.3) I do very little in the way of val...
Definition: lock.h:28
std::vector< PULWord > _EventHandles
NTV2_DriverDebugMessageSet
Definition: ntv2enums.h:3829
ULWord NTV2NubProtocolVersion
Definition: ntv2nubtypes.h:16
uint32_t ULWord
Definition: ajatypes.h:223
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They&#39;re also commonly use...
Definition: ntv2enums.h:1357
short HANDLE
Definition: ajatypes.h:285
virtual bool SetDefaultDeviceForPID(const int32_t procID)
Declares NTV2 "nub" client functions.
virtual bool IsRemote(void) const
I&#39;m the base class that undergirds the platform-specific derived classes (from which CNTV2Card is ult...
An object that can connect to, and operate remote or fake devices. I have three general API groups: ...
#define true
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2DeviceID _boardID
My cached device ID.
Enumerations for controlling NTV2 devices.
int16_t Word
Definition: ajatypes.h:220
virtual bool IsOpen(void) const
virtual bool Is25GIPDevice(void)
bool _boardOpened
True if I&#39;m open and connected to the device.
#define AJA_VIRTUAL
Definition: ajatypes.h:130
NTV2DMAEngine
Definition: ntv2enums.h:1856
Declares the most fundamental data types used by NTV2. Since Windows NT was the first principal devel...
std::vector< ULWord > NTV2ULWordVector
An ordered sequence of ULWords.
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
std::set< ULWord > ULWordSet
A collection of unique ULWord (uint32_t) values.
bool mRecordRegWrites
True if recording; otherwise false when not recording.
std::vector< std::string > NTV2StringList
Definition: ntv2utils.h:1155
All new NTV2 structs start with this common header.
NTV2RegWrites NTV2RegisterReads
AJALock mRegWritesLock
Guard mutex for mRegWrites.
_EventHandles mInterruptEventHandles
For subscribing to each possible event, one for each interrupt type.
virtual bool MapXena2Flash(void)
Declares data types and structures used in NTV2 "nub" packets.
uint64_t ULWord64
Definition: ajatypes.h:226
NTV2BitFileType
Definition: ntv2enums.h:3349
virtual bool UnmapXena2Flash(void)
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.).
virtual ULWord GetPCISlotNumber(void) const
virtual bool GetInterruptCount(const INTERRUPT_ENUMS eInt, ULWord *pCnt)
#define AJAExport
Definition: export.h:33
Declares numerous NTV2 utility functions.
virtual ULWord GetNumSupported(const NTV2NumericParamID inParamID)
virtual bool MapRegisters(void)
virtual bool SuspendAudio(void)
uint16_t UWord
Definition: ajatypes.h:221
_EventCounts mEventCounts
My event tallies, one for each interrupt type. Note that these.
virtual ULWord GetAudioFrameBufferNumber(void) const
std::vector< ULWord > _EventCounts
A simple (not thread-safe) set of key/value pairs. (New in SDK 16.3)
virtual bool PrepareMemoryForDMA(ULWord *pHostBuffer, const ULWord inNumBytes)
virtual bool CompleteMemoryForDMA(ULWord *pHostBuffer)
#define NTV2_DEPRECATED_16_0(__f__)
Definition: ajatypes.h:529
bool NTV2DeviceCanDoIP(const NTV2DeviceID inDeviceID)
NTV2RegisterWrites mRegWrites
Stores WriteRegister data.
std::vector< NTV2RegInfo > NTV2RegisterWrites
bool mSkipRegWrites
True if actual register writes are skipped while recording.
virtual bool ResumeAudio(const ULWord inFBSize)
NTV2RPCAPI * _pRPCAPI
Points to remote or software device interface; otherwise NULL for local physical device.
Declares enums and structs used by all platform drivers and the SDK.
virtual bool IsIPDevice(void)
virtual bool IsRemoteConnected(void) const
static UWord MaxNumDevices(void)
virtual std::string GetHostName(void) const
Declares device capability functions.
struct PACKAGE_INFO_STRUCT * PPACKAGE_INFO_STRUCT
virtual bool DmaUnlock(void)