aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-06-07 00:10:54 +0200
committerDario Nieuwenhuis <[email protected]>2021-06-07 00:16:39 +0200
commite7dc5c0939d30ccba98418c42799c4e39f646d23 (patch)
tree896ebf078e97f15443dd85342f498231e142f975
parent4dda7be96841430c3aed2f014644b0b65cff0ef2 (diff)
fmt: make all macros `macro_rules` so scoping is consistent.
-rw-r--r--embassy-extras/src/fmt.rs191
-rw-r--r--embassy-extras/src/ring_buffer.rs2
-rw-r--r--embassy-net/src/config/dhcp.rs1
-rw-r--r--embassy-net/src/config/mod.rs1
-rw-r--r--embassy-net/src/config/statik.rs1
-rw-r--r--embassy-net/src/device.rs1
-rw-r--r--embassy-net/src/fmt.rs195
-rw-r--r--embassy-net/src/stack.rs1
-rw-r--r--embassy-net/src/tcp_socket.rs1
-rw-r--r--embassy-nrf/src/buffered_uarte.rs1
-rw-r--r--embassy-nrf/src/fmt.rs191
-rw-r--r--embassy-nrf/src/pwm.rs1
-rw-r--r--embassy-nrf/src/qspi.rs1
-rw-r--r--embassy-nrf/src/spim.rs2
-rw-r--r--embassy-nrf/src/twim.rs2
-rw-r--r--embassy-nrf/src/uarte.rs1
-rw-r--r--embassy-rp/src/dma.rs1
-rw-r--r--embassy-rp/src/fmt.rs195
-rw-r--r--embassy-rp/src/pll.rs1
-rw-r--r--embassy-stm32/src/dac/v2.rs1
-rw-r--r--embassy-stm32/src/dma/v2.rs1
-rw-r--r--embassy-stm32/src/fmt.rs191
-rw-r--r--embassy-stm32/src/rcc/h7/mod.rs1
-rw-r--r--embassy-stm32/src/rcc/h7/pll.rs1
-rw-r--r--embassy-stm32/src/sdmmc/v2.rs7
-rw-r--r--embassy/src/executor/mod.rs1
-rw-r--r--embassy/src/executor/waker.rs4
-rw-r--r--embassy/src/fmt.rs191
-rw-r--r--embassy/src/time/mod.rs2
-rw-r--r--embassy/src/util/drop_bomb.rs1
-rw-r--r--embassy/src/util/mutex.rs2
-rw-r--r--embassy/src/util/portal.rs1
-rw-r--r--embassy/src/util/signal.rs1
33 files changed, 884 insertions, 311 deletions
diff --git a/embassy-extras/src/fmt.rs b/embassy-extras/src/fmt.rs
index 160642ccd..6c5063f7c 100644
--- a/embassy-extras/src/fmt.rs
+++ b/embassy-extras/src/fmt.rs
@@ -1,67 +1,168 @@
1#![macro_use] 1#![macro_use]
2#![allow(clippy::module_inception)] 2#![allow(unused_macros)]
3#![allow(unused)]
4 3
5#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
6compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
7 6
8pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
9 17
10#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
11mod fmt { 19 ($($x:tt)*) => {
12 pub use defmt::{ 20 {
13 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
14 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
15 }; 26 };
16} 27}
17 28
18#[cfg(feature = "log")] 29macro_rules! assert_ne {
19mod fmt { 30 ($($x:tt)*) => {
20 pub use core::{ 31 {
21 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
22 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
23 }; 37 };
24 pub use log::{debug, error, info, trace, warn};
25} 38}
26 39
27#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
28mod fmt { 41 ($($x:tt)*) => {
29 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
30 50
31 pub use core::{ 51macro_rules! debug_assert_eq {
32 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
33 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
34 }; 59 };
60}
35 61
36 macro_rules! trace { 62macro_rules! debug_assert_ne {
37 ($($msg:expr),+ $(,)?) => { 63 ($($x:tt)*) => {
38 () 64 {
39 }; 65 #[cfg(not(feature = "defmt"))]
40 } 66 core::debug_assert_ne!($($x)*);
67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
41 72
42 macro_rules! debug { 73macro_rules! todo {
43 ($($msg:expr),+ $(,)?) => { 74 ($($x:tt)*) => {
44 () 75 {
45 }; 76 #[cfg(not(feature = "defmt"))]
46 } 77 core::todo!($($x)*);
78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 macro_rules! info { 84macro_rules! unreachable {
49 ($($msg:expr),+ $(,)?) => { 85 ($($x:tt)*) => {
50 () 86 {
51 }; 87 #[cfg(not(feature = "defmt"))]
52 } 88 core::unreachable!($($x)*);
89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
53 94
54 macro_rules! warn { 95macro_rules! panic {
55 ($($msg:expr),+ $(,)?) => { 96 ($($x:tt)*) => {
56 () 97 {
57 }; 98 #[cfg(not(feature = "defmt"))]
58 } 99 core::panic!($($x)*);
100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
59 105
60 macro_rules! error { 106macro_rules! trace {
61 ($($msg:expr),+ $(,)?) => { 107 ($($x:tt)*) => {
62 () 108 {
63 }; 109 #[cfg(feature = "log")]
64 } 110 log::trace!($($x)*);
111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
65} 166}
66 167
67#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
diff --git a/embassy-extras/src/ring_buffer.rs b/embassy-extras/src/ring_buffer.rs
index dafdd958a..18795787f 100644
--- a/embassy-extras/src/ring_buffer.rs
+++ b/embassy-extras/src/ring_buffer.rs
@@ -1,5 +1,3 @@
1use crate::fmt::assert;
2
3pub struct RingBuffer<'a> { 1pub struct RingBuffer<'a> {
4 buf: &'a mut [u8], 2 buf: &'a mut [u8],
5 start: usize, 3 start: usize,
diff --git a/embassy-net/src/config/dhcp.rs b/embassy-net/src/config/dhcp.rs
index f0c144321..8bbcd8176 100644
--- a/embassy-net/src/config/dhcp.rs
+++ b/embassy-net/src/config/dhcp.rs
@@ -4,7 +4,6 @@ use smoltcp::time::Instant;
4 4
5use super::*; 5use super::*;
6use crate::device::LinkState; 6use crate::device::LinkState;
7use crate::fmt::*;
8use crate::{Interface, SocketSet}; 7use crate::{Interface, SocketSet};
9 8
10pub struct DhcpConfigurator { 9pub struct DhcpConfigurator {
diff --git a/embassy-net/src/config/mod.rs b/embassy-net/src/config/mod.rs
index 94725dba6..0f1886ae8 100644
--- a/embassy-net/src/config/mod.rs
+++ b/embassy-net/src/config/mod.rs
@@ -2,7 +2,6 @@ use heapless::Vec;
2use smoltcp::time::Instant; 2use smoltcp::time::Instant;
3use smoltcp::wire::{Ipv4Address, Ipv4Cidr}; 3use smoltcp::wire::{Ipv4Address, Ipv4Cidr};
4 4
5use crate::fmt::*;
6use crate::{Interface, SocketSet}; 5use crate::{Interface, SocketSet};
7 6
8mod statik; 7mod statik;
diff --git a/embassy-net/src/config/statik.rs b/embassy-net/src/config/statik.rs
index 912143bff..9a530717b 100644
--- a/embassy-net/src/config/statik.rs
+++ b/embassy-net/src/config/statik.rs
@@ -1,7 +1,6 @@
1use smoltcp::time::Instant; 1use smoltcp::time::Instant;
2 2
3use super::*; 3use super::*;
4use crate::fmt::*;
5use crate::{Interface, SocketSet}; 4use crate::{Interface, SocketSet};
6 5
7pub struct StaticConfigurator { 6pub struct StaticConfigurator {
diff --git a/embassy-net/src/device.rs b/embassy-net/src/device.rs
index 6c06b0605..5fcb94ac8 100644
--- a/embassy-net/src/device.rs
+++ b/embassy-net/src/device.rs
@@ -3,7 +3,6 @@ use smoltcp::phy::Device as SmolDevice;
3use smoltcp::phy::DeviceCapabilities; 3use smoltcp::phy::DeviceCapabilities;
4use smoltcp::time::Instant as SmolInstant; 4use smoltcp::time::Instant as SmolInstant;
5 5
6use crate::fmt::*;
7use crate::packet_pool::PacketBoxExt; 6use crate::packet_pool::PacketBoxExt;
8use crate::Result; 7use crate::Result;
9use crate::{Packet, PacketBox, PacketBuf}; 8use crate::{Packet, PacketBox, PacketBuf};
diff --git a/embassy-net/src/fmt.rs b/embassy-net/src/fmt.rs
index 4da69766c..6c5063f7c 100644
--- a/embassy-net/src/fmt.rs
+++ b/embassy-net/src/fmt.rs
@@ -1,74 +1,171 @@
1#![macro_use] 1#![macro_use]
2#![allow(unused_macros)]
2 3
3#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
4compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
5 6
6pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
7 17
8#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
9mod fmt { 19 ($($x:tt)*) => {
10 pub use defmt::{ 20 {
11 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
12 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
13 }; 26 };
14} 27}
15 28
16#[cfg(feature = "log")] 29macro_rules! assert_ne {
17mod fmt { 30 ($($x:tt)*) => {
18 pub use core::{ 31 {
19 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
20 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
21 }; 37 };
22 pub use log::{debug, error, info, trace, warn};
23} 38}
24 39
25#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
26mod fmt { 41 ($($x:tt)*) => {
27 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
28 50
29 pub use core::{ 51macro_rules! debug_assert_eq {
30 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
31 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
32 }; 59 };
60}
33 61
34 #[macro_export] 62macro_rules! debug_assert_ne {
35 macro_rules! trace { 63 ($($x:tt)*) => {
36 ($($msg:expr),+ $(,)?) => { 64 {
37 () 65 #[cfg(not(feature = "defmt"))]
38 }; 66 core::debug_assert_ne!($($x)*);
39 } 67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
40 72
41 #[macro_export] 73macro_rules! todo {
42 macro_rules! debug { 74 ($($x:tt)*) => {
43 ($($msg:expr),+ $(,)?) => { 75 {
44 () 76 #[cfg(not(feature = "defmt"))]
45 }; 77 core::todo!($($x)*);
46 } 78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 #[macro_export] 84macro_rules! unreachable {
49 macro_rules! info { 85 ($($x:tt)*) => {
50 ($($msg:expr),+ $(,)?) => { 86 {
51 () 87 #[cfg(not(feature = "defmt"))]
52 }; 88 core::unreachable!($($x)*);
53 } 89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
54 94
55 #[macro_export] 95macro_rules! panic {
56 macro_rules! warn { 96 ($($x:tt)*) => {
57 ($($msg:expr),+ $(,)?) => { 97 {
58 () 98 #[cfg(not(feature = "defmt"))]
59 }; 99 core::panic!($($x)*);
60 } 100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
61 105
62 #[macro_export] 106macro_rules! trace {
63 macro_rules! error { 107 ($($x:tt)*) => {
64 ($($msg:expr),+ $(,)?) => { 108 {
65 () 109 #[cfg(feature = "log")]
66 }; 110 log::trace!($($x)*);
67 } 111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
68} 166}
69 167
70#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
71#[macro_export]
72macro_rules! unwrap { 169macro_rules! unwrap {
73 ($arg:expr) => { 170 ($arg:expr) => {
74 match $crate::fmt::Try::into_result($arg) { 171 match $crate::fmt::Try::into_result($arg) {
diff --git a/embassy-net/src/stack.rs b/embassy-net/src/stack.rs
index e436beb1e..a38f00958 100644
--- a/embassy-net/src/stack.rs
+++ b/embassy-net/src/stack.rs
@@ -20,7 +20,6 @@ use smoltcp::wire::{IpAddress, IpCidr, Ipv4Address, Ipv4Cidr};
20use crate::config::Configurator; 20use crate::config::Configurator;
21use crate::config::Event; 21use crate::config::Event;
22use crate::device::{Device, DeviceAdapter, LinkState}; 22use crate::device::{Device, DeviceAdapter, LinkState};
23use crate::fmt::*;
24use crate::{Interface, SocketSet}; 23use crate::{Interface, SocketSet};
25 24
26const ADDRESSES_LEN: usize = 1; 25const ADDRESSES_LEN: usize = 1;
diff --git a/embassy-net/src/tcp_socket.rs b/embassy-net/src/tcp_socket.rs
index 4f43bc611..def4c8176 100644
--- a/embassy-net/src/tcp_socket.rs
+++ b/embassy-net/src/tcp_socket.rs
@@ -11,7 +11,6 @@ use smoltcp::time::Duration;
11use smoltcp::wire::IpEndpoint; 11use smoltcp::wire::IpEndpoint;
12 12
13use super::stack::Stack; 13use super::stack::Stack;
14use crate::fmt::*;
15use crate::{Error, Result}; 14use crate::{Error, Result};
16 15
17pub struct TcpSocket<'a> { 16pub struct TcpSocket<'a> {
diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs
index b4ec70913..d853bda73 100644
--- a/embassy-nrf/src/buffered_uarte.rs
+++ b/embassy-nrf/src/buffered_uarte.rs
@@ -11,7 +11,6 @@ use embassy_extras::peripheral::{PeripheralMutex, PeripheralState};
11use embassy_extras::ring_buffer::RingBuffer; 11use embassy_extras::ring_buffer::RingBuffer;
12use embassy_extras::{low_power_wait_until, unborrow}; 12use embassy_extras::{low_power_wait_until, unborrow};
13 13
14use crate::fmt::{panic, *};
15use crate::gpio::sealed::Pin as _; 14use crate::gpio::sealed::Pin as _;
16use crate::gpio::{OptionalPin as GpioOptionalPin, Pin as GpioPin}; 15use crate::gpio::{OptionalPin as GpioOptionalPin, Pin as GpioPin};
17use crate::pac; 16use crate::pac;
diff --git a/embassy-nrf/src/fmt.rs b/embassy-nrf/src/fmt.rs
index 160642ccd..6c5063f7c 100644
--- a/embassy-nrf/src/fmt.rs
+++ b/embassy-nrf/src/fmt.rs
@@ -1,67 +1,168 @@
1#![macro_use] 1#![macro_use]
2#![allow(clippy::module_inception)] 2#![allow(unused_macros)]
3#![allow(unused)]
4 3
5#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
6compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
7 6
8pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
9 17
10#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
11mod fmt { 19 ($($x:tt)*) => {
12 pub use defmt::{ 20 {
13 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
14 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
15 }; 26 };
16} 27}
17 28
18#[cfg(feature = "log")] 29macro_rules! assert_ne {
19mod fmt { 30 ($($x:tt)*) => {
20 pub use core::{ 31 {
21 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
22 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
23 }; 37 };
24 pub use log::{debug, error, info, trace, warn};
25} 38}
26 39
27#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
28mod fmt { 41 ($($x:tt)*) => {
29 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
30 50
31 pub use core::{ 51macro_rules! debug_assert_eq {
32 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
33 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
34 }; 59 };
60}
35 61
36 macro_rules! trace { 62macro_rules! debug_assert_ne {
37 ($($msg:expr),+ $(,)?) => { 63 ($($x:tt)*) => {
38 () 64 {
39 }; 65 #[cfg(not(feature = "defmt"))]
40 } 66 core::debug_assert_ne!($($x)*);
67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
41 72
42 macro_rules! debug { 73macro_rules! todo {
43 ($($msg:expr),+ $(,)?) => { 74 ($($x:tt)*) => {
44 () 75 {
45 }; 76 #[cfg(not(feature = "defmt"))]
46 } 77 core::todo!($($x)*);
78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 macro_rules! info { 84macro_rules! unreachable {
49 ($($msg:expr),+ $(,)?) => { 85 ($($x:tt)*) => {
50 () 86 {
51 }; 87 #[cfg(not(feature = "defmt"))]
52 } 88 core::unreachable!($($x)*);
89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
53 94
54 macro_rules! warn { 95macro_rules! panic {
55 ($($msg:expr),+ $(,)?) => { 96 ($($x:tt)*) => {
56 () 97 {
57 }; 98 #[cfg(not(feature = "defmt"))]
58 } 99 core::panic!($($x)*);
100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
59 105
60 macro_rules! error { 106macro_rules! trace {
61 ($($msg:expr),+ $(,)?) => { 107 ($($x:tt)*) => {
62 () 108 {
63 }; 109 #[cfg(feature = "log")]
64 } 110 log::trace!($($x)*);
111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
65} 166}
66 167
67#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index 8fc16a3ba..07509aef9 100644
--- a/embassy-nrf/src/pwm.rs
+++ b/embassy-nrf/src/pwm.rs
@@ -6,7 +6,6 @@ use core::sync::atomic::{compiler_fence, Ordering};
6use embassy::util::Unborrow; 6use embassy::util::Unborrow;
7use embassy_extras::unborrow; 7use embassy_extras::unborrow;
8 8
9use crate::fmt::{unreachable, *};
10use crate::gpio::sealed::Pin as _; 9use crate::gpio::sealed::Pin as _;
11use crate::gpio::OptionalPin as GpioOptionalPin; 10use crate::gpio::OptionalPin as GpioOptionalPin;
12use crate::interrupt::Interrupt; 11use crate::interrupt::Interrupt;
diff --git a/embassy-nrf/src/qspi.rs b/embassy-nrf/src/qspi.rs
index 882db9d8b..42bf8f419 100644
--- a/embassy-nrf/src/qspi.rs
+++ b/embassy-nrf/src/qspi.rs
@@ -10,7 +10,6 @@ use embassy::util::{AtomicWaker, DropBomb, Unborrow};
10use embassy_extras::unborrow; 10use embassy_extras::unborrow;
11use futures::future::poll_fn; 11use futures::future::poll_fn;
12 12
13use crate::fmt::{assert, assert_eq, *};
14use crate::gpio::sealed::Pin as _; 13use crate::gpio::sealed::Pin as _;
15use crate::gpio::{self, Pin as GpioPin}; 14use crate::gpio::{self, Pin as GpioPin};
16use crate::pac; 15use crate::pac;
diff --git a/embassy-nrf/src/spim.rs b/embassy-nrf/src/spim.rs
index b5e9afbc1..47d7c5f90 100644
--- a/embassy-nrf/src/spim.rs
+++ b/embassy-nrf/src/spim.rs
@@ -11,10 +11,10 @@ use embassy_extras::unborrow;
11use futures::future::poll_fn; 11use futures::future::poll_fn;
12use traits::spi::FullDuplex; 12use traits::spi::FullDuplex;
13 13
14use crate::gpio;
14use crate::gpio::sealed::Pin as _; 15use crate::gpio::sealed::Pin as _;
15use crate::gpio::{OptionalPin, Pin as GpioPin}; 16use crate::gpio::{OptionalPin, Pin as GpioPin};
16use crate::interrupt::Interrupt; 17use crate::interrupt::Interrupt;
17use crate::{fmt::*, gpio};
18use crate::{pac, util::slice_in_ram_or}; 18use crate::{pac, util::slice_in_ram_or};
19 19
20pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 20pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
diff --git a/embassy-nrf/src/twim.rs b/embassy-nrf/src/twim.rs
index 160868d7d..5f3c51578 100644
--- a/embassy-nrf/src/twim.rs
+++ b/embassy-nrf/src/twim.rs
@@ -18,10 +18,10 @@ use futures::future::poll_fn;
18use traits::i2c::I2c; 18use traits::i2c::I2c;
19 19
20use crate::chip::{EASY_DMA_SIZE, FORCE_COPY_BUFFER_SIZE}; 20use crate::chip::{EASY_DMA_SIZE, FORCE_COPY_BUFFER_SIZE};
21use crate::gpio;
21use crate::gpio::Pin as GpioPin; 22use crate::gpio::Pin as GpioPin;
22use crate::pac; 23use crate::pac;
23use crate::util::{slice_in_ram, slice_in_ram_or}; 24use crate::util::{slice_in_ram, slice_in_ram_or};
24use crate::{fmt::*, gpio};
25 25
26pub enum Frequency { 26pub enum Frequency {
27 #[doc = "26738688: 100 kbps"] 27 #[doc = "26738688: 100 kbps"]
diff --git a/embassy-nrf/src/uarte.rs b/embassy-nrf/src/uarte.rs
index 2f6d1a391..de093c7f0 100644
--- a/embassy-nrf/src/uarte.rs
+++ b/embassy-nrf/src/uarte.rs
@@ -13,7 +13,6 @@ use embassy_extras::unborrow;
13use futures::future::poll_fn; 13use futures::future::poll_fn;
14 14
15use crate::chip::EASY_DMA_SIZE; 15use crate::chip::EASY_DMA_SIZE;
16use crate::fmt::{assert, panic, *};
17use crate::gpio::sealed::Pin as _; 16use crate::gpio::sealed::Pin as _;
18use crate::gpio::{self, OptionalPin as GpioOptionalPin, Pin as GpioPin}; 17use crate::gpio::{self, OptionalPin as GpioOptionalPin, Pin as GpioPin};
19use crate::interrupt::Interrupt; 18use crate::interrupt::Interrupt;
diff --git a/embassy-rp/src/dma.rs b/embassy-rp/src/dma.rs
index a74b9b92b..235e92d7c 100644
--- a/embassy-rp/src/dma.rs
+++ b/embassy-rp/src/dma.rs
@@ -1,6 +1,5 @@
1use core::sync::atomic::{compiler_fence, Ordering}; 1use core::sync::atomic::{compiler_fence, Ordering};
2 2
3use crate::fmt::assert;
4use crate::pac::dma::vals; 3use crate::pac::dma::vals;
5use crate::{pac, peripherals}; 4use crate::{pac, peripherals};
6 5
diff --git a/embassy-rp/src/fmt.rs b/embassy-rp/src/fmt.rs
index 4da69766c..6c5063f7c 100644
--- a/embassy-rp/src/fmt.rs
+++ b/embassy-rp/src/fmt.rs
@@ -1,74 +1,171 @@
1#![macro_use] 1#![macro_use]
2#![allow(unused_macros)]
2 3
3#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
4compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
5 6
6pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
7 17
8#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
9mod fmt { 19 ($($x:tt)*) => {
10 pub use defmt::{ 20 {
11 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
12 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
13 }; 26 };
14} 27}
15 28
16#[cfg(feature = "log")] 29macro_rules! assert_ne {
17mod fmt { 30 ($($x:tt)*) => {
18 pub use core::{ 31 {
19 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
20 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
21 }; 37 };
22 pub use log::{debug, error, info, trace, warn};
23} 38}
24 39
25#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
26mod fmt { 41 ($($x:tt)*) => {
27 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
28 50
29 pub use core::{ 51macro_rules! debug_assert_eq {
30 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
31 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
32 }; 59 };
60}
33 61
34 #[macro_export] 62macro_rules! debug_assert_ne {
35 macro_rules! trace { 63 ($($x:tt)*) => {
36 ($($msg:expr),+ $(,)?) => { 64 {
37 () 65 #[cfg(not(feature = "defmt"))]
38 }; 66 core::debug_assert_ne!($($x)*);
39 } 67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
40 72
41 #[macro_export] 73macro_rules! todo {
42 macro_rules! debug { 74 ($($x:tt)*) => {
43 ($($msg:expr),+ $(,)?) => { 75 {
44 () 76 #[cfg(not(feature = "defmt"))]
45 }; 77 core::todo!($($x)*);
46 } 78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 #[macro_export] 84macro_rules! unreachable {
49 macro_rules! info { 85 ($($x:tt)*) => {
50 ($($msg:expr),+ $(,)?) => { 86 {
51 () 87 #[cfg(not(feature = "defmt"))]
52 }; 88 core::unreachable!($($x)*);
53 } 89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
54 94
55 #[macro_export] 95macro_rules! panic {
56 macro_rules! warn { 96 ($($x:tt)*) => {
57 ($($msg:expr),+ $(,)?) => { 97 {
58 () 98 #[cfg(not(feature = "defmt"))]
59 }; 99 core::panic!($($x)*);
60 } 100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
61 105
62 #[macro_export] 106macro_rules! trace {
63 macro_rules! error { 107 ($($x:tt)*) => {
64 ($($msg:expr),+ $(,)?) => { 108 {
65 () 109 #[cfg(feature = "log")]
66 }; 110 log::trace!($($x)*);
67 } 111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
68} 166}
69 167
70#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
71#[macro_export]
72macro_rules! unwrap { 169macro_rules! unwrap {
73 ($arg:expr) => { 170 ($arg:expr) => {
74 match $crate::fmt::Try::into_result($arg) { 171 match $crate::fmt::Try::into_result($arg) {
diff --git a/embassy-rp/src/pll.rs b/embassy-rp/src/pll.rs
index befb368c5..13c16baf8 100644
--- a/embassy-rp/src/pll.rs
+++ b/embassy-rp/src/pll.rs
@@ -1,4 +1,3 @@
1use crate::fmt::assert;
2use crate::pac; 1use crate::pac;
3 2
4const XOSC_MHZ: u32 = 12; 3const XOSC_MHZ: u32 = 12;
diff --git a/embassy-stm32/src/dac/v2.rs b/embassy-stm32/src/dac/v2.rs
index a7aad04f0..d8c9415b6 100644
--- a/embassy-stm32/src/dac/v2.rs
+++ b/embassy-stm32/src/dac/v2.rs
@@ -1,5 +1,4 @@
1use crate::dac::{DacPin, Instance}; 1use crate::dac::{DacPin, Instance};
2use crate::fmt::*;
3use crate::gpio::AnyPin; 2use crate::gpio::AnyPin;
4use crate::pac::dac; 3use crate::pac::dac;
5use core::marker::PhantomData; 4use core::marker::PhantomData;
diff --git a/embassy-stm32/src/dma/v2.rs b/embassy-stm32/src/dma/v2.rs
index 5b2505463..e7bd69130 100644
--- a/embassy-stm32/src/dma/v2.rs
+++ b/embassy-stm32/src/dma/v2.rs
@@ -5,7 +5,6 @@ use embassy::util::AtomicWaker;
5use futures::future::poll_fn; 5use futures::future::poll_fn;
6 6
7use super::*; 7use super::*;
8use crate::fmt::assert;
9use crate::interrupt; 8use crate::interrupt;
10use crate::pac; 9use crate::pac;
11use crate::pac::dma::{regs, vals}; 10use crate::pac::dma::{regs, vals};
diff --git a/embassy-stm32/src/fmt.rs b/embassy-stm32/src/fmt.rs
index 160642ccd..6c5063f7c 100644
--- a/embassy-stm32/src/fmt.rs
+++ b/embassy-stm32/src/fmt.rs
@@ -1,67 +1,168 @@
1#![macro_use] 1#![macro_use]
2#![allow(clippy::module_inception)] 2#![allow(unused_macros)]
3#![allow(unused)]
4 3
5#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
6compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
7 6
8pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
9 17
10#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
11mod fmt { 19 ($($x:tt)*) => {
12 pub use defmt::{ 20 {
13 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
14 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
15 }; 26 };
16} 27}
17 28
18#[cfg(feature = "log")] 29macro_rules! assert_ne {
19mod fmt { 30 ($($x:tt)*) => {
20 pub use core::{ 31 {
21 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
22 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
23 }; 37 };
24 pub use log::{debug, error, info, trace, warn};
25} 38}
26 39
27#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
28mod fmt { 41 ($($x:tt)*) => {
29 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
30 50
31 pub use core::{ 51macro_rules! debug_assert_eq {
32 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
33 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
34 }; 59 };
60}
35 61
36 macro_rules! trace { 62macro_rules! debug_assert_ne {
37 ($($msg:expr),+ $(,)?) => { 63 ($($x:tt)*) => {
38 () 64 {
39 }; 65 #[cfg(not(feature = "defmt"))]
40 } 66 core::debug_assert_ne!($($x)*);
67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
41 72
42 macro_rules! debug { 73macro_rules! todo {
43 ($($msg:expr),+ $(,)?) => { 74 ($($x:tt)*) => {
44 () 75 {
45 }; 76 #[cfg(not(feature = "defmt"))]
46 } 77 core::todo!($($x)*);
78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 macro_rules! info { 84macro_rules! unreachable {
49 ($($msg:expr),+ $(,)?) => { 85 ($($x:tt)*) => {
50 () 86 {
51 }; 87 #[cfg(not(feature = "defmt"))]
52 } 88 core::unreachable!($($x)*);
89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
53 94
54 macro_rules! warn { 95macro_rules! panic {
55 ($($msg:expr),+ $(,)?) => { 96 ($($x:tt)*) => {
56 () 97 {
57 }; 98 #[cfg(not(feature = "defmt"))]
58 } 99 core::panic!($($x)*);
100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
59 105
60 macro_rules! error { 106macro_rules! trace {
61 ($($msg:expr),+ $(,)?) => { 107 ($($x:tt)*) => {
62 () 108 {
63 }; 109 #[cfg(feature = "log")]
64 } 110 log::trace!($($x)*);
111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
65} 166}
66 167
67#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
diff --git a/embassy-stm32/src/rcc/h7/mod.rs b/embassy-stm32/src/rcc/h7/mod.rs
index fbf864bf6..57cdd5470 100644
--- a/embassy-stm32/src/rcc/h7/mod.rs
+++ b/embassy-stm32/src/rcc/h7/mod.rs
@@ -2,7 +2,6 @@ use core::marker::PhantomData;
2 2
3use embassy::util::Unborrow; 3use embassy::util::Unborrow;
4 4
5use crate::fmt::{assert, panic};
6use crate::pac::rcc::vals::Timpre; 5use crate::pac::rcc::vals::Timpre;
7use crate::pac::{DBGMCU, RCC, SYSCFG}; 6use crate::pac::{DBGMCU, RCC, SYSCFG};
8use crate::peripherals; 7use crate::peripherals;
diff --git a/embassy-stm32/src/rcc/h7/pll.rs b/embassy-stm32/src/rcc/h7/pll.rs
index af958d093..4c40d84d4 100644
--- a/embassy-stm32/src/rcc/h7/pll.rs
+++ b/embassy-stm32/src/rcc/h7/pll.rs
@@ -1,5 +1,4 @@
1use super::{Hertz, RCC}; 1use super::{Hertz, RCC};
2use crate::fmt::assert;
3 2
4const VCO_MIN: u32 = 150_000_000; 3const VCO_MIN: u32 = 150_000_000;
5const VCO_MAX: u32 = 420_000_000; 4const VCO_MAX: u32 = 420_000_000;
diff --git a/embassy-stm32/src/sdmmc/v2.rs b/embassy-stm32/src/sdmmc/v2.rs
index 2c7f8ac00..9c7bad4df 100644
--- a/embassy-stm32/src/sdmmc/v2.rs
+++ b/embassy-stm32/src/sdmmc/v2.rs
@@ -10,7 +10,6 @@ use embassy_extras::unborrow;
10use futures::future::poll_fn; 10use futures::future::poll_fn;
11use sdio_host::{BusWidth, CardCapacity, CardStatus, CurrentState, SDStatus, CID, CSD, OCR, SCR}; 11use sdio_host::{BusWidth, CardCapacity, CardStatus, CurrentState, SDStatus, CID, CSD, OCR, SCR};
12 12
13use crate::fmt::*;
14use crate::interrupt::Interrupt; 13use crate::interrupt::Interrupt;
15use crate::pac; 14use crate::pac;
16use crate::pac::gpio::Gpio; 15use crate::pac::gpio::Gpio;
@@ -434,7 +433,7 @@ impl SdmmcInner {
434 BusWidth::One => 0, 433 BusWidth::One => 0,
435 BusWidth::Four => 1, 434 BusWidth::Four => 1,
436 BusWidth::Eight => 2, 435 BusWidth::Eight => 2,
437 _ => self::panic!("Invalid Bus Width"), 436 _ => panic!("Invalid Bus Width"),
438 }) 437 })
439 }); 438 });
440 439
@@ -637,7 +636,7 @@ impl SdmmcInner {
637 direction: Dir, 636 direction: Dir,
638 data_transfer_timeout: u32, 637 data_transfer_timeout: u32,
639 ) { 638 ) {
640 self::assert!(block_size <= 14, "Block size up to 2^14 bytes"); 639 assert!(block_size <= 14, "Block size up to 2^14 bytes");
641 let regs = self.0; 640 let regs = self.0;
642 641
643 let dtdir = match direction { 642 let dtdir = match direction {
@@ -678,7 +677,7 @@ impl SdmmcInner {
678 // Enforce AHB and SDMMC_CK clock relation. See RM0433 Rev 7 677 // Enforce AHB and SDMMC_CK clock relation. See RM0433 Rev 7
679 // Section 55.5.8 678 // Section 55.5.8
680 let sdmmc_bus_bandwidth = new_clock.0 * (width as u32); 679 let sdmmc_bus_bandwidth = new_clock.0 * (width as u32);
681 self::assert!(hclk.0 > 3 * sdmmc_bus_bandwidth / 32); 680 assert!(hclk.0 > 3 * sdmmc_bus_bandwidth / 32);
682 *clock = new_clock; 681 *clock = new_clock;
683 682
684 // NOTE(unsafe) We have exclusive access to the regblock 683 // NOTE(unsafe) We have exclusive access to the regblock
diff --git a/embassy/src/executor/mod.rs b/embassy/src/executor/mod.rs
index 8a3a8991a..598d4e558 100644
--- a/embassy/src/executor/mod.rs
+++ b/embassy/src/executor/mod.rs
@@ -9,7 +9,6 @@ mod timer_queue;
9mod util; 9mod util;
10mod waker; 10mod waker;
11 11
12use crate::fmt::panic;
13use crate::interrupt::{Interrupt, InterruptExt}; 12use crate::interrupt::{Interrupt, InterruptExt};
14use crate::time::Alarm; 13use crate::time::Alarm;
15 14
diff --git a/embassy/src/executor/waker.rs b/embassy/src/executor/waker.rs
index 050f6a1cf..ea5b501f1 100644
--- a/embassy/src/executor/waker.rs
+++ b/embassy/src/executor/waker.rs
@@ -24,7 +24,9 @@ pub(crate) unsafe fn from_task(p: NonNull<TaskHeader>) -> Waker {
24 24
25pub unsafe fn task_from_waker(waker: &Waker) -> NonNull<TaskHeader> { 25pub unsafe fn task_from_waker(waker: &Waker) -> NonNull<TaskHeader> {
26 let hack: &WakerHack = mem::transmute(waker); 26 let hack: &WakerHack = mem::transmute(waker);
27 assert_eq!(hack.vtable, &VTABLE); 27 if hack.vtable != &VTABLE {
28 panic!("Found waker not created by the embassy executor. Consider enabling the `executor-agnostic` feature on the `embassy` crate.")
29 }
28 NonNull::new_unchecked(hack.data as *mut TaskHeader) 30 NonNull::new_unchecked(hack.data as *mut TaskHeader)
29} 31}
30 32
diff --git a/embassy/src/fmt.rs b/embassy/src/fmt.rs
index 160642ccd..6c5063f7c 100644
--- a/embassy/src/fmt.rs
+++ b/embassy/src/fmt.rs
@@ -1,67 +1,168 @@
1#![macro_use] 1#![macro_use]
2#![allow(clippy::module_inception)] 2#![allow(unused_macros)]
3#![allow(unused)]
4 3
5#[cfg(all(feature = "defmt", feature = "log"))] 4#[cfg(all(feature = "defmt", feature = "log"))]
6compile_error!("You may not enable both `defmt` and `log` features."); 5compile_error!("You may not enable both `defmt` and `log` features.");
7 6
8pub use fmt::*; 7macro_rules! assert {
8 ($($x:tt)*) => {
9 {
10 #[cfg(not(feature = "defmt"))]
11 core::assert!($($x)*);
12 #[cfg(feature = "defmt")]
13 defmt::assert!($($x)*);
14 }
15 };
16}
9 17
10#[cfg(feature = "defmt")] 18macro_rules! assert_eq {
11mod fmt { 19 ($($x:tt)*) => {
12 pub use defmt::{ 20 {
13 assert, assert_eq, assert_ne, debug, debug_assert, debug_assert_eq, debug_assert_ne, error, 21 #[cfg(not(feature = "defmt"))]
14 info, panic, todo, trace, unreachable, unwrap, warn, 22 core::assert_eq!($($x)*);
23 #[cfg(feature = "defmt")]
24 defmt::assert_eq!($($x)*);
25 }
15 }; 26 };
16} 27}
17 28
18#[cfg(feature = "log")] 29macro_rules! assert_ne {
19mod fmt { 30 ($($x:tt)*) => {
20 pub use core::{ 31 {
21 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 32 #[cfg(not(feature = "defmt"))]
22 unreachable, 33 core::assert_ne!($($x)*);
34 #[cfg(feature = "defmt")]
35 defmt::assert_ne!($($x)*);
36 }
23 }; 37 };
24 pub use log::{debug, error, info, trace, warn};
25} 38}
26 39
27#[cfg(not(any(feature = "defmt", feature = "log")))] 40macro_rules! debug_assert {
28mod fmt { 41 ($($x:tt)*) => {
29 #![macro_use] 42 {
43 #[cfg(not(feature = "defmt"))]
44 core::debug_assert!($($x)*);
45 #[cfg(feature = "defmt")]
46 defmt::debug_assert!($($x)*);
47 }
48 };
49}
30 50
31 pub use core::{ 51macro_rules! debug_assert_eq {
32 assert, assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne, panic, todo, 52 ($($x:tt)*) => {
33 unreachable, 53 {
54 #[cfg(not(feature = "defmt"))]
55 core::debug_assert_eq!($($x)*);
56 #[cfg(feature = "defmt")]
57 defmt::debug_assert_eq!($($x)*);
58 }
34 }; 59 };
60}
35 61
36 macro_rules! trace { 62macro_rules! debug_assert_ne {
37 ($($msg:expr),+ $(,)?) => { 63 ($($x:tt)*) => {
38 () 64 {
39 }; 65 #[cfg(not(feature = "defmt"))]
40 } 66 core::debug_assert_ne!($($x)*);
67 #[cfg(feature = "defmt")]
68 defmt::debug_assert_ne!($($x)*);
69 }
70 };
71}
41 72
42 macro_rules! debug { 73macro_rules! todo {
43 ($($msg:expr),+ $(,)?) => { 74 ($($x:tt)*) => {
44 () 75 {
45 }; 76 #[cfg(not(feature = "defmt"))]
46 } 77 core::todo!($($x)*);
78 #[cfg(feature = "defmt")]
79 defmt::todo!($($x)*);
80 }
81 };
82}
47 83
48 macro_rules! info { 84macro_rules! unreachable {
49 ($($msg:expr),+ $(,)?) => { 85 ($($x:tt)*) => {
50 () 86 {
51 }; 87 #[cfg(not(feature = "defmt"))]
52 } 88 core::unreachable!($($x)*);
89 #[cfg(feature = "defmt")]
90 defmt::unreachable!($($x)*);
91 }
92 };
93}
53 94
54 macro_rules! warn { 95macro_rules! panic {
55 ($($msg:expr),+ $(,)?) => { 96 ($($x:tt)*) => {
56 () 97 {
57 }; 98 #[cfg(not(feature = "defmt"))]
58 } 99 core::panic!($($x)*);
100 #[cfg(feature = "defmt")]
101 defmt::panic!($($x)*);
102 }
103 };
104}
59 105
60 macro_rules! error { 106macro_rules! trace {
61 ($($msg:expr),+ $(,)?) => { 107 ($($x:tt)*) => {
62 () 108 {
63 }; 109 #[cfg(feature = "log")]
64 } 110 log::trace!($($x)*);
111 #[cfg(feature = "defmt")]
112 defmt::trace!($($x)*);
113 }
114 };
115}
116
117macro_rules! debug {
118 ($($x:tt)*) => {
119 {
120 #[cfg(fevature = "log")]
121 log::debug!($($x)*);
122 #[cfg(feature = "defmt")]
123 defmt::debug!($($x)*);
124 }
125 };
126}
127
128macro_rules! info {
129 ($($x:tt)*) => {
130 {
131 #[cfg(feature = "log")]
132 log::info!($($x)*);
133 #[cfg(feature = "defmt")]
134 defmt::info!($($x)*);
135 }
136 };
137}
138
139macro_rules! warn {
140 ($($x:tt)*) => {
141 {
142 #[cfg(feature = "log")]
143 log::warn!($($x)*);
144 #[cfg(feature = "defmt")]
145 defmt::warn!($($x)*);
146 }
147 };
148}
149
150macro_rules! error {
151 ($($x:tt)*) => {
152 {
153 #[cfg(feature = "log")]
154 log::error!($($x)*);
155 #[cfg(feature = "defmt")]
156 defmt::error!($($x)*);
157 }
158 };
159}
160
161#[cfg(feature = "defmt")]
162macro_rules! unwrap {
163 ($($x:tt)*) => {
164 defmt::unwrap!($($x)*)
165 };
65} 166}
66 167
67#[cfg(not(feature = "defmt"))] 168#[cfg(not(feature = "defmt"))]
diff --git a/embassy/src/time/mod.rs b/embassy/src/time/mod.rs
index d7284b7a2..21b93d384 100644
--- a/embassy/src/time/mod.rs
+++ b/embassy/src/time/mod.rs
@@ -10,8 +10,6 @@ pub use duration::Duration;
10pub use instant::Instant; 10pub use instant::Instant;
11pub use traits::*; 11pub use traits::*;
12 12
13use crate::fmt::*;
14
15// TODO allow customizing, probably via Cargo features `tick-hz-32768` or something. 13// TODO allow customizing, probably via Cargo features `tick-hz-32768` or something.
16pub const TICKS_PER_SECOND: u64 = 32768; 14pub const TICKS_PER_SECOND: u64 = 32768;
17 15
diff --git a/embassy/src/util/drop_bomb.rs b/embassy/src/util/drop_bomb.rs
index 388209a23..efb36a97d 100644
--- a/embassy/src/util/drop_bomb.rs
+++ b/embassy/src/util/drop_bomb.rs
@@ -1,4 +1,3 @@
1use crate::fmt::panic;
2use core::mem; 1use core::mem;
3 2
4/// An explosive ordinance that panics if it is improperly disposed of. 3/// An explosive ordinance that panics if it is improperly disposed of.
diff --git a/embassy/src/util/mutex.rs b/embassy/src/util/mutex.rs
index 86ab070a3..e4b7764ce 100644
--- a/embassy/src/util/mutex.rs
+++ b/embassy/src/util/mutex.rs
@@ -1,8 +1,6 @@
1use core::cell::UnsafeCell; 1use core::cell::UnsafeCell;
2use critical_section::CriticalSection; 2use critical_section::CriticalSection;
3 3
4use crate::fmt::assert;
5
6/// A "mutex" based on critical sections 4/// A "mutex" based on critical sections
7/// 5///
8/// # Safety 6/// # Safety
diff --git a/embassy/src/util/portal.rs b/embassy/src/util/portal.rs
index f4f2824aa..8ea481093 100644
--- a/embassy/src/util/portal.rs
+++ b/embassy/src/util/portal.rs
@@ -1,4 +1,3 @@
1use crate::fmt::panic;
2use core::cell::UnsafeCell; 1use core::cell::UnsafeCell;
3use core::mem; 2use core::mem;
4use core::mem::MaybeUninit; 3use core::mem::MaybeUninit;
diff --git a/embassy/src/util/signal.rs b/embassy/src/util/signal.rs
index 2eefe658b..af261c457 100644
--- a/embassy/src/util/signal.rs
+++ b/embassy/src/util/signal.rs
@@ -9,7 +9,6 @@ use executor::raw::TaskHeader;
9use ptr::NonNull; 9use ptr::NonNull;
10 10
11use crate::executor; 11use crate::executor;
12use crate::fmt::panic;
13use crate::interrupt::{Interrupt, InterruptExt}; 12use crate::interrupt::{Interrupt, InterruptExt};
14 13
15/// Synchronization primitive. Allows creating awaitable signals that may be passed between tasks. 14/// Synchronization primitive. Allows creating awaitable signals that may be passed between tasks.