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

Merge branch 'next' of https://github.com/opentx/opentx into TaranisPlus

Conflicts:
	companion/src/firmwares/opentx/opentxinterface.cpp
	radio/src/haptic.cpp
	radio/src/targets/gruvin9x/board_gruvin9x.h
	radio/src/targets/mega2560/board_mega2560.h
	radio/src/targets/sky9x/board_sky9x.h
	radio/src/targets/stock/board_stock.h
	radio/src/targets/taranis/board_taranis.h
	radio/src/targets/taranis/haptic_driver.cpp
This commit is contained in:
Andre Bernet 2014-04-29 15:13:05 +02:00
commit 0ffd0c8e0b
45 changed files with 3682 additions and 2569 deletions

View file

@ -374,4 +374,12 @@ Wolfgang Rauser
Samuel Cook
BoltRC - www.boltrc.com
Friedrich Ipolt
Barrington Cole
Charles Lakins
Thos. O'Meara Photography
Adam Chevalier
Mike Mulligan
Gordon Stahl
Serge Michaux
Robert Young
Wilco Hijink

View file

@ -81,6 +81,7 @@ int main(int argc, char *argv[])
app.setApplicationName("OpenTX Companion");
app.setOrganizationName("OpenTX");
app.setOrganizationDomain("open-tx.org");
app.setAttribute(Qt::AA_DontShowIconsInMenus, false);
#ifdef __APPLE__
app.setStyle(new MyProxyStyle);

View file

@ -71,6 +71,7 @@
<file>images/wizard/models.png</file>
<file>images/wizard/multirotor.png</file>
<file>images/wizard/rudder.png</file>
<file>images/wizard/options.png</file>
<file>images/wizard/simpletail.png</file>
<file>images/wizard/tail.png</file>
<file>images/wizard/tails.png</file>

View file

@ -87,26 +87,42 @@ const uint8_t modn12x3[4][4]= {
#define STK_P2 6
#define STK_P3 7
#define DSW_THR 1 //DSW_SA ^
#define DSW_RUD 2 //DSW_SA -
#define DSW_ELE 3 //DSW_SA _
#define DSW_ID0 4 //DSW_SB ^
#define DSW_ID1 5 //DSW_SB -
#define DSW_ID2 6 //DSW_SB _
#define DSW_AIL 7 //DSW_SC ^
#define DSW_GEA 8 //DSW_SC -
#define DSW_TRN 9 //DSW_SC _
#define DSW_SD0 10
#define DSW_SD1 11
#define DSW_SD2 12
#define DSW_SE0 13
#define DSW_SE1 14
#define DSW_SE2 15
#define DSW_SF0 16
#define DSW_SF1 17
#define DSW_SG0 18
#define DSW_SG1 19
#define DSW_SG2 20
enum Switches {
SWITCH_NONE,
SWITCH_THR = SWITCH_NONE+1,
SWITCH_RUD,
SWITCH_ELE,
SWITCH_ID0,
SWITCH_ID1,
SWITCH_ID2,
SWITCH_AIL,
SWITCH_GEA,
SWITCH_TRN,
SWITCH_SA0 = SWITCH_NONE+1,
SWITCH_SA1,
SWITCH_SA2,
SWITCH_SB0,
SWITCH_SB1,
SWITCH_SB2,
SWITCH_SC0,
SWITCH_SC1,
SWITCH_SC2,
SWITCH_SD0,
SWITCH_SD1,
SWITCH_SD2,
SWITCH_SE0,
SWITCH_SE1,
SWITCH_SE2,
SWITCH_SF0,
SWITCH_SF1,
SWITCH_SG0,
SWITCH_SG1,
SWITCH_SG2,
SWITCH_SH0,
SWITCH_SH1
};
#define TRIM_LH_L 0
#define TRIM_LH_R 1
@ -1037,8 +1053,6 @@ enum Capability {
Beeperlen,
EepromBackup,
Haptic,
HapticLength,
HapticMode,
HasBeeper,
ModelTrainerEnable,
Timer2ThrTrig,

View file

@ -52,6 +52,7 @@
#define LUA
#define LUA_MODEL_SCRIPTS
#define EEPROM_VARIANT 3
#define HAPTIC
#define NUM_POTS 5
@ -99,6 +100,8 @@ inline int geteepromsize() {
#include "radio/src/targets/taranis/keys_driver.cpp"
#include "radio/src/keys.cpp"
#include "radio/src/bmp.cpp"
#include "radio/src/haptic.cpp"
#include "radio/src/targets/taranis/haptic_driver.cpp"
// TODO Because FatFS in not C++ there cannot be namespaces there and the functions are defined several times!
#undef SDCARD
#include "radio/src/simpgmspace.cpp"

View file

@ -494,8 +494,9 @@ int OpenTxFirmware::getCapability(const Capability capability)
case Gvars:
return IS_ARM(board) ? 9 : 5;
case FlightModesName:
case GvarsName:
return (IS_TARANIS(board) ? 10 : 6);
case GvarsName:
return 6;
case HasChNames:
return (IS_TARANIS(board) ? 1 : 0);
case GvarsInCS:
@ -571,9 +572,6 @@ int OpenTxFirmware::getCapability(const Capability capability)
case HasFuncRepeat:
case HasContrast:
return 1;
case HapticLength:
case HapticMode:
return 1;
case Beeperlen:
return 1;
case MaxVolume:
@ -662,7 +660,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
case LCDWidth:
return (IS_TARANIS(board) ? 212 : 128) ;
case GetThrSwitch:
return (IS_TARANIS(board) ? DSW_SF1 : DSW_THR) ;
return (IS_TARANIS(board) ? SWITCH_SF1 : SWITCH_THR) ;
case HasDisplayText:
case VirtualInputs:
return IS_TARANIS(board) ? 32 : 0;

View file

@ -201,23 +201,18 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) :
if (!GetCurrentFirmware()->getCapability(Haptic)) {
ui->hapticStrengthSB->setDisabled(true);
ui->hapticStrengthSB->hide();
ui->label_hapticStrengthSB->hide();
}
if (!GetCurrentFirmware()->getCapability(HapticMode)) {
ui->hapticmodeCB->setDisabled(true);
ui->hapticmodeCB->hide();
ui->label_hapticmode->hide();
}
int renumber=GetCurrentFirmware()->getCapability(RotaryEncoders);
if (renumber==0) {
ui->re_label->hide();
ui->re_CB->hide();
} else {
}
else {
populateRotEncCB(ui->re_CB, g_eeGeneral.reNavigation, renumber);
}
ui->contrastSB->setValue(g_eeGeneral.contrast);
ui->battwarningDSB->setValue((double)g_eeGeneral.vBatWarn/10);
ui->backlightautoSB->setValue(g_eeGeneral.backlightDelay*5);
@ -344,11 +339,12 @@ void GeneralEdit::setValues()
ui->beeperCB->setCurrentIndex(g_eeGeneral.beeperMode+2);
ui->channelorderCB->setCurrentIndex(g_eeGeneral.templateSetup);
ui->stickmodeCB->setCurrentIndex(g_eeGeneral.stickMode);
if (!GetCurrentFirmware()->getCapability(HapticLength)) {
if (GetCurrentFirmware()->getCapability(Haptic)) {
ui->hapticLengthCB->setCurrentIndex(g_eeGeneral.hapticLength+2);
}
else {
ui->label_HL->hide();
ui->hapticLengthCB->hide();
} else {
ui->hapticLengthCB->setCurrentIndex(g_eeGeneral.hapticLength+2);
}
ui->BLBright_SB->setValue(100-g_eeGeneral.backlightBright);
ui->soundModeCB->setCurrentIndex(g_eeGeneral.speakerMode);

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View file

@ -2023,7 +2023,7 @@ for (i=0; i<MAX_PROFILES && g.profile[i].existsOnDisk(); i++)
// Copy current profile to new and give it a new name
g.profile[i] = g.profile[g.id()];
g.profile[i].name( QString("New Radio"));
g.profile[i].name( QString(tr("New Radio")));
g.id(i);
updateMenus();

View file

@ -674,8 +674,8 @@ void MdiChild::print(int model, QString filename)
}
if (pd) {
pd->setAttribute(Qt::WA_DeleteOnClose, true);
pd->show();
delete pd;
}
}

View file

@ -224,8 +224,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
}
}
if (flaps>0) {
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4;
}
sign=-1;
for (uint8_t i=0; i< flaps; i++) {
@ -286,18 +286,18 @@ void Templates::applyNumericTemplate(uint64_t tpl)
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6);
}
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
switch (gyro) {
case 1:
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
break;
case 2:
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
break;
}
} else {
@ -311,25 +311,25 @@ void Templates::applyNumericTemplate(uint64_t tpl)
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6);
}
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6);
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
switch (gyro) {
case 1:
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6);
break;
case 2:
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6);
break;
}
}
// collective
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
break;
case 2:
ailerons=ailerontype;
@ -415,8 +415,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
}
}
if (flaps>0) {
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4;
}
sign=-1;
for (uint8_t i=0; i< flaps; i++) {
@ -440,8 +440,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
}
}
if (spoilers>0) {
md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6); md->speedUp=4;;md->speedDown=4;
md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6);md->speedUp=4;md->speedDown=4;
md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6); md->speedUp=4;;md->speedDown=4;
md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6);md->speedUp=4;md->speedDown=4;
}
sign=-1;
for (uint8_t i=0; i< spoilers; i++) {
@ -510,8 +510,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
}
}
if (flaps>0) {
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4;
}
sign=-1;
for (uint8_t i=0; i< flaps; i++) {
@ -630,19 +630,19 @@ void Templates::applyTemplate(uint8_t idx)
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
// gyro gain
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA);
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA);
// collective
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10);
@ -676,19 +676,19 @@ void Templates::applyTemplate(uint8_t idx)
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
// gyro gain
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;
// collective
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10);
@ -723,8 +723,8 @@ void Templates::applyTemplate(uint8_t idx)
}
}
}
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;
md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;
}
//Heli Setup futaba style
@ -742,19 +742,19 @@ void Templates::applyTemplate(uint8_t idx)
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
// gyro gain
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA);
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA);
// collective
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10);
@ -788,19 +788,19 @@ void Templates::applyTemplate(uint8_t idx)
md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF;
md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP;
// gyro gain
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;
// collective
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF;
md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10);
@ -835,8 +835,8 @@ void Templates::applyTemplate(uint8_t idx)
}
}
}
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-SWITCH_GEA); md->sOffset=100;
md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,SWITCH_GEA); md->sOffset=100;
}
//Servo Test

File diff suppressed because it is too large Load diff

View file

@ -6331,7 +6331,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../modeledit/customfunctions.cpp" line="19"/>
<source>Played once, not during startup</source>
<translation>Lu une fois, mais pas à la mose en route</translation>
<translation>Lu une fois, mais pas à la mise en route</translation>
</message>
<message>
<location filename="../modeledit/customfunctions.cpp" line="26"/>

View file

@ -4,7 +4,7 @@
<context>
<name>AileronsPage</name>
<message>
<location filename="../wizarddialog.cpp" line="+392"/>
<location filename="../wizarddialog.cpp" line="+395"/>
<source>No</source>
<translation>Nej</translation>
</message>
@ -325,11 +325,22 @@ Mode 4:
</message>
<message>
<location line="+36"/>
<source>Radio Firmware</source>
<translation>Firmware-typ</translation>
<source>Radio Type</source>
<translation>Radiotyp</translation>
</message>
<message>
<location line="+52"/>
<location line="+88"/>
<source>Set voice language.
May be different from firmware language</source>
<translation>Välj röstspråk.
Behöver inte vara samma som menyspråk</translation>
</message>
<message>
<source>Radio Firmware</source>
<translation type="obsolete">Firmware-typ</translation>
</message>
<message>
<location line="-36"/>
<source>Other Settings</source>
<translation>Andra Inställningar</translation>
</message>
@ -344,14 +355,13 @@ Mode 4:
<translation>Sökväg till SD-struktur</translation>
</message>
<message>
<location line="+16"/>
<source>Set language of voice.
May be different from firmware language</source>
<translation>Välj språk för röstfunktioner.
<translation type="obsolete">Välj språk för röstfunktioner.
Behöver inte vara samma som menyspråket</translation>
</message>
<message>
<location line="+15"/>
<location line="+31"/>
<source>Voice Language</source>
<translation>Röstspråk</translation>
</message>
@ -1160,7 +1170,7 @@ Behöver inte vara samma som menyspråket</translation>
<context>
<name>ConclusionPage</name>
<message>
<location filename="../wizarddialog.cpp" line="+287"/>
<location filename="../wizarddialog.cpp" line="+308"/>
<source>OK, I understand.</source>
<translation>OK, jag förstår.</translation>
</message>
@ -1415,7 +1425,7 @@ Behöver inte vara samma som menyspråket</translation>
<context>
<name>CyclicPage</name>
<message>
<location filename="../wizarddialog.cpp" line="-154"/>
<location filename="../wizarddialog.cpp" line="-175"/>
<source>90</source>
<translation>90</translation>
</message>
@ -1684,11 +1694,17 @@ Om fältet lämnas tomt så är filtret aktivt hela tiden.</translation>
<translation>Röst</translation>
</message>
<message>
<location line="+13"/>
<source>Set language of voice.
May be different from firmware language</source>
<translation>Välj språk för röstfunktioner.
<translation type="obsolete">Välj språk för röstfunktioner.
Får skilja från språket för firmware</translation>
</message>
<message>
<location line="+13"/>
<source>Set voice language.
May be different from firmware language</source>
<translation>Välj röstspråk.
Behöver inte vara samma som menyspråk</translation>
</message>
<message>
<location line="+5"/>
@ -1751,12 +1767,7 @@ Får skilja från språket för firmware</translation>
<translation>Firmware</translation>
</message>
<message>
<location line="+23"/>
<source>-</source>
<translation></translation>
</message>
<message>
<location line="+7"/>
<location line="+30"/>
<source>Latest Download</source>
<translation>Senast nedladdad</translation>
</message>
@ -3861,7 +3872,12 @@ Vill du ladda ned den nu ?</translation>
</translation>
</message>
<message>
<location line="+42"/>
<location line="+23"/>
<source>New Radio</source>
<translation>Ny Radio</translation>
</message>
<message>
<location line="+19"/>
<source>Unable to find file %1!</source>
<translation>Kan inte hitta filen %1 !</translation>
</message>
@ -5455,6 +5471,19 @@ p, li { white-space: pre-wrap; }
<translation>Roll-kanal:</translation>
</message>
</context>
<context>
<name>OptionsPage</name>
<message>
<location line="+23"/>
<source>Throttle Cut</source>
<translation>Gassäkring</translation>
</message>
<message>
<location line="+1"/>
<source>Throttle Timer</source>
<translation>Gastimer</translation>
</message>
</context>
<context>
<name>PrintDialog</name>
<message>
@ -5852,9 +5881,13 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+1"/>
<source>System of units</source>
<source>Units system</source>
<translation>Måttsystem</translation>
</message>
<message>
<source>System of units</source>
<translation type="obsolete">Måttsystem</translation>
</message>
<message>
<location line="+1"/>
<source>Blades</source>
@ -6498,7 +6531,7 @@ p, li { white-space: pre-wrap; }
<location line="+29"/>
<location line="+25"/>
<source>In model setup menus automatically set source by moving the control</source>
<translation type="unfinished"></translation>
<translation>Välj automatisk kontroller i menyn för modelinställningar genom att använda dem</translation>
</message>
<message>
<location line="-155"/>
@ -6508,7 +6541,7 @@ p, li { white-space: pre-wrap; }
<location line="+29"/>
<location line="+25"/>
<source>In model setup menus automatically set switch by moving the control</source>
<translation type="unfinished"></translation>
<translation>Välj automatisk brytare i menyn för modelinställningar genom att använda dem</translation>
</message>
<message>
<location line="-138"/>
@ -7860,20 +7893,22 @@ Gruppen bakom OpenTX/Companion.</translation>
<message>
<location filename="../firmwares/opentx/open9xStockeeprom.cpp" line="+92"/>
<source>Simultaneous usage of expo and curves is no longer supported in OpenTX</source>
<translation type="unfinished"></translation>
<translation>Det går inte att använda Expo en specialkurva i OpenTX</translation>
</message>
<message>
<location filename="../warnings.h" line="+5"/>
<source>Thank you for upgrading to OpenTX 2.0. This is a major upgrade that adds and modifies a lot of things, so please make sure that you read release notes carefully to learn about the changes, and thoroughly check each of your models for proper function.
The OpenTX Team.</source>
<translation type="unfinished"></translation>
<translation>Tack för att du uppgraderat till OpenTX 2.0. Denna version innehåller många förbättringar och förändringar jämfört med tidiagare versioner. Läs gärna om förändringarna i dokumentet Release Notes. Kontrollera noggrant funktionen hos samtliga modeller som uppgraderas.
OpenTX-gruppen.</translation>
</message>
</context>
<context>
<name>RudderPage</name>
<message>
<location filename="../wizarddialog.cpp" line="-235"/>
<location filename="../wizarddialog.cpp" line="-259"/>
<source>No</source>
<translation>Nej</translation>
</message>
@ -8848,7 +8883,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<context>
<name>WizardDialog</name>
<message>
<location line="-265"/>
<location line="-268"/>
<source>Model Wizard</source>
<translation>Modellguide</translation>
</message>
@ -9016,6 +9051,16 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<source>Select the control channels for your multirotor</source>
<translation>Välj kontroll-kanaler för din multikopter</translation>
</message>
<message>
<location line="+1"/>
<source>Model Options</source>
<translation>Modell-funktioner</translation>
</message>
<message>
<location line="+0"/>
<source>Select additional options</source>
<translation>Välj ytterligare funktioner</translation>
</message>
<message>
<location line="+1"/>
<source>Save Changes</source>
@ -9101,16 +9146,17 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<location line="+2"/>
<location line="+2"/>
<location line="+8"/>
<location line="+2"/>
<source>TBD.</source>
<translation>Information saknas för denna dialog.</translation>
</message>
<message>
<location line="-6"/>
<location line="-8"/>
<source>Select the control channels for your multirotor.&lt;br&gt;&lt;br&gt;Throttle - Spektrum: CH1, Futaba: CH3&lt;br&gt;Yaw - Spektrum: CH4, Futaba: CH4&lt;br&gt;Pitch - Spektrum: CH3, Futaba: CH2&lt;br&gt;Roll - Spektrum: CH2, Futaba: CH1</source>
<translation>Välj vilka kanaler som skall användas för att kontrollera din Multirotot-modell.&lt;br&gt;&lt;br&gt;Gas - Spektrum: CH1, Futaba: CH3&lt;br&gt;Yaw - Spektrum: CH4, Futaba: CH4&lt;br&gt;Pitch - Spektrum: CH3, Futaba: CH2&lt;br&gt;Roll - Spektrum: CH2, Futaba: CH1</translation>
</message>
<message>
<location line="+8"/>
<location line="+10"/>
<source>There is no help available for the current page.</source>
<translation>Det finns ingen hjälp tillgänglig för denna sida.</translation>
</message>
@ -9123,7 +9169,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<context>
<name>WizardPrinter</name>
<message>
<location line="+774"/>
<location line="+795"/>
<source>Model Name: </source>
<translation>Modelnamn:</translation>
</message>
@ -9133,7 +9179,20 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<translation>Modeltyp:</translation>
</message>
<message>
<location line="+4"/>
<location line="+2"/>
<source>Options: </source>
<translation>Funktioner: </translation>
</message>
<message>
<source>Options: [</source>
<translation type="obsolete">Funktioner: [</translation>
</message>
<message>
<source>]</source>
<translation type="obsolete">]</translation>
</message>
<message>
<location line="+12"/>
<source>Channel %1: </source>
<translation>Kanal %1: </translation>
</message>
@ -10007,7 +10066,7 @@ m2560 för v4.1-kort</translation>
<message>
<location line="+65"/>
<source>Profile image %1 is invalid.</source>
<translation>Profilbilden %1 är ogiltig</translation>
<translation>Profilbilden %1 är ogiltig.</translation>
</message>
<message>
<location line="+16"/>

View file

@ -67,35 +67,61 @@ void WizMix::addMix(ModelData &model, Input input, int weight, int channel, int
}
else if (input==FLAPS_INPUT){
// There ought to be some kind of constants for switches somewhere...
maxMixSwitch((char *)"Flaps Up", model.mixData[mixIndex++], channel+1, isTaranis ? 1 :-3 , weight); //SA-UP or ELE-UP
maxMixSwitch((char *)"Flaps Down", model.mixData[mixIndex++], channel+1, isTaranis ? 3 : 3 , -weight); //SA-DOWN or ELE-DOWN
maxMixSwitch((char *)"Flaps Up", model.mixData[mixIndex++], channel+1, isTaranis ? 1 :-3 , weight); //Taranis SA-UP, 9X ELE-UP
maxMixSwitch((char *)"Flaps Down", model.mixData[mixIndex++], channel+1, isTaranis ? 3 : 3 , -weight); //Taranis SA-DOWN, 9X ELE-DOWN
}
else if (input==AIRBRAKES_INPUT){
maxMixSwitch((char *)"Airbrk Off", model.mixData[mixIndex++], channel+1, isTaranis ? 13 :-2 , -weight); //SE-UP or RUD-UP
maxMixSwitch((char *)"Airbrk On", model.mixData[mixIndex++], channel+1, isTaranis ? 15 : 2 , weight); //SE-DOWN or RUD-DOWN
maxMixSwitch((char *)"Airbrk Off", model.mixData[mixIndex++], channel+1, isTaranis ? 13 :-2 , -weight); //Taranis SE-UP, 9X RUD-UP
maxMixSwitch((char *)"Airbrk On", model.mixData[mixIndex++], channel+1, isTaranis ? 15 : 2 , weight); //Tatanis SE-DOWN, 9X RUD-DOWN
}
}
}
WizMix::operator ModelData()
{
int throttleChannel = -1;
bool isTaranis = IS_TARANIS(GetEepromInterface()->getBoard());
ModelData model;
model.used = true;
model.modelId = modelId;
model.setDefaultInputs(settings);
int mixIndex = 0;
int switchIndex = 0;
int timerIndex = 0;
// Safe copy model name
strncpy(model.name, name, WIZ_MODEL_NAME_LENGTH);
model.name[WIZ_MODEL_NAME_LENGTH] = 0;
int mixIndex = 0;
// Add the channel mixes
for (int i=0; i<WIZ_MAX_CHANNELS; i++ )
{
Channel ch = channel[i];
if (ch.input1 == THROTTLE_INPUT || ch.input2 == THROTTLE_INPUT)
throttleChannel = i;
addMix(model, ch.input1, ch.weight1, i, mixIndex);
addMix(model, ch.input2, ch.weight2, i, mixIndex);
}
// Add the Throttle Cut option
if( options[THROTTLE_CUT_OPTION] && throttleChannel >=0 ){
model.funcSw[switchIndex].swtch.type = SWITCH_TYPE_SWITCH;
model.funcSw[switchIndex].swtch.index = isTaranis ? 16 : 1; // Taranis SF-UP, 9X THR-UP
model.funcSw[switchIndex].enabled = 1;
model.funcSw[switchIndex].func = (AssignFunc)throttleChannel;
model.funcSw[switchIndex].param = -100;
}
// Add the Throttle Timer option
if (options[THROTTLE_TIMER_OPTION] && throttleChannel >=0 ){
model.timers[timerIndex].mode.type = SWITCH_TYPE_SWITCH;
model.timers[timerIndex].mode.index = isTaranis ? -16 : -1; // Taranis !SF-UP, 9X THR-DOWN
timerIndex++;
}
return model;
}

View file

@ -18,7 +18,7 @@
#include "eeprominterface.h"
#define WIZ_MAX_CHANNELS 8
#define WIZ_MAX_OPTIONS 2
// TODO use a constant common to the whole companion
// TODO when in the wizard use the getCapacity(...) to know how long the name can be
#define WIZ_MODEL_NAME_LENGTH 12
@ -40,6 +40,11 @@ enum Vehicle {
HELICOPTER
};
enum Options {
THROTTLE_CUT_OPTION,
THROTTLE_TIMER_OPTION
};
enum WizardPage {
Page_None = -1,
Page_Models,
@ -60,6 +65,7 @@ enum WizardPage {
Page_Fblheli,
Page_Helictrl,
Page_Multirotor,
Page_Options,
Page_Conclusion
};
@ -86,6 +92,7 @@ class WizMix
const GeneralSettings & settings;
Vehicle vehicle;
Channel channel[WIZ_MAX_CHANNELS];
bool options[WIZ_MAX_OPTIONS];
WizMix(const GeneralSettings & settings, const unsigned int modelId);
operator ModelData();

View file

@ -32,17 +32,18 @@ WizardDialog::WizardDialog(const GeneralSettings & settings, unsigned int modelI
setPage(Page_Flaps, new FlapsPage(this, "flaps",tr("Flaps"),tr("Has your model got flaps?"), Page_Airbrakes));
setPage(Page_Airbrakes, new AirbrakesPage(this, "airbrakes",tr("Airbrakes"),tr("Has your model got airbrakes?"), Page_Tails));
setPage(Page_Bank, new BankPage(this, "bank",tr("Flying-wing / Delta-wing"),tr("Are the elevons controlled by servos connected to separate channels or by a single servo channel?"), Page_Rudder));
setPage(Page_Rudder, new RudderPage(this, "rudder",tr("Rudder"),tr("Does your model have a rudder?"), Page_Conclusion));
setPage(Page_Rudder, new RudderPage(this, "rudder",tr("Rudder"),tr("Does your model have a rudder?"), Page_Options));
setPage(Page_Tails, new TailSelectionPage(this, "tails",tr("Tail Type"),tr("Select which type of tail your model is equiped with.")));
setPage(Page_Tail, new TailPage(this, "tail",tr("Tail"),tr("Select channels for tail control."), Page_Conclusion));
setPage(Page_Vtail, new VTailPage(this, "vtail",tr("V-Tail"),tr("Select channels for tail control."), Page_Conclusion));
setPage(Page_Simpletail, new SimpleTailPage(this, "simpletail",tr("Tail"),tr("Select elevator channel."), Page_Conclusion));
setPage(Page_Tail, new TailPage(this, "tail",tr("Tail"),tr("Select channels for tail control."), Page_Options));
setPage(Page_Vtail, new VTailPage(this, "vtail",tr("V-Tail"),tr("Select channels for tail control."), Page_Options));
setPage(Page_Simpletail, new SimpleTailPage(this, "simpletail",tr("Tail"),tr("Select elevator channel."), Page_Options));
setPage(Page_Cyclic, new CyclicPage(this, "cyclic",tr("Cyclic"),tr("Which type of swash control is installed in your helicopter?"), Page_Gyro));
setPage(Page_Gyro, new GyroPage(this, "gyro",tr("Tail Gyro"),tr("Has your helicopter got an adjustable gyro for the tail?"), Page_Flybar));
setPage(Page_Flybar, new FlybarSelectionPage(this, "flybar",tr("Rotor Type"),tr("Has your helicopter got a flybar?")));
setPage(Page_Fblheli, new FblPage(this, "fblheli",tr("Helicopter"),tr("Select the controls for your helicopter"), Page_Conclusion));
setPage(Page_Helictrl, new HeliPage(this, "helictrl",tr("Helicopter"),tr("Select the controls for your helicopter"), Page_Conclusion));
setPage(Page_Multirotor, new MultirotorPage(this, "multirotor",tr("Multirotor"),tr("Select the control channels for your multirotor"), Page_Conclusion));
setPage(Page_Fblheli, new FblPage(this, "fblheli",tr("Helicopter"),tr("Select the controls for your helicopter"), Page_Options));
setPage(Page_Helictrl, new HeliPage(this, "helictrl",tr("Helicopter"),tr("Select the controls for your helicopter"), Page_Options));
setPage(Page_Multirotor, new MultirotorPage(this, "multirotor",tr("Multirotor"),tr("Select the control channels for your multirotor"), Page_Options));
setPage(Page_Options, new OptionsPage(this, "options",tr("Model Options"),tr("Select additional options"), Page_Conclusion));
setPage(Page_Conclusion, new ConclusionPage(this, "conclusion",tr("Save Changes"),tr(
"Manually check the direction of each control surface and reverse any channels that make controls move in the wrong direction. "
"Remove the propeller/propellers before you try to control your model for the first time.<br>"
@ -117,6 +118,8 @@ void WizardDialog::showHelp()
"Yaw - Spektrum: CH4, Futaba: CH4<br>"
"Pitch - Spektrum: CH3, Futaba: CH2<br>"
"Roll - Spektrum: CH2, Futaba: CH1"); break;
case Page_Options:
message = tr("TBD."); break;
case Page_Conclusion:
message = tr("TBD."); break;
default:
@ -832,6 +835,27 @@ bool MultirotorPage::validatePage() {
bookChannel(rollCB, AILERONS_INPUT, 100 ));
}
OptionsPage::OptionsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
: StandardPage(Page_Options, dlg, image, title, text, nextPage)
{
throttleCutRB = new QCheckBox(tr("Throttle Cut"));
throttleTimerRB = new QCheckBox(tr("Throttle Timer"));
QLayout *l = layout();
l->addWidget(throttleCutRB);
l->addWidget(throttleTimerRB);
}
void OptionsPage::initializePage(){
StandardPage::initializePage();
}
bool OptionsPage::validatePage(){
wizDlg->mix.options[THROTTLE_CUT_OPTION] = throttleCutRB->isChecked();
wizDlg->mix.options[THROTTLE_TIMER_OPTION] = throttleTimerRB->isChecked();
return true;
}
ConclusionPage::ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
: StandardPage(Page_Conclusion, dlg, image, title, text, nextPage)
{
@ -840,8 +864,8 @@ ConclusionPage::ConclusionPage(WizardDialog *dlg, QString image, QString title,
registerField("evaluate.proceed*", proceedCB);
QLayout *l = layout();
l->addWidget(proceedCB);
l->addWidget(textLabel);
l->addWidget(proceedCB);
}
void ConclusionPage::initializePage(){
@ -898,6 +922,16 @@ QString WizardPrinter::print()
QString str;
str = QString(tr("Model Name: ")) + mix->name + "\n";
str += QString(tr("Model Type: ")) + vehicleName(mix->vehicle) + "\n";
str += QString(tr("Options: ")) + "[";
for (int i=0; i<WIZ_MAX_OPTIONS; i++){
if (mix->options[i])
str += "X";
else
str += "-";
}
str += QString("]") + "\n";
for (int i=0; i<WIZ_MAX_CHANNELS; i++){
if (mix->channel[i].page != Page_None) {
Channel ch = mix->channel[i];

View file

@ -333,6 +333,18 @@ private:
QComboBox *rollCB;
};
class OptionsPage: public StandardPage
{
Q_OBJECT
public:
OptionsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
void initializePage();
bool validatePage();
private:
QCheckBox *throttleCutRB;
QCheckBox *throttleTimerRB;
};
class ConclusionPage: public StandardPage
{
Q_OBJECT

View file

@ -271,7 +271,7 @@ LUA = NO
# Menu Lock modes
# Values = NO, READONLY, NOMENUS
MENUS_LOCK == NO
MENUS_LOCK = NO
#------- END BUILD OPTIONS ---------------------------
@ -632,6 +632,12 @@ ifeq ($(PCB), TARANIS)
SDCARD = YES
THR_TRACE = YES
EXT = FRSKY
AUTOSWITCH = YES
AUTOSOURCE = YES
DBLKEYS = YES
PPM_LIMITS_SYMETRICAL = YES
PPM_CENTER_ADJUSTABLE = YES
DSM2 = PPM
CPPDEFS += -DPCBTARANIS -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX
INCDIRS += targets/taranis CoOS/kernel CoOS/portable
EXTRAINCDIRS += targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/include

View file

@ -393,11 +393,11 @@ int menuFlashFile(uint32_t index, uint8_t event)
if (Valid == 0) {
// Validate file here
if (fr = openBinaryFile(index)) {
if ((fr = openBinaryFile(index))) {
Valid = 2;
}
else {
if (fr = f_close(&FlashFile)) {
if ((fr = f_close(&FlashFile))) {
Valid = 2;
}
else {

View file

@ -3186,7 +3186,7 @@ void menuModelMixOne(uint8_t event)
if (attr && m_posHorz==0 && (not_stick || editMode>0)) md2->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL);
if (!not_stick) {
lcd_puts(COLUMN_X+MIXES_2ND_COLUMN, y, STR_DREX);
menu_lcd_onoff(COLUMN_X+MIXES_2ND_COLUMN+5*FW, y, !md2->noExpo, m_posHorz==1 ? attr : 0);
menu_lcd_onoff(COLUMN_X+MIXES_2ND_COLUMN+DREX_CHBOX_OFFSET, y, !md2->noExpo, m_posHorz==1 ? attr : 0);
if (attr && m_posHorz==1 && editMode>0) md2->noExpo = !checkIncDecModel(event, !md2->noExpo, 0, 1);
}
else if (attr) {

View file

@ -127,7 +127,7 @@ void menuTextView(uint8_t event)
}
for (int i=0; i<LCD_LINES-1; i++) {
lcd_puts(0, i*FH+FH+1, s_text_screen[i]);
lcd_putsAtt(0, i*FH+FH+1, s_text_screen[i], FIXEDWIDTH);
}
char *title = s_text_file;

View file

@ -58,16 +58,16 @@ void hapticQueue::heartbeat()
hapticOn(g_eeGeneral.hapticStrength * 20);
#else
if (hapticTick-- > 0) {
HAPTIC_ON;
HAPTIC_ON();
}
else {
HAPTIC_OFF;
HAPTIC_OFF();
hapticTick = g_eeGeneral.hapticStrength;
}
#endif
}
else {
HAPTIC_OFF;
HAPTIC_OFF();
if (buzzPause > 0) {
buzzPause--;
}

View file

@ -367,6 +367,12 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag
#endif
if (y >= LCD_H) break;
}
#if defined(CPUARM)
else if (c == 0x1D) { //TAB
x |= 0x3F;
x += 1;
}
#endif
else {
x += (c*FW/2); //EXTENDED SPACE
}

View file

@ -47,6 +47,7 @@ extern "C" {
}
#endif
#define lua_registernumber(L, n, i) (lua_pushnumber(L, (i)), lua_setglobal(L, (n)))
#define lua_registerint(L, n, i) (lua_pushinteger(L, (i)), lua_setglobal(L, (n)))
#define lua_pushtablenil(L, k) (lua_pushstring(L, (k)), lua_pushnil(L), lua_settable(L, -3))
#define lua_pushtableboolean(L, k, v) (lua_pushstring(L, (k)), lua_pushboolean(L, (v)), lua_settable(L, -3))
@ -89,11 +90,63 @@ static int luaGetTime(lua_State *L)
return 1;
}
static void luaGetValueAndPush(int src)
{
/*
Hint about dividers are taken from putsTelemetryChannel()
*/
if (!TELEMETRY_STREAMING() && src>=MIXSRC_FIRST_TELEM && src<=MIXSRC_LAST_TELEM) {
//telemetry not working, return zero for telemetry sources
lua_pushinteger(L, (int)0);
return;
}
switch (src) {
case MIXSRC_FIRST_TELEM-1+TELEM_TX_VOLTAGE:
case MIXSRC_FIRST_TELEM-1+TELEM_VFAS:
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_VFAS:
case MIXSRC_FIRST_TELEM-1+TELEM_CELLS_SUM:
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_CELLS_SUM:
case MIXSRC_FIRST_TELEM-1+TELEM_CURRENT:
case MIXSRC_FIRST_TELEM-1+TELEM_MAX_CURRENT:
case MIXSRC_FIRST_TELEM-1+TELEM_VSPEED:
//theese need to be divided by 10
lua_pushnumber(L, getValue(src)/10.0);
break;
case MIXSRC_FIRST_TELEM-1+TELEM_A1:
case MIXSRC_FIRST_TELEM-1+TELEM_A2:
//convert raw A1/2 values to calibrated values
lua_pushnumber(L, applyChannelRatio(src-(MIXSRC_FIRST_TELEM-1+TELEM_A1), getValue(src))/100.0);
break;
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_A1:
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_A2:
//convert raw A1/2 values to calibrated values
lua_pushnumber(L, applyChannelRatio(src-(MIXSRC_FIRST_TELEM-1+TELEM_MIN_A1), getValue(src))/100.0);
break;
case MIXSRC_FIRST_TELEM-1+TELEM_CELL:
case MIXSRC_FIRST_TELEM-1+TELEM_MIN_CELL:
case MIXSRC_FIRST_TELEM-1+TELEM_ALT:
case MIXSRC_FIRST_TELEM-1+TELEM_ACCx:
case MIXSRC_FIRST_TELEM-1+TELEM_ACCy:
case MIXSRC_FIRST_TELEM-1+TELEM_ACCz:
//theese need to be divided by 100
lua_pushnumber(L, getValue(src)/100.0);
break;
//TODO: add other values that need special treatment
default:
lua_pushinteger(L, getValue(src));
}
}
static int luaGetValue(lua_State *L)
{
if (lua_isnumber(L, 1)) {
int src = luaL_checkinteger(L, 1);
lua_pushinteger(L, getValue(src));
luaGetValueAndPush(src);
return 1;
}
else {
@ -131,6 +184,16 @@ static int luaPlayFile(lua_State *L)
return 0;
}
static int luaPlayNumber(lua_State *L)
{
int number = luaL_checkinteger(L, 1);
int unit = luaL_checkinteger(L, 2);
int att = luaL_checkinteger(L, 3);
playNumber(number, unit, att, 0);
return 0;
}
static int luaLcdLock(lua_State *L)
{
lcd_locked = true;
@ -822,6 +885,7 @@ void luaInit()
lua_register(L, "getVersion", luaGetVersion);
lua_register(L, "getValue", luaGetValue);
lua_register(L, "playFile", luaPlayFile);
lua_register(L, "playNumber", luaPlayNumber);
lua_register(L, "popupInput", luaPopupInput);
// Push OpenTX constants
@ -1053,12 +1117,12 @@ void luaTask(uint8_t evt)
lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run);
for (int j=0; j<sid.inputsCount; j++) {
if (sid.inputs[j].type == 1)
lua_pushinteger(L, getValue((uint8_t)sd.inputs[j]));
luaGetValueAndPush((uint8_t)sd.inputs[j]);
else
lua_pushinteger(L, sd.inputs[j]);
lua_pushinteger(L, sd.inputs[j] + sid.inputs[j].def);
}
if (lua_pcall(L, sid.inputsCount, sid.outputsCount, 0) == 0) {
for (int j=0; j<sid.outputsCount; j++) {
for (int j=sid.outputsCount-1; j>=0; j--) {
if (!lua_isnumber(L, -1)) {
sid.state = (instructionsPercent > 100 ? SCRIPT_KILLED : SCRIPT_SYNTAX_ERROR);
TRACE("Script %10s disabled", sd.file);

View file

@ -11,6 +11,8 @@
#include <limits.h>
#include <stddef.h>
#include "debug.h"
#define USE_FATFS
/*
@ -223,9 +225,9 @@
#define luai_writestringerror(s,p) \
(fprintf(stderr, (s), (p)), fflush(stderr))
#else
#define luai_writestring(s,l)
#define luai_writeline()
#define luai_writestringerror(s,p)
#define luai_writestring(s,l) TRACE_DEBUG_WP("%s", s);
#define luai_writeline() TRACE_DEBUG_WP("\n");
#define luai_writestringerror(s,p) TRACE_DEBUG_WP(s, p);
#endif

View file

@ -826,10 +826,16 @@ enum Functions {
#define IS_ADJUST_GV_FUNC(func) (0)
#endif
#if defined(VOICE)
#define HAS_REPEAT_PARAM(func) (func == FUNC_PLAY_SOUND || (func >= FUNC_PLAY_TRACK && func <= FUNC_PLAY_VALUE))
#if defined(HAPTIC)
#define IS_HAPTIC_FUNC(func) (func == FUNC_HAPTIC)
#else
#define HAS_REPEAT_PARAM(func) (func == FUNC_PLAY_SOUND)
#define IS_HAPTIC_FUNC(func) (0)
#endif
#if defined(VOICE)
#define HAS_REPEAT_PARAM(func) (func == FUNC_PLAY_SOUND || (func >= FUNC_PLAY_TRACK && func <= FUNC_PLAY_VALUE) || IS_HAPTIC_FUNC(func))
#else
#define HAS_REPEAT_PARAM(func) (func == FUNC_PLAY_SOUND || IS_HAPTIC_FUNC(func))
#endif
enum ResetFunctionParam {

View file

@ -3564,6 +3564,9 @@ void evalFunctions()
case FUNC_PLAY_SOUND:
case FUNC_PLAY_TRACK:
case FUNC_PLAY_VALUE:
#if defined(HAPTIC)
case FUNC_HAPTIC:
#endif
{
tmr10ms_t tmr10ms = get_tmr10ms();
uint8_t repeatParam = CFN_PLAY_REPEAT(sd);
@ -3578,6 +3581,11 @@ void evalFunctions()
else if (CFN_FUNC(sd) == FUNC_PLAY_VALUE) {
PLAY_VALUE(CFN_PARAM(sd), i+1);
}
#if defined(HAPTIC)
else if (CFN_FUNC(sd) == FUNC_HAPTIC) {
haptic.event(AU_FRSKY_LAST+CFN_PARAM(sd));
}
#endif
else {
playCustomFunctionFile(sd, i+1);
}
@ -3643,7 +3651,7 @@ void evalFunctions()
break;
#endif
#if defined(HAPTIC)
#if defined(HAPTIC) && !defined(CPUARM)
case FUNC_HAPTIC:
haptic.event(AU_FRSKY_LAST+CFN_PARAM(sd));
break;

View file

@ -186,8 +186,8 @@ void pwrOff();
// Haptic driver
#define hapticOff() // TODO hapticOn() cleaner ...
#define HAPTIC_ON PORTD &= ~(1 << OUT_D_HAPTIC)
#define HAPTIC_OFF PORTD |= (1 << OUT_D_HAPTIC)
#define HAPTIC_ON() PORTD &= ~(1 << OUT_D_HAPTIC)
#define HAPTIC_OFF() PORTD |= (1 << OUT_D_HAPTIC)
// Rotary encoder driver
#if ROTARY_ENCODERS <= 2

View file

@ -189,7 +189,7 @@ void pwrOff();
// Haptic driver
#define hapticOff() // TODO hapticOn() cleaner ...
#define HAPTIC_ON PORTD &= ~(1 << OUT_D_HAPTIC)
#define HAPTIC_OFF PORTD |= (1 << OUT_D_HAPTIC)
#define HAPTIC_ON() PORTD &= ~(1 << OUT_D_HAPTIC)
#define HAPTIC_OFF() PORTD |= (1 << OUT_D_HAPTIC)
#endif

View file

@ -239,7 +239,7 @@ extern int8_t Coproc_maxtemp;
// Haptic driver
void hapticOff(void);
void hapticOn(uint32_t pwmPercent);
#define HAPTIC_OFF hapticOff()
#define HAPTIC_OFF() hapticOff()
// BlueTooth driver
#if defined(BLUETOOTH)

View file

@ -231,8 +231,8 @@ void rotencPoll();
#endif
// Haptic
#define HAPTIC_ON PORTG |= (1 << OUT_G_HAPTIC)
#define HAPTIC_OFF PORTG &= ~(1 << OUT_G_HAPTIC)
#define HAPTIC_ON() PORTG |= (1 << OUT_G_HAPTIC)
#define HAPTIC_OFF() PORTG &= ~(1 << OUT_G_HAPTIC)
// USB fake driver
#define usbPlugged() false

View file

@ -239,12 +239,16 @@ void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t si
// Debug driver
void debugPutc(const char c);
// Haptic
void hapticOff(void);
void hapticOn(uint32_t pwmPercent);
// Haptic driver
void hapticInit(void);
#define HAPTIC_OFF hapticOff()
#define HAPTIC_ON hapticOn(100)
void hapticOff(void);
#define HAPTIC_OFF() hapticOff()
#if defined(REVPLUS)
void hapticOn(uint32_t pwmPercent);
#else
void hapticOn();
#define HAPTIC_ON() hapticOn()
#endif
extern uint8_t currentTrainerMode;

View file

@ -39,22 +39,26 @@
void hapticOff(void)
{
#if defined(REVPLUS)
return; //TODO PWM support
GPIO_ResetBits(GPIO_HAPTIC, PIN_HAPTIC); // Temp, TODO PWM support
return;
#else
GPIO_ResetBits(GPIO_HAPTIC, PIN_HAPTIC);
#endif
}
void hapticOn(uint32_t pwmPercent)
{
#if defined(REVPLUS)
// pwmPercent 0-100
return; //TODO PWM support
void hapticOn(uint32_t pwmPercent)
{ // pwmPercent 0-100
GPIO_SetBits(GPIO_HAPTIC, PIN_HAPTIC); // Temp, TODO PWM support
return;
}
#else
void hapticOn()
{
// No PWM before REVPLUS
GPIO_SetBits(GPIO_HAPTIC, PIN_HAPTIC);
#endif
}
#endif
void hapticInit(void)
{

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\013"
@ -454,15 +455,15 @@
#define TR_COPYINGMODEL "Kopíruji model.."
#define TR_MOVINGMODEL "Přesouvám model."
#define TR_LOADINGMODEL "Aktivuji model.."
#define TR_NAME "Jméno"
#define TR_NAME "Název"
#define TR_MODELNAME "Název modelu"
#define TR_PHASENAME "Jméno"
#define TR_MIXNAME "Jméno"
#define TR_INPUTNAME "Jméno"
#define TR_PHASENAME "Název"
#define TR_MIXNAME "Název"
#define TR_INPUTNAME "Název"
#if defined(PCBTARANIS)
#define TR_EXPONAME "Poznámka"
#define TR_EXPONAME "Popis"
#else
#define TR_EXPONAME "Jméno"
#define TR_EXPONAME "Název"
#endif
#define TR_BITMAP "Obrázek"
#define TR_TIMER "Stopky "
@ -500,7 +501,8 @@
#define TR_DIFFERENTIAL "Dif.výchylek"
#define TR_OFFSET INDENT"Ofset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define TR_DREX "DR/Expo"
#define DREX_CHBOX_OFFSET 45
#define TR_CURVE "Křivka"
#define TR_FLMODE "Režim"
#define TR_MIXWARNING "Varování"
@ -606,22 +608,22 @@
#define TR_MENUFLIGHTPHASES "LETOVÉ REŽIMY"
#define TR_MENUHELISETUP "HELI"
#define TR_MENULIMITS "SERVA"
#if defined(PCBTARANIS)
#define TR_MENUINPUTS "VSTUPY"
#define TR_MENULIMITS "SERVA"
#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ...
#define TR_MENUINPUTS "DR/EXPO"
#define TR_MENULIMITS "LIMITY"
#else
#define TR_MENUINPUTS "DR/EXPO"
#define TR_MENULIMITS "LIMITY"
#endif
#define TR_MENUCURVES "KŘIVKY"
#define TR_MENUCURVE "\002K"
#define TR_MENULOGICALSWITCH "LOG. SPÍNAč"
#define TR_MENULOGICALSWITCHES "LOGICKÉ SPÍNAčE"
#define TR_MENUCUSTOMFUNC "FUNKCE"
#define TR_MENUCUSTOMFUNC "SPECIÁLNÍ FUNKCE"
#define TR_MENUCUSTOMSCRIPTS "SKRIPTY LUA"
#define TR_MENUCUSTOMSCRIPT "SKRIPT"
#define TR_MENUTELEMETRY "TELEMETRIE"
@ -738,7 +740,7 @@
#define TR_STATISTICS "Statistika"
#define TR_ABOUT_US "O nás"
#define TR_AND_SWITCH "AND Spínač"
#define TR_CF "FN"
#define TR_CF "SF"
#define TR_SPEAKER INDENT"Repro"
#define TR_BUZZER INDENT"Pípák"
#define TR_BYTES "[B]"
@ -803,8 +805,8 @@
#endif
// Taranis column headers
#define TR_PHASES_HEADERS { " Jméno ", " Spínač ", " Trim směrovky ", " Trim výškovky ", " Trim plynu ", " Trim křidélek ", " Přechod náběhu ", " Přechod konce " }
#define TR_LIMITS_HEADERS { " Jméno ", " Subtrim ", " Min ", " Max ", " Směr ", " Křivka ", " Střed PPM ", " Symetrické " }
#define TR_PHASES_HEADERS { " Název ", " Spínač ", " Trim směrovky ", " Trim výškovky ", " Trim plynu ", " Trim křidélek ", " Přechod náběhu ", " Přechod konce " }
#define TR_LIMITS_HEADERS { " Název ", " Subtrim ", " Min ", " Max ", " Invertovat ", " Křivka ", " Střed PPM ", " Symetrické " }
#define TR_CSW_HEADERS { " Funkce ", " Hodnota 1 ", " Hodnota 2 ", " Hodnota 2 ", " AND Spínač ", " Trvání ", " Zpoždění " }
//Taranis About screen
@ -867,7 +869,7 @@
#define TR_TOP_BAR "Horní lišta"
#define TR_ALTITUDE INDENT "Výška"
#define TR_SCALE "Scale"
#define TR_SCALE "Měřítko"
#define TR_VIEW_CHANNELS "Zobrazit kanály"
#define TR_VIEW_NOTES "Zobrazit poznámky"
#define TR_MODS_FORBIDDEN "Změny nejsou povoleny!"

View file

@ -32,8 +32,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\012"
@ -284,7 +285,7 @@
#define TR_SWR TR("SWR\0", "SWR\0 ")
#define TR_RX_BATT TR("RxBt", "RxBat")
#define TR_A3_A4 TR("A3\0 ""A4\0 ", "A3\0 ""A4\0 ")
#define TR_A3_A4_MIN TR("A3\0 ""A4\0 ", "A3\0 ""A4\0 ")
#define TR_A3_A4_MIN TR("A3-\0""A4-\0", "A3-\0 ""A4-\0 ")
#else
#define TR_TELEM_RESERVE
#define TR_SWR
@ -505,6 +506,7 @@
#define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Kurve"
#define TR_FLMODE TR("Phase","Phasen")
#define TR_MIXWARNING "Warnung"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\012"
@ -505,6 +506,7 @@
#define TR_OFFSET INDENT "Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curve"
#define TR_FLMODE TR("Mode","Modes")
#define TR_MIXWARNING "Warning"
@ -646,8 +648,8 @@
#define TR_SHUTDOWN "SHUTTING DOWN"
#define TR_BATT_CALIB "Battery Calib"
#define TR_CURRENT_CALIB "Current Calib"
#define TR_VOLTAGE INDENT "Voltage"
#define TR_CURRENT INDENT "Current"
#define TR_VOLTAGE TR(INDENT "Voltage",INDENT "Voltage Source")
#define TR_CURRENT TR(INDENT "Current",INDENT "Current Source")
#define TR_SELECT_MODEL "Select Model"
#define TR_CREATE_MODEL "Create Model"
#define TR_COPY_MODEL "Copy Model"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\012"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curva"
#define TR_FLMODE TR("Modo","Modos")
#define TR_MIXWARNING "Aviso"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\012"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curve"
#define TR_FLMODE TR("Mode","Modes")
#define TR_MIXWARNING "Warning"

View file

@ -32,8 +32,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""ET\0 ""OU\0 ""OUX\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""ET\0 ""OU\0 ""OUX\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""ET\0 ""OU\0 ""OUX\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""ET\0 ""OU\0 ""OUX\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\015"
@ -334,7 +335,7 @@
#define TR_VTELPROTO "Aucun ""Hub\0 ""WSHHigh"
#define LEN_VOLTSRC "\003"
#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel"
#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Elm"
#define LEN_VARIOSRC "\005"
#if defined(FRSKY_SPORT)
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT "Décalage"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Courbe"
#define TR_FLMODE TR("Phase", "Phases")
#define TR_MIXWARNING "Alerte"
@ -642,8 +644,8 @@
#define TR_SHUTDOWN "ARRET EN COURS"
#define TR_BATT_CALIB "Calib. Batterie"
#define TR_CURRENT_CALIB "Calib. Courant"
#define TR_VOLTAGE INDENT "Tension"
#define TR_CURRENT INDENT "Courant"
#define TR_VOLTAGE TR(INDENT "Tension",INDENT "Source Tension")
#define TR_CURRENT TR(INDENT "Courant",INDENT "Source Courant")
#define TR_SELECT_MODEL "Sélect. Modèle"
#define TR_CREATE_MODEL "Créer Modèle"
#define TR_COPY_MODEL "Copier Modèle"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\015"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curva"
#define TR_FLMODE "Fase"
#define TR_MIXWARNING "Avviso"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\013"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Ofset"
#define TR_TRIM "Trymer"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Krzywa"
#define TR_FLMODE "Tryb"
#define TR_MIXWARNING "UWAGA"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\015"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Desvio"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curvas"
#define TR_FLMODE "Fase"
#define TR_MIXWARNING "Aviso"

View file

@ -35,8 +35,9 @@
*/
/* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal)
* \036 -newline
* \001 to \035 -extended spacing (value * FW/2)
* \n -newline
* \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string
*/
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005"
#if defined(CPUARM)
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""Δ}x\0 ""|Δ|}x" TR_CSWTIMER TR_CSWSTICKY
#else
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a{x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#define TR_VCSWFUNC "---\0 " TR_CSWEQUAL "a~x\0 ""a>x\0 ""a<x\0 " TR_CSWRANGE "|a|>x""|a|<x""AND\0 ""OR\0 ""XOR\0 " TR_CSWSTAY "a=b\0 ""a>b\0 ""a<b\0 ""^}x\0 ""|^|}x" TR_CSWTIMER TR_CSWSTICKY
#endif
#define LEN_VFSWFUNC "\012"
@ -423,7 +424,7 @@
#define TR_VTRAINERMODES "Lärare""Elev\0."
#define LEN_VFAILSAFE "\011"
#define TR_VFAILSAFE "Lås Servo""Anpassat\0""Pulsfritt""Receiver\0"
#define TR_VFAILSAFE "Lås Servo""Anpassat\0""Pulsfritt""Mottagare"
#if defined(MAVLINK)
#define LEN_MAVLINK_BAUDS "\006"
@ -439,6 +440,7 @@
#define LEN_INDENT 1
#define INDENT_WIDTH (FW/2)
#if defined(PCBTARANIS)
#define TR_ENTER "[ENTER]"
#else
@ -501,6 +503,7 @@
#define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim"
#define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Kurva"
#define TR_FLMODE TR("Läge","Flyglägen")
#define TR_MIXWARNING "Varning"
@ -639,7 +642,7 @@
#define TR_PITCH_AT_ZERO INDENT "Ton vid Noll"
#define TR_PITCH_AT_MAX INDENT "Ton vid Max"
#define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll"
#define TR_SHUTDOWN "STäNGER AV"
#define TR_SHUTDOWN "STÄNGER AV"
#define TR_BATT_CALIB "Kalib. Batteri"
#define TR_CURRENT_CALIB "Kalib. Ström"
#define TR_VOLTAGE INDENT"Volt"
@ -713,9 +716,9 @@
#define TR_CHANNELS_MONITOR "Kanalöversikt"
#define TR_PATH_TOO_LONG "För lång sökväg"
#define TR_VIEW_TEXT "Visa Text"
#define TR_FLASH_BOOTLOADER "Flash BootLoader"
#define TR_WRITING "\032Writing..."
#define TR_CONFIRM_FORMAT "Confirm Format?"
#define TR_FLASH_BOOTLOADER "Skriv BootLoader"
#define TR_WRITING "\032Skriver..."
#define TR_CONFIRM_FORMAT "Formatera Minnet?"
#define TR_INTERNALRF "Intern Radio"
#define TR_EXTERNALRF "Extern Radiomodul"
#define TR_FAILSAFE "Failsafeläge"
@ -760,7 +763,7 @@
#define TR_MIRROR "Spegla"
#define TR_CLEAR "Töm"
#define TR_RESET "Nollställ"
#define TR_RESET_SUBMENU "Reset..."
#define TR_RESET_SUBMENU "Nollställ..."
#define TR_COUNT "Antal"
#define TR_PT "pt"
#define TR_PTS "pkt"
@ -774,7 +777,7 @@
#define TR_SCRIPT "Programkod"
#define TR_INPUTS "Input"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM"
#define TR_EEBACKUP "\004[ENTER Lång] säkerhetskopiera EEPROM"
#if defined(MAVLINK)
#define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI"

View file

@ -109,7 +109,10 @@ translations = {'cz': [('\\200', u'á'),
'en': [],
'all': [('\\306', u'Δ')],
'all': [('\\306', u'Δ'),
('\\173', u'~'),
('\\036', u'\\n'),
('\\035', u'\\t')],
}