Skip to content

Commit b5dedeb

Browse files
committed
clean
1 parent 457c732 commit b5dedeb

File tree

1 file changed

+52
-41
lines changed

1 file changed

+52
-41
lines changed

cores/arduino/zephyrCommon.cpp

Lines changed: 52 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <Arduino.h>
88
#include "zephyrInternal.h"
99

10-
1110
namespace {
1211

1312
struct device gpio0;
@@ -17,41 +16,55 @@ static constexpr struct device *gpios[] = {&gpio0, &gpio1};
1716
static constexpr uint32_t pins[] = {16u, 32u}; // exclusive-upper
1817
static constexpr size_t NUM_PORTS = sizeof(gpios) / sizeof(gpios[0]);
1918

20-
21-
/* グローバル → gpio* を探す */
22-
constexpr const struct device * local_gpio_port_recursive(pin_size_t pin, const struct device *const *ctrl,
23-
const uint32_t *end, size_t n) {
24-
return (n == 0) ? nullptr
25-
: (pin < end[0]) ? ctrl[0]
26-
: local_gpio_port_recursive(pin, ctrl + 1, end + 1, n - 1);
19+
static constexpr inline const struct device *local_gpio_port_recursive(pin_size_t pin,
20+
const struct device *const *ctrl,
21+
const uint32_t *end, size_t n)
22+
{
23+
return (n == 0) ? nullptr
24+
: (pin < end[0]) ? ctrl[0]
25+
: local_gpio_port_recursive(pin, ctrl + 1, end + 1, n - 1);
2726
}
2827

29-
constexpr const struct device *local_gpio_port(pin_size_t gpin) {
30-
return local_gpio_port_recursive(gpin, gpios, pins, NUM_PORTS);
28+
29+
static constexpr inline pin_size_t port_index_recursive(const struct device *target,
30+
const struct device *const *table, pin_size_t idx,
31+
size_t n)
32+
{
33+
return (n == 0) ? size_t(-1)
34+
: (target == table[0]) ? idx
35+
: port_index_recursive(target, table + 1, idx + 1, n - 1);
3136
}
3237

33-
/* ポートインデックスを取得(見つからなければ size_t(-1)) */
34-
constexpr pin_size_t port_index_recursive(const struct device *target,
35-
const struct device *const *table,
36-
pin_size_t idx, size_t n) {
37-
return (n == 0) ? size_t(-1)
38-
: (target == table[0])
39-
? idx
40-
: port_index_recursive(target, table + 1, idx + 1, n - 1);
38+
static constexpr inline const struct device *local_gpio_port(pin_size_t gpin)
39+
{
40+
return local_gpio_port_recursive(gpin, gpios, pins, NUM_PORTS);
4141
}
4242

43-
constexpr pin_size_t local_gpio_pin(pin_size_t gpin) {
43+
static constexpr inline pin_size_t local_gpio_pin(pin_size_t gpin)
44+
{
4445
return gpin - pins[port_index_recursive(local_gpio_port(gpin), gpios, 0, NUM_PORTS)];
4546
}
4647

47-
constexpr pin_size_t global_gpio_pin(const struct device *lport, pin_size_t lpin) noexcept {
48+
static constexpr inline pin_size_t global_gpio_pin(const struct device *lport, pin_size_t lpin) noexcept
49+
{
4850
return pins[port_index_recursive(lport, gpios, 0, NUM_PORTS)] + lpin;
4951
}
5052

51-
constexpr uint32_t local_gpio_dt_flags(int) {
53+
static constexpr inline uint32_t local_gpio_dt_flags(int)
54+
{
5255
return 0;
5356
}
5457

58+
static inline int global_gpio_pin_get(pin_size_t pinNumber)
59+
{
60+
return gpio_pin_get(local_gpio_port(pinNumber), local_gpio_pin(pinNumber));
61+
}
62+
63+
static inline int global_gpio_pin_configure(pin_size_t pinNumber, int flags)
64+
{
65+
return gpio_pin_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber), flags);
66+
}
67+
5568
template <class N, class Head> constexpr const N max_in_list(const N max, const Head &head)
5669
{
5770
return (max >= head) ? max : head;
@@ -185,14 +198,16 @@ struct pin_timer {
185198
struct pin_timer arduino_pin_timers[GPIO_PORT_NUMS];
186199
struct pin_timer arduino_pin_timers_timeout[GPIO_PORT_NUMS];
187200

188-
void tone_expiry_cb(struct k_timer *timer) {
189-
struct pin_timer* pt = (struct pin_timer*)k_timer_user_data_get(timer);
190-
gpio_pin_toggle_dt(&pt->spec);
201+
void tone_expiry_cb(struct k_timer *timer)
202+
{
203+
struct pin_timer *pt = (struct pin_timer *)k_timer_user_data_get(timer);
204+
gpio_pin_toggle_dt(&pt->spec);
191205
}
192206

193-
void tone_timeout_cb(struct k_timer *timer) {
194-
struct pin_timer* pt = (struct pin_timer*)k_timer_user_data_get(timer);
195-
noTone(global_gpio_pin(pt->spec.port, pt->spec.pin));
207+
void tone_timeout_cb(struct k_timer *timer)
208+
{
209+
struct pin_timer *pt = (struct pin_timer *)k_timer_user_data_get(timer);
210+
noTone(global_gpio_pin(pt->spec.port, pt->spec.pin));
196211
}
197212

198213
} // namespace
@@ -208,17 +223,13 @@ void yield(void) {
208223
*/
209224
void pinMode(pin_size_t pinNumber, PinMode pinMode) {
210225
if (pinMode == INPUT) { // input mode
211-
gpio_pin_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber),
212-
GPIO_INPUT | GPIO_ACTIVE_HIGH);
226+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_ACTIVE_HIGH);
213227
} else if (pinMode == INPUT_PULLUP) { // input with internal pull-up
214-
gpio_pin_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber),
215-
GPIO_INPUT | GPIO_PULL_UP | GPIO_ACTIVE_HIGH);
228+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_PULL_UP | GPIO_ACTIVE_HIGH);
216229
} else if (pinMode == INPUT_PULLDOWN) { // input with internal pull-down
217-
gpio_pin_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber),
218-
GPIO_INPUT | GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH);
230+
global_gpio_pin_configure(pinNumber, GPIO_INPUT | GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH);
219231
} else if (pinMode == OUTPUT) { // output mode
220-
gpio_pin_configure(local_gpio_port(pinNumber), local_gpio_pin(pinNumber),
221-
GPIO_OUTPUT_LOW | GPIO_ACTIVE_HIGH);
232+
global_gpio_pin_configure(pinNumber, GPIO_OUTPUT_LOW | GPIO_ACTIVE_HIGH);
222233
}
223234
}
224235

@@ -236,7 +247,7 @@ void tone(pin_size_t pinNumber, unsigned int frequency, unsigned long duration)
236247
k_timeout_t timeout;
237248

238249
arduino_pin_timers[pinNumber].spec.port = local_gpio_port(pinNumber);
239-
arduino_pin_timers[pinNumber].spec.pin = local_gpio_pin(pinNumber);
250+
arduino_pin_timers[pinNumber].spec.pin = local_gpio_pin(pinNumber);
240251
arduino_pin_timers[pinNumber].spec.dt_flags = local_gpio_dt_flags(pinNumber);
241252

242253
pinMode(pinNumber, OUTPUT);
@@ -253,10 +264,10 @@ void tone(pin_size_t pinNumber, unsigned int frequency, unsigned long duration)
253264
gpio_pin_set_dt(&arduino_pin_timers[pinNumber].spec, 1);
254265
k_timer_start(timer, timeout, timeout);
255266

256-
if(duration > 0) {
267+
if (duration > 0) {
257268
timer = &arduino_pin_timers_timeout[pinNumber].timer;
258269
arduino_pin_timers_timeout[pinNumber].spec.port = local_gpio_port(pinNumber);
259-
arduino_pin_timers_timeout[pinNumber].spec.pin = local_gpio_pin(pinNumber);
270+
arduino_pin_timers_timeout[pinNumber].spec.pin = local_gpio_pin(pinNumber);
260271
arduino_pin_timers_timeout[pinNumber].spec.dt_flags = local_gpio_dt_flags(pinNumber);
261272
k_timer_init(timer, tone_timeout_cb, NULL);
262273
k_timer_user_data_set(timer, &arduino_pin_timers_timeout[pinNumber]);
@@ -436,18 +447,18 @@ unsigned long pulseIn(pin_size_t pinNumber, uint8_t state, unsigned long timeout
436447
goto cleanup;
437448
}
438449

439-
while(gpio_pin_get(local_gpio_port(pinNumber), local_gpio_pin(pinNumber)) == state && k_timer_status_get(&timer) == 0);
450+
while (global_gpio_pin_get(pinNumber) == state && k_timer_status_get(&timer) == 0);
440451
if (k_timer_status_get(&timer) > 0) {
441452
goto cleanup;
442453
}
443454

444-
while(gpio_pin_get(local_gpio_port(pinNumber), local_gpio_pin(pinNumber)) != state && k_timer_status_get(&timer) == 0);
455+
while (global_gpio_pin_get(pinNumber) != state && k_timer_status_get(&timer) == 0);
445456
if (k_timer_status_get(&timer) > 0) {
446457
goto cleanup;
447458
}
448459

449460
start = k_uptime_ticks();
450-
while(gpio_pin_get(local_gpio_port(pinNumber), local_gpio_pin(pinNumber)) == state && k_timer_status_get(&timer) == 0);
461+
while (global_gpio_pin_get(pinNumber) == state && k_timer_status_get(&timer) == 0);
451462
if (k_timer_status_get(&timer) > 0) {
452463
goto cleanup;
453464
}

0 commit comments

Comments
 (0)