Skip to content

Commit cb36473

Browse files
committed
ev: propagate and use new parameters
1 parent 7a4574e commit cb36473

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

src/ev.rs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ pub struct BatteryData {
3232
#[derive(Clone)]
3333
pub struct RestContext {
3434
pub sensor_channel: Option<u8>,
35+
pub ev_battery_capacity: u64,
36+
pub ev_factor: f32,
3537
}
3638

3739
pub async fn rest_server(tx: Sender<Packet>, ctx: Arc<Mutex<RestContext>>) -> Result<()> {
@@ -59,7 +61,14 @@ pub async fn rest_server(tx: Sender<Packet>, ctx: Arc<Mutex<RestContext>>) -> Re
5961
info!("{} Received battery level: {}", NAME, data.battery_level);
6062
let rest_ctx = ctx.lock().await;
6163
if let Some(ch) = rest_ctx.sensor_channel {
62-
let _ = send_ev_data(tx, data.battery_level, ch).await;
64+
let _ = send_ev_data(
65+
tx,
66+
data.battery_level,
67+
ch,
68+
rest_ctx.ev_battery_capacity,
69+
rest_ctx.ev_factor,
70+
)
71+
.await;
6372
} else {
6473
warn!("{} Not sending packet because no sensor channel yet", NAME);
6574
}
@@ -84,7 +93,13 @@ fn scale_percent_to_value(percent: f32, max_value: u64) -> u64 {
8493
}
8594

8695
/// EV sensor batch data send
87-
pub async fn send_ev_data(tx: Sender<Packet>, level: f32, sensor_ch: u8) -> Result<()> {
96+
pub async fn send_ev_data(
97+
tx: Sender<Packet>,
98+
level: f32,
99+
sensor_ch: u8,
100+
ev_battery_capacity: u64,
101+
ev_factor: f32,
102+
) -> Result<()> {
88103
// parse initial sample Ford data
89104
let mut msg = SensorBatch::parse_from_bytes(FORD_EV_MODEL)?;
90105

@@ -105,7 +120,7 @@ pub async fn send_ev_data(tx: Sender<Packet>, level: f32, sensor_ch: u8) -> Resu
105120
.u3
106121
.as_mut()
107122
.unwrap()
108-
.u1 = 0.075;
123+
.u1 = ev_factor;
109124

110125
// kwh in battery?
111126
msg.energy_model_control[0]
@@ -115,7 +130,7 @@ pub async fn send_ev_data(tx: Sender<Packet>, level: f32, sensor_ch: u8) -> Resu
115130
.u3
116131
.as_mut()
117132
.unwrap()
118-
.u1 = scale_percent_to_value(level, 22000);
133+
.u1 = scale_percent_to_value(level, ev_battery_capacity);
119134
// max battery kwh?
120135
msg.energy_model_control[0]
121136
.u1
@@ -124,7 +139,7 @@ pub async fn send_ev_data(tx: Sender<Packet>, level: f32, sensor_ch: u8) -> Resu
124139
.u4
125140
.as_mut()
126141
.unwrap()
127-
.u1 = 22000;
142+
.u1 = ev_battery_capacity;
128143

129144
// creating back binary data for sending
130145
let mut payload: Vec<u8> = msg.write_to_bytes()?;

src/io_uring.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ pub async fn io_loop(
209209
dhu: bool,
210210
ev: bool,
211211
ev_battery_logger: Option<PathBuf>,
212+
ev_battery_capacity: u64,
213+
ev_factor: f32,
212214
) -> Result<()> {
213215
// prepare/bind needed TCP listeners
214216
let mut dhu_listener = None;
@@ -356,6 +358,8 @@ pub async fn io_loop(
356358
if mitm && ev {
357359
let ctx = RestContext {
358360
sensor_channel: None,
361+
ev_battery_capacity,
362+
ev_factor,
359363
};
360364
let ctx = Arc::new(Mutex::new(ctx));
361365

src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,8 @@ fn main() {
445445
let dhu = config.dhu;
446446
let ev = config.ev;
447447
let ev_battery_logger = config.ev_battery_logger.clone();
448+
let ev_battery_capacity = config.ev_battery_capacity.clone();
449+
let ev_factor = config.ev_factor.clone();
448450

449451
// build and spawn main tokio runtime
450452
let runtime = Builder::new_multi_thread().enable_all().build().unwrap();
@@ -468,6 +470,8 @@ fn main() {
468470
dhu,
469471
ev,
470472
ev_battery_logger,
473+
ev_battery_capacity,
474+
ev_factor,
471475
));
472476

473477
info!(

0 commit comments

Comments
 (0)