Expand description
Type-level tools to configure SERCOM pads
This module helps configure Pin
s as SERCOM pads. It provides type-level
tools to convert Pin
s to the correct PinMode
and to enforce type-level
constraints at compile-time.
Overview
A SERCOM pad is defined by two types, its corresponding Sercom
instance
and its PadNum
, from Pad0
to Pad3
. However, a given SERCOM pad
can usually be mapped to several possible PinId
s.
There are two primary traits defined in this module:
- The
IsPad
trait is implemented onPin
types that are properly configured as SERCOM pads, withPinMode
AlternateC
orAlternateD
. It acts as both a type class for SERCOM pads and as a type-level function to recover the correspondingSercom
andPadNum
types from thePin
. - The
GetPad
trait maps eachPinId
to its corresponding, pad-related types. ThePadMode
alias usesGetPad
to recover the correspondingPinMode
for a given SERCOM pad, while thePad
alias recovers the configuredPin
type.
Enums
- Type-level variant of
PadNum
representing SERCOM pad 0 - Type-level variant of
PadNum
representing SERCOM pad 1 - Type-level variant of
PadNum
representing SERCOM pad 2 - Type-level variant of
PadNum
representing SERCOM pad 3
Traits
- Type-level function mapping
OptionalPinId
s to their correspondingOptionalPad
s - Type-level function mapping
PinId
s to SERCOM-pad-related types - Type class for
Pin
s configured as SERCOM pads - Type-level equivalent of
Option<Pad>
- Type-level equivalent of
Option<PadNum>
- Type-level enum representing a SERCOM pad number
- Type-level equivalent of
Some(Pad)