k210-hal 0.2.0

HAL for K210 SoC
Documentation
use core::marker::PhantomData;

pub struct ExternalPin0(PhantomData<*const ()>);
pub struct ExternalPin1(PhantomData<*const ()>);
pub struct ExternalPin2(PhantomData<*const ()>);
pub struct ExternalPin3(PhantomData<*const ()>);
pub struct ExternalPin4(PhantomData<*const ()>);
pub struct ExternalPin5(PhantomData<*const ()>);
pub struct ExternalPin6(PhantomData<*const ()>);
pub struct ExternalPin7(PhantomData<*const ()>);
pub struct ExternalPin8(PhantomData<*const ()>);
pub struct ExternalPin9(PhantomData<*const ()>);
pub struct ExternalPin10(PhantomData<*const ()>);
pub struct ExternalPin11(PhantomData<*const ()>);
pub struct ExternalPin12(PhantomData<*const ()>);
pub struct ExternalPin13(PhantomData<*const ()>);
pub struct ExternalPin14(PhantomData<*const ()>);
pub struct ExternalPin15(PhantomData<*const ()>);
pub struct ExternalPin16(PhantomData<*const ()>);
pub struct ExternalPin17(PhantomData<*const ()>);
pub struct ExternalPin18(PhantomData<*const ()>);
pub struct ExternalPin19(PhantomData<*const ()>);
pub struct ExternalPin20(PhantomData<*const ()>);
pub struct ExternalPin21(PhantomData<*const ()>);
pub struct ExternalPin22(PhantomData<*const ()>);
pub struct ExternalPin23(PhantomData<*const ()>);
pub struct ExternalPin24(PhantomData<*const ()>);
pub struct ExternalPin25(PhantomData<*const ()>);
pub struct ExternalPin26(PhantomData<*const ()>);
pub struct ExternalPin27(PhantomData<*const ()>);
pub struct ExternalPin28(PhantomData<*const ()>);
pub struct ExternalPin29(PhantomData<*const ()>);
pub struct ExternalPin30(PhantomData<*const ()>);
pub struct ExternalPin31(PhantomData<*const ()>);
pub struct ExternalPin32(PhantomData<*const ()>);
pub struct ExternalPin33(PhantomData<*const ()>);
pub struct ExternalPin34(PhantomData<*const ()>);
pub struct ExternalPin35(PhantomData<*const ()>);
pub struct ExternalPin36(PhantomData<*const ()>);
pub struct ExternalPin37(PhantomData<*const ()>);
pub struct ExternalPin38(PhantomData<*const ()>);
pub struct ExternalPin39(PhantomData<*const ()>);
pub struct ExternalPin40(PhantomData<*const ()>);
pub struct ExternalPin41(PhantomData<*const ()>);
pub struct ExternalPin42(PhantomData<*const ()>);
pub struct ExternalPin43(PhantomData<*const ()>);
pub struct ExternalPin44(PhantomData<*const ()>);
pub struct ExternalPin45(PhantomData<*const ()>);
pub struct ExternalPin46(PhantomData<*const ()>);
pub struct ExternalPin47(PhantomData<*const ()>);

mod closed_trait {
    pub trait ExternalPin {
        const INDEX: usize;
    }
}
pub(crate) use closed_trait::ExternalPin;

impl ExternalPin for ExternalPin0 { const INDEX: usize = 0; }
impl ExternalPin for ExternalPin1 { const INDEX: usize = 1; }
impl ExternalPin for ExternalPin2 { const INDEX: usize = 2; }
impl ExternalPin for ExternalPin3 { const INDEX: usize = 3; }
impl ExternalPin for ExternalPin4 { const INDEX: usize = 4; }
impl ExternalPin for ExternalPin5 { const INDEX: usize = 5; }
impl ExternalPin for ExternalPin6 { const INDEX: usize = 6; }
impl ExternalPin for ExternalPin7 { const INDEX: usize = 7; }
impl ExternalPin for ExternalPin8 { const INDEX: usize = 8; }
impl ExternalPin for ExternalPin9 { const INDEX: usize = 9; }
impl ExternalPin for ExternalPin10 { const INDEX: usize = 10; }
impl ExternalPin for ExternalPin11 { const INDEX: usize = 11; }
impl ExternalPin for ExternalPin12 { const INDEX: usize = 12; }
impl ExternalPin for ExternalPin13 { const INDEX: usize = 13; }
impl ExternalPin for ExternalPin14 { const INDEX: usize = 14; }
impl ExternalPin for ExternalPin15 { const INDEX: usize = 15; }
impl ExternalPin for ExternalPin16 { const INDEX: usize = 16; }
impl ExternalPin for ExternalPin17 { const INDEX: usize = 17; }
impl ExternalPin for ExternalPin18 { const INDEX: usize = 18; }
impl ExternalPin for ExternalPin19 { const INDEX: usize = 19; }
impl ExternalPin for ExternalPin20 { const INDEX: usize = 20; }
impl ExternalPin for ExternalPin21 { const INDEX: usize = 21; }
impl ExternalPin for ExternalPin22 { const INDEX: usize = 22; }
impl ExternalPin for ExternalPin23 { const INDEX: usize = 23; }
impl ExternalPin for ExternalPin24 { const INDEX: usize = 24; }
impl ExternalPin for ExternalPin25 { const INDEX: usize = 25; }
impl ExternalPin for ExternalPin26 { const INDEX: usize = 26; }
impl ExternalPin for ExternalPin27 { const INDEX: usize = 27; }
impl ExternalPin for ExternalPin28 { const INDEX: usize = 28; }
impl ExternalPin for ExternalPin29 { const INDEX: usize = 29; }
impl ExternalPin for ExternalPin30 { const INDEX: usize = 30; }
impl ExternalPin for ExternalPin31 { const INDEX: usize = 31; }
impl ExternalPin for ExternalPin32 { const INDEX: usize = 32; }
impl ExternalPin for ExternalPin33 { const INDEX: usize = 33; }
impl ExternalPin for ExternalPin34 { const INDEX: usize = 34; }
impl ExternalPin for ExternalPin35 { const INDEX: usize = 35; }
impl ExternalPin for ExternalPin36 { const INDEX: usize = 36; }
impl ExternalPin for ExternalPin37 { const INDEX: usize = 37; }
impl ExternalPin for ExternalPin38 { const INDEX: usize = 38; }
impl ExternalPin for ExternalPin39 { const INDEX: usize = 39; }
impl ExternalPin for ExternalPin40 { const INDEX: usize = 40; }
impl ExternalPin for ExternalPin41 { const INDEX: usize = 41; }
impl ExternalPin for ExternalPin42 { const INDEX: usize = 42; }
impl ExternalPin for ExternalPin43 { const INDEX: usize = 43; }
impl ExternalPin for ExternalPin44 { const INDEX: usize = 44; }
impl ExternalPin for ExternalPin45 { const INDEX: usize = 45; }
impl ExternalPin for ExternalPin46 { const INDEX: usize = 46; }
impl ExternalPin for ExternalPin47 { const INDEX: usize = 47; }


pub struct ExternalPins {
    pub pin0: ExternalPin0,
    pub pin1: ExternalPin1,
    pub pin2: ExternalPin2,
    pub pin3: ExternalPin3,
    pub pin4: ExternalPin4,
    pub pin5: ExternalPin5,
    pub pin6: ExternalPin6,
    pub pin7: ExternalPin7,
    pub pin8: ExternalPin8,
    pub pin9: ExternalPin9,
    pub pin10: ExternalPin10,
    pub pin11: ExternalPin11,
    pub pin12: ExternalPin12,
    pub pin13: ExternalPin13,
    pub pin14: ExternalPin14,
    pub pin15: ExternalPin15,
    pub pin16: ExternalPin16,
    pub pin17: ExternalPin17,
    pub pin18: ExternalPin18,
    pub pin19: ExternalPin19,
    pub pin20: ExternalPin20,
    pub pin21: ExternalPin21,
    pub pin22: ExternalPin22,
    pub pin23: ExternalPin23,
    pub pin24: ExternalPin24,
    pub pin25: ExternalPin25,
    pub pin26: ExternalPin26,
    pub pin27: ExternalPin27,
    pub pin28: ExternalPin28,
    pub pin29: ExternalPin29,
    pub pin30: ExternalPin30,
    pub pin31: ExternalPin31,
    pub pin32: ExternalPin32,
    pub pin33: ExternalPin33,
    pub pin34: ExternalPin34,
    pub pin35: ExternalPin35,
    pub pin36: ExternalPin36,
    pub pin37: ExternalPin37,
    pub pin38: ExternalPin38,
    pub pin39: ExternalPin39,
    pub pin40: ExternalPin40,
    pub pin41: ExternalPin41,
    pub pin42: ExternalPin42,
    pub pin43: ExternalPin43,
    pub pin44: ExternalPin44,
    pub pin45: ExternalPin45,
    pub pin46: ExternalPin46,
    pub pin47: ExternalPin47,
}

impl ExternalPins {
    pub(crate) fn new() -> Self {
        Self {
            pin0: ExternalPin0(PhantomData),
            pin1: ExternalPin1(PhantomData),
            pin2: ExternalPin2(PhantomData),
            pin3: ExternalPin3(PhantomData),
            pin4: ExternalPin4(PhantomData),
            pin5: ExternalPin5(PhantomData),
            pin6: ExternalPin6(PhantomData),
            pin7: ExternalPin7(PhantomData),
            pin8: ExternalPin8(PhantomData),
            pin9: ExternalPin9(PhantomData),
            pin10: ExternalPin10(PhantomData),
            pin11: ExternalPin11(PhantomData),
            pin12: ExternalPin12(PhantomData),
            pin13: ExternalPin13(PhantomData),
            pin14: ExternalPin14(PhantomData),
            pin15: ExternalPin15(PhantomData),
            pin16: ExternalPin16(PhantomData),
            pin17: ExternalPin17(PhantomData),
            pin18: ExternalPin18(PhantomData),
            pin19: ExternalPin19(PhantomData),
            pin20: ExternalPin20(PhantomData),
            pin21: ExternalPin21(PhantomData),
            pin22: ExternalPin22(PhantomData),
            pin23: ExternalPin23(PhantomData),
            pin24: ExternalPin24(PhantomData),
            pin25: ExternalPin25(PhantomData),
            pin26: ExternalPin26(PhantomData),
            pin27: ExternalPin27(PhantomData),
            pin28: ExternalPin28(PhantomData),
            pin29: ExternalPin29(PhantomData),
            pin30: ExternalPin30(PhantomData),
            pin31: ExternalPin31(PhantomData),
            pin32: ExternalPin32(PhantomData),
            pin33: ExternalPin33(PhantomData),
            pin34: ExternalPin34(PhantomData),
            pin35: ExternalPin35(PhantomData),
            pin36: ExternalPin36(PhantomData),
            pin37: ExternalPin37(PhantomData),
            pin38: ExternalPin38(PhantomData),
            pin39: ExternalPin39(PhantomData),
            pin40: ExternalPin40(PhantomData),
            pin41: ExternalPin41(PhantomData),
            pin42: ExternalPin42(PhantomData),
            pin43: ExternalPin43(PhantomData),
            pin44: ExternalPin44(PhantomData),
            pin45: ExternalPin45(PhantomData),
            pin46: ExternalPin46(PhantomData),
            pin47: ExternalPin47(PhantomData)
        }
    }
}