use crate::FunctionSelect;
use crate::pins::{
    Pa0, Pa1, Pa2, Pa3, Pa4, Pa5, Pa6, Pa7, Pa8, Pa9, Pa10, Pa11, Pa12, Pa13, Pa14, Pa15, Pa24,
    Pa25, Pa26, Pa27, Pa28, Pa29, Pa30, Pa31, Pb0, Pb1, Pb2, Pb3, Pb4, Pb5, Pb6, Pb10, Pb11, Pb12,
    Pb13, Pb14, Pb15, Pb16, Pb17, Pb18, Pb19, Pb20, Pb21, Pb22, Pb23, PinId,
};
use crate::timer::{
    Tim0Pin, Tim1Pin, Tim2Pin, Tim3Pin, Tim4Pin, Tim5Pin, Tim6Pin, Tim7Pin, Tim8Pin, Tim9Pin,
    Tim10Pin, Tim11Pin, Tim12Pin, Tim13Pin, Tim14Pin, Tim15Pin, Tim16Pin, Tim17Pin, Tim18Pin,
    Tim19Pin, Tim20Pin, Tim21Pin, Tim22Pin, Tim23Pin,
};

pin_and_tim!(Pa0, FunctionSelect::Sel1, 0);
pin_and_tim!(Pa1, FunctionSelect::Sel1, 1);
pin_and_tim!(Pa2, FunctionSelect::Sel1, 2);
pin_and_tim!(Pa3, FunctionSelect::Sel1, 3);
pin_and_tim!(Pa4, FunctionSelect::Sel1, 4);
pin_and_tim!(Pa5, FunctionSelect::Sel1, 5);
pin_and_tim!(Pa6, FunctionSelect::Sel1, 6);
pin_and_tim!(Pa7, FunctionSelect::Sel1, 7);
pin_and_tim!(Pa8, FunctionSelect::Sel1, 8);
pin_and_tim!(Pa9, FunctionSelect::Sel1, 9);
pin_and_tim!(Pa10, FunctionSelect::Sel1, 10);
pin_and_tim!(Pa11, FunctionSelect::Sel1, 11);
pin_and_tim!(Pa12, FunctionSelect::Sel1, 12);
pin_and_tim!(Pa13, FunctionSelect::Sel1, 13);
pin_and_tim!(Pa14, FunctionSelect::Sel1, 14);
pin_and_tim!(Pa15, FunctionSelect::Sel1, 15);

pin_and_tim!(Pa24, FunctionSelect::Sel2, 16);
pin_and_tim!(Pa25, FunctionSelect::Sel2, 17);
pin_and_tim!(Pa26, FunctionSelect::Sel2, 18);
pin_and_tim!(Pa27, FunctionSelect::Sel2, 19);
pin_and_tim!(Pa28, FunctionSelect::Sel2, 20);
pin_and_tim!(Pa29, FunctionSelect::Sel2, 21);
pin_and_tim!(Pa30, FunctionSelect::Sel2, 22);
pin_and_tim!(Pa31, FunctionSelect::Sel2, 23);

pin_and_tim!(Pb0, FunctionSelect::Sel3, 0);
pin_and_tim!(Pb1, FunctionSelect::Sel3, 1);
pin_and_tim!(Pb2, FunctionSelect::Sel3, 2);
pin_and_tim!(Pb3, FunctionSelect::Sel3, 3);
pin_and_tim!(Pb4, FunctionSelect::Sel3, 4);
pin_and_tim!(Pb5, FunctionSelect::Sel3, 5);
pin_and_tim!(Pb6, FunctionSelect::Sel3, 6);

pin_and_tim!(Pb10, FunctionSelect::Sel3, 10);
pin_and_tim!(Pb11, FunctionSelect::Sel3, 11);
pin_and_tim!(Pb12, FunctionSelect::Sel3, 12);
pin_and_tim!(Pb13, FunctionSelect::Sel3, 13);
pin_and_tim!(Pb14, FunctionSelect::Sel3, 14);
pin_and_tim!(Pb15, FunctionSelect::Sel3, 15);
pin_and_tim!(Pb16, FunctionSelect::Sel3, 16);
pin_and_tim!(Pb17, FunctionSelect::Sel3, 17);
pin_and_tim!(Pb18, FunctionSelect::Sel3, 18);
pin_and_tim!(Pb19, FunctionSelect::Sel3, 19);
pin_and_tim!(Pb20, FunctionSelect::Sel3, 20);
pin_and_tim!(Pb21, FunctionSelect::Sel3, 21);
pin_and_tim!(Pb22, FunctionSelect::Sel3, 22);
pin_and_tim!(Pb23, FunctionSelect::Sel3, 23);
