struct diocaps {
  unsigned char numdios;
  unsigned char caps[];
};

struct diocaps *netDIOCapabilitiesGet(FILE *f);
void netDIOSet(FILE *f,int num,int asOutput,int drive);
void netDIOTimeArm(FILE *f);
int netDIOGet(FILE *f,int num);
int netBoardModelGet(FILE *f);
int netDIONameLookup(FILE *f,char *name);
char *netDIOLookup(FILE *f,char *name,int value);
void netDIOGroupDefine(FILE *f,int groupNum,int numDios,int *dios);
void netDIOGroupSetAs(FILE *f,int groupNum,int asOutput,int drive);
void netDIOGroupSet(FILE *f,int groupNum,int numDios,int *dir,int *val);
int netDIOGroupGet(FILE *f,int num,void (*callback)(int,int));
void netDIOGroupLockBlocking(FILE *f,int groupNum);
void netDIOGroupLockRelease(FILE *f,int groupNum);
int netDIOGroupLockNonBlocking(FILE *f,int groupNum);
//int netDIOConnectorList(FILE *f,int *map);
int netDIONamesList(FILE *f,Map **dptr);
int netDIOGroupWait(FILE *f,int groupNum,int val,int mask,int min,int max);
void netDIOGroupWaitOld(FILE *f,int groupNum,int numdios,int *val,void (*callback)(int,int));
int netDIOWait(FILE *f,int dionum,int isHigh);
void netDIONameAssign(FILE *f,int dionum,char *name);
void netDIONameRemove(FILE *f,char *name);
int netDIOTimeEventGet(FILE *f,struct timeval *tv);
int netDIOTimeCurrentGet(FILE *f,struct timeval *tv);

/*
  Author: Michael Schmidt (michael@embeddedARM.com)
 */
