Skip to content

Commit f4930d1

Browse files
committed
refine
1 parent 211d5dc commit f4930d1

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

cores/arduino/zephyrCommon.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,3 +487,59 @@ int digitalPinToInterrupt(pin_size_t pin) {
487487

488488
return (pcb) ? pin : -1;
489489
}
490+
491+
int xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
492+
493+
struct gpio_port_num {
494+
const struct device *port;
495+
uint16_t pin;
496+
};
497+
498+
#include <zephyr/sys/util_macro.h>
499+
500+
#define ALPHA_0 a
501+
#define ALPHA_1 b
502+
#define ALPHA_2 c
503+
#define ALPHA_3 d
504+
#define ALPHA_4 e
505+
#define ALPHA_5 f
506+
#define ALPHA_6 g
507+
#define ALPHA_7 h
508+
#define ALPHA_8 i
509+
#define ALPHA_9 j
510+
#define ALPHA_10 k
511+
#define ALPHA_11 l
512+
#define ALPHA_12 m
513+
#define ALPHA_13 n
514+
#define ALPHA_14 o
515+
#define ALPHA_15 p
516+
#define PORT_ALPHA_N(n) UTIL_CAT(port, UTIL_CAT(ALPHA_, n))
517+
518+
#define NODES(i, label_from_n) \
519+
COND_CODE_1(DT_NODE_EXISTS(DT_NODELABEL(label_from_n(i))), (DT_NODELABEL(label_from_n(i)),), ())
520+
521+
#define DO_DROP_TAIL(N, ...) GET_ARGS_FIRST_N(N, __VA_ARGS__)
522+
#define DROP_TAIL(...) DO_DROP_TAIL(UTIL_DEC(NUM_VA_ARGS(__VA_ARGS__)), __VA_ARGS__)
523+
524+
#define DO_GET_ARGS_FIRST_N(N, ...) GET_ARGS_FIRST_N(N, __VA_ARGS__)
525+
#define EXPAND_ARGS(...) UTIL_EXPAND __VA_ARGS__
526+
527+
#define NGPIOS(x) DT_PROP(x, ngpios)
528+
#define ADDX(...) LISTIFY(NUM_VA_ARGS(__VA_ARGS__), NGPIOS, (+), __VA_ARGS__)
529+
530+
#define FX(i, x, arg) {DEVICE_DT_GET(x), ADDX(EXPAND_ARGS(arg))}
531+
#define XXX(...) { FOR_EACH_IDX_FIXED_ARG(FX, (,), (__VA_ARGS__), __VA_ARGS__) }
532+
533+
#define LIST_PORT_ALPHA(n) LISTIFY(n, NODES, (), PORT_ALPHA_N) 0
534+
535+
constexpr struct gpio_port_num portx[] = XXX(DROP_TAIL(LIST_PORT_ALPHA(16)));
536+
537+
#define FFF(i, x, fa) i, DO_GET_ARGS_FIRST_N(UTIL_INC(i), EXPAND_ARGS(fa)),,
538+
FOR_EACH_IDX_FIXED_ARG(FFF, (,), (a, b, c, d), 1, 2, 3, 4)
539+
540+
//#if NUM_VA_ARGS(LISTIFY(16, PORT_ALPHA_NODES, ()) 0) != 1
541+
int hoge;
542+
//#endif
543+
544+
545+

0 commit comments

Comments
 (0)