[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:
bsongis@gmail.com
2013-04-04 17:54:55 +00:00
parent 8bab0aee9a
commit bc078d5e3f
12 changed files with 206 additions and 126 deletions
+24 -38
View File
@@ -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
View File
@@ -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);
}
+8 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+8
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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"
+10 -1
View File
@@ -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) {
+2 -2
View File
@@ -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;
}