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
108 public pw::IntrusiveForwardList<McuxpressoDigitalInOutInterrupt>::Item {
109 public:
122 uint32_t port,
123 uint32_t pin,
124 bool output);
125
127 bool is_enabled() const { return enabled_; }
128
129 private:
130 friend void GPIO_INTA_DriverIRQHandler();
131 pw::Status DoEnable(bool enable) override;
133 pw::Status DoSetState(pw::digital_io::State state) override;
135 pw::digital_io::InterruptTrigger trigger,
136 pw::digital_io::InterruptHandler&& handler) override;
138
139 void ConfigureInterrupt() const;
140
141 GPIO_Type* base_;
142 const uint32_t port_;
143 const uint32_t pin_;
144 const bool output_;
145 pw::digital_io::InterruptTrigger trigger_;
146 pw::digital_io::InterruptHandler interrupt_handler_;
147 bool enabled_ = false;
148};
149
150} // namespace pw::digital_io
Definition: intrusive_forward_list.h:91
Definition: result.h:143
Definition: status.h:120
Definition: digital_io.h:408
Definition: digital_io.h:604
Definition: digital_io.h:485
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:127
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