Skip to content

Commit 83f354a

Browse files
Add feature gates to everything
1 parent ab3015e commit 83f354a

File tree

4 files changed

+67
-25
lines changed

4 files changed

+67
-25
lines changed

src/i2c.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
#[cfg(feature = "stm32f042")]
12
use crate::stm32::{I2C1, RCC};
23

34
use embedded_hal::blocking::i2c::{Write, WriteRead};
45

5-
use core::cmp;
6+
#[cfg(feature = "stm32f042")]
67
use crate::gpio::gpioa::{PA10, PA11, PA12, PA9};
8+
#[cfg(feature = "stm32f042")]
79
use crate::gpio::gpiob::{PB10, PB11, PB13, PB14, PB6, PB7, PB8, PB9};
10+
#[cfg(feature = "stm32f042")]
811
use crate::gpio::gpiof::{PF0, PF1};
12+
#[cfg(feature = "stm32f042")]
913
use crate::gpio::{Alternate, AF1, AF4, AF5};
1014
use crate::time::{KiloHertz, U32Ext};
15+
use core::cmp;
1116

1217
/// I2C abstraction
1318
pub struct I2c<I2C, PINS> {
@@ -17,12 +22,19 @@ pub struct I2c<I2C, PINS> {
1722

1823
pub trait Pins<I2c> {}
1924

25+
#[cfg(feature = "stm32f042")]
2026
impl Pins<I2C1> for (PA9<Alternate<AF4>>, PA10<Alternate<AF4>>) {}
27+
#[cfg(feature = "stm32f042")]
2128
impl Pins<I2C1> for (PA11<Alternate<AF5>>, PA12<Alternate<AF5>>) {}
29+
#[cfg(feature = "stm32f042")]
2230
impl Pins<I2C1> for (PB6<Alternate<AF1>>, PB7<Alternate<AF1>>) {}
31+
#[cfg(feature = "stm32f042")]
2332
impl Pins<I2C1> for (PB8<Alternate<AF1>>, PB9<Alternate<AF1>>) {}
33+
#[cfg(feature = "stm32f042")]
2434
impl Pins<I2C1> for (PB10<Alternate<AF1>>, PB11<Alternate<AF1>>) {}
35+
#[cfg(feature = "stm32f042")]
2536
impl Pins<I2C1> for (PB13<Alternate<AF5>>, PB14<Alternate<AF5>>) {}
37+
#[cfg(feature = "stm32f042")]
2638
impl Pins<I2C1> for (PF1<Alternate<AF1>>, PF0<Alternate<AF1>>) {}
2739

2840
#[derive(Debug)]
@@ -31,6 +43,7 @@ pub enum Error {
3143
NACK,
3244
}
3345

46+
#[cfg(feature = "stm32f042")]
3447
impl<PINS> I2c<I2C1, PINS> {
3548
pub fn i2c1(i2c: I2C1, pins: PINS, speed: KiloHertz) -> Self
3649
where
@@ -123,6 +136,7 @@ impl<PINS> I2c<I2C1, PINS> {
123136
}
124137
}
125138

139+
#[cfg(feature = "stm32f042")]
126140
impl<PINS> WriteRead for I2c<I2C1, PINS> {
127141
type Error = Error;
128142

@@ -200,6 +214,7 @@ impl<PINS> WriteRead for I2c<I2C1, PINS> {
200214
}
201215
}
202216

217+
#[cfg(feature = "stm32f042")]
203218
impl<PINS> Write for I2c<I2C1, PINS> {
204219
type Error = Error;
205220

src/rcc.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use core::cmp;
22

3-
use cast::u32;
3+
#[cfg(feature = "stm32f042")]
44
use crate::stm32::{FLASH, RCC};
5+
use cast::u32;
56

67
use crate::time::Hertz;
78

@@ -11,6 +12,7 @@ pub trait RccExt {
1112
fn constrain(self) -> Rcc;
1213
}
1314

15+
#[cfg(feature = "stm32f042")]
1416
impl RccExt for RCC {
1517
fn constrain(self) -> Rcc {
1618
Rcc {
@@ -36,6 +38,7 @@ pub struct CFGR {
3638
sysclk: Option<u32>,
3739
}
3840

41+
#[cfg(feature = "stm32f042")]
3942
impl CFGR {
4043
pub fn hclk<F>(mut self, freq: F) -> Self
4144
where

src/serial.rs

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ use embedded_hal::prelude::*;
66
use nb::block;
77
use void::Void;
88

9+
#[cfg(any(feature = "stm32f042", feature = "stm32f030"))]
910
use crate::stm32::{RCC, USART1, USART2};
1011

11-
use crate::gpio::gpioa::{PA10, PA14, PA15, PA2, PA3, PA9};
12-
use crate::gpio::gpiob::{PB6, PB7};
13-
use crate::gpio::{Alternate, AF0, AF1};
12+
use crate::gpio::*;
1413
use crate::rcc::Clocks;
1514
use crate::time::Bps;
1615

@@ -40,41 +39,41 @@ pub enum Error {
4039
pub trait Pins<USART> {}
4140

4241
#[cfg(any(feature = "stm32f030", feature = "stm32f042"))]
43-
impl Pins<USART1> for (PA9<Alternate<AF1>>, PA10<Alternate<AF1>>) {}
42+
impl Pins<USART1> for (gpioa::PA9<Alternate<AF1>>, gpioa::PA10<Alternate<AF1>>) {}
4443
#[cfg(any(feature = "stm32f030", feature = "stm32f042"))]
45-
impl Pins<USART1> for (PB6<Alternate<AF0>>, PB7<Alternate<AF0>>) {}
44+
impl Pins<USART1> for (gpiob::PB6<Alternate<AF0>>, gpiob::PB7<Alternate<AF0>>) {}
4645
#[cfg(any(feature = "stm32f030", feature = "stm32f042"))]
47-
impl Pins<USART1> for (PA9<Alternate<AF1>>, PB7<Alternate<AF0>>) {}
46+
impl Pins<USART1> for (gpioa::PA9<Alternate<AF1>>, gpiob::PB7<Alternate<AF0>>) {}
4847
#[cfg(any(feature = "stm32f030", feature = "stm32f042"))]
49-
impl Pins<USART1> for (PB6<Alternate<AF0>>, PA10<Alternate<AF1>>) {}
48+
impl Pins<USART1> for (gpiob::PB6<Alternate<AF0>>, gpioa::PA10<Alternate<AF1>>) {}
5049

5150
#[cfg(feature = "stm32f030x6")]
52-
impl Pins<USART1> for (PA2<Alternate<AF1>>, PA3<Alternate<AF1>>) {}
51+
impl Pins<USART1> for (gpioa::PA2<Alternate<AF1>>, gpioa::PA3<Alternate<AF1>>) {}
5352

5453
#[cfg(any(
5554
feature = "stm32f042",
5655
feature = "stm32f030x8",
5756
feature = "stm32f030xc",
5857
))]
59-
impl Pins<USART2> for (PA2<Alternate<AF1>>, PA3<Alternate<AF1>>) {}
58+
impl Pins<USART2> for (gpioa::PA2<Alternate<AF1>>, gpioa::PA3<Alternate<AF1>>) {}
6059
#[cfg(any(
6160
feature = "stm32f042",
6261
feature = "stm32f030x8",
6362
feature = "stm32f030xc",
6463
))]
65-
impl Pins<USART2> for (PA2<Alternate<AF1>>, PA15<Alternate<AF1>>) {}
64+
impl Pins<USART2> for (gpioa::PA2<Alternate<AF1>>, gpioa::PA15<Alternate<AF1>>) {}
6665
#[cfg(any(
6766
feature = "stm32f042",
6867
feature = "stm32f030x8",
6968
feature = "stm32f030xc",
7069
))]
71-
impl Pins<USART2> for (PA14<Alternate<AF1>>, PA15<Alternate<AF1>>) {}
70+
impl Pins<USART2> for (gpioa::PA14<Alternate<AF1>>, gpioa::PA15<Alternate<AF1>>) {}
7271
#[cfg(any(
7372
feature = "stm32f042",
7473
feature = "stm32f030x8",
7574
feature = "stm32f030xc",
7675
))]
77-
impl Pins<USART2> for (PA14<Alternate<AF1>>, PA3<Alternate<AF1>>) {}
76+
impl Pins<USART2> for (gpioa::PA14<Alternate<AF1>>, gpioa::PA3<Alternate<AF1>>) {}
7877

7978
/// Serial abstraction
8079
pub struct Serial<USART, PINS> {
@@ -93,6 +92,7 @@ pub struct Tx<USART> {
9392
}
9493

9594
/// USART1
95+
#[cfg(any(feature = "stm32f042", feature = "stm32f030"))]
9696
impl<PINS> Serial<USART1, PINS> {
9797
pub fn usart1(usart: USART1, pins: PINS, baud_rate: Bps, clocks: Clocks) -> Self
9898
where
@@ -133,6 +133,7 @@ impl<PINS> Serial<USART1, PINS> {
133133
}
134134
}
135135

136+
#[cfg(any(feature = "stm32f042", feature = "stm32f030"))]
136137
impl embedded_hal::serial::Read<u8> for Rx<USART1> {
137138
type Error = Error;
138139

@@ -157,6 +158,7 @@ impl embedded_hal::serial::Read<u8> for Rx<USART1> {
157158
}
158159
}
159160

161+
#[cfg(any(feature = "stm32f042", feature = "stm32f030"))]
160162
impl embedded_hal::serial::Write<u8> for Tx<USART1> {
161163
type Error = Void;
162164

@@ -187,6 +189,11 @@ impl embedded_hal::serial::Write<u8> for Tx<USART1> {
187189
}
188190

189191
/// USART2
192+
#[cfg(any(
193+
feature = "stm32f042",
194+
feature = "stm32f030x8",
195+
feature = "stm32f030x8"
196+
))]
190197
impl<PINS> Serial<USART2, PINS> {
191198
pub fn usart2(usart: USART2, pins: PINS, baud_rate: Bps, clocks: Clocks) -> Self
192199
where
@@ -227,6 +234,11 @@ impl<PINS> Serial<USART2, PINS> {
227234
}
228235
}
229236

237+
#[cfg(any(
238+
feature = "stm32f042",
239+
feature = "stm32f030x8",
240+
feature = "stm32f030x8"
241+
))]
230242
impl embedded_hal::serial::Read<u8> for Rx<USART2> {
231243
type Error = Error;
232244

@@ -251,6 +263,11 @@ impl embedded_hal::serial::Read<u8> for Rx<USART2> {
251263
}
252264
}
253265

266+
#[cfg(any(
267+
feature = "stm32f042",
268+
feature = "stm32f030x8",
269+
feature = "stm32f030x8"
270+
))]
254271
impl embedded_hal::serial::Write<u8> for Tx<USART2> {
255272
type Error = Void;
256273

src/spi.rs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ use nb;
44

55
pub use embedded_hal::spi::{Mode, Phase, Polarity};
66

7+
#[cfg(feature = "stm32f042")]
78
use crate::stm32::{RCC, SPI1};
89

9-
use crate::gpio::gpioa::{PA5, PA6, PA7};
10-
use crate::gpio::gpiob::{PB3, PB4, PB5};
11-
use crate::gpio::{Alternate, AF0};
10+
use crate::gpio::*;
1211
use crate::rcc::Clocks;
1312
use crate::time::Hertz;
1413

@@ -33,21 +32,26 @@ pub struct Spi<SPI, PINS> {
3332

3433
pub trait Pins<Spi> {}
3534

35+
#[cfg(feature = "stm32f042")]
3636
impl Pins<SPI1>
3737
for (
38-
PA5<Alternate<AF0>>,
39-
PA6<Alternate<AF0>>,
40-
PA7<Alternate<AF0>>,
38+
gpioa::PA5<Alternate<AF0>>,
39+
gpioa::PA6<Alternate<AF0>>,
40+
gpioa::PA7<Alternate<AF0>>,
4141
)
42-
{}
42+
{
43+
}
44+
#[cfg(feature = "stm32f042")]
4345
impl Pins<SPI1>
4446
for (
45-
PB3<Alternate<AF0>>,
46-
PB4<Alternate<AF0>>,
47-
PB5<Alternate<AF0>>,
47+
gpiob::PB3<Alternate<AF0>>,
48+
gpiob::PB4<Alternate<AF0>>,
49+
gpiob::PB5<Alternate<AF0>>,
4850
)
49-
{}
51+
{
52+
}
5053

54+
#[cfg(feature = "stm32f042")]
5155
impl<PINS> Spi<SPI1, PINS> {
5256
pub fn spi1<F>(spi: SPI1, pins: PINS, mode: Mode, speed: F, clocks: Clocks) -> Self
5357
where
@@ -126,6 +130,7 @@ impl<PINS> Spi<SPI1, PINS> {
126130
}
127131
}
128132

133+
#[cfg(feature = "stm32f042")]
129134
impl<PINS> ::embedded_hal::spi::FullDuplex<u8> for Spi<SPI1, PINS> {
130135
type Error = Error;
131136

@@ -166,5 +171,7 @@ impl<PINS> ::embedded_hal::spi::FullDuplex<u8> for Spi<SPI1, PINS> {
166171
}
167172
}
168173

174+
#[cfg(feature = "stm32f042")]
169175
impl<PINS> ::embedded_hal::blocking::spi::transfer::Default<u8> for Spi<SPI1, PINS> {}
176+
#[cfg(feature = "stm32f042")]
170177
impl<PINS> ::embedded_hal::blocking::spi::write::Default<u8> for Spi<SPI1, PINS> {}

0 commit comments

Comments
 (0)