From fb60a94f0a1d24c0f6e548df8385cdea25eca758 Mon Sep 17 00:00:00 2001 From: Matt Mower Date: Tue, 8 Jul 2014 22:25:38 -0500 Subject: Allow custom bootloader msg offset in block misc Use board define BOARD_RECOVERY_BLDRMSG_OFFSET with a decimal integer to define a custom offset where the bootloader message should be read/written. Change-Id: Id13a23dd41bb7d907b96d657b8e21eb839dfeaa9 --- Android.mk | 4 ++++ bootloader.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Android.mk b/Android.mk index c864ff0f7..05111c02c 100644 --- a/Android.mk +++ b/Android.mk @@ -335,6 +335,10 @@ LOCAL_SRC_FILES = adb_install.cpp bootloader.cpp verifier.cpp mtdutils/mtdutils. LOCAL_SHARED_LIBRARIES += libc liblog libcutils libmtdutils LOCAL_STATIC_LIBRARIES += libmincrypttwrp +ifneq ($(BOARD_RECOVERY_BLDRMSG_OFFSET),) + LOCAL_CFLAGS += -DBOARD_RECOVERY_BLDRMSG_OFFSET=$(BOARD_RECOVERY_BLDRMSG_OFFSET) +endif + include $(BUILD_SHARED_LIBRARY) commands_recovery_local_path := $(LOCAL_PATH) diff --git a/bootloader.cpp b/bootloader.cpp index 033591274..3884c2870 100644 --- a/bootloader.cpp +++ b/bootloader.cpp @@ -258,6 +258,9 @@ static int get_bootloader_message_block(struct bootloader_message *out, LOGE("Can't open %s\n(%s)\n", v->blk_device, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif struct bootloader_message temp; int count = fread(&temp, sizeof(temp), 1, f); if (count != 1) { @@ -280,6 +283,9 @@ static int set_bootloader_message_block(const struct bootloader_message *in, LOGE("Can't open %s\n(%s)\n", v->blk_device, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif int count = fwrite(in, sizeof(*in), 1, f); if (count != 1) { LOGE("Failed writing %s\n(%s)\n", v->blk_device, strerror(errno)); @@ -300,6 +306,9 @@ int get_bootloader_message_block_name(struct bootloader_message *out) { LOGE("Can't open %s\n(%s)\n", device_name, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif struct bootloader_message temp; int count = fread(&temp, sizeof(temp), 1, f); if (count != 1) { @@ -322,6 +331,9 @@ int set_bootloader_message_block_name(const struct bootloader_message *in, printf("Can't open %s\n(%s)\n", block_name, strerror(errno)); return -1; } +#ifdef BOARD_RECOVERY_BLDRMSG_OFFSET + fseek(f, BOARD_RECOVERY_BLDRMSG_OFFSET, SEEK_SET); +#endif int count = fwrite(in, sizeof(*in), 1, f); if (count != 1) { printf("Failed writing %s\n(%s)\n", block_name, strerror(errno)); -- cgit v1.2.3