Experiment of serial command protocol
Dependencies: RingBuffer SerialInterfaceProtocol duinotech_16x2_LCD mbed
You can edit this area
SerialInterfaceProtocol.h
- Committer:
- rba90
- Date:
- 2016-06-16
- Revision:
- 3:0c4aa3cec685
- Parent:
- 2:54932809c7b2
File content as of revision 3:0c4aa3cec685:
// SerialInterfaceProtocol (SIP) is a protocol which help to exchange // information between host and slave devices #ifndef SERIALINTERFACEPROTOCOL_H_ #define SERIALINTERFACEPROTOCOL_H_ #include "mbed.h" #include "stdint.h" #include "CommandPacket.h" #include "buffer.h" #define SIP_CMD_VECTOR_TABLE_SZ 256 #define SIP_MAX_RESP_LEN 256 #define SIP_MAX_PAYLOAD_LEN 256 typedef int (*callback_func)(uint8_t *payload, uint8_t payload_length, uint8_t *response, uint8_t *response_length); typedef CircularBuffer<uint8_t> SerialBuffer_t; class SerialInterfaceProtocol { public: // namespace protected: // internal variable callback_func CommandVectorTable[SIP_CMD_VECTOR_TABLE_SZ]; // buffered interface SerialBuffer_t *SerialInputBuffer; SerialBuffer_t *SerialOutputBuffer; CommandPacket PacketBuffer; // state machine CommandPacket::State_t state; // internal state bool isChecksumEnabled; protected: // internal methods int execute(uint8_t *response, uint8_t *response_length); int assemble(uint8_t *response, uint8_t response_length); public: // public methods // constructor SerialInterfaceProtocol(SerialBuffer_t *in, SerialBuffer_t *out); ~SerialInterfaceProtocol(); // member function void poll(); void registerCommand(uint8_t command, callback_func f); void deRegisterCommand(uint8_t command); void disableChecksum(); void enableChecksum(); }; #endif