commit 35e0aeb88b7de4ed258927b4a71742236e99454c
parent 7a852dd7061a93dc01c39282836228bffd7b448b
Author: filipton <filipton12@gmail.com>
Date: Thu, 4 Jul 2024 21:25:36 +0200
feat: send flash size through tcp socket
Diffstat:
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/examples/src/main.rs b/examples/src/main.rs
@@ -92,11 +92,17 @@ async fn main(spawner: Spawner) {
let ip = embassy_net::IpEndpoint::from_str(OTA_SERVER_IP).expect("Wrong ip addr");
socket.connect(ip).await.expect("Cannot connect!");
+ let mut ota_buff = [0; 4096];
+ socket
+ .read(&mut ota_buff[..4])
+ .await
+ .expect("Cannot read firmware size!");
+ let flash_size = u32::from_le_bytes(ota_buff[..4].try_into().unwrap());
+ log::info!("flash_size: {flash_size}");
let mut ota = Ota::new(FlashStorage::new()).with_next_partition_offset();
- ota.set_flash_size(535008);
+ ota.set_flash_size(flash_size);
- let mut ota_buff = [0; 1024];
loop {
let res = socket.read(&mut ota_buff).await;
if let Ok(n) = res {
diff --git a/simple-ota-server/firmware.bin b/simple-ota-server/firmware.bin
Binary files differ.
diff --git a/simple-ota-server/src/main.rs b/simple-ota-server/src/main.rs
@@ -1,4 +1,7 @@
-use std::{io::{Read, Write}, net::TcpListener};
+use std::{
+ io::{Read, Write},
+ net::TcpListener,
+};
const BINARY: &[u8] = include_bytes!("../firmware.bin");
fn main() {
@@ -9,7 +12,10 @@ fn main() {
println!("Connection");
let mut stream = stream.unwrap();
- let chunks = BINARY.chunks(512);
+ let buf = (BINARY.len() as u32).to_le_bytes();
+ _ = stream.write_all(&buf);
+
+ let chunks = BINARY.chunks(1024);
let mut buf = [0; 1];
for chunk in chunks {
println!("Writing: {}", chunk.len());