arduino-audio-driver
Loading...
Searching...
No Matches
GPIOExt.h
Go to the documentation of this file.
1#pragma once
2#include <stdint.h>
3
4#include "Platforms/GPIO.h"
5#include "Platforms/TCA9555.h"
6
13namespace audio_driver {
14
19class GPIOExt : public API_GPIO {
20 public:
25 GPIOExt() = default;
26 bool begin(IDriverDeviceInfo& pins) override {
27 bool rc = gpio.begin(pins);
28 if (p_ext) p_ext->begin(pins);
29 return rc;
30 }
31 void end() override {
32 gpio.end();
33 if (p_ext) p_ext->end();
34 }
35 void pinMode(GpioPin pin, int mode) override {
36 if (p_ext && pin >= offset) {
37 p_ext->pinMode(pin, mode);
38 } else {
39 gpio.pinMode(pin, mode);
40 }
41 }
42 bool digitalWrite(GpioPin pin, bool value) override {
43 if (p_ext && pin >= offset) {
44 return p_ext->digitalWrite(pin, value);
45 } else {
46 return gpio.digitalWrite(pin, value);
47 }
48 }
49
50 bool digitalRead(GpioPin pin) override {
51 if (p_ext && pin >= offset) {
52 return p_ext->digitalRead(pin);
53 } else {
54 return gpio.digitalRead(pin);
55 }
56 }
57
58 int analogRead(ADCPin pin) override {
59 return gpio.analogRead(pin);
60 }
61
62 void setAltGPIO(API_GPIO& gpioExt, int offset = 1000) {
63 AD_LOGD("setAltGPIO");
64 p_ext = &gpioExt;
65 this->offset = offset;
66 }
67
68 protected:
69 int offset = 1000;
70 GPIO gpio; // default GPIO
71 API_GPIO* p_ext = nullptr; // alternative GPIO
72};
73
74} // namespace audio_driver
Simple GPIO abstraction for digital input/output.
#define AD_LOGD(...)
Definition Logger.h:12
Header-only driver for the TCA9555 I2C I/O expander.
Definition API_GPIO.h:8
virtual bool digitalRead(GpioPin pin)=0
virtual bool digitalWrite(GpioPin pin, bool value)=0
virtual void end()=0
virtual bool begin(IDriverDeviceInfo &pins)=0
virtual void pinMode(GpioPin pin, int mode)=0
Definition GPIOExt.h:19
int analogRead(ADCPin pin) override
Returns the raw ADC value for the given pin, or -1 if not supported.
Definition GPIOExt.h:58
GPIOExt()=default
Construct a new GPIO object.
bool digitalWrite(GpioPin pin, bool value) override
Definition GPIOExt.h:42
void end() override
Definition GPIOExt.h:31
bool digitalRead(GpioPin pin) override
Definition GPIOExt.h:50
void pinMode(GpioPin pin, int mode) override
Definition GPIOExt.h:35
bool begin(IDriverDeviceInfo &pins) override
Definition GPIOExt.h:26
GPIO gpio
Definition GPIOExt.h:70
int offset
Definition GPIOExt.h:69
void setAltGPIO(API_GPIO &gpioExt, int offset=1000)
Definition GPIOExt.h:62
API_GPIO * p_ext
Definition GPIOExt.h:71
Definition GPIO_Zephyr.h:20
bool begin(IDriverDeviceInfo &pins)
Definition GPIO_Zephyr.h:24
bool digitalWrite(GpioPin pin, bool value)
Definition GPIO_Zephyr.h:59
int analogRead(ADCPin pin)
Reads the raw ADC sample described by an adc_dt_spec device-tree node.
Definition GPIO_Zephyr.h:88
void pinMode(GpioPin pin, int mode)
Definition GPIO_Zephyr.h:28
void end()
Definition GPIO_Zephyr.h:26
bool digitalRead(GpioPin pin)
Definition GPIO_Zephyr.h:73
Definition IDriverDeviceInfo.h:171
Namespace for audio driver components.
Definition AudioBoard.h:5
int16_t GpioPin
Definition DriverCommon.h:153
int16_t ADCPin
Definition DriverCommon.h:154