//////////////////////////////////////////////////////////////////////
// File - prvdrv_lib.h
//
// Library for accessing the PRVDRV card,
// Code was generated by Driver Wizard.
// It accesses the hardware via WinDriver functions.
// 
//////////////////////////////////////////////////////////////////////

#ifndef _PRVDRV_LIB_H_
#define _PRVDRV_LIB_H_

#include "c:/windriver/include/windrvr.h"
#include "c:/windriver/samples/shared/bits.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef enum
{
    PRVDRV_MODE_BYTE   = 0,
    PRVDRV_MODE_WORD   = 1,
    PRVDRV_MODE_DWORD  = 2
} PRVDRV_MODE;

typedef enum
{
	PRVDRV_IORange1 = 0,
    PRVDRV_IORange2 = 1,
    PRVDRV_IORange3 = 2,
    PRVDRV_IORange4 = 3,
    PRVDRV_ITEMS = 3
} PRVDRV_ADDR;

// IO ranges definitions
enum { PRVDRV_IORange1_ADDR = 0x320 };
enum { PRVDRV_IORange1_BYTES = 0x10 };
enum { PRVDRV_IORange2_ADDR = 0x340 };
enum { PRVDRV_IORange2_BYTES = 0x10 };
enum { PRVDRV_IORange3_ADDR = 0x360 };
enum { PRVDRV_IORange3_BYTES = 0x10 };
enum { PRVDRV_IORange4_ADDR = 0x360 };
enum { PRVDRV_IORange4_BYTES = 0x10 };

typedef struct PRVDRV_STRUCT *PRVDRV_HANDLE;

BOOL PRVDRV_Open (PRVDRV_HANDLE *phPRVDRV);
void PRVDRV_RegisterWinDriver();
void PRVDRV_Close(PRVDRV_HANDLE hPRVDRV);
// General read/write function
void PRVDRV_ReadWriteBlock(PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset, BOOL fRead, PVOID buf, DWORD dwBytes, PRVDRV_MODE mode);
BYTE PRVDRV_ReadByte (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset);
WORD PRVDRV_ReadWord (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset);
DWORD PRVDRV_ReadDword (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset);
void PRVDRV_WriteByte (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset, BYTE data);
void PRVDRV_WriteWord (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset, WORD data);
void PRVDRV_WriteDword (PRVDRV_HANDLE hPRVDRV, PRVDRV_ADDR addrSpace, DWORD dwOffset, DWORD data);
// this string is set to an error message, if one occurs
extern CHAR PRVDRV_ErrorString[];


#ifdef __cplusplus
}
#endif

#endif
