-
Notifications
You must be signed in to change notification settings - Fork 0
/
chip-client.hpp
75 lines (59 loc) · 1.23 KB
/
chip-client.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* \file
* \brief CHIP GPIO Client
*/
#ifndef CHIP_GPIO_CLIENT_HPP_
#define CHIP_GPIO_CLIENT_HPP_
#include <memory>
namespace chip {
namespace gpio {
/**
* \brief Direction mode
*/
enum class Direction { input, output };
/**
* \brief GPIO level
*/
enum class Level { high, low };
/**
* \brief Ask command to GPIO Server
*/
class Client {
public:
using Ptr = std::unique_ptr<Client>;
Client(const Client&) = delete;
Client& operator=(const Client&) = delete;
Client(Client&&) = delete;
Client& operator=(Client&&) = delete;
virtual ~Client() = default;
/**
* \brief Create new client instance
* \param pin Board pin
*/
Ptr create(unsigned pin);
/**
* \brief Set direction mode
*/
virtual bool mode(Direction direction) = 0;
/**
* \brief Write level on GPIO
*/
virtual bool write(Level level) = 0;
/**
* \brief Read current level on GPIO
*/
virtual Level read() = 0;
protected:
/**
* \brief Enable GPIO
*/
virtual bool enable() = 0;
/**
* \brief Disable GPIO
*/
virtual bool disable() = 0;
Client() = default;
};
} // namespace gpio
} // namespace chip
#endif // CHIP_GPIO_CLIENT_HPP_