Skip to content

Commit e5aaa06

Browse files
committed
feat: erase_apps(serial)
Signed-off-by: addrian-77 <lunguadrian30@gmail.com>
1 parent 9cb491b commit e5aaa06

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

tockloader-lib/src/command_impl/generalized.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl CommandEraseApps for TockloaderConnection {
5353
async fn erase_apps(&mut self, settings: &BoardSettings) -> Result<(), TockloaderError> {
5454
match self {
5555
TockloaderConnection::ProbeRS(conn) => conn.erase_apps(settings).await,
56-
TockloaderConnection::Serial(_conn) => todo!(),
56+
TockloaderConnection::Serial(conn) => conn.erase_apps(settings).await,
5757
}
5858
}
5959
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use async_trait::async_trait;
2+
3+
use crate::board_settings::BoardSettings;
4+
use crate::bootloader_serial::{
5+
issue_command, ping_bootloader_and_wait_for_response, Command, Response,
6+
};
7+
use crate::connection::{Connection, SerialConnection};
8+
use crate::errors::{InternalError, TockloaderError};
9+
use crate::CommandEraseApps;
10+
11+
#[async_trait]
12+
impl CommandEraseApps for SerialConnection {
13+
async fn erase_apps(&mut self, settings: &BoardSettings) -> Result<(), TockloaderError> {
14+
if !self.is_open() {
15+
return Err(InternalError::ConnectionNotOpen.into());
16+
}
17+
let stream = self.stream.as_mut().expect("Board must be open");
18+
19+
ping_bootloader_and_wait_for_response(stream).await?;
20+
21+
let pkt = (settings.start_address as u32).to_le_bytes().to_vec();
22+
let (_, _) = issue_command(stream, Command::ErasePage, pkt, true, 0, Response::OK).await?;
23+
Ok(())
24+
}
25+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
pub mod erase_apps;
12
pub mod info;
23
pub mod install;
34
pub mod list;

0 commit comments

Comments
 (0)