commit 9137ddcbb1c39feca7acb99b60ff4fb673b22b47
parent e70bb99786eb44786bd4649a71995fb45a04c5fa
Author: Daniel Barlow <dan@telent.net>
Date: Mon, 24 Nov 2025 21:20:46 +0000
add TPS decoding
Diffstat:
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/ecu.rs b/src/ecu.rs
@@ -14,7 +14,8 @@ use log::{info};
pub enum Measure {
- Rpm(i32)
+ Rpm(i32),
+ Tps(u16, u8) // millivolts, %
}
pub struct Ecu<'a> {
@@ -52,9 +53,12 @@ impl Ecu<'_> {
for b in &bytes[0..last] {
sum = sum.wrapping_sub(*b);
}
- let is_correct = sum == bytes[last];
- bytes[last] = sum;
- is_correct
+ if sum == bytes[last] {
+ true
+ } else {
+ bytes[last] = sum;
+ false
+ }
}
@@ -142,8 +146,8 @@ impl Ecu<'_> {
let table = self.fetch_table(0x11, &mut buf).await;
match table {
[rpm_h, rpm_l,
- _tps_v,
- _tps_100,
+ tps_v,
+ tps_100,
_ect_v,
_ect_deg,
_iat_v,
@@ -158,6 +162,8 @@ impl Ecu<'_> {
] => {
let rpm : i32 = (rpm_h << 8 + rpm_l).into();
callback(Measure::Rpm(rpm)).await;
+ let v : u16 = (*tps_v).into();
+ callback(Measure::Tps(v * 5000u16/256, tps_100 / 16)).await;
},
_ => ()
}
diff --git a/src/main.rs b/src/main.rs
@@ -68,6 +68,9 @@ async fn main(_s : Spawner) {
match measure {
Measure::Rpm(v) => {
info!("got rpm {v}");
+ },
+ Measure::Tps(mv, percentage) => {
+ info!("got tps {mv} {percentage}");
}
}
};