@@ -487,3 +487,59 @@ int digitalPinToInterrupt(pin_size_t pin) {
487
487
488
488
return (pcb) ? pin : -1 ;
489
489
}
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