#ifndef NDTSCOMMONHAL_PLX_V5x_H
#define NDTSCOMMONHAL_PLX_V5x_H

#ifdef __cplusplus
extern "C" {
#endif

#include "NDTSCommonHALInternal.h"
#include "NDTSCommonHALProtected.h"

NDTS_Boolean NDTS_HAL_PLX_v5x_GetHALIDGeneric(NDTS_HAL_ID *pHALID, const char *pName, const char *pDLLName, const unsigned long majorVersion, const unsigned long minorVersion) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_InitialiseHAL(NDTS_HAL_Funcs *pHALFuncs) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_GetBoardsIDs(unsigned short vendorID, unsigned short deviceID, NDTS_CardSecondaryIDs cardID, NDTS_HAL_BoardID **ppBoardIDs, unsigned long numberOfBufferedBoardIDs, unsigned long *pNumberOfBoards) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_AddBoard(NDTS_HAL_BoardID *pBoardID) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_RemoveBoard(NDTS_HAL_BoardID *pBoardID) ;

NDTS_Boolean NDTS_HAL_PLX_v5x_OpenDMAChannel(unsigned long internalCardIndex) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_CloseDMAChannel(unsigned long internalCardIndex) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_GetCommonBufferInfo(unsigned long internalCardIndex, void **ppPhysicalAddress, unsigned long *pNumberOfBufferBytes) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_PerformDMARead(unsigned long internalCardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_PerformDMAWrite(unsigned long internalCardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;

NDTS_Boolean NDTS_HAL_PLX_v5x_SetWord(unsigned long internalCardIndex, unsigned long address, unsigned long value) ;
NDTS_Boolean NDTS_HAL_PLX_v5x_GetWord(unsigned long internalCardIndex, unsigned long address, unsigned long *pValue) ;

NDTS_Boolean NDTS_HAL_PLX_v5x_WriteSecondaryDeviceID(unsigned long busIndex, unsigned long slotIndex, NDTS_CardSecondaryIDs cardID) ;

NDTS_Boolean NDTS_HAL_PLX_v5x_BoardByteCopy(unsigned long internalCardIndex, unsigned long localAddress, void *pOut, unsigned long numberOfBytes) ;

NDTS_Boolean NDTS_HAL_PLX_v5x_CheckCardIndexState(unsigned long internalCardIndex) ;


#ifdef __cplusplus
}
#endif

#endif