finis exersise 8.3

This commit is contained in:
2025-10-30 16:30:40 +01:00
parent 1410897f8f
commit a8d37effb2
4 changed files with 631 additions and 86 deletions

View File

@@ -52,37 +52,44 @@ impl<'a, T: OutputPin> Toggle<T> for ToggleLed<'a, T> {
pub struct Leds<'a,
RP: OutputPin, RT: Toggle<RP>,
GP: OutputPin, GT: Toggle<GP>,
OP: OutputPin, OT: Toggle<OP>,
BP: OutputPin, BT: Toggle<BP>
> {
pub red: &'a mut RT,
pub green: &'a mut GT,
pub orange: &'a mut OT,
pub blue: &'a mut BT,
// phantom data to convince rustc the generics RP, GP and BP are used.
_r: PhantomData<RP>,
_g: PhantomData<GP>,
_o: PhantomData<OP>,
_b: PhantomData<BP>,
}
impl<'a,
RP: OutputPin, RT: Toggle<RP>,
GP: OutputPin, GT: Toggle<GP>,
OP: OutputPin, OT: Toggle<OP>,
BP: OutputPin, BT: Toggle<BP>
> Leds<'a, RP, RT, GP, GT, BP, BT> {
pub fn new(red: &'a mut RT, green: &'a mut GT, blue: &'a mut BT) -> Self {
> Leds<'a, RP, RT, GP, GT, OP, OT, BP, BT> {
pub fn new(red: &'a mut RT, green: &'a mut GT, orange: &'a mut OT, blue: &'a mut BT) -> Self {
Self {
red,
green,
orange,
blue,
_r: PhantomData,
_g: PhantomData,
_o: PhantomData,
_b: PhantomData,
}
}
pub fn set_all(&mut self, red: PinState, green: PinState, blue: PinState) {
pub fn set_all(&mut self, red: PinState, green: PinState, orange: PinState, blue: PinState) {
let _ = self.red.set(red);
let _ = self.blue.set(blue);
let _ = self.orange.set(orange);
let _ = self.green.set(green);
let _ = self.blue.set(blue);
}
}