#ifndef NDTSCOMMONHAL_PLX_V40_H
#define NDTSCOMMONHAL_PLX_V40_H

#ifdef __cplusplus
extern "C" {
#endif

#include "Inc\PlxApi.h"

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



NDTS_Boolean NDTS_HAL_PLX_v40_GetHALID(NDTS_HAL_ID *pHALID) ;
NDTS_Boolean NDTS_HAL_PLX_v40_InitialiseHAL(NDTS_HAL_Funcs *pHALFuncs) ;
NDTS_Boolean NDTS_HAL_PLX_v40_GetBoardsIDs(unsigned short vendorID, unsigned short deviceID, unsigned long secondaryDeviceID, NDTS_HAL_BoardID **ppBoardIDs, unsigned long numberOfBufferedBoardIDs, unsigned long *pNumberOfBoards) ;
NDTS_Boolean NDTS_HAL_PLX_v40_AddBoard(NDTS_HAL_BoardID *pBoardID) ;
NDTS_Boolean NDTS_HAL_PLX_v40_RemoveBoard(NDTS_HAL_BoardID *pBoardID) ;

NDTS_Boolean NDTS_HAL_PLX_v40_OpenDMAChannel(unsigned long internalCardIndex) ;
NDTS_Boolean NDTS_HAL_PLX_v40_CloseDMAChannel(unsigned long internalCardIndex) ;
NDTS_Boolean NDTS_HAL_PLX_v40_GetCommonBufferInfo(unsigned long internalCardIndex, void **ppPhysicalAddress, unsigned long *pNumberOfBufferBytes) ;
NDTS_Boolean NDTS_HAL_PLX_v40_PerformDMARead(unsigned long internalCardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;
NDTS_Boolean NDTS_HAL_PLX_v40_PerformDMAWrite(unsigned long internalCardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;

NDTS_Boolean NDTS_HAL_PLX_v40_SetWord(unsigned long internalCardIndex, unsigned long address, unsigned long value) ;
NDTS_Boolean NDTS_HAL_PLX_v40_GetWord(unsigned long internalCardIndex, unsigned long address, unsigned long *pValue) ;

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

NDTS_Boolean NDTS_HAL_PLX_v40_CheckCardIndexState(unsigned long internalCardIndex) ;


#ifdef __cplusplus
}
#endif

#endif