add single pump test mode to config page
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<html>
|
||||
<body>
|
||||
<input type="button" id="test" value="Test">
|
||||
<h2>Current Firmware</h2>
|
||||
<div>
|
||||
<div id="firmware_buildtime">Buildtime loading</div>
|
||||
|
@@ -10,7 +10,7 @@ use core::result::Result::Ok;
|
||||
use embedded_svc::http::Method;
|
||||
use esp_idf_svc::http::server::{Configuration, EspHttpServer};
|
||||
use heapless::String;
|
||||
use serde::Serialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
config::{Config, WifiConfig},
|
||||
@@ -28,6 +28,11 @@ struct VersionInfo<'a> {
|
||||
build_time: &'a str
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
|
||||
pub struct TestPump{
|
||||
pump: usize
|
||||
}
|
||||
|
||||
pub fn httpd_initial(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
let mut server = shared();
|
||||
server
|
||||
@@ -91,15 +96,6 @@ pub fn httpd_initial(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>>
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
server
|
||||
.fn_handler("/boardtest", Method::Post, move |_| {
|
||||
let mut board = BOARD_ACCESS.lock().unwrap();
|
||||
board.test()?;
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
server
|
||||
}
|
||||
|
||||
@@ -257,4 +253,39 @@ pub fn shared() -> Box<EspHttpServer<'static>> {
|
||||
})
|
||||
.unwrap();
|
||||
server
|
||||
.fn_handler("/boardtest", Method::Post, move |_| {
|
||||
let mut board = BOARD_ACCESS.lock().unwrap();
|
||||
board.test()?;
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
server
|
||||
.fn_handler("/pumptest", Method::Post, |mut request| {
|
||||
let mut buf = [0_u8; 3072];
|
||||
let read = request.read(&mut buf);
|
||||
if read.is_err() {
|
||||
let error_text = read.unwrap_err().to_string();
|
||||
println!("Could not parse testrequest {}", error_text);
|
||||
request
|
||||
.into_status_response(500)?
|
||||
.write(error_text.as_bytes())?;
|
||||
return anyhow::Ok(());
|
||||
}
|
||||
let actual_data = &buf[0..read.unwrap()];
|
||||
println!("Raw data {}", from_utf8(actual_data).unwrap());
|
||||
let pump_test: Result<TestPump, serde_json::Error> = serde_json::from_slice(actual_data);
|
||||
if pump_test.is_err() {
|
||||
let error_text = pump_test.unwrap_err().to_string();
|
||||
println!("Could not parse TestPump {}", error_text);
|
||||
request
|
||||
.into_status_response(500)?
|
||||
.write(error_text.as_bytes())?;
|
||||
return Ok(());
|
||||
}
|
||||
let mut board = BOARD_ACCESS.lock().unwrap();
|
||||
board.test_pump(pump_test.unwrap().pump)?;
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
server
|
||||
}
|
||||
|
Reference in New Issue
Block a user