1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-17 21:35:27 +03:00

Conversion fixes

This commit is contained in:
Bertrand Songis 2019-04-16 23:34:13 +02:00
parent 348fff9a0d
commit a04cdb32da
6 changed files with 62 additions and 41 deletions

View file

@ -46,8 +46,20 @@
#define MAX_SCRIPTS 9
#define MAX_INPUTS 32
#define MAX_TRAINER_CHANNELS 16
#define MAX_TELEMETRY_SENSORS 64
#define MAX_TELEMETRY_SENSORS 60
#define MAX_CUSTOM_SCREENS 5
#elif defined(PCBX9)
#define MAX_MODELS 60
#define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32
#define MAX_FLIGHT_MODES 9
#define MAX_MIXERS 64
#define MAX_EXPOS 64
#define MAX_LOGICAL_SWITCHES 64
#define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches
#define MAX_SCRIPTS 7
#define MAX_INPUTS 32
#define MAX_TRAINER_CHANNELS 16
#define MAX_TELEMETRY_SENSORS 60
#elif defined(PCBTARANIS)
#define MAX_MODELS 60
#define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32

View file

@ -915,16 +915,16 @@ static inline void check_struct()
CHKSIZE(ModelData, 6117);
#elif defined(PCBX9E)
CHKSIZE(RadioData, 960);
CHKSIZE(ModelData, 6550);
CHKSIZE(ModelData, 6554);
#elif defined(PCBX9D) || defined(PCBX9DP)
CHKSIZE(RadioData, 880);
CHKSIZE(ModelData, 6281);
CHKSIZE(ModelData, 6541);
#elif defined(PCBSKY9X)
CHKSIZE(RadioData, 735);
CHKSIZE(ModelData, 5279);
#elif defined(PCBHORUS)
CHKSIZE(RadioData, 855);
CHKSIZE(ModelData, 9726);
CHKSIZE(ModelData, 9674);
#endif
#undef CHKSIZE

View file

@ -6,7 +6,7 @@ if(PCB STREQUAL SKY9X OR PCB STREQUAL AR9X OR PCB STREQUAL 9XRPRO)
set(EEPROM_CONVERSIONS 216)
endif()
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE)
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL X9E)
set(EEPROM_CONVERSIONS 218)
endif()

View file

@ -901,7 +901,7 @@ void convertModelData_216_to_217(ModelData &model)
// PPM center range
// Telemetry custom screens
assert(sizeof(ModelData_v216) <= sizeof(ModelData));
static_assert(sizeof(ModelData_v216) <= sizeof(ModelData));
ModelData_v216 oldModel;
memcpy(&oldModel, &model, sizeof(oldModel));
@ -1076,7 +1076,7 @@ void convertModelData_216_to_217(ModelData &model)
void convertModelData_217_to_218(ModelData &model)
{
assert(sizeof(ModelData_v217) <= sizeof(ModelData));
static_assert(sizeof(ModelData_v217) <= sizeof(ModelData));
ModelData_v217 oldModel;
memcpy(&oldModel, &model, sizeof(oldModel));

View file

@ -34,7 +34,7 @@ typedef ModelData ModelData_v219;
void convertModelData_218_to_219(ModelData &model)
{
assert(sizeof(ModelData_v218) <= sizeof(ModelData));
static_assert(sizeof(ModelData_v218) <= sizeof(ModelData));
ModelData_v218 oldModel;
memcpy(&oldModel, &model, sizeof(oldModel));

View file

@ -80,7 +80,7 @@
#define LEN_FUNCTION_NAME_218 8
#define MAX_CURVES_218 32
#define MAX_CURVE_POINTS_218 512
#elif defined(CPUARM)
#else
#define LEN_MODEL_NAME_218 10
#define LEN_TIMER_NAME_218 3
#define LEN_FLIGHT_MODE_NAME_218 6
@ -91,11 +91,6 @@
#define LEN_FUNCTION_NAME_218 6
#define MAX_CURVES_218 16
#define MAX_CURVE_POINTS_218 512
#else
#define LEN_MODEL_NAME_218 10
#define LEN_FLIGHT_MODE_NAME_218 6
#define MAX_CURVES_218 8
#define MAX_CURVE_POINTS_218 (112-MAX_CURVES_218)
#endif
#if defined(PCBHORUS)
@ -261,24 +256,30 @@ PACK(typedef struct { // Logical Switches data
uint8_t duration;
}) LogicalSwitchData_v218;
#if defined(PCBTARANIS)
#define CFN_SPARE_TYPE int32_t
#else
#define CFN_SPARE_TYPE int16_t
#endif
PACK(typedef struct {
int16_t swtch:9;
uint16_t func:7;
PACK(union {
PACK(struct {
char name[8];
char name[LEN_FUNCTION_NAME_218];
}) play;
PACK(struct {
int16_t val;
uint8_t mode;
uint8_t param;
int32_t spare2;
CFN_SPARE_TYPE spare2;
}) all;
PACK(struct {
int32_t val1;
int32_t val2;
CFN_SPARE_TYPE val2;
}) clear;
});
uint8_t active;
@ -382,11 +383,23 @@ PACK(typedef struct {
#if defined(PCBHORUS)
// TODO conversion for custom screens?
#else
#elif defined(PCBTARANIS)
uint8_t view;
#endif
}) ModelData_v218;
#if defined(PCBHORUS)
static_assert(sizeof(ModelData_v218) == 9380);
#elif defined(PCBX9E)
static_assert(sizeof(ModelData_v218) == 6520);
#elif defined(PCBX9D)
static_assert(sizeof(ModelData_v218) == 6507);
#elif defined(PCBXLITE) || defined(PCBX7)
static_assert(sizeof(ModelData_v218) == 6025);
#elif defined(PCBSKY9X)
static_assert(sizeof(ModelData_v218) == 5188);
#endif
#define EXTRA_GENERAL_FIELDS_GENERAL_218 \
uint8_t backlightBright; \
uint32_t globalTimer; \
@ -453,12 +466,8 @@ PACK(typedef struct {
uint8_t rotarySteps; \
char switchNames[NUM_SWITCHES_218][LEN_SWITCH_NAME_218]; \
char anaNames[NUM_STICKS+NUM_POTS+NUM_SLIDERS][LEN_ANA_NAME_218];
#elif defined(CPUARM)
#define EXTRA_GENERAL_FIELDS_218 EXTRA_GENERAL_FIELDS_GENERAL_218
#elif defined(PXX)
#define EXTRA_GENERAL_FIELDS_218 uint8_t countryCode;
#else
#define EXTRA_GENERAL_FIELDS_218
#define EXTRA_GENERAL_FIELDS_218 EXTRA_GENERAL_FIELDS_GENERAL_218
#endif
#if defined(PCBHORUS)