tetl
0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
mcp23017.hpp
Go to the documentation of this file.
1
// SPDX-License-Identifier: BSL-1.0
2
// SPDX-FileCopyrightText: Copyright (C) 2020 Tobias Hienzsch
3
4
#
ifndef
TETL_HARDWARE_MCP23017_MCP23017_HPP
5
#
define
TETL_HARDWARE_MCP23017_MCP23017_HPP
6
7
#
include
<
etl
/
version
.
hpp
>
8
9
#
include
<
etl
/
cstdint
.
hpp
>
10
#
include
<
etl
/
utility
.
hpp
>
11
12
namespace
etl
::experimental::hardware::
mcp23017
{
13
// ports
14
enum
struct
port
:
etl
::
uint16_t
{
15
a
= 0x00,
16
b
= 0x01,
17
};
18
19
// Address (A0-A2)
20
enum
struct
address
:
etl
::
uint16_t
{
21
a20
= 0x20,
22
a21
= 0x21,
23
a22
= 0x22,
24
a23
= 0x23,
25
a24
= 0x24,
26
a25
= 0x25,
27
a26
= 0x26,
28
a27
= 0x27,
29
};
30
31
// registers
32
enum
struct
registers
:
etl
::
uint16_t
{
33
io_direction_a
= 0x00,
// datasheet: IODIRA
34
io_direction_b
= 0x01,
// datasheet: IODIRB
35
IPOLA
= 0x02,
36
IPOLB
= 0x03,
37
GPINTENA
= 0x04,
38
GPINTENB
= 0x05,
39
DEFVALA
= 0x06,
40
DEFVALB
= 0x07,
41
INTCONA
= 0x08,
42
INTCONB
= 0x09,
43
// IOCON 0x0A
44
// IOCON 0x0B
45
GPPUA
= 0x0C,
46
GPPUB
= 0x0D,
47
INTFA
= 0x0E,
48
INTFB
= 0x0F,
49
INTCAPA
= 0x10,
50
INTCAPB
= 0x11,
51
GPIOA
= 0x12,
52
GPIOB
= 0x13,
53
OLATA
= 0x14,
54
OLATB
= 0x15,
55
};
56
57
// I/O Direction
58
// Default state: io_direction::all_output
59
enum
struct
io_direction
:
etl
::
uint8_t
{
60
all_output
= 0x00,
61
all_input
= 0xFF,
62
input_O0
= 0x01,
63
input_O1
= 0x02,
64
input_O2
= 0x04,
65
input_O3
= 0x08,
66
input_O4
= 0x10,
67
input_O5
= 0x20,
68
input_O6
= 0x40,
69
input_O7
= 0x80,
70
};
71
72
// Input Polarity
73
// Default state: MCP23017_IPOL_ALL_NORMAL
74
enum
struct
io_polarity
:
etl
::
uint8_t
{
75
all_normal
= 0x00,
76
all_inverted
= 0xFF,
77
inverted_O0
= 0x01,
78
inverted_O1
= 0x02,
79
inverted_O2
= 0x04,
80
inverted_O3
= 0x08,
81
inverted_O4
= 0x10,
82
inverted_O5
= 0x20,
83
inverted_O6
= 0x40,
84
inverted_O7
= 0x80,
85
};
86
87
// Pull-Up Resistor
88
// Default state: MCP23017_GPPU_ALL_DISABLED
89
enum
struct
pull_up_resistor
:
etl
::
uint8_t
{
90
all_disabled
= 0x00,
91
all_enabled
= 0xFF,
92
enabled_O0
= 0x01,
93
enabled_O1
= 0x02,
94
enabled_O2
= 0x04,
95
enabled_O3
= 0x08,
96
enabled_O4
= 0x10,
97
enabled_O5
= 0x20,
98
enabled_O6
= 0x40,
99
enabled_O7
= 0x80,
100
};
101
102
template
<
typename
Driver>
103
struct
device
{
104
public
:
105
explicit
device
() =
default
;
106
~
device
() =
default
;
107
device
(
device
&&) =
delete
;
108
device
(
device
const
&) =
delete
;
109
auto
operator
=(
device
&&) ->
device
& =
delete
;
110
auto
operator
=(
device
const
&) ->
device
& =
delete
;
111
112
auto
init
() ->
bool
113
{
114
return
true
;
115
}
116
117
auto
set_io_direction
(
port
p,
io_direction
direction) ->
void
118
{
119
etl
::
ignore_unused
(
p
,
direction
)
;
120
}
121
};
122
}
// namespace etl::experimental::hardware::mcp23017
123
124
#
endif
// TETL_HARDWARE_MCP23017_MCP23017_HPP
etl::experimental::hardware::mcp23017::address
address
Definition
mcp23017.hpp:20
etl::experimental::hardware::mcp23017::address::a27
@ a27
etl::experimental::hardware::mcp23017::address::a20
@ a20
etl::experimental::hardware::mcp23017::address::a22
@ a22
etl::experimental::hardware::mcp23017::address::a25
@ a25
etl::experimental::hardware::mcp23017::address::a21
@ a21
etl::experimental::hardware::mcp23017::address::a24
@ a24
etl::experimental::hardware::mcp23017::address::a26
@ a26
etl::experimental::hardware::mcp23017::address::a23
@ a23
etl::experimental::hardware::mcp23017::pull_up_resistor
pull_up_resistor
Definition
mcp23017.hpp:89
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O5
@ enabled_O5
etl::experimental::hardware::mcp23017::pull_up_resistor::all_enabled
@ all_enabled
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O4
@ enabled_O4
etl::experimental::hardware::mcp23017::pull_up_resistor::all_disabled
@ all_disabled
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O3
@ enabled_O3
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O1
@ enabled_O1
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O7
@ enabled_O7
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O0
@ enabled_O0
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O2
@ enabled_O2
etl::experimental::hardware::mcp23017::pull_up_resistor::enabled_O6
@ enabled_O6
etl::experimental::hardware::mcp23017::io_polarity
io_polarity
Definition
mcp23017.hpp:74
etl::experimental::hardware::mcp23017::io_polarity::all_normal
@ all_normal
etl::experimental::hardware::mcp23017::io_polarity::inverted_O5
@ inverted_O5
etl::experimental::hardware::mcp23017::io_polarity::inverted_O7
@ inverted_O7
etl::experimental::hardware::mcp23017::io_polarity::all_inverted
@ all_inverted
etl::experimental::hardware::mcp23017::io_polarity::inverted_O0
@ inverted_O0
etl::experimental::hardware::mcp23017::io_polarity::inverted_O4
@ inverted_O4
etl::experimental::hardware::mcp23017::io_polarity::inverted_O6
@ inverted_O6
etl::experimental::hardware::mcp23017::io_polarity::inverted_O3
@ inverted_O3
etl::experimental::hardware::mcp23017::io_polarity::inverted_O2
@ inverted_O2
etl::experimental::hardware::mcp23017::io_polarity::inverted_O1
@ inverted_O1
etl::experimental::hardware::mcp23017::io_direction
io_direction
Definition
mcp23017.hpp:59
etl::experimental::hardware::mcp23017::io_direction::input_O5
@ input_O5
etl::experimental::hardware::mcp23017::io_direction::input_O0
@ input_O0
etl::experimental::hardware::mcp23017::io_direction::input_O1
@ input_O1
etl::experimental::hardware::mcp23017::io_direction::input_O7
@ input_O7
etl::experimental::hardware::mcp23017::io_direction::input_O6
@ input_O6
etl::experimental::hardware::mcp23017::io_direction::input_O2
@ input_O2
etl::experimental::hardware::mcp23017::io_direction::all_input
@ all_input
etl::experimental::hardware::mcp23017::io_direction::all_output
@ all_output
etl::experimental::hardware::mcp23017::io_direction::input_O3
@ input_O3
etl::experimental::hardware::mcp23017::io_direction::input_O4
@ input_O4
etl::experimental::hardware::mcp23017::registers
registers
Definition
mcp23017.hpp:32
etl::experimental::hardware::mcp23017::registers::GPINTENA
@ GPINTENA
etl::experimental::hardware::mcp23017::registers::INTFB
@ INTFB
etl::experimental::hardware::mcp23017::registers::OLATA
@ OLATA
etl::experimental::hardware::mcp23017::registers::INTCAPB
@ INTCAPB
etl::experimental::hardware::mcp23017::registers::INTCONA
@ INTCONA
etl::experimental::hardware::mcp23017::registers::DEFVALB
@ DEFVALB
etl::experimental::hardware::mcp23017::registers::INTCAPA
@ INTCAPA
etl::experimental::hardware::mcp23017::registers::io_direction_b
@ io_direction_b
etl::experimental::hardware::mcp23017::registers::io_direction_a
@ io_direction_a
etl::experimental::hardware::mcp23017::registers::IPOLB
@ IPOLB
etl::experimental::hardware::mcp23017::registers::INTCONB
@ INTCONB
etl::experimental::hardware::mcp23017::registers::GPIOB
@ GPIOB
etl::experimental::hardware::mcp23017::registers::DEFVALA
@ DEFVALA
etl::experimental::hardware::mcp23017::registers::IPOLA
@ IPOLA
etl::experimental::hardware::mcp23017::registers::GPPUB
@ GPPUB
etl::experimental::hardware::mcp23017::registers::INTFA
@ INTFA
etl::experimental::hardware::mcp23017::registers::GPPUA
@ GPPUA
etl::experimental::hardware::mcp23017::registers::OLATB
@ OLATB
etl::experimental::hardware::mcp23017::registers::GPINTENB
@ GPINTENB
etl::experimental::hardware::mcp23017::registers::GPIOA
@ GPIOA
etl::experimental::hardware::mcp23017::port
port
Definition
mcp23017.hpp:14
etl::experimental::hardware::mcp23017::port::a
@ a
etl::experimental::hardware::mcp23017::port::b
@ b
etl::experimental::hardware
Definition
mcp23017.hpp:12
etl
Definition
adjacent_find.hpp:9
etl::ignore_unused
constexpr auto ignore_unused(Types &&...) -> void
Explicitly ignore arguments or variables.
Definition
ignore_unused.hpp:18
etl::experimental::hardware::mcp23017::device
Definition
mcp23017.hpp:103
etl::experimental::hardware::mcp23017::device::~device
~device()=default
etl::experimental::hardware::mcp23017::device::device
device(device &&)=delete
etl::experimental::hardware::mcp23017::device::device
device()=default
etl::experimental::hardware::mcp23017::device::device
device(device const &)=delete
etl::experimental::hardware::mcp23017::device::init
auto init() -> bool
Definition
mcp23017.hpp:112
etl::experimental::hardware::mcp23017::device::operator=
auto operator=(device &&) -> device &=delete
etl::experimental::hardware::mcp23017::device::operator=
auto operator=(device const &) -> device &=delete
etl::experimental::hardware::mcp23017::device::set_io_direction
auto set_io_direction(port p, io_direction direction) -> void
Definition
mcp23017.hpp:117
include
etl
experimental
hardware
mcp23017
mcp23017.hpp
Generated on Sun Sep 7 2025 19:15:24 for tetl by
1.9.8