/* * packet.h * Packet processing module header file * */ #define ASCIIPACKETS /*uncommented for ascii packets*/ #ifdef ASCIIPACKETS #define HEADERSIZE 2 #define DELIMITER 0 #define MASKNIB 1 #define EXT_DELIMITER 2 #define EXT_MASKNIB 3 #define TRUE 1 #define FALSE 0 #define SUCCESS 1 #define FAILURE 0 #define DLMIN 'a' #define DLMAX 'p' #endif #ifdef BINPACKETS #define HEADERSIZE 1 #endif //#define MAXPDATASIZE 32 /*MRKTYP2 16 bytes data*/ #define MAXPDATASIZE 510 /*MRKTYP2 255 bytes data + extended header information*/ #define MAXPACKETSIZE (MAXPDATASIZE+HEADERSIZE) #define TRANSFLIP 9+'a' /* Data Types */ #define INVLTYP 0x00 #define MRKTYP0 0x01 #define MRKTYP1 0x02 #define MRKTYP2 0x03 #define MRKTYP3 0x04 #define MRKTYP4 0x05 #define MRKTYP5 0x06 #define MRKTYP6 0x07 /* Packet headers transmitted from the coprocessor*/ /* (The digit is in the upper nibble of the header that is rxed)*/ #define EXTCMD 0 // extended cmd protocol #define ADBLK0 1 // a/d block 0 (channels 0-15) #define ADBLK1 2 // a/d block 1 (channels 16-23 #define PRTIN0 3 // digital port block 0 #define CAN 4 // CAN message #define KEYPAD 5 // Keypad header #define DAQ 6 // DAQ header #define PRTOUT 7 // digital port block 0 out(Rxed by coprocessor) #define PWMCON 8 // pwm config /* PWMCON- PWM configuration header*/ #define PRTCFG0 9 //digital port block 0 configuration #define LONG_EXT 10 //LCD header #define SERIAL 11 //Serial Header #define IRDA 12 //IRDA header #define ADREQ0 13 //AD request block 0 #define ADREQ1 14 //AD request block 1 #define DREQ 15 //digital port req /* extended commands */ #define EXTNULCMD 16 #define SOFTINFO 17 #define COUNTER 18 //counter read request #define COUNTERD 19 //counter data or config #define ICNOTIFY 20 //zero count notification #define CANCFG 21 //can configuration #define SERCFG 22 //Serial configuration #define LCDROWS 23 //change number of LCD rows //#define RELAY 24 //relay header #define LED 25 //LED header #define TCAPS 26 //test caps #define BEEPER 27 //beeper #define LCD 29 //standard LCD #define VFP 30 //vfp header //long protocol headers start #define LPHEADERS VFP //translations for the e12 #define RS232DATA IRDA #define RS422DATA SERIAL #define SER232 RS232DATA #define SER422 RS422DATA #define VERSIONINFO SOFTINFO /*delimiter, uncommenting this means delimiter exists*/ //#define DELIM "," // packet delimeter(ascii packets only) #define NOPACKET -1 // no packet available error #define PARSEERROR -2 // parse error /* headers are unsigned bytes(chars) */ typedef unsigned char PcpkHeader; typedef struct PcpkPacket PcpkPacket; struct PcpkPacket { unsigned char type; unsigned char format; unsigned char maskcnt; unsigned char datasize; unsigned int datanum; unsigned char extended; unsigned char mult; unsigned char data[MAXPACKETSIZE]; }; /*Make an array of 16 elements of CONST for header decoding */ static const PcpkHeader hdrTbl[32] = { MRKTYP5,MRKTYP3,MRKTYP3,MRKTYP0 ,MRKTYP2,MRKTYP2,MRKTYP1,MRKTYP0 ,MRKTYP1,MRKTYP0,MRKTYP6,MRKTYP2 ,MRKTYP2,MRKTYP4,MRKTYP4,MRKTYP4 ,INVLTYP,MRKTYP2,MRKTYP3,MRKTYP1 ,MRKTYP1,MRKTYP1,MRKTYP1,MRKTYP3 ,MRKTYP1,MRKTYP0,MRKTYP2,MRKTYP3 ,MRKTYP2,MRKTYP2,MRKTYP2,INVLTYP }; #define TRANS(head) (asciihead(head)) #define EXT_TRANS(head) (head + 0x20) #define PTYPE(headr) (headr >> 4) #define FORMAT(Type) (hdrTbl[Type]) #define MASK(headr) (headr & 0x0f) #ifndef LIBCOMP extern PcpkHeader PcpkParseHeader(char *, PcpkPacket *); extern int PcpkParseData(char *, PcpkPacket *); extern char *PcpkPackGen(__u8 device,__u8 maskcnt,void *data); #endif //#define GEN_DEBUG #undef GENDEBUG #ifdef GEN_DEBUG #define GENDEBUG(fmt, args...) printf(fmt, ## args) #else #define GENDEBUG(fmt, args...) #endif