Skip to content

Commit b72846f

Browse files
soburiDhruvaG2000
authored andcommitted
variants: remove intermediate variants.h
* Move common part of variants/variants.h to core arduino/Arduino.h and remove variants/variants.h. * Rename ..._pinmap.h to variants.h. * Remove no needed includes. Signed-off-by: TOKITA Hiroshi <[email protected]>
1 parent 7eef9b6 commit b72846f

File tree

16 files changed

+116
-188
lines changed

16 files changed

+116
-188
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
if (CONFIG_ARDUINO_API)
44
add_subdirectory(cores)
5-
add_subdirectory(variants)
65
add_subdirectory(libraries)
6+
zephyr_include_directories(variants/${BOARD})
77
endif()
88

cores/arduino/Arduino.h

+90-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,101 @@
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

7+
#pragma once
8+
79
#include "api/ArduinoAPI.h"
810

11+
#include <zephyr/kernel.h>
912
#include <zephyr/drivers/gpio.h>
1013
#include <zephyr/drivers/pwm.h>
1114
#include <zephyr/drivers/adc.h>
12-
#include <zephyr/kernel.h>
15+
#include <zephyr/drivers/i2c.h>
16+
17+
#define DIGITAL_PIN_EXISTS(n, p, i, dev, num) \
18+
(((dev == DT_REG_ADDR(DT_PHANDLE_BY_IDX(n, p, i))) && \
19+
(num == DT_PHA_BY_IDX(n, p, i, pin))) \
20+
? 1 \
21+
: 0)
22+
23+
/* Check all pins are defined only once */
24+
#define DIGITAL_PIN_CHECK_UNIQUE(i, _) \
25+
((DT_FOREACH_PROP_ELEM_SEP_VARGS( \
26+
DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \
27+
DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), digital_pin_gpios, i)), \
28+
DT_PHA_BY_IDX(DT_PATH(zephyr_user), digital_pin_gpios, i, pin))) == 1)
29+
30+
#if !LISTIFY(DT_PROP_LEN(DT_PATH(zephyr_user), digital_pin_gpios), DIGITAL_PIN_CHECK_UNIQUE, (&&))
31+
#error "digital_pin_gpios has duplicate definition"
32+
#endif
33+
34+
#undef DIGITAL_PIN_CHECK_UNIQUE
35+
36+
#ifndef LED_BUILTIN
37+
38+
/* Return the index of it if matched, oterwise return 0 */
39+
#define LED_BUILTIN_INDEX_BY_REG_AND_PINNUM(n, p, i, dev, num) \
40+
(DIGITAL_PIN_EXISTS(n, p, i, dev, num) ? i : 0)
41+
42+
/* Only matched pin returns non-zero value, so the sum is matched pin's index */
43+
#define DIGITAL_PIN_GPIOS_FIND_PIN(dev, pin) \
44+
DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, \
45+
LED_BUILTIN_INDEX_BY_REG_AND_PINNUM, (+), dev, pin)
46+
47+
#if DT_NODE_HAS_PROP(DT_PATH(zephyr_user), builtin_led_gpios) && \
48+
(DT_PROP_LEN(DT_PATH(zephyr_user), builtin_led_gpios) > 0)
49+
50+
#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS( \
51+
DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, (+), \
52+
DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \
53+
DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin)) > 0)
54+
#warning "pin not found in digital_pin_gpios"
55+
#else
56+
#define LED_BUILTIN \
57+
DIGITAL_PIN_GPIOS_FIND_PIN( \
58+
DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0)), \
59+
DT_PHA_BY_IDX(DT_PATH(zephyr_user), builtin_led_gpios, 0, pin))
60+
#endif
61+
62+
/* If digital-pin-gpios is not defined, tries to use the led0 alias */
63+
#elif DT_NODE_EXISTS(DT_ALIAS(led0))
64+
65+
#if !(DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_PATH(zephyr_user), digital_pin_gpios, DIGITAL_PIN_EXISTS, \
66+
(+), DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \
67+
DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin)) > 0)
68+
#warning "pin not found in digital_pin_gpios"
69+
#else
70+
#define LED_BUILTIN \
71+
DIGITAL_PIN_GPIOS_FIND_PIN(DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_ALIAS(led0), gpios, 0)), \
72+
DT_PHA_BY_IDX(DT_ALIAS(led0), gpios, 0, pin))
73+
#endif
74+
75+
#endif // builtin_led_gpios
76+
77+
#endif // LED_BUILTIN
78+
79+
#define DN_ENUMS(n, p, i) D##i = i
80+
81+
/*
82+
* expand as
83+
* enum digitalPins { D0, D1, ... LED... NUM_OF_DIGITAL_PINS };
84+
*/
85+
enum digitalPins {
86+
DT_FOREACH_PROP_ELEM_SEP(DT_PATH(zephyr_user), digital_pin_gpios, DN_ENUMS, (, )),
87+
NUM_OF_DIGITAL_PINS
88+
};
89+
90+
const struct gpio_dt_spec arduino_pins[] = {DT_FOREACH_PROP_ELEM_SEP(
91+
DT_PATH(zephyr_user), digital_pin_gpios, GPIO_DT_SPEC_GET_BY_IDX, (, ))};
92+
93+
#ifdef CONFIG_ADC
94+
95+
#define AN_ENUMS(n, p, i) A ## i = DIGITAL_PIN_GPIOS_FIND_PIN( \
96+
DT_REG_ADDR(DT_PHANDLE_BY_IDX(DT_PATH(zephyr_user), p, i)), \
97+
DT_PHA_BY_IDX(DT_PATH(zephyr_user), p, i, pin)),
98+
enum analogPins { DT_FOREACH_PROP_ELEM(DT_PATH(zephyr_user),
99+
adc_pin_gpios, AN_ENUMS) };
100+
101+
#endif
13102

14103
#include <variants.h>
15104
#include <zephyrPrint.h>

variants/CMakeLists.txt

-3
This file was deleted.

variants/arduino_mkrzero/arduino_mkrzero_pinmap.h

-11
This file was deleted.

variants/arduino_mkrzero/variants.h

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/*
2+
* Copyright (c) 2022 Dhruva Gole
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/

variants/arduino_nano_33_ble/arduino_nano_33_ble_pinmap.h

-13
This file was deleted.
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/*
2+
* Copyright (c) 2022 Dhruva Gole
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/

variants/arduino_nano_33_ble_sense/arduino_nano_33_ble_sense_pinmap.h

-13
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/*
2+
* Copyright (c) 2022 Dhruva Gole
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/

variants/arduino_nano_33_iot/arduino_nano_33_iot_pinmap.h

-13
This file was deleted.
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/*
2+
* Copyright (c) 2022 Dhruva Gole
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/

variants/cc3220sf_launchxl/cc3220sf_launchxl_pinmap.h renamed to variants/cc3220sf_launchxl/variants.h

-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66

77
/* All the pins that are 100 + x are gpio1 pins and < 100 are in gpio0 */
88
#pragma once
9-
#include <zephyr/drivers/gpio.h>
10-
#include <zephyr/kernel.h>
11-
#include <zephyr/drivers/i2c.h>
12-
#include <zephyr/device.h>
139

1410
#define LED_BUILTIN 4
1511
#define YELLOW_LED 3

variants/nrf52840dk_nrf52840/nrf52840dk_nrf52840_pinmap.h

-14
This file was deleted.
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/*
2+
* Copyright (c) 2022 Mike Szczys
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/

variants/nrf9160dk_nrf9160/nrf9160dk_nrf9160_pinmap.h renamed to variants/nrf9160dk_nrf9160/variants.h

-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@
77
#ifndef INCLUDE_NRF1960DK_NRF1960_PINMAP_H
88
#define INCLUDE_NRF1960DK_NRF1960_PINMAP_H
99

10-
#include <zephyr/drivers/gpio.h>
11-
#include <zephyr/drivers/i2c.h>
12-
#include <zephyr/kernel.h>
13-
1410
#define NRF9160DK_LED_1 D2 // P0.02
1511
#define NRF9160DK_LED_2 D3 // P0.03
1612
#define NRF9160DK_LED_3 D4 // P0.04

variants/variants.h

-111
This file was deleted.

0 commit comments

Comments
 (0)