pixtend 0.1.0

Rust library for the PiXtend V2L board
Documentation
use deku::prelude::*;

#[derive(Debug, DekuRead, DekuWrite, PartialEq, Eq, Default)]
#[deku(id_type = "u8")]
pub enum Watchdog {
    #[default]
    #[deku(id = "0")]
    Deactivated,
    #[deku(id = "1")]
    Activated16ms,
    #[deku(id = "2")]
    Activated32ms,
    #[deku(id = "3")]
    Activated64ms,
    #[deku(id = "4")]
    Activated0_125s,
    #[deku(id = "5")]
    Activated0_25s,
    #[deku(id = "6")]
    Activated0_5s,
    #[deku(id = "7")]
    Activated1s,
    #[deku(id = "8")]
    Activated2s,
    #[deku(id = "9")]
    Activated4s,
    #[deku(id = "10")]
    Activated8s,
}

#[test]
fn test_watchdog_control() {
    let data = [0];
    let (_, control) = Watchdog::from_bytes((&data, 0)).unwrap();
    assert_eq!(control, Watchdog::Deactivated);

    let data = [4];
    let (_, control) = Watchdog::from_bytes((&data, 0)).unwrap();
    assert_eq!(control, Watchdog::Activated0_125s);

    let data = [7];
    let (_, control) = Watchdog::from_bytes((&data, 0)).unwrap();
    assert_eq!(control, Watchdog::Activated1s);

    let data = [10];
    let (_, control) = Watchdog::from_bytes((&data, 0)).unwrap();
    assert_eq!(control, Watchdog::Activated8s);

    let control = Watchdog::Deactivated;
    let data = control.to_bytes().unwrap();
    assert_eq!(data, [0]);

    let control = Watchdog::Activated0_125s;
    let data = control.to_bytes().unwrap();
    assert_eq!(data, [4]);
}