A simple WIP that logs data from a Grove sensor, and can send and receive information over USB and SMS.
Dependencies: DHT DS_1337 SDFileSystem USBDevice mbed
circbuff.h
- Committer:
- Joseph Radford
- Date:
- 2016-04-10
- Revision:
- 0:2df78a4443cd
File content as of revision 0:2df78a4443cd:
#ifndef __CIRC_BUFF_H__ #define __CIRC_BUFF_H__ #include "mbed.h" /*! * \brief The CircBuff class writes in and reads out byte arrays into a circular buffer */ class CircBuff { public: CircBuff(uint16_t buffSize = 256); ~CircBuff(); /*! * \brief putc adds a single byte, \a c, into the array * \param c is the byte copied into the circular buffer. */ void putc(unsigned char c); /*! * \brief add adds \a s into the buffer, up until the NULL byte * \param s is the byte array copied into the buffer */ void add(unsigned char *s); /*! * \brief read puts the current data from the buffer into \a s * \param s is the reference buffer to copy current data into. Caller's responsibility to make it the correct size * \param len is the number of bytes to copy into \a s * \return the number of bytes copied into \a s. Will be less than \a len if there was less data in the buffer. */ uint16_t read(unsigned char *s, uint16_t len); bool dataAvailable() { return (m_start != m_end); } private: uint16_t m_start; ///< The start index of the circular buffer, where the current data starts uint16_t m_end; ///< The end index, where the current data goes to unsigned char *m_buf; ///< the byte array uint16_t m_buffSize; ///< size of \a m_buf // helper uint16_t remainingSize(); }; #endif // __CIRC_BUFF_H__