diff --git a/tests/drivers/gpio-async/src/lib.rs b/tests/drivers/gpio-async/src/lib.rs index ebccc5ff..79003e8c 100644 --- a/tests/drivers/gpio-async/src/lib.rs +++ b/tests/drivers/gpio-async/src/lib.rs @@ -9,7 +9,7 @@ use embassy_time::{Duration, Ticker}; use zephyr::{ device::gpio::{GpioPin, GpioToken}, embassy::Executor, - raw::{GPIO_INPUT, GPIO_OUTPUT_ACTIVE, GPIO_PULL_DOWN}, + raw::{GPIO_PULL_DOWN, ZR_GPIO_INPUT, ZR_GPIO_OUTPUT_ACTIVE}, }; use embassy_executor::Spawner; @@ -40,9 +40,9 @@ async fn main(spawner: Spawner) { let mut gpio_token = unsafe { zephyr::device::gpio::GpioToken::get_instance().unwrap() }; unsafe { - col0.configure(&mut gpio_token, GPIO_OUTPUT_ACTIVE); + col0.configure(&mut gpio_token, ZR_GPIO_OUTPUT_ACTIVE); col0.set(&mut gpio_token, true); - row0.configure(&mut gpio_token, GPIO_INPUT | GPIO_PULL_DOWN); + row0.configure(&mut gpio_token, ZR_GPIO_INPUT | GPIO_PULL_DOWN); } loop { diff --git a/zephyr-sys/wrapper.h b/zephyr-sys/wrapper.h index 69bab654..577ce08c 100644 --- a/zephyr-sys/wrapper.h +++ b/zephyr-sys/wrapper.h @@ -63,6 +63,26 @@ const uint32_t ZR_GPIO_INT_MODE_DISABLE_ONLY = GPIO_INT_MODE_DISABLE_ONLY; const uint32_t ZR_GPIO_INT_MODE_ENABLE_ONLY = GPIO_INT_MODE_ENABLE_ONLY; #endif +#define ZR_GPIO(name) \ + const uint32_t ZR_ ## name = name + +ZR_GPIO(GPIO_INPUT); +ZR_GPIO(GPIO_OUTPUT); +ZR_GPIO(GPIO_OUTPUT_INIT_LOW); +ZR_GPIO(GPIO_OUTPUT_INIT_HIGH); +ZR_GPIO(GPIO_OUTPUT_INIT_LOGICAL); +ZR_GPIO(GPIO_INT_DISABLE); +ZR_GPIO(GPIO_INT_ENABLE); +ZR_GPIO(GPIO_INT_LEVELS_LOGICAL); +ZR_GPIO(GPIO_INT_EDGE); +ZR_GPIO(GPIO_INT_LOW_0); +ZR_GPIO(GPIO_INT_HIGH_1); +ZR_GPIO(GPIO_INT_LEVEL_HIGH); +ZR_GPIO(GPIO_INT_LEVEL_LOW); +ZR_GPIO(GPIO_OUTPUT_ACTIVE); + +#undef ZR_GPIO + /* * Zephyr's irq_lock() and irq_unlock() are macros not inline functions, so we need some inlines to * access them. diff --git a/zephyr/src/device/gpio.rs b/zephyr/src/device/gpio.rs index f0e52c8a..6aa53172 100644 --- a/zephyr/src/device/gpio.rs +++ b/zephyr/src/device/gpio.rs @@ -31,8 +31,8 @@ mod async_io { use embassy_sync::waitqueue::AtomicWaker; use zephyr_sys::{ device, gpio_add_callback, gpio_callback, gpio_init_callback, gpio_pin_interrupt_configure, - gpio_pin_interrupt_configure_dt, gpio_port_pins_t, GPIO_INT_LEVEL_HIGH, GPIO_INT_LEVEL_LOW, - ZR_GPIO_INT_MODE_DISABLE_ONLY, + gpio_pin_interrupt_configure_dt, gpio_port_pins_t, ZR_GPIO_INT_LEVEL_HIGH, + ZR_GPIO_INT_LEVEL_LOW, ZR_GPIO_INT_MODE_DISABLE_ONLY, }; use crate::sync::atomic::{AtomicBool, AtomicU32}; @@ -212,8 +212,8 @@ mod async_io { self.pin.data.register(self.pin.pin.pin, cx.waker()); let mode = match self.level { - 0 => GPIO_INT_LEVEL_LOW, - 1 => GPIO_INT_LEVEL_HIGH, + 0 => ZR_GPIO_INT_LEVEL_LOW, + 1 => ZR_GPIO_INT_LEVEL_HIGH, _ => unreachable!(), };