Swimate V2 without RTOS code
Dependencies: Adafruit_GFX_128x64 DS3231 PinDetect SDFileSystem USBDevice mbed RealtimeMath MODSERIAL
comms.h.orig
- Committer:
- ellingjp
- Date:
- 2014-06-07
- Revision:
- 22:9350752f5414
File content as of revision 22:9350752f5414:
#ifndef _COMMS_H #define _COMMS_H #include "mbed.h" #include "MODSERIAL.h" #include <limits.h> class Packet; // forward declaration class Comms { public: Comms() : bt(P0_19, P0_18) { bt.baud(115200); } int receivePacket(Packet **p, int timeout); void sendPacket(Packet *p); private: Timer timer; void sendByte(uint8_t byte); void sendBytes(uint8_t *bytes, int nElms); bool getByte(uint8_t *c, int timeout = INT_MAX); bool getBytes(uint8_t *buf, int nElms, int timeout = INT_MAX); MODSERIAL bt; // tx, rx }; class Packet { public: static Packet *create(uint8_t cmd, uint16_t packetNumber, uint16_t dataLength, uint8_t *data); static Packet *createAndVerify(uint8_t cmd, uint16_t packetNumber, uint16_t dataLength, uint8_t *data, uint16_t checkSum); ~Packet(); uint8_t cmd; uint16_t packetNumber; uint16_t dataLength; uint8_t *data; uint16_t checkSum; static const int HEADER_SIZE; private: Packet(uint8_t cmd, uint16_t packetNumber, uint16_t dataLength, uint8_t *data); }; #endif // _COMMS_H