Implement reboot for artiq_coremgmt

This commit is contained in:
Egor Savkin 2022-10-07 13:05:56 +08:00
parent 38f4d6cd2e
commit 1220268822
1 changed files with 9 additions and 1 deletions

View File

@ -1,6 +1,6 @@
use futures::{future::poll_fn, task::Poll}; use futures::{future::poll_fn, task::Poll};
use libasync::{smoltcp::TcpStream, task}; use libasync::{smoltcp::TcpStream, task};
use libboard_zynq::smoltcp; use libboard_zynq::{smoltcp, slcr};
use libconfig::Config; use libconfig::Config;
use core::cell::RefCell; use core::cell::RefCell;
use alloc::{rc::Rc, vec::Vec, string::String}; use alloc::{rc::Rc, vec::Vec, string::String};
@ -44,6 +44,7 @@ pub enum Request {
ClearLog = 2, ClearLog = 2,
PullLog = 7, PullLog = 7,
SetLogFilter = 3, SetLogFilter = 3,
Reboot = 5,
SetUartLogFilter = 6, SetUartLogFilter = 6,
ConfigRead = 12, ConfigRead = 12,
@ -55,6 +56,7 @@ pub enum Request {
pub enum Reply { pub enum Reply {
Success = 1, Success = 1,
LogContent = 2, LogContent = 2,
RebootImminent = 3,
Error = 6, Error = 6,
ConfigData = 7, ConfigData = 7,
} }
@ -227,6 +229,12 @@ async fn handle_connection(
warn!("erase failed"); warn!("erase failed");
write_i8(stream, Reply::Error as i8).await?; write_i8(stream, Reply::Error as i8).await?;
} }
},
Request::Reboot => {
info!("rebooting");
write_i8(stream, Reply::RebootImminent as i8).await?;
stream.flush().await?;
slcr::reboot();
} }
} }
} }