[][src]Trait arduino_mkrzero::sercom::Map

pub trait Map<S, P> where
    P: PadNum,
    S: Sercom
{ type Id: PinId; type Mode: PinMode; }

Type-level function mapping Pads to Pins

This trait acts as a type-level function. It takes two types as arguments, the Sercom and PadNum of a Pad, and returns the PinId and PinMode for the corresponding Pin.

For the SAMD51 and SAME5x series chips, all pins for a given SERCOM must come from the same IOSET. To account for this, we introduce a new IoSet meta-type and implement Map on its instances. For a given Sercom and PadNum, the IoSet uniquely identifies a corresponding PinId and PinMode.

The SAMD11 and SAMD21 series chips are not limited by IOSET. Any combination of valid pins for a given SERCOM is acceptable. Thus, the Map trait is implemented directly on PinIds. Because the same Pin can often be used for two different Pads, the Map trait acts to map a Sercom/PadNum pair to the correct PinMode for the PinId.

Associated Types

type Id: PinId[src]

The PinId for the corresponding pin

type Mode: PinMode[src]

The PinMode for the corresponding pin

Loading content...

Implementors

impl Map<Sercom0, Pad0> for PA04[src]

type Id = PA04

type Mode = Alternate<D>

impl Map<Sercom0, Pad0> for PA08[src]

type Id = PA08

type Mode = Alternate<C>

impl Map<Sercom0, Pad1> for PA05[src]

type Id = PA05

type Mode = Alternate<D>

impl Map<Sercom0, Pad1> for PA09[src]

type Id = PA09

type Mode = Alternate<C>

impl Map<Sercom0, Pad2> for PA06[src]

type Id = PA06

type Mode = Alternate<D>

impl Map<Sercom0, Pad2> for PA10[src]

type Id = PA10

type Mode = Alternate<C>

impl Map<Sercom0, Pad3> for PA07[src]

type Id = PA07

type Mode = Alternate<D>

impl Map<Sercom0, Pad3> for PA11[src]

type Id = PA11

type Mode = Alternate<C>

impl Map<Sercom1, Pad0> for PA00[src]

type Id = PA00

type Mode = Alternate<D>

impl Map<Sercom1, Pad0> for PA16[src]

type Id = PA16

type Mode = Alternate<C>

impl Map<Sercom1, Pad1> for PA01[src]

type Id = PA01

type Mode = Alternate<D>

impl Map<Sercom1, Pad1> for PA17[src]

type Id = PA17

type Mode = Alternate<C>

impl Map<Sercom1, Pad2> for PA18[src]

type Id = PA18

type Mode = Alternate<C>

impl Map<Sercom1, Pad2> for PA30[src]

type Id = PA30

type Mode = Alternate<D>

impl Map<Sercom1, Pad3> for PA19[src]

type Id = PA19

type Mode = Alternate<C>

impl Map<Sercom1, Pad3> for PA31[src]

type Id = PA31

type Mode = Alternate<D>

impl Map<Sercom2, Pad0> for PA08[src]

type Id = PA08

type Mode = Alternate<D>

impl Map<Sercom2, Pad0> for PA12[src]

type Id = PA12

type Mode = Alternate<C>

impl Map<Sercom2, Pad1> for PA09[src]

type Id = PA09

type Mode = Alternate<D>

impl Map<Sercom2, Pad1> for PA13[src]

type Id = PA13

type Mode = Alternate<C>

impl Map<Sercom2, Pad2> for PA10[src]

type Id = PA10

type Mode = Alternate<D>

impl Map<Sercom2, Pad2> for PA14[src]

type Id = PA14

type Mode = Alternate<C>

impl Map<Sercom2, Pad3> for PA11[src]

type Id = PA11

type Mode = Alternate<D>

impl Map<Sercom2, Pad3> for PA15[src]

type Id = PA15

type Mode = Alternate<C>

impl Map<Sercom3, Pad0> for PA16[src]

type Id = PA16

type Mode = Alternate<D>

impl Map<Sercom3, Pad0> for PA22[src]

type Id = PA22

type Mode = Alternate<C>

impl Map<Sercom3, Pad1> for PA17[src]

type Id = PA17

type Mode = Alternate<D>

impl Map<Sercom3, Pad1> for PA23[src]

type Id = PA23

type Mode = Alternate<C>

impl Map<Sercom3, Pad2> for PA18[src]

type Id = PA18

type Mode = Alternate<D>

impl Map<Sercom3, Pad2> for PA20[src]

type Id = PA20

type Mode = Alternate<D>

impl Map<Sercom3, Pad2> for PA24[src]

type Id = PA24

type Mode = Alternate<C>

impl Map<Sercom3, Pad3> for PA19[src]

type Id = PA19

type Mode = Alternate<D>

impl Map<Sercom3, Pad3> for PA21[src]

type Id = PA21

type Mode = Alternate<D>

impl Map<Sercom3, Pad3> for PA25[src]

type Id = PA25

type Mode = Alternate<C>

impl Map<Sercom4, Pad0> for PA12[src]

type Id = PA12

type Mode = Alternate<D>

impl Map<Sercom4, Pad0> for PB08[src]

type Id = PB08

type Mode = Alternate<D>

impl Map<Sercom4, Pad1> for PA13[src]

type Id = PA13

type Mode = Alternate<D>

impl Map<Sercom4, Pad1> for PB09[src]

type Id = PB09

type Mode = Alternate<D>

impl Map<Sercom4, Pad2> for PA14[src]

type Id = PA14

type Mode = Alternate<D>

impl Map<Sercom4, Pad2> for PB10[src]

type Id = PB10

type Mode = Alternate<D>

impl Map<Sercom4, Pad3> for PA15[src]

type Id = PA15

type Mode = Alternate<D>

impl Map<Sercom4, Pad3> for PB11[src]

type Id = PB11

type Mode = Alternate<D>

impl Map<Sercom5, Pad0> for PA22[src]

type Id = PA22

type Mode = Alternate<D>

impl Map<Sercom5, Pad0> for PB02[src]

type Id = PB02

type Mode = Alternate<D>

impl Map<Sercom5, Pad1> for PA23[src]

type Id = PA23

type Mode = Alternate<D>

impl Map<Sercom5, Pad1> for PB03[src]

type Id = PB03

type Mode = Alternate<D>

impl Map<Sercom5, Pad2> for PA20[src]

type Id = PA20

type Mode = Alternate<C>

impl Map<Sercom5, Pad2> for PA24[src]

type Id = PA24

type Mode = Alternate<D>

impl Map<Sercom5, Pad2> for PB22[src]

type Id = PB22

type Mode = Alternate<D>

impl Map<Sercom5, Pad3> for PA21[src]

type Id = PA21

type Mode = Alternate<C>

impl Map<Sercom5, Pad3> for PA25[src]

type Id = PA25

type Mode = Alternate<D>

impl Map<Sercom5, Pad3> for PB23[src]

type Id = PB23

type Mode = Alternate<D>

impl<S, P, I> Map<S, P> for Pin<I, <I as Map<S, P>>::Mode> where
    P: PadNum,
    I: PinId + Map<S, P>,
    S: Sercom
[src]

type Id = I

type Mode = <I as Map<S, P>>::Mode

Loading content...