#ifndef NDTSCOMMONHAL_H
#define NDTSCOMMONHAL_H

#ifdef __cplusplus
extern "C" {
#endif

#include "NDTSCommonHALConstants.h"


NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_Initialise() ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_Uninitialise() ;

NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_InitialiseCardType(unsigned short vendorID, unsigned short deviceID, unsigned long cardID, unsigned long *pNumberOfCards) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_InitialiseCard(unsigned long cardID, unsigned long cardIndex) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_UninitialiseCard(unsigned long cardID, unsigned long cardIndex) ;

NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_OpenDMAChannel(unsigned long cardID, unsigned long cardIndex) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_CloseDMAChannel(unsigned long cardID, unsigned long cardIndex) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_GetCommonBufferInfo(unsigned long cardID, unsigned long cardIndex, void **ppPhysicalAddress, unsigned long *pNumberOfBufferBytes) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_PerformDMARead(unsigned long cardID, unsigned long cardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_PerformDMAWrite(unsigned long cardID, unsigned long cardIndex, unsigned long localAddress, unsigned long numberOfBytes) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_PerformDMATransfer(unsigned long cardID, unsigned long cardIndex, void *pData, unsigned long localAddress, unsigned long numberOfBytes, NDTS_Boolean doRead) ;

NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_SetWord(unsigned long cardID, unsigned long cardIndex, unsigned long address, unsigned long value) ;
NDTSHAL_API NDTS_Boolean CALL_CONV NDTS_HAL_GetWord(unsigned long cardID, unsigned long cardIndex, unsigned long address, unsigned long *pValue) ;



#ifdef __cplusplus
}
#endif

#endif