blob: c4411676cc5ffcf21d1bca515386464bca1accab [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"
Brian Silverman7d16c572014-01-03 20:27:57 -08009#include "aos/common/macros.h"
Daniel Petti059be422013-12-14 19:47:42 -080010
Brian Silverman803b7a52014-01-01 13:21:18 -080011#include "bbb/byte_reader.h"
Daniel Petti059be422013-12-14 19:47:42 -080012
13namespace bbb {
Daniel Petti059be422013-12-14 19:47:42 -080014
Brian Silverman803b7a52014-01-01 13:21:18 -080015class UartReader : public ByteReader {
Brian Silvermanffeef3f2013-12-22 14:06:23 -080016 public:
Brian Silvermanf6b68842013-12-20 12:34:58 -080017 UartReader(int32_t baud_rate);
Brian Silvermanffeef3f2013-12-22 14:06:23 -080018 virtual ~UartReader();
19
Brian Silvermanff1218b2014-01-03 14:47:39 -080020 virtual ssize_t ReadBytes(AlignedChar *dest, size_t max_bytes,
Brian Silverman7d16c572014-01-03 20:27:57 -080021 const ::aos::time::Time &timeout_time) override;
Brian Silvermanffeef3f2013-12-22 14:06:23 -080022
23 private:
24 const int fd_;
Brian Silvermanff1218b2014-01-03 14:47:39 -080025 // Gets initialized to only contain fd_.
26 fd_set fd_set_;
Brian Silverman7d16c572014-01-03 20:27:57 -080027
28 DISALLOW_COPY_AND_ASSIGN(UartReader);
Brian Silverman1662a0e2013-12-19 17:50:01 -080029};
30
Brian Silvermanffeef3f2013-12-22 14:06:23 -080031} // namespace bbb
Daniel Petti059be422013-12-14 19:47:42 -080032
33#endif