Communicate with IAI Robotnet linear actuators
Dependents: IAILinearActuators
linactbuf.h@0:de88dc2515d3, 2014-02-24 (annotated)
- 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?
User | Revision | Line number | New 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 |