blob: 7861003fb335b69c2b83603ef3eddb97b93695b2 [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 Silverman04fac622014-01-26 18:32:15 -080011#include "bbb/byte_io.h"
Daniel Petti059be422013-12-14 19:47:42 -080012
13namespace bbb {
Daniel Petti059be422013-12-14 19:47:42 -080014
Brian Silverman04fac622014-01-26 18:32:15 -080015class UartReader : public ByteReaderWriterInterface {
Brian Silvermanffeef3f2013-12-22 14:06:23 -080016 public:
Brian Silverman04fac622014-01-26 18:32:15 -080017 explicit UartReader(int32_t baud_rate);
Brian Silvermanffeef3f2013-12-22 14:06:23 -080018 virtual ~UartReader();
19
Brian Silverman87e430c2014-03-26 17:06:34 -070020 virtual ssize_t ReadBytes(
21 uint8_t *dest, size_t max_bytes,
22 const ::aos::time::Time &timeout_time = ::aos::time::Time(0, 0)) override;
Brian Silverman04fac622014-01-26 18:32:15 -080023 virtual bool WriteBytes(uint8_t *bytes, size_t number_bytes) override;
Brian Silvermanffeef3f2013-12-22 14:06:23 -080024
25 private:
26 const int fd_;
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