diff --git a/src/main/config/config_eeprom.c b/src/main/config/config_eeprom.c index 18c25d68b2..acc0244e63 100644 --- a/src/main/config/config_eeprom.c +++ b/src/main/config/config_eeprom.c @@ -142,6 +142,9 @@ bool isEEPROMContentValid(void) if (temp->size != sizeof(master_t) || temp->magic_be != 0xBE || temp->magic_ef != 0xEF) return false; + if (strncasecmp(temp->boardIdentifier, TARGET_BOARD_IDENTIFIER, sizeof(TARGET_BOARD_IDENTIFIER))) + return false; + // verify integrity of temporary copy checksum = calculateChecksum((const uint8_t *) temp, sizeof(master_t)); if (checksum != 0) diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index cbe9a26c05..c5416882ae 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -241,6 +241,7 @@ typedef struct master_s { uint32_t preferred_beeper_off_flags; char name[MAX_NAME_LENGTH + 1]; + char boardIdentifier[sizeof(TARGET_BOARD_IDENTIFIER)]; uint8_t magic_ef; // magic number, should be 0xEF uint8_t chk; // XOR checksum diff --git a/src/main/fc/config.c b/src/main/fc/config.c index d7984caf20..c2f6c1c3a7 100755 --- a/src/main/fc/config.c +++ b/src/main/fc/config.c @@ -837,6 +837,9 @@ void createDefaultConfig(master_t *config) resetStatusLedConfig(&config->statusLedConfig); + /* merely to force a reset if the person inadvertently flashes the wrong target */ + strncpy(config->boardIdentifier, TARGET_BOARD_IDENTIFIER, sizeof(TARGET_BOARD_IDENTIFIER)); + #if defined(TARGET_CONFIG) targetConfiguration(config); #endif