#ifndef _MXNET1_API_H
#define _MXNET1_API_H

#include "mxtypes.h"     // platform independent data types

#ifdef __cplusplus
extern "C" {
#endif

typedef struct
{
  _mxINT16 LPT_Nr;
  _mxINT16 LPT_Adr;
  _mxINT16 DNG_Cnt;
} DNGINFO;


_mxINT16   rInit_MatrixAPI(void);
_mxINT16   rRelease_MatrixAPI(void);
_mxINT32   rGetVersionAPI(void);
_mxINT32   rGetVersionDRV(void);
_mxINT32   rGetVersionDRV_USB(void);
void       rSetW95Access(_mxINT16);
_mxINT16   rGetPortAdr(_mxINT16);
_mxINT16   rDongle_WriteData(_mxINT32, _mxINT32*, _mxINT16, _mxINT16, _mxINT16);
_mxINT16   rDongle_WriteDataEx(_mxINT32, _mxINT32*, _mxINT16, _mxINT16, _mxINT16, _mxINT16);
_mxINT16   rDongle_ReadData(_mxINT32, _mxINT32*, _mxINT16, _mxINT16, _mxINT16);
_mxINT16   rDongle_ReadDataEx(_mxINT32, _mxINT32*, _mxINT16, _mxINT16, _mxINT16, _mxINT16);
_mxINT32   rDongle_ReadSerNr(_mxINT32, _mxINT16, _mxINT16);
_mxINT16   rDongle_Exit(void);
_mxINT16   rDongle_Find(void);
_mxINT16   rDongle_FindEx(DNGINFO *);
_mxINT32   rDongle_Version(_mxINT16, _mxINT16);
_mxINT32   rDongle_Model(_mxINT16, _mxINT16);
_mxINT16   rDongle_MemSize(_mxINT16, _mxINT16);
_mxINT16   rDongle_Count(_mxINT16);
_mxINT16   rPausePrinterActivity(void);
_mxINT16   rResumePrinterActivity(void);
_mxINT16   rSetConfig_MatrixNet(_mxINT16, char*);
_mxINT16   rLogIn_MatrixNet(_mxINT32, _mxINT16, _mxINT16);
_mxINT16   rLogOut_MatrixNet(_mxINT32, _mxINT16, _mxINT16);
_mxINT32   rGetConfig_MatrixNet(_mxINT16 Category);

_mxINT16   rDongle_WriteKey(_mxINT32 UserCode, 
                                    _mxINT32 *KeyData, 
                                    _mxINT16 DongleNr, 
                                    _mxINT16 PortNr);

_mxINT16   rDongle_GetKeyFlag(_mxINT32 UserCode, _mxINT16 DongleNr, _mxINT16 PortNr);

_mxINT16   rDongle_EncryptData(_mxINT32 UserCode, _mxINT32 *DataBlock, _mxINT16 DongleNr, _mxINT16 PortNr);
_mxINT16   rDongle_DecryptData(_mxINT32 UserCode, _mxINT32 *DataBlock, _mxINT16 DongleNr, _mxINT16 PortNr);

_mxINT16   rDongle_SetDriverFlag(_mxINT32 UserCode, _mxINT16 DriverFlag, _mxINT16 DongleNr, _mxINT16 PortNr);
_mxINT16   rDongle_GetDriverFlag(_mxINT32 UserCode, _mxINT16 DongleNr, _mxINT16 PortNr);

char* MxNet_SetIP(char*);
int   MxNet_SetPort(int);
int   MxNet_SetTimeOut(int);

#ifdef __cplusplus
}
#endif


#endif  // _MXNET1_API_H

