// DinkeyChange constants
// !! this file should not be modified

// maximum number of USB devices that can be attached to a machine at any time
#define MAX_USB_DEVICES     128
#define MAX_PRODCODE_LEN    9

// mask values
#define TYPE_MASK_PRO       1
#define TYPE_MASK_FD        2
#define TYPE_MASK_ALL       (TYPE_MASK_PRO | TYPE_MASK_FD)

#define MODEL_MASK_LITE     1
#define MODEL_MASK_PLUS     2
#define MODEL_MASK_NET      4
#define MODEL_MASK_ALL      (MODEL_MASK_LITE | MODEL_MASK_PLUS | MODEL_MASK_NET)
#define MODEL_MASK_DEFAULT  (MODEL_MASK_PLUS | MODEL_MASK_NET)

// type values for DCGetInfo (returned in the array)
#define TYPE_PRO            1
#define TYPE_FD             2

// model values for DCGetInfo (returned in the array)
#define MODEL_LITE          1
#define MODEL_PLUS          2
#define MODEL_NET5          4
#define MODEL_NETU          7

// model values for DCDownloadDemoSoftwareKey
#define SWKEY_MODEL_DEFAULT             -1               // NB this assumes that the Demo Software Key Template was created with only one valid dongle model
#define SWKEY_MODEL_PRO_LITE            0
#define SWKEY_MODEL_PRO_PLUS            1
#define SWKEY_MODEL_PRO_NET             2
#define SWKEY_MODEL_FD_LITE             3
#define SWKEY_MODEL_FD_PLUS             4
#define SWKEY_MODEL_FD_NET              5

// DinkeyChange module API declarations
#ifdef __cplusplus
    extern "C" {
#endif

int WINAPI DCGetInfo(IN int type_mask, IN int model_mask, IN char *prodcode_mask, IN int array_length, OUT int *num_found, OUT int *type, OUT int *model, OUT char (*prodcode)[MAX_PRODCODE_LEN], OUT unsigned int *dongle_number, OUT int *update_number);
int WINAPI DCGetDiagnosticInfo(IN char *filename);
int WINAPI DCDoUpdateCodeString(IN char* UpdateCodeAscii, OUT int *confirmation_code, OUT int *ext_err);
int WINAPI DCDoUpdateCodeFromFile(IN char* filename, OUT int *confirmation_code, OUT int *ext_err);
int WINAPI DCRestoreDinkeyFDLite(void);
int WINAPI DCGetMachineID(unsigned int *machineID, int *ext_err);
int WINAPI DCDownloadTempSoftwareKey(unsigned int machineID, int *ext_err);
int WINAPI DCDownloadDemoSoftwareKey(unsigned int machineID, char *szProdCode, int model, int *ext_err);

#ifdef __cplusplus
}
#endif
