@@ -32,6 +32,8 @@ pub struct BatteryData {
3232#[ derive( Clone ) ]
3333pub struct RestContext {
3434 pub sensor_channel : Option < u8 > ,
35+ pub ev_battery_capacity : u64 ,
36+ pub ev_factor : f32 ,
3537}
3638
3739pub 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 ( ) ?;
0 commit comments