C/C++ API Reference
Loading...
Searching...
No Matches
digital_io.h
1// Copyright 2023 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14#pragma once
15
16#include "fsl_gpio.h"
17#include "pw_containers/intrusive_forward_list.h"
18#include "pw_digital_io/digital_io.h"
19
20namespace pw::digital_io {
21
23
24PW_EXTERN_C void GPIO_INTA_DriverIRQHandler();
25
32 public:
39 McuxpressoDigitalOut(GPIO_Type* base,
40 uint32_t port,
41 uint32_t pin,
42 pw::digital_io::State initial_state);
43
45 bool is_enabled() const { return enabled_; }
46
47 private:
48 pw::Status DoEnable(bool enable) override;
49 pw::Status DoSetState(pw::digital_io::State state) override;
50
51 GPIO_Type* base_;
52 const uint32_t port_;
53 const uint32_t pin_;
54 const pw::digital_io::State initial_state_;
55 bool enabled_ = false;
56};
57
66 public:
72 McuxpressoDigitalIn(GPIO_Type* base, uint32_t port, uint32_t pin);
73
75 bool is_enabled() const { return enabled_; }
76
77 private:
78 pw::Status DoEnable(bool enable) override;
80
81 GPIO_Type* base_;
82 const uint32_t port_;
83 const uint32_t pin_;
84 bool enabled_ = false;
85};
86
104 public pw::IntrusiveForwardList<McuxpressoDigitalInOutInterrupt>::Item {
105 public:
118 uint32_t port,
119 uint32_t pin,
120 bool output);
121
123 bool is_enabled() const { return enabled_; }
124
125 private:
126 friend void GPIO_INTA_DriverIRQHandler();
127 pw::Status DoEnable(bool enable) override;
129 pw::Status DoSetState(pw::digital_io::State state) override;
131 pw::digital_io::InterruptTrigger trigger,
132 pw::digital_io::InterruptHandler&& handler) override;
134
135 void ConfigureInterrupt() const;
136
137 GPIO_Type* base_;
138 const uint32_t port_;
139 const uint32_t pin_;
140 const bool output_;
141 pw::digital_io::InterruptTrigger trigger_;
142 pw::digital_io::InterruptHandler interrupt_handler_;
143 bool enabled_ = false;
144};
145
146} // namespace pw::digital_io
Definition: intrusive_forward_list.h:91
Definition: poll.h:25
Definition: status.h:86
Definition: digital_io.h:516
Definition: digital_io.h:712
Definition: digital_io.h:593
Definition: digital_io.h:65
Definition: digital_io.h:31
pw::Status DoSetInterruptHandler(pw::digital_io::InterruptTrigger trigger, pw::digital_io::InterruptHandler &&handler) override
bool is_enabled() const
Returns true if the input is enabled.
Definition: digital_io.h:75
pw::Status DoEnable(bool enable) override
pw::Status DoEnable(bool enable) override
pw::Status DoSetState(pw::digital_io::State state) override
McuxpressoDigitalInOutInterrupt(GPIO_Type *base, uint32_t port, uint32_t pin, bool output)
McuxpressoDigitalIn(GPIO_Type *base, uint32_t port, uint32_t pin)
pw::Result< pw::digital_io::State > DoGetState() override
bool is_enabled() const
Returns true if the line is enabled (in any state).
Definition: digital_io.h:123
pw::Status DoEnableInterruptHandler(bool enable) override
pw::Result< pw::digital_io::State > DoGetState() override
pw::Status DoSetState(pw::digital_io::State state) override
pw::Status DoEnable(bool enable) override
McuxpressoDigitalOut(GPIO_Type *base, uint32_t port, uint32_t pin, pw::digital_io::State initial_state)
bool is_enabled() const
Returns true if the output is enabled.
Definition: digital_io.h:45
GPIO library.
Definition: digital_io.h:24