eculocate

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 9137ddcbb1c39feca7acb99b60ff4fb673b22b47
parent e70bb99786eb44786bd4649a71995fb45a04c5fa
Author: Daniel Barlow <dan@telent.net>
Date:   Mon, 24 Nov 2025 21:20:46 +0000

add TPS decoding

Diffstat:
Msrc/ecu.rs | 18++++++++++++------
Msrc/main.rs | 3+++
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}"); } } };