diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp index ee68b238..ab7aaf7a 100644 --- a/cores/arduino/main.cpp +++ b/cores/arduino/main.cpp @@ -13,11 +13,20 @@ void start_static_threads(); #endif + +// This function will be overwriten by most variants. +void __attribute__((weak))initVariant(void) { + +} + + int main(void) { #if (DT_NODE_HAS_PROP(DT_PATH(zephyr_user), cdc_acm) && CONFIG_USB_CDC_ACM) Serial.begin(115200); #endif + initVariant(); + #ifdef CONFIG_MULTITHREADING start_static_threads(); #endif diff --git a/loader/boards/arduino_nano_33_ble_sense.overlay b/loader/boards/arduino_nano_33_ble_sense.overlay index 34053352..c491cd6b 100644 --- a/loader/boards/arduino_nano_33_ble_sense.overlay +++ b/loader/boards/arduino_nano_33_ble_sense.overlay @@ -45,6 +45,8 @@ / { zephyr,user { + pin-enable-gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>; + digital-pin-gpios = <&arduino_nano_header 0 0>, <&arduino_nano_header 1 0>, <&arduino_nano_header 2 0>, diff --git a/variants/arduino_nano_33_ble_sense/variant.cpp b/variants/arduino_nano_33_ble_sense/variant.cpp index c702d453..de0de2f7 100644 --- a/variants/arduino_nano_33_ble_sense/variant.cpp +++ b/variants/arduino_nano_33_ble_sense/variant.cpp @@ -1,6 +1,23 @@ +#include "Arduino.h" #include +#include void _on_1200_bps() { nrf_power_gpregret_set(NRF_POWER, 0, 0xb0); NVIC_SystemReset(); -} \ No newline at end of file +} + +void initVariant(void) { + static const struct gpio_dt_spec enable_sensors = + GPIO_DT_SPEC_GET(DT_PATH(zephyr_user), pin_enable_gpios); + if (gpio_is_ready_dt(&enable_sensors)) { + gpio_flags_t flags = enable_sensors.dt_flags | GPIO_OUTPUT_HIGH | GPIO_ACTIVE_HIGH | NRF_GPIO_DRIVE_H0H1; + Serial.println((uint32_t)flags, HEX); + + gpio_pin_configure(enable_sensors.port, enable_sensors.pin, flags); + gpio_pin_set(enable_sensors.port, enable_sensors.pin, HIGH); + //Serial.println("### Sensor pin enabled ###"); + + delay(500); + } +}