#ifndef _WIENVME_DLL_H
#define _WIENVME_DLL_H
#include <ansi_c.h>
#include <stdint.h>
#include <windows.h>
#include <cvidef.h>
extern int hHandle24, hHandle32;
void WIENVME_load (char*);
int WIENVME_open (int*, unsigned char, char*, unsigned short);
int WIENVME_open24 (void);
int WIENVME_open32 (void);
int WIENVME_start (char*);
void WIENVME_unload (void);
int WIENVME_close (int);
int WIENVME_close24 (void);
int WIENVME_close32 (void);
int WIENVME_stop (void);
int WIENVME_reset (void);
int WIENVME_read8 (int, unsigned long, unsigned long, void*);
int WIENVME_read16 (int, unsigned long, unsigned long, void*);
int WIENVME_read32 (int, unsigned long, unsigned long, void*);
int WIENVME_write8 (int, unsigned long, unsigned long, void*);
int WIENVME_write16 (int, unsigned long, unsigned long, void*);
int WIENVME_write32 (int, unsigned long, unsigned long, void*);
#define WIENVME_VME_START(NODE) WIENVME_start((NODE))
#define WIENVME_VME_STOP() WIENVME_stop()
#define WIENVME_VME_RESET() WIENVME_reset()
#define WIENVME_VME_A24D8_R(VME,DATA) WIENVME_read8(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A24D16_R(VME,DATA) WIENVME_read16(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A24D32_R(VME,DATA) WIENVME_read32(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A24D8_W(VME,DATA) WIENVME_write8(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A24D16_W(VME,DATA) WIENVME_write16(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A24D32_W(VME,DATA) WIENVME_write32(hHandle24, 1, (VME), (DATA))
#define WIENVME_VME_A32D8_R(VME,DATA) WIENVME_read8(hHandle32, 1, (VME), (DATA))
#define WIENVME_VME_A32D16_R(VME,DATA) WIENVME_read16(hHandle32, 1, (VME), (DATA))
#define WIENVME_VME_A32D32_R(VME,DATA) WIENVME_read32(hHandle32, 1, (VME), (DATA))
#define WIENVME_VME_A32D8_W(VME,DATA) WIENVME_write8(hHandle32, 1, (VME), (DATA))
#define WIENVME_VME_A32D16_W(VME,DATA) WIENVME_write16(hHandle32, 1, (VME), (DATA))
#define WIENVME_VME_A32D32_W(VME,DATA) WIENVME_write32(hHandle32, 1, (VME), (DATA))
short __stdcall WIENVME_VME_R( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data);
short __stdcall WIENVME_VME_W( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data);
short __stdcall WIENVME_VME_MW( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data);
short __stdcall WIENVME_VME_MWRST( void );
short __stdcall WIENVME_VME_MWEXEC( void );
short __stdcall WIENVME_VME_MR( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data);
short __stdcall WIENVME_VME_MRRST( void );
short __stdcall WIENVME_VME_MREXEC( uint32_t *Data );
typedef unsigned short ADDRESS_MODIFIER;
#define Std_Sup_Data (ADDRESS_MODIFIER)0x3d
#define Std_Sup_Prog (ADDRESS_MODIFIER)0x3e
#define Std_NoPriv_Data (ADDRESS_MODIFIER)0x39
#define Std_NoPriv_Prog (ADDRESS_MODIFIER)0x3a
#define Short_Sup (ADDRESS_MODIFIER)0x2d
#define Short_NoPriv (ADDRESS_MODIFIER)0x29
#define Ext_Sup_Data (ADDRESS_MODIFIER)0x0d
#define Ext_Sup_Prog (ADDRESS_MODIFIER)0x0e
#define Ext_NoPriv_Data (ADDRESS_MODIFIER)0x09
#define Ext_NoPriv_Prog (ADDRESS_MODIFIER)0x0a
#endif