From 50d4cbbda10e5e27050cb62e9c455b1e0a34fbe0 Mon Sep 17 00:00:00 2001 From: Kostas Missos Date: Sun, 24 Feb 2019 03:04:28 +0200 Subject: [PATCH] [sept] Auto update sept payload via update.bin This will check if payload.bin is the same version with update.bin --- bootloader/main.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/bootloader/main.c b/bootloader/main.c index 86edfd9..6723469 100644 --- a/bootloader/main.c +++ b/bootloader/main.c @@ -344,10 +344,38 @@ int launch_payload(char *path, bool update) f_close(&fp); free(path); - + // Check for updated version. if (update) { u8 *update_ft = calloc(1, 6); + + bool update_sept = true; + if (!f_open(&fp, "sept/payload.bin", FA_READ | FA_WRITE)) + { + memset(update_ft, 0, 6); + f_lseek(&fp, f_size(&fp) - 6); + f_read(&fp, update_ft, 6, NULL); + f_close(&fp); + update_ft[4] -= '0'; + update_ft[5] -= '0'; + if (*(u32 *)update_ft == 0x43544349) + { + if (update_ft[4] == BLVERSIONMJ && update_ft[5] == BLVERSIONMN) + update_sept = false; + } + else + update_sept = false; + } + + if (update_sept) + { + if (!f_open(&fp, "sept/payload.bin", FA_CREATE_ALWAYS | FA_WRITE)) + { + f_write(&fp, buf, size, NULL); + f_close(&fp); + } + } + memcpy(update_ft, buf + size - 6, 6); update_ft[4] -= '0'; update_ft[5] -= '0';