A port of the Sprinter Firmware to the mbed.

Dependencies:   mbed

Committer:
nullsub
Date:
Sun Jul 08 16:17:09 2012 +0000
Revision:
0:1e3ffdfd19ec
Working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nullsub 0:1e3ffdfd19ec 1 #pragma once
nullsub 0:1e3ffdfd19ec 2
nullsub 0:1e3ffdfd19ec 3 // This is a buffered serial reading class, using the serial interrupt introduced in mbed library version 18 on 17/11/09
nullsub 0:1e3ffdfd19ec 4
nullsub 0:1e3ffdfd19ec 5 // In the simplest case, construct it with a buffer size at least equal to the largest message you
nullsub 0:1e3ffdfd19ec 6 // expect your program to receive in one go.
nullsub 0:1e3ffdfd19ec 7
nullsub 0:1e3ffdfd19ec 8 class SerialBuffered : public Serial {
nullsub 0:1e3ffdfd19ec 9 public:
nullsub 0:1e3ffdfd19ec 10 SerialBuffered( size_t bufferSize, PinName tx, PinName rx );
nullsub 0:1e3ffdfd19ec 11 virtual ~SerialBuffered();
nullsub 0:1e3ffdfd19ec 12
nullsub 0:1e3ffdfd19ec 13 int getc(); // will block till the next character turns up, or return -1 if there is a timeout
nullsub 0:1e3ffdfd19ec 14
nullsub 0:1e3ffdfd19ec 15 int readable(); // returns 1 if there is a character available to read, 0 otherwise
nullsub 0:1e3ffdfd19ec 16
nullsub 0:1e3ffdfd19ec 17 void setTimeout( float seconds ); // maximum time in seconds that getc() should block
nullsub 0:1e3ffdfd19ec 18 // while waiting for a character
nullsub 0:1e3ffdfd19ec 19 // Pass -1 to disable the timeout.
nullsub 0:1e3ffdfd19ec 20
nullsub 0:1e3ffdfd19ec 21 size_t readBytes( uint8_t *bytes, size_t requested ); // read requested bytes into a buffer,
nullsub 0:1e3ffdfd19ec 22 // return number actually read,
nullsub 0:1e3ffdfd19ec 23 // which may be less than requested if there has been a timeout
nullsub 0:1e3ffdfd19ec 24
nullsub 0:1e3ffdfd19ec 25
nullsub 0:1e3ffdfd19ec 26 private:
nullsub 0:1e3ffdfd19ec 27
nullsub 0:1e3ffdfd19ec 28 void handleInterrupt();
nullsub 0:1e3ffdfd19ec 29
nullsub 0:1e3ffdfd19ec 30
nullsub 0:1e3ffdfd19ec 31 uint8_t *m_buff; // points at a circular buffer, containing data from m_contentStart, for m_contentSize bytes, wrapping when you get to the end
nullsub 0:1e3ffdfd19ec 32 uint16_t m_contentStart; // index of first bytes of content
nullsub 0:1e3ffdfd19ec 33 uint16_t m_contentEnd; // index of bytes after last byte of content
nullsub 0:1e3ffdfd19ec 34 uint16_t m_buffSize;
nullsub 0:1e3ffdfd19ec 35 float m_timeout;
nullsub 0:1e3ffdfd19ec 36 Timer m_timer;
nullsub 0:1e3ffdfd19ec 37
nullsub 0:1e3ffdfd19ec 38 };