Skip to content

Commit eb8ce47

Browse files
committed
Return message id instead of min max values on error
1 parent b1e98af commit eb8ce47

File tree

4 files changed

+13
-34
lines changed

4 files changed

+13
-34
lines changed

src/includes/errors.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ pub enum CanError {
55
/// Signal parameter is not within the range
66
/// defined in the dbc
77
ParameterOutOfRange {
8-
/// Minimum value defined in DBC
9-
min: f64,
10-
/// Maximum value defined in DBC
11-
max: f64,
8+
/// dbc message id
9+
message_id: u32,
1210
},
1311
InvalidPayloadSize,
1412
}

src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,9 @@ fn render_signal(mut w: impl Write, signal: &Signal, dbc: &DBC, msg: &Message) -
382382
writeln!(w, r##"#[cfg(feature = "range_checked")]"##)?;
383383
writeln!(
384384
w,
385-
r##"if value < {min}_{typ} || {max}_{typ} < value {{ return Err(CanError::ParameterOutOfRange{{ min: {min}_f64 , max: {max}_f64 }}); }}"##,
385+
r##"if value < {min}_{typ} || {max}_{typ} < value {{ return Err(CanError::ParameterOutOfRange{{ message_id: {message_id} }}); }}"##,
386386
typ = signal_to_rust_type(&signal),
387+
message_id = msg.message_id().0,
387388
min = signal.min(),
388389
max = signal.max(),
389390
)?;

testing/can-messages/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ fn check_range_value_error() {
77
let result = messages::Bar::new(1, 2.0, 3, 4);
88
assert!(matches!(
99
result,
10-
Err(CanError::ParameterOutOfRange { min: 0.0, max: 3.0 })
10+
Err(CanError::ParameterOutOfRange { message_id: 512 })
1111
));
1212
}
1313

testing/can-messages/src/messages.rs

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,7 @@ impl Foo {
9393
pub fn set_voltage(&mut self, value: f32) -> Result<(), CanError> {
9494
#[cfg(feature = "range_checked")]
9595
if value < 0_f32 || 63.9990234375_f32 < value {
96-
return Err(CanError::ParameterOutOfRange {
97-
min: 0_f64,
98-
max: 63.9990234375_f64,
99-
});
96+
return Err(CanError::ParameterOutOfRange { message_id: 256 });
10097
}
10198
let factor = 0.000976562_f32;
10299
let offset = 0_f32;
@@ -141,10 +138,7 @@ impl Foo {
141138
pub fn set_current(&mut self, value: f32) -> Result<(), CanError> {
142139
#[cfg(feature = "range_checked")]
143140
if value < -2048_f32 || 2047.9375_f32 < value {
144-
return Err(CanError::ParameterOutOfRange {
145-
min: -2048_f64,
146-
max: 2047.9375_f64,
147-
});
141+
return Err(CanError::ParameterOutOfRange { message_id: 256 });
148142
}
149143
let factor = 0.0625_f32;
150144
let offset = 0_f32;
@@ -231,10 +225,7 @@ impl Bar {
231225
pub fn set_one(&mut self, value: u8) -> Result<(), CanError> {
232226
#[cfg(feature = "range_checked")]
233227
if value < 0_u8 || 3_u8 < value {
234-
return Err(CanError::ParameterOutOfRange {
235-
min: 0_f64,
236-
max: 3_f64,
237-
});
228+
return Err(CanError::ParameterOutOfRange { message_id: 512 });
238229
}
239230
let start_bit = 15;
240231
let bits = 2;
@@ -275,10 +266,7 @@ impl Bar {
275266
pub fn set_two(&mut self, value: f32) -> Result<(), CanError> {
276267
#[cfg(feature = "range_checked")]
277268
if value < 0_f32 || 100_f32 < value {
278-
return Err(CanError::ParameterOutOfRange {
279-
min: 0_f64,
280-
max: 100_f64,
281-
});
269+
return Err(CanError::ParameterOutOfRange { message_id: 512 });
282270
}
283271
let factor = 0.39_f32;
284272
let offset = 0_f32;
@@ -327,10 +315,7 @@ impl Bar {
327315
pub fn set_three(&mut self, value: u8) -> Result<(), CanError> {
328316
#[cfg(feature = "range_checked")]
329317
if value < 0_u8 || 7_u8 < value {
330-
return Err(CanError::ParameterOutOfRange {
331-
min: 0_f64,
332-
max: 7_f64,
333-
});
318+
return Err(CanError::ParameterOutOfRange { message_id: 512 });
334319
}
335320
let start_bit = 13;
336321
let bits = 3;
@@ -375,10 +360,7 @@ impl Bar {
375360
pub fn set_four(&mut self, value: u8) -> Result<(), CanError> {
376361
#[cfg(feature = "range_checked")]
377362
if value < 0_u8 || 3_u8 < value {
378-
return Err(CanError::ParameterOutOfRange {
379-
min: 0_f64,
380-
max: 3_f64,
381-
});
363+
return Err(CanError::ParameterOutOfRange { message_id: 512 });
382364
}
383365
let start_bit = 10;
384366
let bits = 2;
@@ -432,10 +414,8 @@ pub enum CanError {
432414
/// Signal parameter is not within the range
433415
/// defined in the dbc
434416
ParameterOutOfRange {
435-
/// Minimum value defined in DBC for signal
436-
min: f64,
437-
/// Maximum value defined in DBC for signal
438-
max: f64,
417+
/// dbc message id
418+
message_id: u32,
439419
},
440420
InvalidPayloadSize,
441421
}

0 commit comments

Comments
 (0)