Added some safeguards to avoid issues related to data struct sizes

This commit is contained in:
Raphael Coeffic
2021-11-10 11:07:02 +01:00
parent c9b20063ec
commit baba1c5e9d
4 changed files with 28 additions and 20 deletions
@@ -19,8 +19,9 @@
* GNU General Public License for more details.
*/
#ifndef _DATACONSTANTS_H_
#define _DATACONSTANTS_H_
#if defined(_DATACONSTANTS_H_)
#error "This file MUST NOT be included side-by-side with dataconstants.h"
#endif
#include <storage/yaml/yaml_defs.h>
#include <hal.h>
@@ -1046,5 +1047,3 @@ enum CalibrationState {
CALIB_STORE,
CALIB_FINISHED
};
#endif // _DATACONSTANTS_H_
@@ -19,9 +19,6 @@
* GNU General Public License for more details.
*/
// No include guards here, this file may be included many times in different namespaces
// i.e. BACKUP RAM Backup/Restore functions
#pragma once
#include <inttypes.h>
@@ -19,11 +19,10 @@
* GNU General Public License for more details.
*/
#ifndef _MYEEPROM_H_
#define _MYEEPROM_H_
#if defined(_MYEEPROM_H_)
#error "This file MUST NOT be included side-by-side with myeeprom.h"
#endif
// #include "datastructs.h"
// #include "libopenui/src/bitfield.h"
#if defined(SDCARD_YAML)
#define EEPROM_VER 221
@@ -278,5 +277,3 @@ PACK(union u_int8int16_t {
constexpr uint8_t EE_GENERAL = 0x01;
constexpr uint8_t EE_MODEL = 0x02;
#endif // _MYEEPROM_H_
@@ -24,7 +24,6 @@
#include "yaml_tree_walker.h"
// Use definitions from v220 conversions as long as nothing changes
#include "../conversions/datastructs_220.h"
namespace yaml_conv_220 {
bool in_write_weight(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opaque);
@@ -58,12 +57,28 @@ namespace yaml_conv_220 {
yaml_writer_func wf, void* opaque);
};
static_assert(sizeof(CustomFunctionData) == sizeof(bin_storage_220::CustomFunctionData),"");
static_assert(sizeof(ModuleData) == sizeof(bin_storage_220::ModuleData),"");
static_assert(sizeof(FlightModeData) == sizeof(bin_storage_220::FlightModeData),"");
#if !defined(COLORLCD)
static_assert(sizeof(TelemetryScreenData) == sizeof(bin_storage_220::TelemetryScreenData),"");
//
// WARNING:
// ========
//
// If any of these static_assert() fails, you need to check that
// the functions bellow are still applicable.
//
// Please note that the sizes used here are those from the v220 format
// (see storage/conversions/yaml/datastructs_220.h)
//
static_assert(sizeof(ModuleData) == 29,"");
#if defined(PCBHORUS) || defined(PCBNV14)
static_assert(sizeof(FlightModeData) == 44, "");
static_assert(sizeof(CustomFunctionData) == 9,"");
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE)
static_assert(sizeof(FlightModeData) == 36, "");
static_assert(sizeof(CustomFunctionData) == 11,"");
static_assert(sizeof(TelemetryScreenData) == 24, "");
#else
static_assert(sizeof(FlightModeData) == 40, "");
static_assert(sizeof(CustomFunctionData) == 11,"");
static_assert(sizeof(TelemetryScreenData) == 24, "");
#endif
#define GVAR_SMALL 128