SerialGPS.

Dependents:   SerialGPS_TestProgram Nucleo_SerialGPS_to_PC Nucleo_SerialGPS_to_PC SensorInterface ... more

Committer:
shintamainjp
Date:
Tue Oct 12 22:22:28 2010 +0000
Revision:
1:a5b887e09aa4
Parent:
0:3d0c5d7e5d0a
First version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:3d0c5d7e5d0a 1 #ifndef _SERIAL_BUFFERED_H_
shintamainjp 0:3d0c5d7e5d0a 2 #define _SERIAL_BUFFERED_H_
shintamainjp 0:3d0c5d7e5d0a 3
shintamainjp 0:3d0c5d7e5d0a 4 /**
shintamainjp 0:3d0c5d7e5d0a 5 * Buffered serial class.
shintamainjp 0:3d0c5d7e5d0a 6 */
shintamainjp 0:3d0c5d7e5d0a 7 class SerialBuffered : public Serial {
shintamainjp 0:3d0c5d7e5d0a 8 public:
shintamainjp 0:3d0c5d7e5d0a 9 /**
shintamainjp 0:3d0c5d7e5d0a 10 * Create a buffered serial class.
shintamainjp 0:3d0c5d7e5d0a 11 *
shintamainjp 0:3d0c5d7e5d0a 12 * @param tx A pin for transmit.
shintamainjp 0:3d0c5d7e5d0a 13 * @param rx A pin for receive.
shintamainjp 0:3d0c5d7e5d0a 14 */
shintamainjp 0:3d0c5d7e5d0a 15 SerialBuffered(PinName tx, PinName rx);
shintamainjp 1:a5b887e09aa4 16
shintamainjp 0:3d0c5d7e5d0a 17 /**
shintamainjp 0:3d0c5d7e5d0a 18 * Destroy.
shintamainjp 0:3d0c5d7e5d0a 19 */
shintamainjp 0:3d0c5d7e5d0a 20 virtual ~SerialBuffered();
shintamainjp 0:3d0c5d7e5d0a 21
shintamainjp 0:3d0c5d7e5d0a 22 /**
shintamainjp 0:3d0c5d7e5d0a 23 * Get a character.
shintamainjp 0:3d0c5d7e5d0a 24 *
shintamainjp 0:3d0c5d7e5d0a 25 * @return A character. (-1:timeout)
shintamainjp 0:3d0c5d7e5d0a 26 */
shintamainjp 0:3d0c5d7e5d0a 27 int getc();
shintamainjp 0:3d0c5d7e5d0a 28
shintamainjp 0:3d0c5d7e5d0a 29 /**
shintamainjp 0:3d0c5d7e5d0a 30 * Returns 1 if there is a character available to read, 0 otherwise.
shintamainjp 0:3d0c5d7e5d0a 31 */
shintamainjp 0:3d0c5d7e5d0a 32 int readable();
shintamainjp 0:3d0c5d7e5d0a 33
shintamainjp 0:3d0c5d7e5d0a 34 /**
shintamainjp 0:3d0c5d7e5d0a 35 * Set timeout for getc().
shintamainjp 0:3d0c5d7e5d0a 36 *
shintamainjp 0:3d0c5d7e5d0a 37 * @param ms milliseconds. (-1:Disable timeout)
shintamainjp 0:3d0c5d7e5d0a 38 */
shintamainjp 0:3d0c5d7e5d0a 39 void setTimeout(int ms);
shintamainjp 0:3d0c5d7e5d0a 40
shintamainjp 0:3d0c5d7e5d0a 41 /**
shintamainjp 0:3d0c5d7e5d0a 42 * Read requested bytes.
shintamainjp 0:3d0c5d7e5d0a 43 *
shintamainjp 0:3d0c5d7e5d0a 44 * @param bytes A pointer to a buffer.
shintamainjp 0:3d0c5d7e5d0a 45 * @param requested Length.
shintamainjp 0:3d0c5d7e5d0a 46 *
shintamainjp 0:3d0c5d7e5d0a 47 * @return Readed byte length.
shintamainjp 0:3d0c5d7e5d0a 48 */
shintamainjp 0:3d0c5d7e5d0a 49 size_t readBytes(uint8_t *bytes, size_t requested);
shintamainjp 0:3d0c5d7e5d0a 50
shintamainjp 0:3d0c5d7e5d0a 51 private:
shintamainjp 0:3d0c5d7e5d0a 52 void handleInterrupt();
shintamainjp 1:a5b887e09aa4 53 static const int BUFFERSIZE = 2048;
shintamainjp 0:3d0c5d7e5d0a 54 uint8_t buffer[BUFFERSIZE]; // points at a circular buffer, containing data from m_contentStart, for m_contentSize bytes, wrapping when you get to the end
shintamainjp 0:3d0c5d7e5d0a 55 uint16_t indexContentStart; // index of first bytes of content
shintamainjp 0:3d0c5d7e5d0a 56 uint16_t indexContentEnd; // index of bytes after last byte of content
shintamainjp 0:3d0c5d7e5d0a 57 int timeout;
shintamainjp 0:3d0c5d7e5d0a 58 Timer timer;
shintamainjp 0:3d0c5d7e5d0a 59 };
shintamainjp 0:3d0c5d7e5d0a 60
shintamainjp 0:3d0c5d7e5d0a 61 #endif