33#define MSG_PREAMBLE_BYTE 0xaa
34#define MSG_PREAMBLE_LEN 3
37#define make_short(lowbyte, highbyte) ((unsigned short)lowbyte | ((unsigned short)highbyte << 8))
38#define make_signed_short(lowbyte, highbyte) \
39 ((signed short)((unsigned short)lowbyte | ((unsigned short)highbyte << 8)))
40#define make_int(lowbyte, mid1, mid2, highbyte) \
41 ((unsigned int)lowbyte | ((unsigned int)mid1 << 8) | ((unsigned int)mid2 << 16) | \
42 ((unsigned int)highbyte << 24))
43#define make_float(result, byteptr) memcpy(&result, byteptr, sizeof(float))
46#define hi(x) (unsigned char)(((x) >> 8) & 0xff)
47#define lo(x) (unsigned char)((x) & 0xff)
59 int read(
unsigned char* buf,
unsigned int len);
60 int write(
unsigned char* buf,
unsigned int len);
70 int send(
unsigned char id,
unsigned int len,
unsigned char*
data);
72 Response submitCmd(
unsigned char id,
unsigned char* payload,
unsigned int len,
bool pending);
75 void fireAndForgetCmd(
unsigned char id,
unsigned char* payload,
unsigned int len,
bool pending);
78 void logText(std::string message);
83 virtual int readInternal(
unsigned char* buf,
unsigned int len) = 0;
88 std::shared_ptr<BinaryLogger> log;
std::ostream & operator<<(std::ostream &strm, const AbstractInterface &a)
void startLogging(std::string file)
int write(unsigned char *buf, unsigned int len)
virtual int readInternal(unsigned char *buf, unsigned int len)=0
Response submitCmd(unsigned char id, unsigned char *payload, unsigned int len, bool pending)
int read(unsigned char *buf, unsigned int len)
int send(unsigned char id, unsigned int len, unsigned char *data)
virtual std::string toString() const =0
void logText(std::string message)
Response receiveWithoutChecks()
void fireAndForgetCmd(unsigned char id, unsigned char *payload, unsigned int len, bool pending)
friend std::ostream & operator<<(std::ostream &, const AbstractInterface &)
virtual int writeInternal(unsigned char *buf, unsigned int len)=0
virtual ~AbstractInterface()