From d0d6040b3e0c01e746060dcc410bfafaef8ac56f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 17 Aug 2017 17:23:36 +1000 Subject: [PATCH] AP_Param: use wider range of sentinal values this copes better with power off while writing parameters --- libraries/AP_Param/AP_Param.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/AP_Param/AP_Param.cpp b/libraries/AP_Param/AP_Param.cpp index 1d1d5e207f..c3aea9b3aa 100644 --- a/libraries/AP_Param/AP_Param.cpp +++ b/libraries/AP_Param/AP_Param.cpp @@ -649,6 +649,13 @@ bool AP_Param::is_sentinal(const Param_header &phdr) phdr.group_element == _sentinal_group) { return true; } + // also check for 0xFFFFFFFF and 0x00000000, which are the fill + // values for storage. These can appear if power off occurs while + // writing data + uint32_t v = *(uint32_t *)&phdr; + if (v == 0 || v == 0xFFFFFFFF) { + return true; + } return false; }