CameraC328

Dependents:   CameraC328_TestProgram CameraC328_Thresholding Camera_TestProgram_2015 Camera_TestProgram_2015 ... more

Committer:
shintamainjp
Date:
Wed Oct 13 10:45:29 2010 +0000
Revision:
15:49cfda6c547f
Parent:
13:17cf1e2015f7

        

Who changed what in which revision?

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