A library to send and receive packets over serial, uses MODSERIAL

Dependents:   SimpleSerialProtocolExample SerialFileReceiver

Revision:
1:98ad30934a71
Parent:
0:1639507580d5
Child:
2:43794e0b738f
--- a/Protocol.h	Thu Jun 28 21:19:58 2012 +0000
+++ b/Protocol.h	Wed Aug 27 17:35:30 2014 +0000
@@ -19,29 +19,19 @@
     enum {
         PACKET_START,
         HEADER_RECEIVE,
-        HEADER_DECODE,
         DATA_RECEIVE,
-        FOOTER_RECEIVE,
         DATA_VALIDATE,
-        PACKET_VALID,
-        PACKET_RESET
     };
     
-    Timer testDma;
-    uint32_t testDmaTime;
-
     Protocol(PinName tx, PinName rx, PinName led_pin);
     virtual ~Protocol();
 
-    virtual void initialise() {
-        MODSERIAL::baud(115200);
+    virtual void initialise(uint32_t baud) {
+        MODSERIAL::baud(baud);
     }
     
-    void update();
+    virtual void update();
     
-    int printf( const char * format, ...);
-    int puts( const char * str);
-    int putc( int character);
     void send(uint8_t byte);
     void blockUntilTxEmpty();
     
@@ -65,19 +55,18 @@
         return _send_buffer.available();
     }
 
-    template<class T> void receiveCallback(uint8_t type, T* item, void (T::*method)(Packet*)) {
+    template<class T> void receiveCallback(uint8_t type, T* item, void (T::*method)(Protocol*, Packet*)) {
         FPointer callback;
         callback.attach(item, (void (T::*)(Packet*))method);
         _callback[type].push_back(callback);
     }
 
-    template<class T> void transmitCallback(float frequency, T* item, void (T::*method)(Packet*)) {
+    template<class T> void transmitCallback(float frequency, T* item, void (T::*method)(Protocol*, Packet*)) {
         FPointer callback;
         callback.attach(item, (void (T::*)(Packet*))method);
         _transmit_callback.push_back(TimerData(frequency, callback));
     }
 
-protected:
     virtual void sendPacket(Packet* packet) {
         if (packet!=0) {
             send(255);
@@ -127,8 +116,6 @@
     uint8_t _state;
     uint8_t _last_byte;
 
-    bool _transfer_in_progress;
-    uint8_t _dma_buffer[SEND_CHUNK_SIZE];
 
     RingBuffer _send_buffer;
     std::map<uint8_t, std::vector<FPointer> > _callback;