mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
Conversions errors (negative switches)
This commit is contained in:
parent
f5797b2b3a
commit
2c60b84258
5 changed files with 31 additions and 19 deletions
3
radio/src/.gitignore
vendored
3
radio/src/.gitignore
vendored
|
@ -10,3 +10,6 @@
|
||||||
/*.o
|
/*.o
|
||||||
/*.bin
|
/*.bin
|
||||||
/*.lst
|
/*.lst
|
||||||
|
/SCRIPTS
|
||||||
|
/SOUNDS
|
||||||
|
/LOGS
|
||||||
|
|
|
@ -111,8 +111,6 @@ PACK(typedef struct {
|
||||||
}) MixData_v215;
|
}) MixData_v215;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PACK(typedef struct {
|
PACK(typedef struct {
|
||||||
int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw
|
int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw
|
||||||
uint16_t start:12;
|
uint16_t start:12;
|
||||||
|
@ -235,7 +233,9 @@ int ConvertSource_215_to_216(int source, bool insertZero=false)
|
||||||
|
|
||||||
int ConvertSwitch_215_to_216(int swtch)
|
int ConvertSwitch_215_to_216(int swtch)
|
||||||
{
|
{
|
||||||
if (swtch <= SWSRC_LAST_SWITCH)
|
if (swtch < 0)
|
||||||
|
return -ConvertSwitch_215_to_216(-swtch);
|
||||||
|
else if (swtch <= SWSRC_LAST_SWITCH)
|
||||||
return swtch;
|
return swtch;
|
||||||
else
|
else
|
||||||
return swtch + (2*4) + (2*6); // 4 trims and 2 * 6-pos added as switches
|
return swtch + (2*4) + (2*6); // 4 trims and 2 * 6-pos added as switches
|
||||||
|
@ -271,22 +271,28 @@ void ConvertModel_215_to_216(ModelData &model)
|
||||||
// Mixes: GVARS in weight moved from 512 to 4096 and -512 to -4096, because GVARS may be used in limits [-1250:1250]
|
// Mixes: GVARS in weight moved from 512 to 4096 and -512 to -4096, because GVARS may be used in limits [-1250:1250]
|
||||||
// Switches: two 6-pos pots added, REa added to Sky9x
|
// Switches: two 6-pos pots added, REa added to Sky9x
|
||||||
|
|
||||||
TRACE("Model conversion from v215 to v216");
|
|
||||||
|
|
||||||
assert(sizeof(ModelData_v215) <= sizeof(ModelData));
|
assert(sizeof(ModelData_v215) <= sizeof(ModelData));
|
||||||
|
|
||||||
ModelData_v215 oldModel;
|
ModelData_v215 oldModel;
|
||||||
memcpy(&oldModel, &model, sizeof(oldModel));
|
memcpy(&oldModel, &model, sizeof(oldModel));
|
||||||
memset(&model, 0, sizeof(ModelData));
|
memset(&model, 0, sizeof(ModelData));
|
||||||
|
|
||||||
|
char name[LEN_MODEL_NAME+1];
|
||||||
|
zchar2str(name, oldModel.header.name, LEN_MODEL_NAME);
|
||||||
|
TRACE("Model %s conversion from v215 to v216", name);
|
||||||
|
|
||||||
memcpy(&g_model.header, &oldModel.header, sizeof(g_model.header));
|
memcpy(&g_model.header, &oldModel.header, sizeof(g_model.header));
|
||||||
for (uint8_t i=0; i<2; i++) {
|
for (uint8_t i=0; i<2; i++) {
|
||||||
g_model.timers[i].mode = oldModel.timers[i].mode > 4 ? ConvertSwitch_215_to_216(oldModel.timers[i].mode): oldModel.timers[i].mode;
|
TimerData & timer = g_model.timers[i];
|
||||||
g_model.timers[i].start = oldModel.timers[i].start;
|
if (oldModel.timers[i].mode >= TMRMODE_FIRST_SWITCH)
|
||||||
g_model.timers[i].minuteBeep = oldModel.timers[i].minuteBeep;
|
timer.mode = TMRMODE_FIRST_SWITCH + ConvertSwitch_215_to_216(oldModel.timers[i].mode - TMRMODE_FIRST_SWITCH + 1) - 1;
|
||||||
g_model.timers[i].persistent = oldModel.timers[i].persistent;
|
else
|
||||||
g_model.timers[i].countdownBeep = oldModel.timers[i].countdownBeep;
|
timer.mode = oldModel.timers[i].mode;
|
||||||
g_model.timers[i].value = oldModel.timers[i].value;
|
timer.start = oldModel.timers[i].start;
|
||||||
|
timer.minuteBeep = oldModel.timers[i].minuteBeep;
|
||||||
|
timer.persistent = oldModel.timers[i].persistent;
|
||||||
|
timer.countdownBeep = oldModel.timers[i].countdownBeep;
|
||||||
|
timer.value = oldModel.timers[i].value;
|
||||||
}
|
}
|
||||||
g_model.protocol = oldModel.protocol;
|
g_model.protocol = oldModel.protocol;
|
||||||
g_model.thrTrim = oldModel.thrTrim;
|
g_model.thrTrim = oldModel.thrTrim;
|
||||||
|
|
|
@ -1404,11 +1404,14 @@ enum MixSources {
|
||||||
#define MIN_POINTS 3
|
#define MIN_POINTS 3
|
||||||
#define MAX_POINTS 17
|
#define MAX_POINTS 17
|
||||||
|
|
||||||
#define TMRMODE_NONE 0
|
enum TimerModes {
|
||||||
#define TMRMODE_ABS 1
|
TMRMODE_NONE,
|
||||||
#define TMRMODE_THR 2
|
TMRMODE_ABS,
|
||||||
#define TMRMODE_THR_REL 3
|
TMRMODE_THR,
|
||||||
#define TMRMODE_THR_TRG 4
|
TMRMODE_THR_REL,
|
||||||
|
TMRMODE_THR_TRG,
|
||||||
|
TMRMODE_FIRST_SWITCH
|
||||||
|
};
|
||||||
|
|
||||||
#define COUNTDOWN_SILENT 0
|
#define COUNTDOWN_SILENT 0
|
||||||
#define COUNTDOWN_BEEPS 1
|
#define COUNTDOWN_BEEPS 1
|
||||||
|
@ -1504,7 +1507,7 @@ enum FailsafeModes {
|
||||||
#define BeepANACenter uint8_t
|
#define BeepANACenter uint8_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PACK(typedef struct t_ModelHeader {
|
PACK(typedef struct {
|
||||||
char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName
|
char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName
|
||||||
uint8_t modelId;
|
uint8_t modelId;
|
||||||
MODELDATA_BITMAP
|
MODELDATA_BITMAP
|
||||||
|
|
|
@ -198,7 +198,7 @@ char idx2char(int8_t idx)
|
||||||
return ' ';
|
return ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
#if defined(CPUARM)
|
||||||
int8_t char2idx(char c)
|
int8_t char2idx(char c)
|
||||||
{
|
{
|
||||||
if (c == '_') return 37;
|
if (c == '_') return 37;
|
||||||
|
|
|
@ -749,7 +749,7 @@ extern uint8_t pxxFlag[NUM_MODULES];
|
||||||
#define ZCHAR_MAX (LEN_STD_CHARS + LEN_SPECIAL_CHARS)
|
#define ZCHAR_MAX (LEN_STD_CHARS + LEN_SPECIAL_CHARS)
|
||||||
|
|
||||||
char idx2char(int8_t idx);
|
char idx2char(int8_t idx);
|
||||||
#if defined(PCBTARANIS)
|
#if defined(CPUARM)
|
||||||
int8_t char2idx(char c);
|
int8_t char2idx(char c);
|
||||||
void str2zchar(char *dest, const char *src, int size);
|
void str2zchar(char *dest, const char *src, int size);
|
||||||
void zchar2str(char *dest, const char *src, int size);
|
void zchar2str(char *dest, const char *src, int size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue