Skip to content

Commit

Permalink
Provide From/Into for inverted pins
Browse files Browse the repository at this point in the history
  • Loading branch information
bjoernQ committed Nov 9, 2023
1 parent fcecfa7 commit b638e0f
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions esp-hal-common/src/gpio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -938,6 +938,18 @@ where
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>>
for GpioPin<InvertedInput<Floating>, GPIONUM>
where
Self: GpioProperties,
<Self as GpioProperties>::PinType: IsInputPin,
GpioPin<Unknown, GPIONUM>: GpioProperties,
{
fn from(pin: GpioPin<Unknown, GPIONUM>) -> Self {
pin.into_inverted_floating_input()
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<Input<PullUp>, GPIONUM>
where
Self: GpioProperties,
Expand All @@ -949,6 +961,17 @@ where
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<InvertedInput<PullUp>, GPIONUM>
where
Self: GpioProperties,
<Self as GpioProperties>::PinType: IsOutputPin,
GpioPin<Unknown, GPIONUM>: GpioProperties,
{
fn from(pin: GpioPin<Unknown, GPIONUM>) -> Self {
pin.into_inverted_pull_up_input()
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<Input<PullDown>, GPIONUM>
where
Self: GpioProperties,
Expand All @@ -960,6 +983,18 @@ where
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>>
for GpioPin<InvertedInput<PullDown>, GPIONUM>
where
Self: GpioProperties,
<Self as GpioProperties>::PinType: IsInputPin,
GpioPin<Unknown, GPIONUM>: GpioProperties,
{
fn from(pin: GpioPin<Unknown, GPIONUM>) -> Self {
pin.into_inverted_pull_down_input()
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<Output<PushPull>, GPIONUM>
where
Self: GpioProperties,
Expand All @@ -972,6 +1007,19 @@ where
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>>
for GpioPin<InvertedOutput<PushPull>, GPIONUM>
where
Self: GpioProperties,
<Self as GpioProperties>::PinType: IsOutputPin,
GpioPin<Unknown, GPIONUM>: GpioProperties,
<GpioPin<Unknown, GPIONUM> as GpioProperties>::PinType: IsOutputPin,
{
fn from(pin: GpioPin<Unknown, GPIONUM>) -> Self {
pin.into_inverted_push_pull_output()
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<Analog, GPIONUM>
where
Self: GpioProperties,
Expand All @@ -996,6 +1044,19 @@ where
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>>
for GpioPin<InvertedOutput<OpenDrain>, GPIONUM>
where
Self: GpioProperties,
<Self as GpioProperties>::PinType: IsOutputPin,
GpioPin<Unknown, GPIONUM>: GpioProperties,
<GpioPin<Unknown, GPIONUM> as GpioProperties>::PinType: IsOutputPin,
{
fn from(pin: GpioPin<Unknown, GPIONUM>) -> Self {
pin.into_inverted_open_drain_output()
}
}

impl<const GPIONUM: u8> From<GpioPin<Unknown, GPIONUM>> for GpioPin<Alternate<AF1>, GPIONUM>
where
Self: GpioProperties,
Expand Down

0 comments on commit b638e0f

Please sign in to comment.