blob: a6cf34c5a96c7b0f3098dccab0110e506d2fe712 [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 Silverman04fac622014-01-26 18:32:15 -080020 virtual ssize_t ReadBytes(uint8_t *dest, size_t max_bytes,
Brian Silverman7d16c572014-01-03 20:27:57 -080021 const ::aos::time::Time &timeout_time) override;
Brian Silverman04fac622014-01-26 18:32:15 -080022 virtual bool WriteBytes(uint8_t *bytes, size_t number_bytes) override;
Brian Silvermanffeef3f2013-12-22 14:06:23 -080023
24 private:
25 const int fd_;
Brian Silvermanff1218b2014-01-03 14:47:39 -080026 // Gets initialized to only contain fd_.
27 fd_set fd_set_;
Brian Silverman7d16c572014-01-03 20:27:57 -080028
29 DISALLOW_COPY_AND_ASSIGN(UartReader);
Brian Silverman1662a0e2013-12-19 17:50:01 -080030};
31
Brian Silvermanffeef3f2013-12-22 14:06:23 -080032} // namespace bbb
Daniel Petti059be422013-12-14 19:47:42 -080033
34#endif