implement log localization config generation #1
@ -1,5 +1,6 @@
|
||||
use std::{collections::HashMap, sync::Mutex};
|
||||
use std::{collections::{BTreeMap, HashMap}, sync::Mutex};
|
||||
use serde::Serialize;
|
||||
use strum::{EnumIter, IntoEnumIterator};
|
||||
use strum_macros::IntoStaticStr;
|
||||
|
||||
use esp_idf_svc::systime::EspSystemTime;
|
||||
@ -129,7 +130,7 @@ mod tests {
|
||||
|
||||
|
||||
|
||||
#[derive(IntoStaticStr)]
|
||||
#[derive(IntoStaticStr, EnumIter, Serialize, PartialEq, Eq, PartialOrd, Ord, Clone)]
|
||||
pub enum LogMessage {
|
||||
#[strum(serialize = "Reset due to {{txt_long}} requires rtc clear {{a}} and force config mode {{b}}")]
|
||||
reset_reason,
|
||||
@ -155,4 +156,15 @@ pub enum LogMessage {
|
||||
mqtt_stay_alive_rec,
|
||||
#[strum(serialize = "Unknown topic recieved {{txt_long}}")]
|
||||
unknown_topic,
|
||||
}
|
||||
}
|
||||
|
||||
impl LogMessage {
|
||||
pub fn to_log_localisation_config() -> BTreeMap<LogMessage,&'static str> {
|
||||
let mut data = BTreeMap::new();
|
||||
for msg_type in LogMessage::iter() {
|
||||
let s: &'static str = msg_type.clone().into();
|
||||
data.insert(msg_type, s);
|
||||
}
|
||||
data
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ use std::{
|
||||
sync::{atomic::AtomicBool, Arc},
|
||||
};
|
||||
use crate::{
|
||||
espota::OtaUpdate, get_version, map_range_moisture, plant_hal::{FileInfo, PLANT_COUNT}, BOARD_ACCESS,
|
||||
espota::OtaUpdate, get_version, log::LogMessage, map_range_moisture, plant_hal::{FileInfo, PLANT_COUNT}, BOARD_ACCESS
|
||||
};
|
||||
use anyhow::bail;
|
||||
use chrono::DateTime;
|
||||
@ -214,6 +214,10 @@ fn get_log(
|
||||
anyhow::Ok(Some(serde_json::to_string(&output)?))
|
||||
}
|
||||
|
||||
fn get_log_localization_config() -> Result<std::string::String, anyhow::Error> {
|
||||
anyhow::Ok(serde_json::to_string(&LogMessage::to_log_localisation_config())?)
|
||||
}
|
||||
|
||||
fn get_version_web(
|
||||
_request: &mut Request<&mut EspHttpConnection>,
|
||||
) -> Result<Option<std::string::String>, anyhow::Error> {
|
||||
@ -366,6 +370,11 @@ pub fn httpd(reboot_now: Arc<AtomicBool>) -> Box<EspHttpServer<'static>> {
|
||||
handle_error_to500(request, get_log)
|
||||
})
|
||||
.unwrap();
|
||||
server.fn_handler("/log_localization", Method::Get, |request| {
|
||||
cors_response(request, 200, &get_log_localization_config().unwrap())
|
||||
|
||||
})
|
||||
.unwrap();
|
||||
server
|
||||
.fn_handler("/battery", Method::Get, |request| {
|
||||
handle_error_to500(request, get_battery_state)
|
||||
|
Loading…
x
Reference in New Issue
Block a user