1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-18 05:45:21 +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_SCRIPTS 9
#define MAX_INPUTS 32 #define MAX_INPUTS 32
#define MAX_TRAINER_CHANNELS 16 #define MAX_TRAINER_CHANNELS 16
#define MAX_TELEMETRY_SENSORS 64 #define MAX_TELEMETRY_SENSORS 60
#define MAX_CUSTOM_SCREENS 5 #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) #elif defined(PCBTARANIS)
#define MAX_MODELS 60 #define MAX_MODELS 60
#define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32 #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); CHKSIZE(ModelData, 6117);
#elif defined(PCBX9E) #elif defined(PCBX9E)
CHKSIZE(RadioData, 960); CHKSIZE(RadioData, 960);
CHKSIZE(ModelData, 6550); CHKSIZE(ModelData, 6554);
#elif defined(PCBX9D) || defined(PCBX9DP) #elif defined(PCBX9D) || defined(PCBX9DP)
CHKSIZE(RadioData, 880); CHKSIZE(RadioData, 880);
CHKSIZE(ModelData, 6281); CHKSIZE(ModelData, 6541);
#elif defined(PCBSKY9X) #elif defined(PCBSKY9X)
CHKSIZE(RadioData, 735); CHKSIZE(RadioData, 735);
CHKSIZE(ModelData, 5279); CHKSIZE(ModelData, 5279);
#elif defined(PCBHORUS) #elif defined(PCBHORUS)
CHKSIZE(RadioData, 855); CHKSIZE(RadioData, 855);
CHKSIZE(ModelData, 9726); CHKSIZE(ModelData, 9674);
#endif #endif
#undef CHKSIZE #undef CHKSIZE

View file

@ -6,7 +6,7 @@ if(PCB STREQUAL SKY9X OR PCB STREQUAL AR9X OR PCB STREQUAL 9XRPRO)
set(EEPROM_CONVERSIONS 216) set(EEPROM_CONVERSIONS 216)
endif() 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) set(EEPROM_CONVERSIONS 218)
endif() endif()

View file

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

View file

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

View file

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