Skip to content

Commit

Permalink
Valid config on parse
Browse files Browse the repository at this point in the history
  • Loading branch information
yorickdewid committed May 30, 2024
1 parent 15d5f1f commit a4b4125
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
2 changes: 0 additions & 2 deletions hcu/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@ mod app {
vecraft::console::Console::new(usart2)
};

assert!(config.canbus1_bitrate == 250_000 || config.canbus1_bitrate == 500_000);

let mut canbus1 = {
let rx = gpiod.pd0.into_alternate().speed(gpio::Speed::VeryHigh);
let tx = gpiod.pd1.into_alternate().speed(gpio::Speed::VeryHigh);
Expand Down
2 changes: 0 additions & 2 deletions m-ecu/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,6 @@ mod app {
vecraft::console::Console::new(usart2)
};

assert!(config.canbus1_bitrate == 250_000 || config.canbus1_bitrate == 500_000);

let mut canbus1 = {
let rx = gpiod.pd0.into_alternate().speed(gpio::Speed::VeryHigh);
let tx = gpiod.pd1.into_alternate().speed(gpio::Speed::VeryHigh);
Expand Down
7 changes: 6 additions & 1 deletion vecraft/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ impl VecraftConfig {
pub fn safe_mode() -> Self {
Self {
ecu_mode: crate::EcuApplication::SafeMode.into(),
uart_baudrate: 9_600,
..Default::default()
}
}
Expand Down Expand Up @@ -98,7 +99,7 @@ impl Default for VecraftConfig {
ecu_mode: crate::EcuApplication::Unknown.into(),
serial_number: [0; 8],
uart_selected: 0x2,
uart_baudrate: 9_600,
uart_baudrate: 115_200,
canbus1_bitrate: 250_000,
canbus1_termination: true,
j1939_address: 0x25,
Expand All @@ -112,6 +113,10 @@ impl Default for VecraftConfig {
pub enum ConfigError {
InvalidHeader,
InvalidVersion,
InvalidEcuMode,
InvalidUartSelection,
InvalidUartBaudrate,
InvalidCanbusBitrate,
}

// TODO: Replace with an actual error type
Expand Down
12 changes: 11 additions & 1 deletion vecraft/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,17 @@ pub fn get_config<T: WriteRead<Error = I2cError> + Write<Error = I2cError>>(
let mut vecraft_config = [0; VECRAFT_CONFIG_SIZE];
eeprom.read_page(VECRAFT_CONFIG_PAGE, &mut vecraft_config);

VecraftConfig::try_from(&vecraft_config[..])
let config = VecraftConfig::try_from(&vecraft_config[..])?;

if config.ecu_mode() == EcuApplication::Unknown {
return Err(ConfigError::InvalidEcuMode);
}

if config.canbus1_bitrate != 250_000 && config.canbus1_bitrate != 500_000 {
return Err(ConfigError::InvalidCanbusBitrate);
}

Ok(config)
}

pub fn put_config<T: WriteRead<Error = I2cError> + Write<Error = I2cError>>(
Expand Down

0 comments on commit a4b4125

Please sign in to comment.