6 Commits

Author SHA1 Message Date
e0e93246d0 move all mqtt publishing functions to mqtt module 2026-05-10 17:23:40 +02:00
1430359caa refctor: TankInfo structure (consistent layout)
- fix: use tagged enum serialization for TankError
- fix: rename TankInfo fields for consistent naming (volume_ml, pct, water_temp_c)
- renamed some fields for better clarity on contained value
2026-05-10 17:23:38 +02:00
626c10b98b refactor: PlantInfo structure (consistent layout)
- fix: use tagged enum serialization for MoistureSensorError and PumpError
- fix: flatten PlantInfo sensors to SensorTelemetry with top-level moisture_pct
2026-05-10 17:23:36 +02:00
e400de1fc2 refactor: BatteryInfo structure (consistent layout)
- use tagged enum serialization for BatteryError
- flatten BatteryInfo telemetry with consistent field names and typed error
2026-05-10 17:23:34 +02:00
d0066b2709 fix: serialize firmware/state as JSON instead of Debug format 2026-05-10 17:23:31 +02:00
52049c456e update read_up_to_bytes_from_request with more robust implementation 2026-05-10 17:22:45 +02:00

View File

@@ -221,12 +221,18 @@ where
let mut data_store = Vec::new(); let mut data_store = Vec::new();
let mut total_read = 0; let mut total_read = 0;
loop { loop {
let left = max_read - total_read;
let mut buf = [0_u8; 64]; let mut buf = [0_u8; 64];
let read = request.read(&mut buf).await?; let s_buf = if buf.len() <= left {
&mut buf
} else {
&mut buf[0..left]
};
let read = request.read(s_buf).await?;
if read == 0 { if read == 0 {
break; break;
} }
let actual_data = &buf[0..read]; let actual_data = &s_buf[0..read];
total_read += read; total_read += read;
if total_read > max_read { if total_read > max_read {
bail!("Request too large {total_read} > {max_read}"); bail!("Request too large {total_read} > {max_read}");