blob: 2d038ea97593245889268c3d1400c7754e2a24c4 [file] [log] [blame]
Daniel Pettia4fe7bc2013-12-22 12:57:50 -08001#ifndef BBB_CAPE_SRC_BBB_UART_READER_H_
2#define BBB_CAPE_SRC_BBB_UART_READER_H_
Daniel Petti059be422013-12-14 19:47:42 -08003
Brian Silverman1662a0e2013-12-19 17:50:01 -08004#include <stdint.h>
Daniel Pettia4fe7bc2013-12-22 12:57:50 -08005#include <string.h>
Brian Silvermanff1218b2014-01-03 14:47:39 -08006#include <sys/select.h>
7
8#include "aos/common/time.h"
Daniel Petti059be422013-12-14 19:47:42 -08009
Brian Silverman803b7a52014-01-01 13:21:18 -080010#include "bbb/byte_reader.h"
Daniel Petti059be422013-12-14 19:47:42 -080011
12namespace bbb {
Daniel Petti059be422013-12-14 19:47:42 -080013
Brian Silverman803b7a52014-01-01 13:21:18 -080014class UartReader : public ByteReader {
Brian Silvermanffeef3f2013-12-22 14:06:23 -080015 public:
Brian Silvermanf6b68842013-12-20 12:34:58 -080016 UartReader(int32_t baud_rate);
Brian Silvermanffeef3f2013-12-22 14:06:23 -080017 virtual ~UartReader();
18
Brian Silvermanff1218b2014-01-03 14:47:39 -080019 virtual ssize_t ReadBytes(AlignedChar *dest, size_t max_bytes,
20 const ::aos::time::Time &timeout) override;
Brian Silvermanffeef3f2013-12-22 14:06:23 -080021
22 private:
23 const int fd_;
Brian Silvermanff1218b2014-01-03 14:47:39 -080024 // Gets initialized to only contain fd_.
25 fd_set fd_set_;
Brian Silverman1662a0e2013-12-19 17:50:01 -080026};
27
Brian Silvermanffeef3f2013-12-22 14:06:23 -080028} // namespace bbb
Daniel Petti059be422013-12-14 19:47:42 -080029
30#endif