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

[Taranis] EEPROM savings

This commit is contained in:
Bertrand Songis 2016-03-11 18:22:16 +01:00
parent 2e57549982
commit 44d4e93ad1
7 changed files with 83 additions and 53 deletions

View file

@ -3375,8 +3375,9 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
internalField.Append(new SignedField<8>(generalData.txVoltageCalibration)); internalField.Append(new SignedField<8>(generalData.txVoltageCalibration));
internalField.Append(new SignedField<8>(generalData.backlightMode)); internalField.Append(new SignedField<8>(generalData.backlightMode));
for (int i=0; i<NUM_STICKS; i++) for (int i=0; i<NUM_STICKS; i++) {
internalField.Append(new SignedField<16>(generalData.trainer.calib[i])); internalField.Append(new SignedField<16>(generalData.trainer.calib[i]));
}
for (int i=0; i<NUM_STICKS; i++) { for (int i=0; i<NUM_STICKS; i++) {
internalField.Append(new UnsignedField<6>(generalData.trainer.mix[i].src)); internalField.Append(new UnsignedField<6>(generalData.trainer.mix[i].src));
internalField.Append(new UnsignedField<2>(generalData.trainer.mix[i].mode)); internalField.Append(new UnsignedField<2>(generalData.trainer.mix[i].mode));
@ -3385,7 +3386,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
internalField.Append(new UnsignedField<8>(generalData.view, 0, MAX_VIEWS(board)-1)); internalField.Append(new UnsignedField<8>(generalData.view, 0, MAX_VIEWS(board)-1));
internalField.Append(new SpareBitsField<2>()); internalField.Append(new SpareBitsField<2>()); // TODO buzzerMode?
internalField.Append(new BoolField<1>(generalData.fai)); internalField.Append(new BoolField<1>(generalData.fai));
internalField.Append(new SignedField<2>((int &)generalData.beeperMode)); internalField.Append(new SignedField<2>((int &)generalData.beeperMode));
internalField.Append(new BoolField<1>(generalData.flashBeep)); internalField.Append(new BoolField<1>(generalData.flashBeep));
@ -3402,7 +3403,8 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
} }
internalField.Append(new UnsignedField<8>(generalData.inactivityTimer)); internalField.Append(new UnsignedField<8>(generalData.inactivityTimer));
if (IS_9X(board) && version >= 215) { if (IS_9X(board)) {
if (version >= 215) {
internalField.Append(new UnsignedField<3>(generalData.mavbaud)); internalField.Append(new UnsignedField<3>(generalData.mavbaud));
} }
else { else {
@ -3410,6 +3412,10 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
internalField.Append(new BoolField<1>(generalData.minuteBeep)); internalField.Append(new BoolField<1>(generalData.minuteBeep));
internalField.Append(new BoolField<1>(generalData.preBeep)); internalField.Append(new BoolField<1>(generalData.preBeep));
} }
}
else {
internalField.Append(new SpareBitsField<3>());
}
if (version >= 216 && IS_TARANIS(board)) if (version >= 216 && IS_TARANIS(board))
internalField.Append(new SignedField<3>(generalData.splashDuration)); internalField.Append(new SignedField<3>(generalData.splashDuration));
else if (version >= 213 || (!IS_ARM(board) && version >= 212)) else if (version >= 213 || (!IS_ARM(board) && version >= 212))
@ -3421,20 +3427,19 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
if (IS_ARM(board)) if (IS_ARM(board))
internalField.Append(new SignedField<8>(generalData.switchesDelay)); internalField.Append(new SignedField<8>(generalData.switchesDelay));
else else
internalField.Append(new SpareBitsField<8>()); internalField.Append(new SpareBitsField<8>()); // TODO blOffBright + blOnBright
internalField.Append(new UnsignedField<8>(generalData.backlightDelay)); internalField.Append(new UnsignedField<8>(generalData.backlightDelay));
internalField.Append(new UnsignedField<8>(generalData.templateSetup)); internalField.Append(new UnsignedField<8>(generalData.templateSetup));
internalField.Append(new SignedField<8>(generalData.PPM_Multiplier)); internalField.Append(new SignedField<8>(generalData.PPM_Multiplier));
internalField.Append(new SignedField<8>(generalData.hapticLength)); internalField.Append(new SignedField<8>(generalData.hapticLength));
if (version < 216 || !IS_9X(board)) { if (version < 216 || (version < 218 && !IS_9X(board)) || (!IS_9X(board) && !IS_TARANIS(board))) {
internalField.Append(new UnsignedField<8>(generalData.reNavigation)); internalField.Append(new UnsignedField<8>(generalData.reNavigation));
} }
if (version >= 216 && !IS_TARANIS(board)) { if (version >= 216 && !IS_TARANIS(board)) {
internalField.Append(new UnsignedField<4>(generalData.stickReverse)); internalField.Append(new UnsignedField<8>(generalData.stickReverse));
internalField.Append(new SpareBitsField<4>());
} }
internalField.Append(new SignedField<3>(generalData.beeperLength)); internalField.Append(new SignedField<3>(generalData.beeperLength));
@ -3456,33 +3461,46 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
if (IS_ARM(board)) { if (IS_ARM(board)) {
internalField.Append(new UnsignedField<8>(generalData.backlightBright)); internalField.Append(new UnsignedField<8>(generalData.backlightBright));
internalField.Append(new SignedField<8>(generalData.txCurrentCalibration)); if (version < 218) internalField.Append(new SignedField<8>(generalData.txCurrentCalibration));
if (version >= 213) { if (version >= 213) {
internalField.Append(new SignedField<8>(generalData.temperatureWarn)); // TODO if (version < 218) internalField.Append(new SignedField<8>(generalData.temperatureWarn)); // TODO
internalField.Append(new UnsignedField<8>(generalData.mAhWarn)); if (version < 218) internalField.Append(new UnsignedField<8>(generalData.mAhWarn));
internalField.Append(new UnsignedField<16>(generalData.mAhUsed)); if (version < 218) internalField.Append(new UnsignedField<16>(generalData.mAhUsed));
internalField.Append(new UnsignedField<32>(generalData.globalTimer)); internalField.Append(new UnsignedField<32>(generalData.globalTimer));
internalField.Append(new SignedField<8>(generalData.temperatureCalib)); // TODO if (version < 218) internalField.Append(new SignedField<8>(generalData.temperatureCalib)); // TODO
internalField.Append(new UnsignedField<8>(generalData.btBaudrate)); // TODO internalField.Append(new UnsignedField<8>(generalData.btBaudrate)); // TODO
internalField.Append(new BoolField<8>(generalData.optrexDisplay)); //TODO if (version < 218) internalField.Append(new BoolField<8>(generalData.optrexDisplay)); //TODO
internalField.Append(new UnsignedField<8>(generalData.sticksGain)); // TODO if (version < 218) internalField.Append(new UnsignedField<8>(generalData.sticksGain)); // TODO
} }
if (version >= 214) { if (version >= 214) {
internalField.Append(new UnsignedField<8>(generalData.rotarySteps)); // TODO if (version < 218) internalField.Append(new UnsignedField<8>(generalData.rotarySteps)); // TODO
internalField.Append(new UnsignedField<8>(generalData.countryCode)); internalField.Append(new UnsignedField<8>(generalData.countryCode));
internalField.Append(new UnsignedField<8>(generalData.imperial)); internalField.Append(new UnsignedField<8>(generalData.imperial));
} }
if (version >= 215) { if (version >= 215) {
internalField.Append(new CharField<2>(generalData.ttsLanguage)); internalField.Append(new CharField<2>(generalData.ttsLanguage));
if (version < 218) {
internalField.Append(new SignedField<8>(generalData.beepVolume)); internalField.Append(new SignedField<8>(generalData.beepVolume));
internalField.Append(new SignedField<8>(generalData.wavVolume)); internalField.Append(new SignedField<8>(generalData.wavVolume));
internalField.Append(new SignedField<8>(generalData.varioVolume)); internalField.Append(new SignedField<8>(generalData.varioVolume));
}
else {
internalField.Append(new SignedField<4>(generalData.beepVolume));
internalField.Append(new SignedField<4>(generalData.wavVolume));
internalField.Append(new SignedField<4>(generalData.varioVolume));
internalField.Append(new SignedField<4>(generalData.backgroundVolume));
}
if (version >= 216) { if (version >= 216) {
internalField.Append(new SignedField<8>(generalData.varioPitch)); internalField.Append(new SignedField<8>(generalData.varioPitch));
internalField.Append(new SignedField<8>(generalData.varioRange)); internalField.Append(new SignedField<8>(generalData.varioRange));
internalField.Append(new SignedField<8>(generalData.varioRepeat)); internalField.Append(new SignedField<8>(generalData.varioRepeat));
} }
internalField.Append(new SignedField<8>(generalData.backgroundVolume)); if (version < 218) internalField.Append(new SignedField<8>(generalData.backgroundVolume));
}
if (version >= 218) {
for (int i=0; i<MAX_CUSTOM_FUNCTIONS(board, version); i++) {
internalField.Append(new ArmCustomFunctionField(generalData.customFn[i], board, version, variant));
}
} }
if (IS_TARANIS(board) && version >= 216) { if (IS_TARANIS(board) && version >= 216) {
if (version >= 217) { if (version >= 217) {
@ -3508,11 +3526,11 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
} }
if (IS_TARANIS_X9E(board)) if (IS_TARANIS_X9E(board))
internalField.Append(new SpareBitsField<64>()); internalField.Append(new SpareBitsField<64>()); // switchUnlockStates
else if (IS_TARANIS(board)) else if (IS_TARANIS(board))
internalField.Append(new SpareBitsField<16>()); internalField.Append(new SpareBitsField<16>()); // switchUnlockStates
if (version >= 217) { if (version == 217) {
for (int i=0; i<MAX_CUSTOM_FUNCTIONS(board, version); i++) { for (int i=0; i<MAX_CUSTOM_FUNCTIONS(board, version); i++) {
internalField.Append(new ArmCustomFunctionField(generalData.customFn[i], board, version, variant)); internalField.Append(new ArmCustomFunctionField(generalData.customFn[i], board, version, variant));
} }

View file

@ -52,6 +52,14 @@
#define TARANIS_REV9E_FIELD(x) #define TARANIS_REV9E_FIELD(x)
#endif #endif
#if defined(PCBHORUS)
#define N_HORUS_FIELD(x)
#define HORUS_FIELD(x) x;
#else
#define N_HORUS_FIELD(x) x;
#define HORUS_FIELD(x)
#endif
#if defined(BACKUP) #if defined(BACKUP)
#define NOBACKUP(...) #define NOBACKUP(...)
#else #else
@ -871,27 +879,20 @@ PACK(struct TrainerData {
#if defined(CPUARM) #if defined(CPUARM)
#define EXTRA_GENERAL_FIELDS_ARM \ #define EXTRA_GENERAL_FIELDS_ARM \
NOBACKUP(uint8_t backlightBright); \ NOBACKUP(uint8_t backlightBright); \
/* TODO remove */ NOBACKUP(int8_t txCurrentCalibration); \ NOBACKUP(uint32_t globalTimer); \
/* TODO remove */ NOBACKUP(int8_t temperatureWarn); \ NOBACKUP(uint8_t btBaudrate); \
/* TODO remove */ NOBACKUP(uint8_t mAhWarn); \ NOBACKUP(uint8_t countryCode); \
/* TODO remove */ NOBACKUP(uint16_t mAhUsed); \ NOBACKUP(uint8_t imperial); \
NOBACKUP(uint32_t globalTimer); \ NOBACKUP(char ttsLanguage[2]); \
/* TODO remove */ NOBACKUP(int8_t temperatureCalib); \ NOBACKUP(int8_t beepVolume:4); \
NOBACKUP(uint8_t btBaudrate); \ NOBACKUP(int8_t wavVolume:4); \
/* TODO remove */ NOBACKUP(uint8_t optrexDisplay); \ NOBACKUP(int8_t varioVolume:4); \
/* TODO remove */ uint8_t sticksGain; \ NOBACKUP(int8_t backgroundVolume:4); \
/* TODO remove */ NOBACKUP(uint8_t rotarySteps); \ NOBACKUP(int8_t varioPitch); \
NOBACKUP(uint8_t countryCode); \ NOBACKUP(int8_t varioRange); \
NOBACKUP(uint8_t imperial); \ NOBACKUP(int8_t varioRepeat); \
NOBACKUP(char ttsLanguage[2]); \ CustomFunctionData customFn[NUM_CFN];
NOBACKUP(int8_t beepVolume:4); \
NOBACKUP(int8_t wavVolume:4); \
NOBACKUP(int8_t varioVolume:4); \
NOBACKUP(int8_t backgroundVolume:4); \
NOBACKUP(int8_t varioPitch); \
NOBACKUP(int8_t varioRange); \
NOBACKUP(int8_t varioRepeat);
#endif #endif
#if defined(PCBHORUS) #if defined(PCBHORUS)
@ -899,7 +900,6 @@ PACK(struct TrainerData {
EXTRA_GENERAL_FIELDS_ARM \ EXTRA_GENERAL_FIELDS_ARM \
NOBACKUP(uint8_t serial2Mode:6); \ NOBACKUP(uint8_t serial2Mode:6); \
uint8_t slidersConfig:2; \ uint8_t slidersConfig:2; \
CustomFunctionData customFn[NUM_CFN]; \
uint32_t switchConfig; \ uint32_t switchConfig; \
uint8_t potsConfig; /* two bits per pot */ \ uint8_t potsConfig; /* two bits per pot */ \
NOBACKUP(char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]); \ NOBACKUP(char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]); \
@ -912,7 +912,6 @@ PACK(struct TrainerData {
EXTRA_GENERAL_FIELDS_ARM \ EXTRA_GENERAL_FIELDS_ARM \
uint8_t serial2Mode:6; \ uint8_t serial2Mode:6; \
uint8_t spare:2; \ uint8_t spare:2; \
CustomFunctionData customFn[NUM_CFN]; \
uint32_t switchConfig; \ uint32_t switchConfig; \
uint8_t potsType; /*two bits for every pot*/\ uint8_t potsType; /*two bits for every pot*/\
char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]; \ char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]; \
@ -932,17 +931,25 @@ PACK(struct TrainerData {
uint8_t potsConfig; /* two bits per pot */\ uint8_t potsConfig; /* two bits per pot */\
uint8_t backlightColor; \ uint8_t backlightColor; \
swarnstate_t switchUnlockStates; \ swarnstate_t switchUnlockStates; \
CustomFunctionData customFn[NUM_CFN]; \
swconfig_t switchConfig; \ swconfig_t switchConfig; \
char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]; \ char switchNames[NUM_SWITCHES][LEN_SWITCH_NAME]; \
char anaNames[NUM_STICKS+NUM_POTS][LEN_ANA_NAME]; \ char anaNames[NUM_STICKS+NUM_POTS][LEN_ANA_NAME]; \
BLUETOOTH_FIELDS BLUETOOTH_FIELDS
#elif defined(CPUARM) #elif defined(PCBSKY9X)
#define EXTRA_GENERAL_FIELDS \ #define EXTRA_GENERAL_FIELDS \
EXTRA_GENERAL_FIELDS_ARM \ EXTRA_GENERAL_FIELDS_ARM \
CustomFunctionData customFn[NUM_CFN]; int8_t txCurrentCalibration; \
int8_t temperatureWarn; \
uint8_t mAhWarn; \
uint16_t mAhUsed; \
int8_t temperatureCalib; \
uint8_t optrexDisplay; \
uint8_t sticksGain; \
uint8_t rotarySteps;
#elif defined(CPUARM)
#define EXTRA_GENERAL_FIELDS EXTRA_GENERAL_FIELDS_ARM
#elif defined(PXX) #elif defined(PXX)
#define EXTRA_GENERAL_FIELDS uint8_t countryCode; #define EXTRA_GENERAL_FIELDS uint8_t countryCode;
#else #else
#define EXTRA_GENERAL_FIELDS #define EXTRA_GENERAL_FIELDS
#endif #endif
@ -961,8 +968,8 @@ PACK(struct RadioData {
NOBACKUP(uint16_t variant); NOBACKUP(uint16_t variant);
CalibData calib[NUM_STICKS+NUM_POTS]; CalibData calib[NUM_STICKS+NUM_POTS];
NOBACKUP(uint16_t chkSum); NOBACKUP(uint16_t chkSum);
/* TODO not horus */ NOBACKUP(int8_t currModel); N_HORUS_FIELD(int8_t currModel);
NOBACKUP(uint8_t contrast); N_HORUS_FIELD(uint8_t contrast);
NOBACKUP(uint8_t vBatWarn); NOBACKUP(uint8_t vBatWarn);
NOBACKUP(int8_t txVoltageCalibration); NOBACKUP(int8_t txVoltageCalibration);
NOBACKUP(int8_t backlightMode); NOBACKUP(int8_t backlightMode);
@ -988,8 +995,8 @@ PACK(struct RadioData {
NOBACKUP(uint8_t templateSetup); // RETA order for receiver channels NOBACKUP(uint8_t templateSetup); // RETA order for receiver channels
NOBACKUP(int8_t PPM_Multiplier); NOBACKUP(int8_t PPM_Multiplier);
NOBACKUP(int8_t hapticLength); NOBACKUP(int8_t hapticLength);
/* TODO remove */ N_PCBSTD_FIELD(uint8_t reNavigation) N_HORUS_FIELD(N_TARANIS_FIELD(N_PCBSTD_FIELD(uint8_t reNavigation)));
/* TODO not on horus */ N_TARANIS_FIELD(uint8_t stickReverse) N_HORUS_FIELD(N_TARANIS_FIELD(uint8_t stickReverse));
NOBACKUP(int8_t beepLength:3); NOBACKUP(int8_t beepLength:3);
NOBACKUP(int8_t hapticStrength:3); NOBACKUP(int8_t hapticStrength:3);
NOBACKUP(uint8_t gpsFormat:1); NOBACKUP(uint8_t gpsFormat:1);

View file

@ -84,7 +84,6 @@ bool menuStatisticsDebug(evt_t event)
switch(event) switch(event)
{ {
case EVT_KEY_LONG(KEY_ENTER): case EVT_KEY_LONG(KEY_ENTER):
g_eeGeneral.mAhUsed = 0;
g_eeGeneral.globalTimer = 0; g_eeGeneral.globalTimer = 0;
storageDirty(EE_GENERAL); storageDirty(EE_GENERAL);
sessionTimer = 0; sessionTimer = 0;

View file

@ -116,7 +116,6 @@ void menuStatisticsDebug(uint8_t event)
switch(event) switch(event)
{ {
case EVT_KEY_LONG(KEY_ENTER): case EVT_KEY_LONG(KEY_ENTER):
g_eeGeneral.mAhUsed = 0;
g_eeGeneral.globalTimer = 0; g_eeGeneral.globalTimer = 0;
storageDirty(EE_GENERAL); storageDirty(EE_GENERAL);
sessionTimer = 0; sessionTimer = 0;

View file

@ -71,7 +71,12 @@ const pm_char * openLogs()
} }
if (len == 0) { if (len == 0) {
#if defined(EEPROM)
uint8_t num = g_eeGeneral.currModel + 1; uint8_t num = g_eeGeneral.currModel + 1;
#else
// TODO
uint8_t num = 1;
#endif
strcpy_P(&filename[sizeof(LOGS_PATH)], STR_MODEL); strcpy_P(&filename[sizeof(LOGS_PATH)], STR_MODEL);
filename[sizeof(LOGS_PATH) + PSIZE(TR_MODEL)] = (char)((num / 10) + '0'); filename[sizeof(LOGS_PATH) + PSIZE(TR_MODEL)] = (char)((num / 10) + '0');
filename[sizeof(LOGS_PATH) + PSIZE(TR_MODEL) + 1] = (char)((num % 10) + '0'); filename[sizeof(LOGS_PATH) + PSIZE(TR_MODEL) + 1] = (char)((num % 10) + '0');

View file

@ -822,7 +822,7 @@ int getTrimValue(uint8_t phase, uint8_t idx);
#if defined(PCBGRUVIN9X) || defined(PCBMEGA2560) #if defined(PCBGRUVIN9X) || defined(PCBMEGA2560)
#define ROTARY_ENCODER_GRANULARITY (1) #define ROTARY_ENCODER_GRANULARITY (1)
#elif defined(CPUARM) #elif defined(PCBSKY9X)
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps) #define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
#else #else
#define ROTARY_ENCODER_GRANULARITY (2) #define ROTARY_ENCODER_GRANULARITY (2)

View file

@ -1080,7 +1080,9 @@ bool eeConvert()
int conversionVersionStart = g_eeGeneral.version; int conversionVersionStart = g_eeGeneral.version;
// Information to the user and wait for key press // Information to the user and wait for key press
#if defined(PCBSKY9X)
g_eeGeneral.optrexDisplay = 0; g_eeGeneral.optrexDisplay = 0;
#endif
g_eeGeneral.backlightMode = e_backlight_mode_on; g_eeGeneral.backlightMode = e_backlight_mode_on;
g_eeGeneral.backlightBright = 0; g_eeGeneral.backlightBright = 0;
g_eeGeneral.contrast = 25; g_eeGeneral.contrast = 25;