//---------------------------------------------------------------------------
#include "sio_util.h"
//---------------------------------------------------------------------------
typedef unsigned char byte;
typedef struct _LDCNMOD {
byte modtype; //module type
byte modver; //module version number
byte statusitems; //definition of items to be returned
byte stat; //status byte
byte groupaddr; //current group address
bool groupleader; //TRUE if group leader
void * p; //pointer to specific module's data structure
} LDCNMOD;
#define MAXSIOERROR 3
//Define PIC baud rate divisors
#define PB9600 129
#define PB19200 63
#define PB57600 20
#define PB115200 10
//Module type definitions:
#define SERVOMODTYPE 0
#define SERVOHYBTYPE 90
#define IOMODTYPE 2
#define STEPMODTYPE 3
//The following must be created for each new module type:
// data structure XXXMOD
// Initializer function NewXXXMod
// Status reading function GetXXXStat
// LdcnInit and SendLdcnCmd must be modified to include calls
// to the two functions above
#define CKSUM_ERROR 0x02 //Checksum error bit in status byte
#define MAXNUMMOD 33
//Initialization and shutdown
void InitVars(void);
void LdcnSetStopCtrl(byte addr, byte mode);
DLLENTRY(int) LdcnInit(char *portname, unsigned int baudrate);
DLLENTRY(int) LdcnFullInit(char *portname, unsigned int baudrate);
DLLENTRY(int) LdcnRestoreNetwork(char *portname, unsigned int baudrate);
DLLENTRY(BOOL) LdcnSendCmd(byte addr, byte cmd, char *datastr, byte n);
DLLENTRY(void) FixSioError();
DLLENTRY(void) LdcnShutdown(void);
//Module type independant commands (supported by all module types)
DLLENTRY(BOOL) LdcnSetGroupAddr(byte addr, byte groupaddr, bool leader);
DLLENTRY(BOOL) LdcnDefineStatus(byte addr, byte statusitems);
DLLENTRY(BOOL) LdcnReadStatus(byte addr, byte statusitems);
DLLENTRY(BOOL) LdcnChangeBaud(byte groupaddr, unsigned int baudrate);
DLLENTRY(BOOL) LdcnSynchInput(byte groupaddr);
DLLENTRY(BOOL) LdcnNoOp(byte addr);
DLLENTRY(BOOL) LdcnHardReset();
DLLENTRY(BOOL) LdcnResetDevice(byte addr);
//Retrieve module type independant data from a module's data structure
DLLENTRY(byte) LdcnGetStat (byte addr);
DLLENTRY(byte) LdcnGetStatItems(byte addr);
DLLENTRY(byte) LdcnGetModType (byte addr);
DLLENTRY(byte) LdcnGetModVer (byte addr);
DLLENTRY(byte) LdcnGetGroupAddr(byte addr);
DLLENTRY(BOOL) LdcnGroupLeader (byte addr);
DLLENTRY(HANDLE) GetComPort();
DLLENTRY(int) GetSioError();
DLLENTRY(int) IsBusy();