[sky9x / Taranis] Imperial is now an option selectable in the FW
Strings moved to translations.h/.cpp files. Need to be moved to the translations files
This commit is contained in:
+24
-38
@@ -302,7 +302,7 @@ TEST(getSwitch, nullSW)
|
||||
TEST(Phases, nullFadeOut_posFadeIn)
|
||||
{
|
||||
MODEL_RESET();
|
||||
g_model.phaseData[1].swtch = SWSRC_ID1);
|
||||
g_model.phaseData[1].swtch = SWSRC_ID1;
|
||||
g_model.phaseData[1].fadeIn = 15;
|
||||
perMain();
|
||||
simuSetSwitch(3, 0);
|
||||
@@ -320,13 +320,13 @@ TEST(Mixer, Cascaded3Channels)
|
||||
g_model.mixData[1].srcRaw = MIXSRC_CH3;
|
||||
g_model.mixData[1].weight = 100;
|
||||
g_model.mixData[2].destCh = 2;
|
||||
g_model.mixData[2].srcRaw = MIXSRC_ID1;
|
||||
g_model.mixData[2].srcRaw = MIXSRC_THR;
|
||||
g_model.mixData[2].weight = 100;
|
||||
simuSetSwitch(3, 0);
|
||||
simuSetSwitch(0, 1);
|
||||
perOut(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 102400);
|
||||
EXPECT_EQ(chans[1], 102400);
|
||||
EXPECT_EQ(chans[2], 102400);
|
||||
EXPECT_EQ(chans[0], 1024*256);
|
||||
EXPECT_EQ(chans[1], 1024*256);
|
||||
EXPECT_EQ(chans[2], 1024*256);
|
||||
}
|
||||
|
||||
TEST(Mixer, CascadedOrderedChannels)
|
||||
@@ -334,15 +334,15 @@ TEST(Mixer, CascadedOrderedChannels)
|
||||
MODEL_RESET();
|
||||
MIXER_RESET();
|
||||
g_model.mixData[0].destCh = 0;
|
||||
g_model.mixData[0].srcRaw = MIXSRC_ID1;
|
||||
g_model.mixData[0].srcRaw = MIXSRC_THR;
|
||||
g_model.mixData[0].weight = 100;
|
||||
g_model.mixData[1].destCh = 1;
|
||||
g_model.mixData[1].srcRaw = MIXSRC_CH1;
|
||||
g_model.mixData[1].weight = 100;
|
||||
simuSetSwitch(3, 0);
|
||||
simuSetSwitch(0, 1);
|
||||
perOut(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 102400);
|
||||
EXPECT_EQ(chans[1], 102400);
|
||||
EXPECT_EQ(chans[0], 1024*256);
|
||||
EXPECT_EQ(chans[1], 1024*256);
|
||||
}
|
||||
|
||||
TEST(Mixer, Cascaded5Channels)
|
||||
@@ -362,23 +362,23 @@ TEST(Mixer, Cascaded5Channels)
|
||||
g_model.mixData[3].srcRaw = MIXSRC_CH5;
|
||||
g_model.mixData[3].weight = 100;
|
||||
g_model.mixData[4].destCh = 4;
|
||||
g_model.mixData[4].srcRaw = MIXSRC_ID1;
|
||||
g_model.mixData[4].srcRaw = MIXSRC_THR;
|
||||
g_model.mixData[4].weight = 100;
|
||||
for (uint8_t i=0; i<10; i++) {
|
||||
simuSetSwitch(3, 0);
|
||||
simuSetSwitch(0, 1);
|
||||
doMixerCalculations();
|
||||
EXPECT_EQ(chans[0], 102400);
|
||||
EXPECT_EQ(chans[1], 102400);
|
||||
EXPECT_EQ(chans[2], 102400);
|
||||
EXPECT_EQ(chans[3], 102400);
|
||||
EXPECT_EQ(chans[4], 102400);
|
||||
simuSetSwitch(3, -1);
|
||||
EXPECT_EQ(chans[0], 1024*256);
|
||||
EXPECT_EQ(chans[1], 1024*256);
|
||||
EXPECT_EQ(chans[2], 1024*256);
|
||||
EXPECT_EQ(chans[3], 1024*256);
|
||||
EXPECT_EQ(chans[4], 1024*256);
|
||||
simuSetSwitch(0, 0);
|
||||
doMixerCalculations();
|
||||
EXPECT_EQ(chans[0], -102400);
|
||||
EXPECT_EQ(chans[1], -102400);
|
||||
EXPECT_EQ(chans[2], -102400);
|
||||
EXPECT_EQ(chans[3], -102400);
|
||||
EXPECT_EQ(chans[4], -102400);
|
||||
EXPECT_EQ(chans[0], -1024*256);
|
||||
EXPECT_EQ(chans[1], -1024*256);
|
||||
EXPECT_EQ(chans[2], -1024*256);
|
||||
EXPECT_EQ(chans[3], -1024*256);
|
||||
EXPECT_EQ(chans[4], -1024*256);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -428,24 +428,10 @@ TEST(Mixer, RecursiveAddChannel)
|
||||
g_model.mixData[2].srcRaw = MIXSRC_Rud;
|
||||
g_model.mixData[2].weight = 100;
|
||||
perOut(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 102400/2);
|
||||
EXPECT_EQ(chans[0], 1024*256/2);
|
||||
EXPECT_EQ(chans[1], 0);
|
||||
}
|
||||
|
||||
TEST(Expo, AllValues)
|
||||
{
|
||||
// TODO whole range
|
||||
for (uint16_t x=0; x<20; x++) {
|
||||
for (uint16_t k=0; k<20; k++) {
|
||||
// TODO compare with the correct function instead of this one
|
||||
// uint16_t ref = ((unsigned long)x*x*x/0x10000*k/(RESXul*RESXul/0x10000) + (RESKul-k)*x+RESKul/2)/RESKul;
|
||||
double ref = exp(log((float)x)*(float)k/10);
|
||||
printf("x=%d k=%d ref=%f res=%d\n", x, k, ref, expou(x, k));
|
||||
// EXPECT_EQ(expou(x, k), ref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
StartEepromThread(NULL);
|
||||
|
||||
+5
-5
@@ -742,7 +742,7 @@ void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2
|
||||
char separator = ':';
|
||||
if (tme >= 3600 && (~att & DBLSIZE)) {
|
||||
qr = div(qr.quot, 60);
|
||||
separator = 'h';
|
||||
separator = CHR_HOUR;
|
||||
}
|
||||
#else
|
||||
#define separator ':'
|
||||
@@ -853,7 +853,7 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
#if ROTARY_ENCODERS > 0
|
||||
else if (idx >= SWSRC_FIRST_ROTENC_SWITCH) {
|
||||
idx -= SWSRC_FIRST_ROTENC_SWITCH;
|
||||
char suffix = (idx & 1) ? 'l' : 's';
|
||||
char suffix = (idx & 1) ? CHR_LONG : CHR_SHORT;
|
||||
lcd_putcAtt(x+3*FW, y, suffix, att);
|
||||
return lcd_putsiAtt(x, y, STR_VRENCODERS, idx/2, att);
|
||||
}
|
||||
@@ -862,7 +862,7 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
#if !defined(CPUM64)
|
||||
else if (idx >= SWSRC_TRAINER_SHORT) {
|
||||
idx -= SWSRC_TRAINER_SHORT;
|
||||
lcd_putcAtt(x+3*FW, y, (idx & 1) ? 'l' : 's', att);
|
||||
lcd_putcAtt(x+3*FW, y, (idx & 1) ? CHR_LONG : CHR_SHORT, att);
|
||||
#if ROTARY_ENCODERS > 0
|
||||
if (idx >= 2) {
|
||||
idx -= 2;
|
||||
@@ -878,8 +878,8 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
|
||||
if (idx > SWSRC_ON) {
|
||||
idx -= SWSRC_ON;
|
||||
char suffix = 'm';
|
||||
if (~att & SWCONDENSED) lcd_putcAtt(x+3*FW, y, suffix, att);
|
||||
char suffix = CHR_TOGGLE;
|
||||
if (idx != SWSRC_ON && (~att & SWCONDENSED)) lcd_putcAtt(x+3*FW, y, suffix, att);
|
||||
}
|
||||
lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att);
|
||||
}
|
||||
|
||||
@@ -148,6 +148,7 @@ enum menuGeneralSetupItems {
|
||||
IF_FRSKY(ITEM_SETUP_TIMEZONE)
|
||||
IF_FRSKY(ITEM_SETUP_GPSFORMAT)
|
||||
IF_PXX(ITEM_SETUP_COUNTRYCODE)
|
||||
IF_CPUARM(ITEM_SETUP_IMPERIAL)
|
||||
ITEM_SETUP_RX_CHANNEL_ORD,
|
||||
ITEM_SETUP_STICK_MODE_LABELS,
|
||||
ITEM_SETUP_STICK_MODE,
|
||||
@@ -166,7 +167,7 @@ void menuGeneralSetup(uint8_t event)
|
||||
}
|
||||
#endif
|
||||
|
||||
MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BEEPER(0) 0, IF_AUDIO(0) IF_VOICE(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) IF_PCBSKY9X(0) IF_9X(0) LABEL(ALARMS), 0, IF_PCBSKY9X(0) IF_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) 0, LABEL(BACKLIGHT), 0, 0, CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH(0) IF_FRSKY(0) IF_FRSKY(0) IF_PXX(0) 0, LABEL(TX_MODE), CASE_PCBTARANIS(0) 1/*to force edit mode*/});
|
||||
MENU(STR_MENURADIOSETUP, menuTabDiag, e_Setup, ITEM_SETUP_MAX+1, {0, IF_RTCLOCK(2) IF_RTCLOCK(2) IF_BATTGRAPH(1) LABEL(SOUND), IF_AUDIO(0) IF_BEEPER(0) 0, IF_AUDIO(0) IF_VOICE(0) IF_HAPTIC(LABEL(HAPTIC)) IF_HAPTIC(0) IF_HAPTIC(0) IF_HAPTIC(0) IF_PCBSKY9X(0) IF_9X(0) LABEL(ALARMS), 0, IF_PCBSKY9X(0) IF_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) 0, LABEL(BACKLIGHT), 0, 0, CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, IF_SPLASH(0) IF_FRSKY(0) IF_FRSKY(0) IF_PXX(0) IF_CPUARM(0) 0, LABEL(TX_MODE), CASE_PCBTARANIS(0) 1/*to force edit mode*/});
|
||||
|
||||
uint8_t sub = m_posVert - 1;
|
||||
|
||||
@@ -484,6 +485,12 @@ void menuGeneralSetup(uint8_t event)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
case ITEM_SETUP_IMPERIAL:
|
||||
g_eeGeneral.imperial = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, STR_UNITSSYSTEM, STR_VUNITSSYSTEM, g_eeGeneral.imperial, 0, 1, attr, event);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ITEM_SETUP_RX_CHANNEL_ORD:
|
||||
lcd_putsLeft(y, STR_RXCHANNELORD); // RAET->AETR
|
||||
for (uint8_t i=1; i<=4; i++)
|
||||
|
||||
+6
-12
@@ -58,12 +58,6 @@ enum EnumTabModel {
|
||||
IF_TEMPLATES(e_Templates)
|
||||
};
|
||||
|
||||
#if LCD_W >= 212
|
||||
const char * STR_PHASES_HEADERS[] = { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " };
|
||||
const char * STR_LIMITS_HEADERS[] = { " Name ", " Offset ", " Min ", " Max ", " Direction ", " PPM Center ", " Symetrical " };
|
||||
const char * STR_CSW_HEADERS[] = { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " };
|
||||
#endif
|
||||
|
||||
void menuModelSelect(uint8_t event);
|
||||
void menuModelSetup(uint8_t event);
|
||||
void menuModelHeli(uint8_t event);
|
||||
@@ -552,7 +546,7 @@ void menuModelSelect(uint8_t event)
|
||||
lcd_puts(27*FW-(LEN_FREE-4)*FW, 0, STR_FREE);
|
||||
if (event) reusableBuffer.models.eepromfree = EeFsGetFree();
|
||||
lcd_outdezAtt(20*FW, 0, reusableBuffer.models.eepromfree, 0);
|
||||
lcd_puts(21*FW, 0, "bytes"); // TODO translations
|
||||
lcd_puts(21*FW, 0, STR_BYTES);
|
||||
#elif !defined(PCBSKY9X)
|
||||
lcd_puts(9*FW-(LEN_FREE-4)*FW, 0, STR_FREE);
|
||||
if (event) reusableBuffer.models.eepromfree = EeFsGetFree();
|
||||
@@ -987,7 +981,7 @@ void menuModelSetup(uint8_t event)
|
||||
break;
|
||||
|
||||
case ITEM_MODE_INTERNAL_MODULE_MODE:
|
||||
lcd_putsLeft(y, PSTR("\001Mode"));
|
||||
lcd_putsLeft(y, STR_MODE);
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, PSTR("\004""OFF\0""X16\0""D8\0 ""LR12"), 1+g_model.rfProtocol, m_posHorz==0 ? attr : 0);
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+5*FW+3, y, STR_CH, m_posHorz==1 ? attr : 0);
|
||||
lcd_outdezAtt(lcdLastPos, y, g_model.ppmSCH+1, LEFT | (m_posHorz==1 ? attr : 0));
|
||||
@@ -1025,8 +1019,8 @@ void menuModelSetup(uint8_t event)
|
||||
checkModelIdUnique(g_eeGeneral.currModel);
|
||||
}
|
||||
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+3*FW, y, PSTR("[Bind]"), m_posHorz==1 ? attr : 0);
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, PSTR("[Range]"), m_posHorz==2 ? attr : 0);
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MODULE_BIND, m_posHorz==1 ? attr : 0);
|
||||
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_MODULE_RANGE, m_posHorz==2 ? attr : 0);
|
||||
{
|
||||
uint8_t newFlag = 0;
|
||||
if (attr && m_posHorz>0 && s_editMode>0) {
|
||||
@@ -1044,8 +1038,8 @@ void menuModelSetup(uint8_t event)
|
||||
|
||||
case ITEM_MODE_INTERNAL_MODULE_FAILSAFE:
|
||||
lcd_putsLeft(y, TR_FAILSAFE);
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, PSTR("\011""Hold\0 ""Custom\0 ""No pulses"), g_model.failsafeMode, m_posHorz==0 ? attr : 0);
|
||||
if (g_model.failsafeMode == FAILSAFE_CUSTOM) lcd_putsAtt(MODEL_SETUP_2ND_COLUMN + 10*FW, y, PSTR("[Set]"), m_posHorz==1 ? attr : 0);
|
||||
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VFAILSAFE, g_model.failsafeMode, m_posHorz==0 ? attr : 0);
|
||||
if (g_model.failsafeMode == FAILSAFE_CUSTOM) lcd_putsAtt(MODEL_SETUP_2ND_COLUMN + 10*FW, y, STR_SET, m_posHorz==1 ? attr : 0);
|
||||
if (attr) {
|
||||
if (g_model.failsafeMode != FAILSAFE_CUSTOM)
|
||||
m_posHorz = 0;
|
||||
|
||||
+5
-2
@@ -144,7 +144,8 @@ enum BeeperMode {
|
||||
uint8_t optrexDisplay; \
|
||||
uint8_t sticksGain; \
|
||||
uint8_t rotarySteps; \
|
||||
uint8_t countryCode;
|
||||
uint8_t countryCode; \
|
||||
uint8_t imperial;
|
||||
#elif defined(PXX)
|
||||
#define EXTRA_GENERAL_FIELDS uint8_t countryCode;
|
||||
#else
|
||||
@@ -531,7 +532,9 @@ PACK(typedef struct t_CustomFnData { // Function Switches data
|
||||
PACK(union {
|
||||
char name[LEN_CFN_NAME];
|
||||
struct {
|
||||
uint32_t val;
|
||||
int16_t val;
|
||||
int16_t ext1;
|
||||
int16_t ext2;
|
||||
} composite;
|
||||
}) param;
|
||||
uint8_t mode:2;
|
||||
|
||||
+40
-27
@@ -1382,29 +1382,30 @@ void setGVarValue(uint8_t idx, int16_t value, int8_t phase)
|
||||
#if defined(FRSKY) || defined(CPUARM)
|
||||
inline void convertUnit(getvalue_t & val, uint8_t & unit)
|
||||
{
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
if (unit == UNIT_DEGREES) {
|
||||
val += 18;
|
||||
val *= 115;
|
||||
val >>= 6;
|
||||
if (IS_IMPERIAL_ENABLE()) {
|
||||
if (unit == UNIT_DEGREES) {
|
||||
val += 18;
|
||||
val *= 115;
|
||||
val >>= 6;
|
||||
}
|
||||
if (unit == UNIT_METERS) {
|
||||
// m to ft *105/32
|
||||
val = val * 3 + (val >> 2) + (val >> 5);
|
||||
}
|
||||
if (unit == UNIT_FEET) {
|
||||
unit = UNIT_METERS;
|
||||
}
|
||||
if (unit == UNIT_KTS) {
|
||||
unit = UNIT_KMH;
|
||||
}
|
||||
}
|
||||
if (unit == UNIT_METERS) {
|
||||
// m to ft *105/32
|
||||
val = val * 3 + (val >> 2) + (val >> 5);
|
||||
else {
|
||||
if (unit == UNIT_KTS) {
|
||||
// kts to km/h
|
||||
unit = UNIT_KMH;
|
||||
val = (val * 46) / 25;
|
||||
}
|
||||
}
|
||||
if (unit == UNIT_FEET) {
|
||||
unit = UNIT_METERS;
|
||||
}
|
||||
if (unit == UNIT_KTS) {
|
||||
unit = UNIT_KMH;
|
||||
}
|
||||
#else
|
||||
if (unit == UNIT_KTS) {
|
||||
// kts to km/h
|
||||
unit = UNIT_KMH;
|
||||
val = (val * 46) / 25;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void putsTelemetryValue(xcoord_t x, uint8_t y, lcdint_t val, uint8_t unit, uint8_t att)
|
||||
@@ -2267,8 +2268,8 @@ PLAY_FUNCTION(playValue, uint8_t idx)
|
||||
#endif
|
||||
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_ALT-1:
|
||||
case MIXSRC_FIRST_TELEM-1+TELEM_MAX_ALT-1:
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
if (g_model.frsky.usrProto == USR_PROTO_WS_HOW_HIGH)
|
||||
#if defined(WS_HOW_HIGH)
|
||||
if (IS_IMPERIAL_ENABLE() && g_model.frsky.usrProto == USR_PROTO_WS_HOW_HIGH)
|
||||
PLAY_NUMBER(val, 1+UNIT_FEET, 0);
|
||||
else
|
||||
#endif
|
||||
@@ -2410,18 +2411,22 @@ void evalFunctions()
|
||||
active = !(activeFnSwitches & switch_mask);
|
||||
#if !defined(CPUARM)
|
||||
if (CFN_FUNC(sd) == FUNC_PLAY_BOTH && !active) {
|
||||
momentary = 1;
|
||||
momentary = true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
momentary = 0;
|
||||
momentary = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (swtch == SWSRC_ON) {
|
||||
active = false;
|
||||
momentary = false;
|
||||
}
|
||||
else {
|
||||
active = (activeFnSwitches & switch_mask);
|
||||
momentary = 0;
|
||||
momentary = false;
|
||||
}
|
||||
#if !defined(CPUM64)
|
||||
if (short_long) {
|
||||
@@ -2437,11 +2442,19 @@ void evalFunctions()
|
||||
}
|
||||
#if !defined(CPUARM)
|
||||
else if (CFN_FUNC(sd) == FUNC_PLAY_BOTH) {
|
||||
momentary = 1;
|
||||
momentary = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (active || momentary) {
|
||||
|
||||
if (active)
|
||||
TRACE_DEBUG("ACTIVE ");
|
||||
if (momentary)
|
||||
TRACE_DEBUG("MOMENTARY ");
|
||||
|
||||
TRACE_DEBUG("\n");
|
||||
|
||||
if (CFN_ACTIVE(sd)) {
|
||||
if (CFN_FUNC(sd) < FUNC_TRAINER) {
|
||||
safetyCh[CFN_CH_NUMBER(sd)] = CFN_PARAM(sd);
|
||||
|
||||
@@ -1382,5 +1382,13 @@ void varioWakeup();
|
||||
#define IS_SOUND_OFF() (g_eeGeneral.beeperMode == e_mode_quiet)
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define IS_IMPERIAL_ENABLE() (g_eeGeneral.imperial)
|
||||
#elif defined(IMPERIAL)
|
||||
#define IS_IMPERIAL_ENABLE() (1)
|
||||
#else
|
||||
#define IS_IMPERIAL_ENABLE() (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+30
-9
@@ -70,7 +70,12 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
||||
ISTR(FUNCSOUNDS)
|
||||
ISTR(VTELEMCHNS)
|
||||
#if defined(FRSKY) || defined(CPUARM)
|
||||
#if defined(CPUARM)
|
||||
ISTR(VTELEMUNIT_IMP)
|
||||
ISTR(VTELEMUNIT_NORM)
|
||||
#else
|
||||
ISTR(VTELEMUNIT)
|
||||
#endif
|
||||
ISTR(VALARM)
|
||||
ISTR(VALARMFN)
|
||||
ISTR(VTELPROTO)
|
||||
@@ -79,17 +84,17 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
||||
ISTR(VARIOSRC)
|
||||
ISTR(VSCREEN)
|
||||
#endif
|
||||
#ifdef TEMPLATES
|
||||
#if defined(TEMPLATES)
|
||||
ISTR(VTEMPLATES)
|
||||
#endif
|
||||
#ifdef HELI
|
||||
#if defined(HELI)
|
||||
ISTR(VSWASHTYPE)
|
||||
#endif
|
||||
ISTR(VKEYS)
|
||||
ISTR(VSWITCHES)
|
||||
ISTR(VSRCRAW)
|
||||
ISTR(VTMRMODES)
|
||||
#if defined(PCBGRUVIN9X) || defined (CPUARM)
|
||||
#if defined(PCBGRUVIN9X) || defined(CPUARM)
|
||||
ISTR(DATETIME)
|
||||
#endif
|
||||
#if defined(CPUARM)
|
||||
@@ -301,9 +306,10 @@ const pm_char STR_RXNUM[] PROGMEM = TR_RXNUM;
|
||||
const pm_char STR_SYNCMENU[] PROGMEM = TR_SYNCMENU;
|
||||
const pm_char STR_INTERNALRF[] PROGMEM = TR_INTERNALRF;
|
||||
const pm_char STR_EXTERNALRF[] PROGMEM = TR_EXTERNALRF;
|
||||
const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE;
|
||||
const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET;
|
||||
const pm_char STR_COUNTRYCODE[] PROGMEM = TR_COUNTRYCODE;
|
||||
const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE;
|
||||
const pm_char STR_VFAILSAFE[] PROGMEM = "\011""Hold\0 ""Custom\0 ""No pulses"; // TODO non-zero terminated
|
||||
const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET;
|
||||
#endif
|
||||
|
||||
const pm_char STR_INVERT_THR[] PROGMEM = TR_INVERT_THR;
|
||||
@@ -327,6 +333,8 @@ const pm_char STR_CURRENT[] PROGMEM = TR_CURRENT;
|
||||
|
||||
#if defined(CPUARM)
|
||||
const pm_char STR_CURRENT_CALIB[] PROGMEM = TR_CURRENT_CALIB;
|
||||
const pm_char STR_UNITSSYSTEM[] PROGMEM = "Units";
|
||||
const pm_char STR_VUNITSSYSTEM[] PROGMEM = TR("\006MetricImper.", "\010Metric\0 Imperial"); // TODO move it to non-zero terminated strings
|
||||
#endif
|
||||
|
||||
#if defined(NAVIGATION_MENUS)
|
||||
@@ -412,10 +420,23 @@ const pm_char STR_DATE[] PROGMEM = TR_DATE;
|
||||
const pm_char STR_CHANNELS_MONITOR[] PROGMEM = TR_CHANNELS_MONITOR;
|
||||
|
||||
#if LCD_W >= 212
|
||||
const pm_char STR_MODELNAME[] PROGMEM = TR_MODELNAME;
|
||||
const pm_char STR_PHASENAME[] PROGMEM = TR_PHASENAME;
|
||||
const pm_char STR_MIXNAME[] PROGMEM = TR_MIXNAME;
|
||||
const pm_char STR_EXPONAME[] PROGMEM = TR_EXPONAME;
|
||||
const pm_char STR_MODELNAME[] PROGMEM = TR_MODELNAME;
|
||||
const pm_char STR_PHASENAME[] PROGMEM = TR_PHASENAME;
|
||||
const pm_char STR_MIXNAME[] PROGMEM = TR_MIXNAME;
|
||||
const pm_char STR_EXPONAME[] PROGMEM = TR_EXPONAME;
|
||||
#endif
|
||||
|
||||
#if LCD_W >= 212
|
||||
const char * STR_PHASES_HEADERS[] = { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " };
|
||||
const char * STR_LIMITS_HEADERS[] = { " Name ", " Offset ", " Min ", " Max ", " Direction ", " PPM Center ", " Symetrical " };
|
||||
const char * STR_CSW_HEADERS[] = { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " };
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
const pm_char STR_BYTES[] PROGMEM = "bytes";
|
||||
const pm_char STR_MODULE_BIND[] PROGMEM = "[Bind]";
|
||||
const pm_char STR_MODULE_RANGE[] PROGMEM = "[Range]";
|
||||
const pm_char STR_SET[] PROGMEM = "[Set]";
|
||||
#endif
|
||||
|
||||
const pm_uchar font_5x7[] PROGMEM = {
|
||||
|
||||
+37
-5
@@ -67,9 +67,9 @@
|
||||
#define EOFS(x) ( OFS_##x + sizeof(TR_##x) )
|
||||
|
||||
#if LCD_W >= 212
|
||||
#define TR(x,y) y
|
||||
#define TR(x,y) y
|
||||
#else
|
||||
#define TR(x,y) x
|
||||
#define TR(x,y) x
|
||||
#endif
|
||||
|
||||
// The non-0-terminated-strings
|
||||
@@ -111,8 +111,14 @@ extern const pm_char STR_OPEN9X[];
|
||||
#define OFS_FUNCSOUNDS (OFS_VFSWRESET + sizeof(TR_VFSWRESET))
|
||||
#define OFS_VTELEMCHNS (OFS_FUNCSOUNDS + sizeof(TR_FUNCSOUNDS))
|
||||
#if defined(FRSKY) || defined(CPUARM)
|
||||
#define OFS_VTELEMUNIT (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS))
|
||||
#define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT))
|
||||
#if defined(CPUARM)
|
||||
#define OFS_VTELEMUNIT_IMP (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS))
|
||||
#define OFS_VTELEMUNIT_NORM (OFS_VTELEMUNIT_IMP + sizeof(TR_VTELEMUNIT_IMP))
|
||||
#define OFS_VALARM (OFS_VTELEMUNIT_NORM + sizeof(TR_VTELEMUNIT_NORM))
|
||||
#else
|
||||
#define OFS_VTELEMUNIT (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS))
|
||||
#define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT))
|
||||
#endif
|
||||
#define OFS_VALARMFN (OFS_VALARM + sizeof(TR_VALARM))
|
||||
#define OFS_VTELPROTO (OFS_VALARMFN + sizeof(TR_VALARMFN))
|
||||
#define OFS_GPSFORMAT (OFS_VTELPROTO + sizeof(TR_VTELPROTO))
|
||||
@@ -180,7 +186,11 @@ extern const pm_char STR_OPEN9X[];
|
||||
#define STR_VTELEMCHNS (STR_OPEN9X + OFS_VTELEMCHNS)
|
||||
|
||||
#if defined(FRSKY) || defined(CPUARM)
|
||||
#define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT)
|
||||
#if defined(CPUARM)
|
||||
#define STR_VTELEMUNIT (STR_OPEN9X + (g_eeGeneral.imperial ? OFS_VTELEMUNIT_IMP : OFS_VTELEMUNIT_NORM))
|
||||
#else
|
||||
#define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT)
|
||||
#endif
|
||||
#define STR_VALARM (STR_OPEN9X + OFS_VALARM)
|
||||
#define STR_VALARMFN (STR_OPEN9X + OFS_VALARMFN)
|
||||
#define STR_VTELPROTO (STR_OPEN9X + OFS_VTELPROTO)
|
||||
@@ -409,6 +419,7 @@ extern const pm_char STR_INTERNALRF[];
|
||||
extern const pm_char STR_EXTERNALRF[];
|
||||
extern const pm_char STR_FAILSAFE[];
|
||||
extern const pm_char STR_FAILSAFESET[];
|
||||
extern const pm_char STR_VFAILSAFE[]; // TODO non-zero terminated
|
||||
extern const pm_char STR_COUNTRYCODE[];
|
||||
#endif
|
||||
|
||||
@@ -436,6 +447,8 @@ extern const pm_char STR_CURRENT[];
|
||||
#if defined(CPUARM)
|
||||
extern const pm_char STR_CURRENT_CALIB[];
|
||||
#define LEN_CALIB_FIELDS (PSIZE(TR_BATT_CALIB) > PSIZE(TR_CURRENT_CALIB) ? PSIZE(TR_BATT_CALIB) : PSIZE(TR_CURRENT_CALIB))
|
||||
extern const pm_char STR_UNITSSYSTEM[];
|
||||
extern const pm_char STR_VUNITSSYSTEM[];
|
||||
#else
|
||||
#define LEN_CALIB_FIELDS PSIZE(TR_BATT_CALIB)
|
||||
#endif
|
||||
@@ -551,4 +564,23 @@ extern const pm_char STR_CHANNELS_MONITOR[];
|
||||
#define STR_EXPONAME STR_NAME
|
||||
#endif
|
||||
|
||||
#if LCD_W >= 212
|
||||
extern const char * STR_PHASES_HEADERS[];
|
||||
extern const char * STR_LIMITS_HEADERS[];
|
||||
extern const char * STR_CSW_HEADERS[];
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
extern const pm_char STR_BYTES[];
|
||||
extern const pm_char STR_MODULE_BIND[];
|
||||
extern const pm_char STR_MODULE_RANGE[];
|
||||
extern const pm_char STR_SET[];
|
||||
#endif
|
||||
|
||||
// TODO move to translations files
|
||||
#define CHR_SHORT 's'
|
||||
#define CHR_LONG 'l'
|
||||
#define CHR_TOGGLE 't'
|
||||
#define CHR_HOUR 'h'
|
||||
|
||||
#endif
|
||||
|
||||
+31
-24
@@ -227,16 +227,23 @@
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2""Tx\0 ""Rx\0 ""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cur+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
#define SPEED_UNIT "kts"
|
||||
#if defined(CPUARM)
|
||||
#define LEN_VTELEMUNIT_NORM "\003"
|
||||
#define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 "
|
||||
#define LEN_VTELEMUNIT_IMP "\003"
|
||||
#define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 "
|
||||
#else
|
||||
#define LENGTH_UNIT "m\0 "
|
||||
#define SPEED_UNIT "kmh"
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
#define SPEED_UNIT "kts"
|
||||
#else
|
||||
#define LENGTH_UNIT "m\0 "
|
||||
#define SPEED_UNIT "kmh"
|
||||
#endif
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT LENGTH_UNIT "@\0 ""%\0 ""mA\0""mAh""W\0 "
|
||||
#endif
|
||||
|
||||
#define LEN_VTELEMUNIT "\003"
|
||||
#define TR_VTELEMUNIT "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT LENGTH_UNIT "@\0 ""%\0 ""mA\0""mAh""W\0 "
|
||||
#define STR_V (STR_VTELEMUNIT+1)
|
||||
#define STR_A (STR_VTELEMUNIT+4)
|
||||
|
||||
@@ -299,9 +306,9 @@
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW " ON"
|
||||
#define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "One"
|
||||
#else
|
||||
#define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW " ON"
|
||||
#define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One"
|
||||
#endif
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
@@ -336,10 +343,10 @@
|
||||
#define TR_ENTER "[MENU]"
|
||||
#endif
|
||||
|
||||
#define TR_POPUPS TR_ENTER"\010[EXIT]"
|
||||
#define TR_POPUPS TR_ENTER "\010[EXIT]"
|
||||
#define OFS_EXIT sizeof(TR_ENTER)
|
||||
|
||||
#define TR_MENUWHENDONE CENTER"\006"TR_ENTER" WHEN DONE"
|
||||
#define TR_MENUWHENDONE CENTER "\006" TR_ENTER " WHEN DONE"
|
||||
#define TR_FREE "free"
|
||||
#define TR_DELETEMODEL "DELETE MODEL"
|
||||
#define TR_COPYINGMODEL "Copying model..."
|
||||
@@ -366,7 +373,7 @@
|
||||
#define TR_FADEIN "Fade In"
|
||||
#define TR_FADEOUT "Fade Out"
|
||||
#define TR_DEFAULT "(default)"
|
||||
#define TR_CHECKTRIMS CENTER"\006Check\012Trims"
|
||||
#define TR_CHECKTRIMS CENTER "\006Check\012Trims"
|
||||
#define OFS_CHECKTRIMS CENTER_OFS+(9*FW)
|
||||
#define TR_SWASHTYPE "Swash Type"
|
||||
#define TR_COLLECTIVE TR("Collective","Collective source")
|
||||
@@ -438,14 +445,14 @@
|
||||
#define TR_CAL "Cal"
|
||||
#define TR_VTRIM "Trim- +"
|
||||
#define TR_BG "BG:"
|
||||
#define TR_MENUTOSTART CENTER"\006"TR_ENTER" TO START"
|
||||
#define TR_SETMIDPOINT CENTER"\003SET STICKS MIDPOINT"
|
||||
#define TR_MOVESTICKSPOTS CENTER"\006MOVE STICKS/POTS"
|
||||
#define TR_MENUTOSTART CENTER "\006" TR_ENTER " TO START"
|
||||
#define TR_SETMIDPOINT CENTER "\003SET STICKS MIDPOINT"
|
||||
#define TR_MOVESTICKSPOTS CENTER "\006MOVE STICKS/POTS"
|
||||
#define TR_RXBATT "Rx Batt:"
|
||||
#define TR_TXnRX "Tx:\0Rx:"
|
||||
#define OFS_RX 4
|
||||
#define TR_ACCEL "Acc:"
|
||||
#define TR_NODATA CENTER"NO DATA"
|
||||
#define TR_NODATA CENTER "NO DATA"
|
||||
#define TR_TM1TM2 "TM1\032TM2"
|
||||
#define TR_THRTHP "THR\032TH%"
|
||||
#define TR_TOT "TOT"
|
||||
@@ -462,7 +469,7 @@
|
||||
|
||||
#define TR_T10MSUS "T10ms\016us"
|
||||
#define TR_FREESTACKMINB "Free Stack\010b"
|
||||
#define TR_MENUTORESET CENTER TR_ENTER" to reset"
|
||||
#define TR_MENUTORESET CENTER TR_ENTER " to reset"
|
||||
#define TR_PPM "PPM"
|
||||
#define TR_CH "CH"
|
||||
#define TR_MODEL "MODEL"
|
||||
@@ -470,13 +477,13 @@
|
||||
#define TR_MIX "MIX"
|
||||
#define TR_EEPROMLOWMEM "EEPROM low mem"
|
||||
#define TR_ALERT "\016ALERT"
|
||||
#define TR_PRESSANYKEYTOSKIP CENTER"Press any key to skip"
|
||||
#define TR_THROTTLENOTIDLE CENTER"Throttle not idle"
|
||||
#define TR_ALARMSDISABLED CENTER"Alarms Disabled"
|
||||
#define TR_PRESSANYKEY TR("\010Press any Key", CENTER"Press any Key")
|
||||
#define TR_BADEEPROMDATA CENTER"Bad EEprom Data"
|
||||
#define TR_EEPROMFORMATTING CENTER"Formatting EEPROM"
|
||||
#define TR_EEPROMOVERFLOW CENTER"EEPROM overflow"
|
||||
#define TR_PRESSANYKEYTOSKIP CENTER "Press any key to skip"
|
||||
#define TR_THROTTLENOTIDLE CENTER "Throttle not idle"
|
||||
#define TR_ALARMSDISABLED CENTER "Alarms Disabled"
|
||||
#define TR_PRESSANYKEY TR("\010Press any Key", CENTER "Press any Key")
|
||||
#define TR_BADEEPROMDATA CENTER "Bad EEprom Data"
|
||||
#define TR_EEPROMFORMATTING CENTER "Formatting EEPROM"
|
||||
#define TR_EEPROMOVERFLOW CENTER "EEPROM overflow"
|
||||
#define TR_MENURADIOSETUP "RADIO SETUP"
|
||||
#define TR_MENUDATEANDTIME "DATE AND TIME"
|
||||
#define TR_MENUTRAINER "TRAINER"
|
||||
|
||||
@@ -93,7 +93,16 @@ PLAY_FUNCTION(playNumber, getvalue_t number, uint8_t unit, uint8_t att)
|
||||
number = -number;
|
||||
}
|
||||
|
||||
convertUnit(number, unit);
|
||||
if (unit) {
|
||||
unit--;
|
||||
convertUnit(number, unit);
|
||||
if (IS_IMPERIAL_ENABLE()) {
|
||||
if (unit == UNIT_METERS) {
|
||||
unit = UNIT_FEET;
|
||||
}
|
||||
}
|
||||
unit++;
|
||||
}
|
||||
|
||||
int8_t mode = MODE(att);
|
||||
if (mode > 0) {
|
||||
|
||||
@@ -203,11 +203,11 @@ void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val,
|
||||
case TELEM_ALT-1:
|
||||
putsTelemetryValue(x, y, val/10, UNIT_METERS, att|PREC1);
|
||||
break;
|
||||
#elif defined(IMPERIAL_UNITS)
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
case TELEM_ALT-1:
|
||||
case TELEM_MIN_ALT-1:
|
||||
case TELEM_MAX_ALT-1:
|
||||
if (g_model.frsky.usrProto == USR_PROTO_WS_HOW_HIGH) {
|
||||
if (IS_IMPERIAL_ENABLE() && g_model.frsky.usrProto == USR_PROTO_WS_HOW_HIGH) {
|
||||
putsTelemetryValue(x, y, val, UNIT_FEET, att);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user