Communicate with IAI Robotnet linear actuators

Dependents:   IAILinearActuators

Committer:
henryeherman
Date:
Mon Feb 24 05:54:34 2014 +0000
Revision:
0:de88dc2515d3
Initial commit of IAI code to mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
henryeherman 0:de88dc2515d3 1 #ifndef LINACTBUF_H
henryeherman 0:de88dc2515d3 2 #define LINACTBUF_H
henryeherman 0:de88dc2515d3 3
henryeherman 0:de88dc2515d3 4 #include <cstdio>
henryeherman 0:de88dc2515d3 5 #include <cstring>
henryeherman 0:de88dc2515d3 6 #include <linactregdefs.h>
henryeherman 0:de88dc2515d3 7
henryeherman 0:de88dc2515d3 8
henryeherman 0:de88dc2515d3 9 #if DBGLINACTBUF
henryeherman 0:de88dc2515d3 10 #define LINBUFDBG(x, ...) std::printf("[LinActBuf:DBG]"x"\r\n", ##__VA_ARGS__);
henryeherman 0:de88dc2515d3 11 #define LINBUFWARN(x, ...) std::printf("[LinActBuf:WARN]"x"\r\n", ##__VA_ARGS__);
henryeherman 0:de88dc2515d3 12 #define LINBUFERR(x, ...) std::printf("[LinActBuf:ERR]"x"\r\n", ##__VA_ARGS__);
henryeherman 0:de88dc2515d3 13 #else
henryeherman 0:de88dc2515d3 14 #define LINBUFDBG(x, ...)
henryeherman 0:de88dc2515d3 15 #define LINBUFWARN(x, ...)
henryeherman 0:de88dc2515d3 16 #define LINBUFERR(x, ...)
henryeherman 0:de88dc2515d3 17 #endif
henryeherman 0:de88dc2515d3 18
henryeherman 0:de88dc2515d3 19 #define LINBUFINFO(x, ...) std::printf("[LinActBuf:INFO]"x"\r\n", ##__VA_ARGS__);
henryeherman 0:de88dc2515d3 20
henryeherman 0:de88dc2515d3 21 namespace IAI {
henryeherman 0:de88dc2515d3 22
henryeherman 0:de88dc2515d3 23 const int RXMSGLENERR= -2;
henryeherman 0:de88dc2515d3 24 const int RXINVALIDCRCERR = -1;
henryeherman 0:de88dc2515d3 25 const int RXWRCRCOK = 1;
henryeherman 0:de88dc2515d3 26 const int RXMULWRCRCOK = 2;
henryeherman 0:de88dc2515d3 27 const int RXREADCRCOK = 3;
henryeherman 0:de88dc2515d3 28
henryeherman 0:de88dc2515d3 29 const int GWADDRPOS = 0;
henryeherman 0:de88dc2515d3 30 const int CMDPOS = 1;
henryeherman 0:de88dc2515d3 31
henryeherman 0:de88dc2515d3 32 class LinActBuf {
henryeherman 0:de88dc2515d3 33
henryeherman 0:de88dc2515d3 34 unsigned char *ptr;
henryeherman 0:de88dc2515d3 35 unsigned char *rxptr;
henryeherman 0:de88dc2515d3 36 unsigned char *rxmsgptr;
henryeherman 0:de88dc2515d3 37 public:
henryeherman 0:de88dc2515d3 38 LinActBuf();
henryeherman 0:de88dc2515d3 39
henryeherman 0:de88dc2515d3 40 void push(unsigned char val);
henryeherman 0:de88dc2515d3 41 void pushRx(unsigned char val);
henryeherman 0:de88dc2515d3 42 void reset();
henryeherman 0:de88dc2515d3 43 void resetRx();
henryeherman 0:de88dc2515d3 44
henryeherman 0:de88dc2515d3 45 unsigned int len;
henryeherman 0:de88dc2515d3 46 unsigned int rxlen;
henryeherman 0:de88dc2515d3 47 unsigned int exprxlen;
henryeherman 0:de88dc2515d3 48 unsigned int datalen;
henryeherman 0:de88dc2515d3 49
henryeherman 0:de88dc2515d3 50 unsigned char buf[LINACT_BUFLEN];
henryeherman 0:de88dc2515d3 51 unsigned char rxbuf[LINACT_BUFLEN];
henryeherman 0:de88dc2515d3 52 char strbuf[LINACT_BUFLEN*2];
henryeherman 0:de88dc2515d3 53 char rxstrbuf[LINACT_BUFLEN*2];
henryeherman 0:de88dc2515d3 54 void copy(LinActBuf *other);
henryeherman 0:de88dc2515d3 55 unsigned int crc_update(unsigned int crc,
henryeherman 0:de88dc2515d3 56 unsigned char a);
henryeherman 0:de88dc2515d3 57 void calc_crc();
henryeherman 0:de88dc2515d3 58 char *as_string();
henryeherman 0:de88dc2515d3 59 char *rx_as_string();
henryeherman 0:de88dc2515d3 60 void readRegsisterStr(unsigned short startreg,
henryeherman 0:de88dc2515d3 61 unsigned short count);
henryeherman 0:de88dc2515d3 62 void writeRegisterStr(unsigned short reg,
henryeherman 0:de88dc2515d3 63 unsigned short value);
henryeherman 0:de88dc2515d3 64 void writeMultiRegisterStr(unsigned short reg,
henryeherman 0:de88dc2515d3 65 unsigned short reglen,
henryeherman 0:de88dc2515d3 66 unsigned char * data,
henryeherman 0:de88dc2515d3 67 unsigned char dlen);
henryeherman 0:de88dc2515d3 68
henryeherman 0:de88dc2515d3 69 unsigned char * rxdata();
henryeherman 0:de88dc2515d3 70 unsigned int rxdatalen();
henryeherman 0:de88dc2515d3 71 int rxvalidate();
henryeherman 0:de88dc2515d3 72 int checkrxcrc();
henryeherman 0:de88dc2515d3 73
henryeherman 0:de88dc2515d3 74 }; // End linactbuf class
henryeherman 0:de88dc2515d3 75
henryeherman 0:de88dc2515d3 76 }; // End namespace
henryeherman 0:de88dc2515d3 77
henryeherman 0:de88dc2515d3 78 #endif //~ end LINACTBUF_H