@@ -242,8 +242,15 @@ void handleGpioCallback(const struct device *port, struct gpio_callback *cb, uin
242242 ())
243243
244244const struct pwm_dt_spec arduino_pwm[] = {
245+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), pwm_pin_gpios)
246+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
245247#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), pwms)
246248 DT_FOREACH_PROP_ELEM (DT_PATH (zephyr_user), pwms, PWM_DT_SPEC)
249+ #endif
250+ #else // global pin rule
251+ // TODO
252+ #endif
253+ #endif
247254#elif defined(ZARD_PWM_CONNECTOR)
248255 DT_FOREACH_MAP_ENTRY (DT_NODELABEL (ZARD_PWM_CONNECTOR), pwm_map, PWM_CONN_CHANNEL_DT)
249256#endif
@@ -258,6 +265,8 @@ const pin_size_t arduino_pwm_pins[] = {
258265#endif
259266};
260267
268+ BUILD_ASSERT (ARRAY_SIZE(arduino_pwm) == ARRAY_SIZE(arduino_pwm_pins));
269+
261270size_t pwm_pin_index (pin_size_t pinNumber) {
262271 for (size_t i=0 ; i<ARRAY_SIZE (arduino_pwm_pins); i++) {
263272 if (arduino_pwm_pins[i] == pinNumber) {
@@ -294,7 +303,13 @@ size_t pwm_pin_index(pin_size_t pinNumber) {
294303
295304const struct adc_dt_spec arduino_adc[] = {
296305#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), adc_pin_gpios)
306+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
307+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), io_channels)
297308 DT_FOREACH_PROP_ELEM (DT_PATH (zephyr_user), io_channels, ADC_DT_SPEC)
309+ #endif
310+ #else // global pin rule
311+ // TODO
312+ #endif
298313#elif defined(ZARD_ADC_CONNECTOR)
299314 DT_FOREACH_MAP_ENTRY (DT_NODELABEL (ZARD_ADC_CONNECTOR), io_channel_map, ADC_CONN_CHANNEL_DT)
300315#endif
@@ -311,12 +326,19 @@ const pin_size_t arduino_analog_pins[] = {
311326
312327struct adc_channel_cfg channel_cfg[ARRAY_SIZE(arduino_analog_pins)] = {
313328#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), adc_pin_gpios)
329+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), digital_pin_gpios)
330+ #if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), io_channels)
314331 DT_FOREACH_PROP_ELEM (DT_PATH (zephyr_user), io_channels, ADC_CH_CFG)
332+ #endif
333+ #else // global pin rule
334+ // TODO
315335#elif defined(ZARD_ADC_CONNECTOR)
316336 DT_FOREACH_MAP_ENTRY (DT_NODELABEL (ZARD_ADC_CONNECTOR), io_channel_map, ADC_CONN_CHANNEL_CFG)
317337#endif
318338};
319339
340+ BUILD_ASSERT (ARRAY_SIZE (arduino_adc) == ARRAY_SIZE (arduino_analog_pins));
341+
320342size_t analog_pin_index (pin_size_t pinNumber) {
321343 for (size_t i=0 ; i<ARRAY_SIZE (arduino_analog_pins); i++) {
322344 if (arduino_analog_pins[i] == pinNumber) {
0 commit comments