Skip to content

Commit afb1c44

Browse files
committed
cores: Specify port/pin instead of gpio_dt_spec.
In preparation for improvements to allow the use of GPIOs without device tree definitions, the interface will be changed to specify port and pin instead of `gpio_dt_spec`. Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
1 parent 48c8301 commit afb1c44

9 files changed

Lines changed: 323 additions & 49 deletions

File tree

cores/arduino/Arduino.h

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
* Copyright (c) 2022 Dhruva Gole
3+
* Copyright (c) 2026 TOKITA Hiroshi
34
*
45
* SPDX-License-Identifier: Apache-2.0
56
*/
@@ -15,6 +16,8 @@
1516
#include <zephyr/drivers/dac.h>
1617
#include <zephyr/drivers/i2c.h>
1718

19+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
20+
1821
#if DT_PROP_LEN(DT_PATH(zephyr_user), digital_pin_gpios) > 0
1922
/* Note: DT_REG_ADDR needs an expanded argument or it will not work properly */
2023
#define DIGITAL_PIN_MATCHES(dev_pha, pin, dev, num) \
@@ -83,15 +86,33 @@
8386

8487
#define DN_ENUMS(n, p, i) D##i = i
8588

89+
#else
90+
91+
#include "connectors/connector.h"
92+
93+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), builtin_led_gpios) && \
94+
(DT_PROP_LEN(DT_PATH(zephyr_user), builtin_led_gpios) > 0)
95+
#define ZARD_LED_BUILTIN \
96+
ZARD_GLOBAL_GPIO_OFFSET(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)) + \
97+
DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin)
98+
#elif DT_NODE_EXISTS(DT_ALIAS(led0))
99+
#define ZARD_LED_BUILTIN \
100+
ZARD_GLOBAL_GPIO_OFFSET(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)) + \
101+
DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)
102+
#endif
103+
#endif // digital_pin_gpios
104+
86105
/*
87106
* expand as
88107
* enum digitalPins { D0, D1, ... LED... NUM_OF_DIGITAL_PINS };
89108
*/
90109
enum digitalPins {
91-
#if DT_PROP_LEN(DT_PATH(zephyr_user), digital_pin_gpios) > 0
110+
#if DT_PROP_LEN_OR(DT_PATH(zephyr_user), digital_pin_gpios, 0) > 0
92111
DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, DN_ENUMS, (, )),
93-
#endif
94112
NUM_OF_DIGITAL_PINS
113+
#elif defined(ZARD_CONNECTOR)
114+
DT_FOREACH_MAP_ENTRY(DT_NODELABEL(ZARD_CONNECTOR), gpio_map, ZARD_CONN_DN_ENUMS)
115+
#endif
95116
};
96117

97118
#ifdef CONFIG_ADC
@@ -101,7 +122,15 @@ enum digitalPins {
101122
DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)),
102123

103124
enum analogPins {
125+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), adc_pin_gpios)
126+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
104127
DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), adc_pin_gpios, AN_ENUMS)
128+
#else
129+
DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user), adc_pin_gpios, ZARD_AN_ENUM_GLOBAL)
130+
#endif
131+
#elif defined(ZARD_CONNECTOR)
132+
DT_FOREACH_MAP_ENTRY(DT_NODELABEL(ZARD_CONNECTOR), gpio_map, ZARD_CONN_AN_ENUMS)
133+
#endif
105134
};
106135

107136
// We provide analogReadResolution APIs

cores/arduino/Tone.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ using namespace zephyr::arduino;
1414
namespace {
1515

1616
#if CONFIG_ARDUINO_MAX_TONES < 0
17+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
1718
#define MAX_TONE_PINS DT_PROP_LEN(DT_PATH(zephyr_user), digital_pin_gpios)
19+
#elif defined(ZARD_CONNECTOR)
20+
#define MAX_TONE_PINS DT_PROP_LEN(DT_NODELABEL(ZARD_CONNECTOR), gpio_map)
21+
#else
22+
#define MAX_TONE_PINS 1
23+
#endif
1824
#else
1925
#define MAX_TONE_PINS CONFIG_ARDUINO_MAX_TONES
2026
#endif
@@ -69,20 +75,21 @@ static struct pin_timer *find_pin_timer(pin_size_t pinNumber, bool active_only)
6975
void tone_expiry_cb(struct k_timer *timer) {
7076
struct pin_timer *pt = CONTAINER_OF(timer, struct pin_timer, timer);
7177
k_spinlock_key_t key = k_spin_lock(&pt->lock);
78+
const struct device *port = local_gpio_port(pt->pin);
7279
pin_size_t pin = pt->pin;
7380

7481
if (pt->count == 0 && !pt->infinity) {
75-
if (pin != invalid_pin_number) {
76-
gpio_pin_set_dt(&arduino_pins[pin], 0);
82+
if (port) {
83+
gpio_pin_set(port, local_gpio_pin(pt->pin), 0);
7784
}
7885

7986
k_timer_stop(timer);
8087
pt->count = 0;
8188
pt->infinity = false;
8289
pt->pin = invalid_pin_number;
8390
} else {
84-
if (pin != invalid_pin_number) {
85-
gpio_pin_toggle_dt(&arduino_pins[pin]);
91+
if (port) {
92+
gpio_pin_toggle(port, local_gpio_pin(pt->pin));
8693
}
8794
pt->count--;
8895
}
@@ -129,7 +136,7 @@ void tone(pin_size_t pinNumber, unsigned int frequency, unsigned long duration)
129136
pt->pin = invalid_pin_number;
130137
k_spin_unlock(&pt->lock, key);
131138

132-
gpio_pin_set_dt(&arduino_pins[pinNumber], 0);
139+
gpio_pin_set(local_gpio_port(pt->pin), local_gpio_pin(pinNumber), 0);
133140

134141
k_mutex_unlock(&timer_cfg_lock);
135142
return;
@@ -146,7 +153,8 @@ void tone(pin_size_t pinNumber, unsigned int frequency, unsigned long duration)
146153
pt->pin = pinNumber;
147154
k_spin_unlock(&pt->lock, key);
148155

149-
gpio_pin_set_dt(&arduino_pins[pinNumber], 1);
156+
gpio_pin_set(local_gpio_port(pt->pin), local_gpio_pin(pinNumber), 1);
157+
150158
k_timer_start(&pt->timer, timeout, timeout);
151159

152160
k_mutex_unlock(&timer_cfg_lock);
@@ -178,7 +186,7 @@ void noTone(pin_size_t pinNumber) {
178186
pt->pin = invalid_pin_number;
179187
k_spin_unlock(&pt->lock, key);
180188

181-
gpio_pin_set_dt(&arduino_pins[pinNumber], 0);
189+
gpio_pin_set(local_gpio_port(pinNumber), local_gpio_pin(pinNumber), 0);
182190

183191
k_mutex_unlock(&timer_cfg_lock);
184192
}

cores/arduino/WInterrupts.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ struct gpio_port_callback *find_gpio_port_callback(const struct device *dev) {
4848
void setInterruptHandler(pin_size_t pinNumber, voidFuncPtr func) {
4949
RETURN_ON_INVALID_PIN(pinNumber);
5050

51-
struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port);
51+
struct gpio_port_callback *pcb = find_gpio_port_callback(local_gpio_port(pinNumber));
5252

5353
if (pcb) {
54-
pcb->handlers[arduino_pins[pinNumber].pin].handler = func;
54+
pcb->handlers[local_gpio_pin(pinNumber)].handler = func;
5555
}
5656
}
5757

@@ -69,20 +69,20 @@ void handleGpioCallback(const struct device *port, struct gpio_callback *cb, uin
6969
void enableInterrupt(pin_size_t pinNumber) {
7070
RETURN_ON_INVALID_PIN(pinNumber);
7171

72-
struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port);
72+
struct gpio_port_callback *pcb = find_gpio_port_callback(local_gpio_port(pinNumber));
7373

7474
if (pcb) {
75-
pcb->handlers[arduino_pins[pinNumber].pin].enabled = true;
75+
pcb->handlers[local_gpio_pin(pinNumber)].enabled = true;
7676
}
7777
}
7878

7979
void disableInterrupt(pin_size_t pinNumber) {
8080
RETURN_ON_INVALID_PIN(pinNumber);
8181

82-
struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port);
82+
struct gpio_port_callback *pcb = find_gpio_port_callback(local_gpio_port(pinNumber));
8383

8484
if (pcb) {
85-
pcb->handlers[arduino_pins[pinNumber].pin].enabled = false;
85+
pcb->handlers[local_gpio_pin(pinNumber)].enabled = false;
8686
}
8787
}
8888

@@ -112,17 +112,16 @@ void attachInterrupt(pin_size_t pinNumber, voidFuncPtr callback, PinStatus pinSt
112112
return;
113113
}
114114

115-
pcb = find_gpio_port_callback(arduino_pins[pinNumber].port);
115+
pcb = find_gpio_port_callback(local_gpio_port(pinNumber));
116116
__ASSERT(pcb != nullptr, "gpio_port_callback not found");
117117

118-
pcb->pins |= BIT(arduino_pins[pinNumber].pin);
118+
pcb->pins |= BIT(local_gpio_pin(pinNumber));
119119
setInterruptHandler(pinNumber, callback);
120120
enableInterrupt(pinNumber);
121121

122-
gpio_pin_interrupt_configure(arduino_pins[pinNumber].port, arduino_pins[pinNumber].pin,
123-
intmode);
122+
gpio_pin_interrupt_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber), intmode);
124123
gpio_init_callback(&pcb->callback, handleGpioCallback, pcb->pins);
125-
gpio_add_callback(arduino_pins[pinNumber].port, &pcb->callback);
124+
gpio_add_callback(local_gpio_port(pinNumber), &pcb->callback);
126125
}
127126

128127
void detachInterrupt(pin_size_t pinNumber) {
@@ -149,7 +148,7 @@ void noInterrupts(void) {
149148
int digitalPinToInterrupt(pin_size_t pinNumber) {
150149
RETURN_ON_INVALID_PIN(pinNumber, -1);
151150

152-
struct gpio_port_callback *pcb = find_gpio_port_callback(arduino_pins[pinNumber].port);
151+
struct gpio_port_callback *pcb = find_gpio_port_callback(local_gpio_port(pinNumber));
153152

154153
return (pcb) ? pinNumber : -1;
155154
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (c) 2026 TOKITA Hiroshi
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#pragma once
8+
9+
#define ZARD_CONNECTOR arduino_header
10+
11+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_0 A0
12+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_1 A1
13+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_2 A2
14+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_3 A3
15+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_4 A4
16+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_A_5 A5
17+
18+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_6 D0
19+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_7 D1
20+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_8 D2
21+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_9 D3
22+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_10 D4
23+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_11 D5
24+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_12 D6
25+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_13 D7
26+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_14 D8
27+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_15 D9
28+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_16 D10
29+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_17 D11
30+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_18 D12
31+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_19 D13
32+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_20 D14
33+
#define ZARD_ARDUINO_HEADER_R3_PIN_NAME_D_21 D15
34+
35+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_0 1
36+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_1 1
37+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_2 1
38+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_3 1
39+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_4 1
40+
#define ZARD_ARDUINO_HEADER_R3_IS_ANALOG_5 1
41+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_6 1
42+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_7 1
43+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_8 1
44+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_9 1
45+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_10 1
46+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_11 1
47+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_12 1
48+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_13 1
49+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_14 1
50+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_15 1
51+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_16 1
52+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_17 1
53+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_18 1
54+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_19 1
55+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_20 1
56+
#define ZARD_ARDUINO_HEADER_R3_IS_DIGITAL_21 1
57+
58+
#if DT_NODE_EXISTS(DT_NODELABEL(arduino_adc))
59+
#define ZARD_ADC_CONNECTOR arduino_adc
60+
#endif
61+
62+
#if DT_NODE_EXISTS(DT_NODELABEL(arduino_pwm))
63+
#define ZARD_PWM_CONNECTOR arduino_pwm
64+
#endif
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
* Copyright (c) 2026 TOKITA Hiroshi
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#pragma once
8+
9+
#if DT_NODE_EXISTS(DT_NODELABEL(arduino_header)) && \
10+
DT_NODE_HAS_COMPAT(DT_NODELABEL(arduino_header), arduino_header_r3)
11+
#include "arduino_header_r3.h"
12+
#else
13+
#error "Only arduino-header-r3 connector is supported"
14+
#endif
15+
16+
#define ZARD_CHECK_GPIO_CTLR(node_id) \
17+
COND_CODE_1(DT_NODE_HAS_PROP(node_id, gpio_controller), (node_id,), ())
18+
19+
#define ZARD_ALL_GPIO_CTLR DT_FOREACH_NODE(ZARD_CHECK_GPIO_CTLR)
20+
21+
#define ZARD_IDX_IF_MATCH(i, n) \
22+
COND_CODE_1(DT_SAME_NODE(n, GET_ARG_N(UTIL_INC(i), ZARD_ALL_GPIO_CTLR)), (i), ())
23+
24+
#define ZARD_MATCH_IDX(n) LISTIFY(NUM_VA_ARGS_LESS_1(ZARD_ALL_GPIO_CTLR), ZARD_IDX_IF_MATCH, (), n)
25+
26+
#define ZARD_GET_NGPIOS(i, ...) DT_PROP(GET_ARG_N(UTIL_INC(i), __VA_ARGS__), ngpios)
27+
#define ZARD_SUM_NGPIOS(...) LISTIFY(NUM_VA_ARGS(__VA_ARGS__), ZARD_GET_NGPIOS, (+), __VA_ARGS__)
28+
29+
#define ZARD_GLOBAL_GPIO_OFFSET_(ph) \
30+
ZARD_SUM_NGPIOS(GET_ARGS_FIRST_N(ZARD_MATCH_IDX(ph), ZARD_ALL_GPIO_CTLR))
31+
32+
#define ZARD_GLOBAL_GPIO_OFFSET(ph) \
33+
COND_CODE_1(IS_EQ(NUM_VA_ARGS(ZARD_GLOBAL_GPIO_OFFSET_(ph)), 0), \
34+
(0), (ZARD_GLOBAL_GPIO_OFFSET_(ph)))
35+
36+
#define ZARD_CONNECTOR_PIN_IS_DIGITAL(node, num) \
37+
UTIL_CAT(UTIL_CAT(ZARD_, \
38+
UTIL_CAT(DT_STRING_UPPER_TOKEN_BY_IDX(node, compatible, 0), _IS_DIGITAL_)), \
39+
num)
40+
41+
#define ZARD_CONNECTOR_PIN_IS_ANALOG(node, num) \
42+
UTIL_CAT( \
43+
UTIL_CAT(ZARD_, UTIL_CAT(DT_STRING_UPPER_TOKEN_BY_IDX(node, compatible, 0), _IS_ANALOG_)), \
44+
num)
45+
46+
#define ZARD_CONNECTOR_PIN_NAME_D(node, num) \
47+
UTIL_CAT(UTIL_CAT(ZARD_, \
48+
UTIL_CAT(DT_STRING_UPPER_TOKEN_BY_IDX(node, compatible, 0), _PIN_NAME_D_)), \
49+
num)
50+
51+
#define ZARD_CONNECTOR_PIN_NAME_A(node, num) \
52+
UTIL_CAT(UTIL_CAT(ZARD_, \
53+
UTIL_CAT(DT_STRING_UPPER_TOKEN_BY_IDX(node, compatible, 0), _PIN_NAME_A_)), \
54+
num)
55+
56+
#define ZARD_CONN_DN_ENUMS(n, p, i) \
57+
COND_CODE_1(ZARD_CONNECTOR_PIN_IS_DIGITAL(DT_NODELABEL(ZARD_CONNECTOR), \
58+
DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(n, p, i, 0)), \
59+
(ZARD_CONNECTOR_PIN_NAME_D(DT_NODELABEL(ZARD_CONNECTOR), \
60+
DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(n, p, i, 0)) = \
61+
ZARD_GLOBAL_GPIO_OFFSET(DT_MAP_ENTRY_PARENT_BY_IDX(n, p, i)) + \
62+
DT_MAP_ENTRY_PARENT_SPECIFIER_BY_IDX(n, p, i, 0),), ())
63+
64+
#define ZARD_CONN_AN_ENUMS(n, p, i) \
65+
COND_CODE_1(ZARD_CONNECTOR_PIN_IS_ANALOG(DT_NODELABEL(ZARD_CONNECTOR), \
66+
DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(n, p, i, 0)), \
67+
(ZARD_CONNECTOR_PIN_NAME_A(DT_NODELABEL(ZARD_CONNECTOR), \
68+
DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(n, p, i, 0)) = \
69+
ZARD_GLOBAL_GPIO_OFFSET(DT_MAP_ENTRY_PARENT_BY_IDX(n, p, i)) + \
70+
DT_MAP_ENTRY_PARENT_SPECIFIER_BY_IDX(n, p, i, 0),), ())

cores/arduino/wiring_digital.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,24 @@ void pinMode(pin_size_t pinNumber, PinMode pinMode) {
2121

2222
_reinit_peripheral_if_needed(pinNumber, NULL);
2323
if (pinMode == INPUT) { // input mode
24-
gpio_pin_configure_dt(&arduino_pins[pinNumber], GPIO_INPUT | GPIO_ACTIVE_HIGH);
24+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_ACTIVE_HIGH);
2525
} else if (pinMode == INPUT_PULLUP) { // input with internal pull-up
26-
gpio_pin_configure_dt(&arduino_pins[pinNumber],
27-
GPIO_INPUT | GPIO_PULL_UP | GPIO_ACTIVE_HIGH);
26+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_PULL_UP | GPIO_ACTIVE_HIGH);
2827
} else if (pinMode == INPUT_PULLDOWN) { // input with internal pull-down
29-
gpio_pin_configure_dt(&arduino_pins[pinNumber],
30-
GPIO_INPUT | GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH);
28+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH);
3129
} else if (pinMode == OUTPUT) { // output mode
32-
gpio_pin_configure_dt(&arduino_pins[pinNumber], GPIO_OUTPUT_LOW | GPIO_ACTIVE_HIGH);
30+
global_gpio_pin_configure(pinNumber, GPIO_OUTPUT_LOW | GPIO_ACTIVE_HIGH);
3331
}
3432
}
3533

3634
void digitalWrite(pin_size_t pinNumber, PinStatus status) {
3735
RETURN_ON_INVALID_PIN(pinNumber);
3836

39-
gpio_pin_set_dt(&arduino_pins[pinNumber], status);
37+
gpio_pin_set(local_gpio_port(pinNumber), local_gpio_pin(pinNumber), status);
4038
}
4139

4240
PinStatus digitalRead(pin_size_t pinNumber) {
4341
RETURN_ON_INVALID_PIN(pinNumber, LOW);
4442

45-
return (gpio_pin_get_dt(&arduino_pins[pinNumber]) == 1) ? HIGH : LOW;
43+
return (gpio_pin_get(local_gpio_port(pinNumber), local_gpio_pin(pinNumber)) == 1) ? HIGH : LOW;
4644
}

0 commit comments

Comments
 (0)