1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 09:45:21 +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 Samuel Cook
BoltRC - www.boltrc.com BoltRC - www.boltrc.com
Friedrich Ipolt 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.setApplicationName("OpenTX Companion");
app.setOrganizationName("OpenTX"); app.setOrganizationName("OpenTX");
app.setOrganizationDomain("open-tx.org"); app.setOrganizationDomain("open-tx.org");
app.setAttribute(Qt::AA_DontShowIconsInMenus, false);
#ifdef __APPLE__ #ifdef __APPLE__
app.setStyle(new MyProxyStyle); app.setStyle(new MyProxyStyle);

View file

@ -71,6 +71,7 @@
<file>images/wizard/models.png</file> <file>images/wizard/models.png</file>
<file>images/wizard/multirotor.png</file> <file>images/wizard/multirotor.png</file>
<file>images/wizard/rudder.png</file> <file>images/wizard/rudder.png</file>
<file>images/wizard/options.png</file>
<file>images/wizard/simpletail.png</file> <file>images/wizard/simpletail.png</file>
<file>images/wizard/tail.png</file> <file>images/wizard/tail.png</file>
<file>images/wizard/tails.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_P2 6
#define STK_P3 7 #define STK_P3 7
#define DSW_THR 1 //DSW_SA ^ enum Switches {
#define DSW_RUD 2 //DSW_SA - SWITCH_NONE,
#define DSW_ELE 3 //DSW_SA _
#define DSW_ID0 4 //DSW_SB ^ SWITCH_THR = SWITCH_NONE+1,
#define DSW_ID1 5 //DSW_SB - SWITCH_RUD,
#define DSW_ID2 6 //DSW_SB _ SWITCH_ELE,
#define DSW_AIL 7 //DSW_SC ^ SWITCH_ID0,
#define DSW_GEA 8 //DSW_SC - SWITCH_ID1,
#define DSW_TRN 9 //DSW_SC _ SWITCH_ID2,
#define DSW_SD0 10 SWITCH_AIL,
#define DSW_SD1 11 SWITCH_GEA,
#define DSW_SD2 12 SWITCH_TRN,
#define DSW_SE0 13
#define DSW_SE1 14 SWITCH_SA0 = SWITCH_NONE+1,
#define DSW_SE2 15 SWITCH_SA1,
#define DSW_SF0 16 SWITCH_SA2,
#define DSW_SF1 17 SWITCH_SB0,
#define DSW_SG0 18 SWITCH_SB1,
#define DSW_SG1 19 SWITCH_SB2,
#define DSW_SG2 20 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_L 0
#define TRIM_LH_R 1 #define TRIM_LH_R 1
@ -1037,8 +1053,6 @@ enum Capability {
Beeperlen, Beeperlen,
EepromBackup, EepromBackup,
Haptic, Haptic,
HapticLength,
HapticMode,
HasBeeper, HasBeeper,
ModelTrainerEnable, ModelTrainerEnable,
Timer2ThrTrig, Timer2ThrTrig,

View file

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

View file

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

View file

@ -201,23 +201,18 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) :
if (!GetCurrentFirmware()->getCapability(Haptic)) { if (!GetCurrentFirmware()->getCapability(Haptic)) {
ui->hapticStrengthSB->setDisabled(true); ui->hapticStrengthSB->setDisabled(true);
ui->hapticStrengthSB->hide();
ui->label_hapticStrengthSB->hide();
}
if (!GetCurrentFirmware()->getCapability(HapticMode)) {
ui->hapticmodeCB->setDisabled(true); ui->hapticmodeCB->setDisabled(true);
ui->hapticmodeCB->hide();
ui->label_hapticmode->hide();
} }
int renumber=GetCurrentFirmware()->getCapability(RotaryEncoders); int renumber=GetCurrentFirmware()->getCapability(RotaryEncoders);
if (renumber==0) { if (renumber==0) {
ui->re_label->hide(); ui->re_label->hide();
ui->re_CB->hide(); ui->re_CB->hide();
} else { }
else {
populateRotEncCB(ui->re_CB, g_eeGeneral.reNavigation, renumber); populateRotEncCB(ui->re_CB, g_eeGeneral.reNavigation, renumber);
} }
ui->contrastSB->setValue(g_eeGeneral.contrast); ui->contrastSB->setValue(g_eeGeneral.contrast);
ui->battwarningDSB->setValue((double)g_eeGeneral.vBatWarn/10); ui->battwarningDSB->setValue((double)g_eeGeneral.vBatWarn/10);
ui->backlightautoSB->setValue(g_eeGeneral.backlightDelay*5); ui->backlightautoSB->setValue(g_eeGeneral.backlightDelay*5);
@ -344,11 +339,12 @@ void GeneralEdit::setValues()
ui->beeperCB->setCurrentIndex(g_eeGeneral.beeperMode+2); ui->beeperCB->setCurrentIndex(g_eeGeneral.beeperMode+2);
ui->channelorderCB->setCurrentIndex(g_eeGeneral.templateSetup); ui->channelorderCB->setCurrentIndex(g_eeGeneral.templateSetup);
ui->stickmodeCB->setCurrentIndex(g_eeGeneral.stickMode); 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->label_HL->hide();
ui->hapticLengthCB->hide(); ui->hapticLengthCB->hide();
} else {
ui->hapticLengthCB->setCurrentIndex(g_eeGeneral.hapticLength+2);
} }
ui->BLBright_SB->setValue(100-g_eeGeneral.backlightBright); ui->BLBright_SB->setValue(100-g_eeGeneral.backlightBright);
ui->soundModeCB->setCurrentIndex(g_eeGeneral.speakerMode); 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 // Copy current profile to new and give it a new name
g.profile[i] = g.profile[g.id()]; 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); g.id(i);
updateMenus(); updateMenus();

View file

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

View file

@ -224,8 +224,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
} }
} }
if (flaps>0) { 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_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,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,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4;
} }
sign=-1; sign=-1;
for (uint8_t i=0; i< flaps; i++) { 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(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(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,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,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,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,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_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; 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) { switch (gyro) {
case 1: 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,-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,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);
break; break;
case 2: 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,-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,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);
break; break;
} }
} else { } 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(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(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,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,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,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,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_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; 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) { switch (gyro) {
case 1: 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,-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,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);
break; break;
case 2: 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,-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,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);
break; break;
} }
} }
// collective // 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,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,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,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,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_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
break; break;
case 2: case 2:
ailerons=ailerontype; ailerons=ailerontype;
@ -415,8 +415,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
} }
} }
if (flaps>0) { 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_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,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,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4;
} }
sign=-1; sign=-1;
for (uint8_t i=0; i< flaps; i++) { for (uint8_t i=0; i< flaps; i++) {
@ -440,8 +440,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
} }
} }
if (spoilers>0) { 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_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,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,SWITCH_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6);md->speedUp=4;md->speedDown=4;
} }
sign=-1; sign=-1;
for (uint8_t i=0; i< spoilers; i++) { for (uint8_t i=0; i< spoilers; i++) {
@ -510,8 +510,8 @@ void Templates::applyNumericTemplate(uint64_t tpl)
} }
} }
if (flaps>0) { 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_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,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,SWITCH_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4;
} }
sign=-1; sign=-1;
for (uint8_t i=0; i< flaps; i++) { 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(); md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle // 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,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,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,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,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_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; 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 // 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,-SWITCH_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);
// collective // 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,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,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,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,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_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120; model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); 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(); md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle // 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,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,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,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,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_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; 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 // 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,-SWITCH_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;
// collective // 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,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,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,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,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_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120; model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); 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,-SWITCH_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;
} }
//Heli Setup futaba style //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(); md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle // 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,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,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,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,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_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; 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 // 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,-SWITCH_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);
// collective // 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,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,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,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,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_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120; model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); 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(); md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();
// throttle // 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,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,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,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,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_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; 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 // 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,-SWITCH_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;
// collective // 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,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,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,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,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_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF;
model.swashRingData.type = HELI_SWASH_TYPE_120; model.swashRingData.type = HELI_SWASH_TYPE_120;
model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); 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,-SWITCH_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;
} }
//Servo Test //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> <message>
<location filename="../modeledit/customfunctions.cpp" line="19"/> <location filename="../modeledit/customfunctions.cpp" line="19"/>
<source>Played once, not during startup</source> <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>
<message> <message>
<location filename="../modeledit/customfunctions.cpp" line="26"/> <location filename="../modeledit/customfunctions.cpp" line="26"/>

View file

@ -4,7 +4,7 @@
<context> <context>
<name>AileronsPage</name> <name>AileronsPage</name>
<message> <message>
<location filename="../wizarddialog.cpp" line="+392"/> <location filename="../wizarddialog.cpp" line="+395"/>
<source>No</source> <source>No</source>
<translation>Nej</translation> <translation>Nej</translation>
</message> </message>
@ -325,11 +325,22 @@ Mode 4:
</message> </message>
<message> <message>
<location line="+36"/> <location line="+36"/>
<source>Radio Firmware</source> <source>Radio Type</source>
<translation>Firmware-typ</translation> <translation>Radiotyp</translation>
</message> </message>
<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> <source>Other Settings</source>
<translation>Andra Inställningar</translation> <translation>Andra Inställningar</translation>
</message> </message>
@ -344,14 +355,13 @@ Mode 4:
<translation>Sökväg till SD-struktur</translation> <translation>Sökväg till SD-struktur</translation>
</message> </message>
<message> <message>
<location line="+16"/>
<source>Set language of voice. <source>Set language of voice.
May be different from firmware language</source> 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> Behöver inte vara samma som menyspråket</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+31"/>
<source>Voice Language</source> <source>Voice Language</source>
<translation>Röstspråk</translation> <translation>Röstspråk</translation>
</message> </message>
@ -1160,7 +1170,7 @@ Behöver inte vara samma som menyspråket</translation>
<context> <context>
<name>ConclusionPage</name> <name>ConclusionPage</name>
<message> <message>
<location filename="../wizarddialog.cpp" line="+287"/> <location filename="../wizarddialog.cpp" line="+308"/>
<source>OK, I understand.</source> <source>OK, I understand.</source>
<translation>OK, jag förstår.</translation> <translation>OK, jag förstår.</translation>
</message> </message>
@ -1415,7 +1425,7 @@ Behöver inte vara samma som menyspråket</translation>
<context> <context>
<name>CyclicPage</name> <name>CyclicPage</name>
<message> <message>
<location filename="../wizarddialog.cpp" line="-154"/> <location filename="../wizarddialog.cpp" line="-175"/>
<source>90</source> <source>90</source>
<translation>90</translation> <translation>90</translation>
</message> </message>
@ -1684,11 +1694,17 @@ Om fältet lämnas tomt så är filtret aktivt hela tiden.</translation>
<translation>Röst</translation> <translation>Röst</translation>
</message> </message>
<message> <message>
<location line="+13"/>
<source>Set language of voice. <source>Set language of voice.
May be different from firmware language</source> 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> 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>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1751,12 +1767,7 @@ Får skilja från språket för firmware</translation>
<translation>Firmware</translation> <translation>Firmware</translation>
</message> </message>
<message> <message>
<location line="+23"/> <location line="+30"/>
<source>-</source>
<translation></translation>
</message>
<message>
<location line="+7"/>
<source>Latest Download</source> <source>Latest Download</source>
<translation>Senast nedladdad</translation> <translation>Senast nedladdad</translation>
</message> </message>
@ -3861,7 +3872,12 @@ Vill du ladda ned den nu ?</translation>
</translation> </translation>
</message> </message>
<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> <source>Unable to find file %1!</source>
<translation>Kan inte hitta filen %1 !</translation> <translation>Kan inte hitta filen %1 !</translation>
</message> </message>
@ -5455,6 +5471,19 @@ p, li { white-space: pre-wrap; }
<translation>Roll-kanal:</translation> <translation>Roll-kanal:</translation>
</message> </message>
</context> </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> <context>
<name>PrintDialog</name> <name>PrintDialog</name>
<message> <message>
@ -5852,9 +5881,13 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>System of units</source> <source>Units system</source>
<translation>Måttsystem</translation> <translation>Måttsystem</translation>
</message> </message>
<message>
<source>System of units</source>
<translation type="obsolete">Måttsystem</translation>
</message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Blades</source> <source>Blades</source>
@ -6498,7 +6531,7 @@ p, li { white-space: pre-wrap; }
<location line="+29"/> <location line="+29"/>
<location line="+25"/> <location line="+25"/>
<source>In model setup menus automatically set source by moving the control</source> <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>
<message> <message>
<location line="-155"/> <location line="-155"/>
@ -6508,7 +6541,7 @@ p, li { white-space: pre-wrap; }
<location line="+29"/> <location line="+29"/>
<location line="+25"/> <location line="+25"/>
<source>In model setup menus automatically set switch by moving the control</source> <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>
<message> <message>
<location line="-138"/> <location line="-138"/>
@ -7860,20 +7893,22 @@ Gruppen bakom OpenTX/Companion.</translation>
<message> <message>
<location filename="../firmwares/opentx/open9xStockeeprom.cpp" line="+92"/> <location filename="../firmwares/opentx/open9xStockeeprom.cpp" line="+92"/>
<source>Simultaneous usage of expo and curves is no longer supported in OpenTX</source> <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>
<message> <message>
<location filename="../warnings.h" line="+5"/> <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. <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> 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> </message>
</context> </context>
<context> <context>
<name>RudderPage</name> <name>RudderPage</name>
<message> <message>
<location filename="../wizarddialog.cpp" line="-235"/> <location filename="../wizarddialog.cpp" line="-259"/>
<source>No</source> <source>No</source>
<translation>Nej</translation> <translation>Nej</translation>
</message> </message>
@ -8848,7 +8883,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<context> <context>
<name>WizardDialog</name> <name>WizardDialog</name>
<message> <message>
<location line="-265"/> <location line="-268"/>
<source>Model Wizard</source> <source>Model Wizard</source>
<translation>Modellguide</translation> <translation>Modellguide</translation>
</message> </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> <source>Select the control channels for your multirotor</source>
<translation>Välj kontroll-kanaler för din multikopter</translation> <translation>Välj kontroll-kanaler för din multikopter</translation>
</message> </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> <message>
<location line="+1"/> <location line="+1"/>
<source>Save Changes</source> <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="+2"/> <location line="+2"/>
<location line="+8"/> <location line="+8"/>
<location line="+2"/>
<source>TBD.</source> <source>TBD.</source>
<translation>Information saknas för denna dialog.</translation> <translation>Information saknas för denna dialog.</translation>
</message> </message>
<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> <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> <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>
<message> <message>
<location line="+8"/> <location line="+10"/>
<source>There is no help available for the current page.</source> <source>There is no help available for the current page.</source>
<translation>Det finns ingen hjälp tillgänglig för denna sida.</translation> <translation>Det finns ingen hjälp tillgänglig för denna sida.</translation>
</message> </message>
@ -9123,7 +9169,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<context> <context>
<name>WizardPrinter</name> <name>WizardPrinter</name>
<message> <message>
<location line="+774"/> <location line="+795"/>
<source>Model Name: </source> <source>Model Name: </source>
<translation>Modelnamn:</translation> <translation>Modelnamn:</translation>
</message> </message>
@ -9133,7 +9179,20 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga
<translation>Modeltyp:</translation> <translation>Modeltyp:</translation>
</message> </message>
<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> <source>Channel %1: </source>
<translation>Kanal %1: </translation> <translation>Kanal %1: </translation>
</message> </message>
@ -10007,7 +10066,7 @@ m2560 för v4.1-kort</translation>
<message> <message>
<location line="+65"/> <location line="+65"/>
<source>Profile image %1 is invalid.</source> <source>Profile image %1 is invalid.</source>
<translation>Profilbilden %1 är ogiltig</translation> <translation>Profilbilden %1 är ogiltig.</translation>
</message> </message>
<message> <message>
<location line="+16"/> <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){ else if (input==FLAPS_INPUT){
// There ought to be some kind of constants for switches somewhere... // 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 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); //SA-DOWN or ELE-DOWN maxMixSwitch((char *)"Flaps Down", model.mixData[mixIndex++], channel+1, isTaranis ? 3 : 3 , -weight); //Taranis SA-DOWN, 9X ELE-DOWN
} }
else if (input==AIRBRAKES_INPUT){ 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 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); //SE-DOWN or RUD-DOWN maxMixSwitch((char *)"Airbrk On", model.mixData[mixIndex++], channel+1, isTaranis ? 15 : 2 , weight); //Tatanis SE-DOWN, 9X RUD-DOWN
} }
} }
} }
WizMix::operator ModelData() WizMix::operator ModelData()
{ {
int throttleChannel = -1;
bool isTaranis = IS_TARANIS(GetEepromInterface()->getBoard());
ModelData model; ModelData model;
model.used = true; model.used = true;
model.modelId = modelId; model.modelId = modelId;
model.setDefaultInputs(settings); model.setDefaultInputs(settings);
int mixIndex = 0;
int switchIndex = 0;
int timerIndex = 0;
// Safe copy model name // Safe copy model name
strncpy(model.name, name, WIZ_MODEL_NAME_LENGTH); strncpy(model.name, name, WIZ_MODEL_NAME_LENGTH);
model.name[WIZ_MODEL_NAME_LENGTH] = 0; model.name[WIZ_MODEL_NAME_LENGTH] = 0;
int mixIndex = 0; // Add the channel mixes
for (int i=0; i<WIZ_MAX_CHANNELS; i++ ) for (int i=0; i<WIZ_MAX_CHANNELS; i++ )
{ {
Channel ch = channel[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.input1, ch.weight1, i, mixIndex);
addMix(model, ch.input2, ch.weight2, 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; return model;
} }

View file

@ -18,7 +18,7 @@
#include "eeprominterface.h" #include "eeprominterface.h"
#define WIZ_MAX_CHANNELS 8 #define WIZ_MAX_CHANNELS 8
#define WIZ_MAX_OPTIONS 2
// TODO use a constant common to the whole companion // 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 // TODO when in the wizard use the getCapacity(...) to know how long the name can be
#define WIZ_MODEL_NAME_LENGTH 12 #define WIZ_MODEL_NAME_LENGTH 12
@ -40,6 +40,11 @@ enum Vehicle {
HELICOPTER HELICOPTER
}; };
enum Options {
THROTTLE_CUT_OPTION,
THROTTLE_TIMER_OPTION
};
enum WizardPage { enum WizardPage {
Page_None = -1, Page_None = -1,
Page_Models, Page_Models,
@ -60,6 +65,7 @@ enum WizardPage {
Page_Fblheli, Page_Fblheli,
Page_Helictrl, Page_Helictrl,
Page_Multirotor, Page_Multirotor,
Page_Options,
Page_Conclusion Page_Conclusion
}; };
@ -86,6 +92,7 @@ class WizMix
const GeneralSettings & settings; const GeneralSettings & settings;
Vehicle vehicle; Vehicle vehicle;
Channel channel[WIZ_MAX_CHANNELS]; Channel channel[WIZ_MAX_CHANNELS];
bool options[WIZ_MAX_OPTIONS];
WizMix(const GeneralSettings & settings, const unsigned int modelId); WizMix(const GeneralSettings & settings, const unsigned int modelId);
operator ModelData(); 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_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_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_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_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_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_Conclusion)); 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_Conclusion)); 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_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_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_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_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_Conclusion)); 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_Conclusion)); 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( 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. " "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>" "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>" "Yaw - Spektrum: CH4, Futaba: CH4<br>"
"Pitch - Spektrum: CH3, Futaba: CH2<br>" "Pitch - Spektrum: CH3, Futaba: CH2<br>"
"Roll - Spektrum: CH2, Futaba: CH1"); break; "Roll - Spektrum: CH2, Futaba: CH1"); break;
case Page_Options:
message = tr("TBD."); break;
case Page_Conclusion: case Page_Conclusion:
message = tr("TBD."); break; message = tr("TBD."); break;
default: default:
@ -832,6 +835,27 @@ bool MultirotorPage::validatePage() {
bookChannel(rollCB, AILERONS_INPUT, 100 )); 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) ConclusionPage::ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
: StandardPage(Page_Conclusion, dlg, image, title, text, 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); registerField("evaluate.proceed*", proceedCB);
QLayout *l = layout(); QLayout *l = layout();
l->addWidget(proceedCB);
l->addWidget(textLabel); l->addWidget(textLabel);
l->addWidget(proceedCB);
} }
void ConclusionPage::initializePage(){ void ConclusionPage::initializePage(){
@ -898,6 +922,16 @@ QString WizardPrinter::print()
QString str; QString str;
str = QString(tr("Model Name: ")) + mix->name + "\n"; str = QString(tr("Model Name: ")) + mix->name + "\n";
str += QString(tr("Model Type: ")) + vehicleName(mix->vehicle) + "\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++){ for (int i=0; i<WIZ_MAX_CHANNELS; i++){
if (mix->channel[i].page != Page_None) { if (mix->channel[i].page != Page_None) {
Channel ch = mix->channel[i]; Channel ch = mix->channel[i];

View file

@ -333,6 +333,18 @@ private:
QComboBox *rollCB; 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 class ConclusionPage: public StandardPage
{ {
Q_OBJECT Q_OBJECT

View file

@ -271,7 +271,7 @@ LUA = NO
# Menu Lock modes # Menu Lock modes
# Values = NO, READONLY, NOMENUS # Values = NO, READONLY, NOMENUS
MENUS_LOCK == NO MENUS_LOCK = NO
#------- END BUILD OPTIONS --------------------------- #------- END BUILD OPTIONS ---------------------------
@ -632,6 +632,12 @@ ifeq ($(PCB), TARANIS)
SDCARD = YES SDCARD = YES
THR_TRACE = YES THR_TRACE = YES
EXT = FRSKY 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 CPPDEFS += -DPCBTARANIS -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX
INCDIRS += targets/taranis CoOS/kernel CoOS/portable 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 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) { if (Valid == 0) {
// Validate file here // Validate file here
if (fr = openBinaryFile(index)) { if ((fr = openBinaryFile(index))) {
Valid = 2; Valid = 2;
} }
else { else {
if (fr = f_close(&FlashFile)) { if ((fr = f_close(&FlashFile))) {
Valid = 2; Valid = 2;
} }
else { 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 (attr && m_posHorz==0 && (not_stick || editMode>0)) md2->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL);
if (!not_stick) { if (!not_stick) {
lcd_puts(COLUMN_X+MIXES_2ND_COLUMN, y, STR_DREX); 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); if (attr && m_posHorz==1 && editMode>0) md2->noExpo = !checkIncDecModel(event, !md2->noExpo, 0, 1);
} }
else if (attr) { else if (attr) {

View file

@ -127,7 +127,7 @@ void menuTextView(uint8_t event)
} }
for (int i=0; i<LCD_LINES-1; i++) { 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; char *title = s_text_file;

View file

@ -58,16 +58,16 @@ void hapticQueue::heartbeat()
hapticOn(g_eeGeneral.hapticStrength * 20); hapticOn(g_eeGeneral.hapticStrength * 20);
#else #else
if (hapticTick-- > 0) { if (hapticTick-- > 0) {
HAPTIC_ON; HAPTIC_ON();
} }
else { else {
HAPTIC_OFF; HAPTIC_OFF();
hapticTick = g_eeGeneral.hapticStrength; hapticTick = g_eeGeneral.hapticStrength;
} }
#endif #endif
} }
else { else {
HAPTIC_OFF; HAPTIC_OFF();
if (buzzPause > 0) { if (buzzPause > 0) {
buzzPause--; 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 #endif
if (y >= LCD_H) break; if (y >= LCD_H) break;
} }
#if defined(CPUARM)
else if (c == 0x1D) { //TAB
x |= 0x3F;
x += 1;
}
#endif
else { else {
x += (c*FW/2); //EXTENDED SPACE x += (c*FW/2); //EXTENDED SPACE
} }

View file

@ -47,6 +47,7 @@ extern "C" {
} }
#endif #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_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_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)) #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; 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) static int luaGetValue(lua_State *L)
{ {
if (lua_isnumber(L, 1)) { if (lua_isnumber(L, 1)) {
int src = luaL_checkinteger(L, 1); int src = luaL_checkinteger(L, 1);
lua_pushinteger(L, getValue(src)); luaGetValueAndPush(src);
return 1; return 1;
} }
else { else {
@ -131,6 +184,16 @@ static int luaPlayFile(lua_State *L)
return 0; 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) static int luaLcdLock(lua_State *L)
{ {
lcd_locked = true; lcd_locked = true;
@ -822,6 +885,7 @@ void luaInit()
lua_register(L, "getVersion", luaGetVersion); lua_register(L, "getVersion", luaGetVersion);
lua_register(L, "getValue", luaGetValue); lua_register(L, "getValue", luaGetValue);
lua_register(L, "playFile", luaPlayFile); lua_register(L, "playFile", luaPlayFile);
lua_register(L, "playNumber", luaPlayNumber);
lua_register(L, "popupInput", luaPopupInput); lua_register(L, "popupInput", luaPopupInput);
// Push OpenTX constants // Push OpenTX constants
@ -1053,12 +1117,12 @@ void luaTask(uint8_t evt)
lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run); lua_rawgeti(L, LUA_REGISTRYINDEX, sid.run);
for (int j=0; j<sid.inputsCount; j++) { for (int j=0; j<sid.inputsCount; j++) {
if (sid.inputs[j].type == 1) if (sid.inputs[j].type == 1)
lua_pushinteger(L, getValue((uint8_t)sd.inputs[j])); luaGetValueAndPush((uint8_t)sd.inputs[j]);
else 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) { 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)) { if (!lua_isnumber(L, -1)) {
sid.state = (instructionsPercent > 100 ? SCRIPT_KILLED : SCRIPT_SYNTAX_ERROR); sid.state = (instructionsPercent > 100 ? SCRIPT_KILLED : SCRIPT_SYNTAX_ERROR);
TRACE("Script %10s disabled", sd.file); TRACE("Script %10s disabled", sd.file);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -35,8 +35,9 @@
*/ */
/* Formatting octal codes available in TR_ strings: /* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal) * \037\x -sets LCD x-coord (x value in octal)
* \036 -newline * \n -newline
* \001 to \035 -extended spacing (value * FW/2) * \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string * \0 -ends actual string
*/ */
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005" #define LEN_VCSWFUNC "\005"
#if defined(CPUARM) #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 #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 #endif
#define LEN_VFSWFUNC "\012" #define LEN_VFSWFUNC "\012"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset" #define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim" #define TR_TRIM "Trim"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curva" #define TR_CURVE "Curva"
#define TR_FLMODE TR("Modo","Modos") #define TR_FLMODE TR("Modo","Modos")
#define TR_MIXWARNING "Aviso" #define TR_MIXWARNING "Aviso"

View file

@ -35,8 +35,9 @@
*/ */
/* Formatting octal codes available in TR_ strings: /* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal) * \037\x -sets LCD x-coord (x value in octal)
* \036 -newline * \n -newline
* \001 to \035 -extended spacing (value * FW/2) * \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string * \0 -ends actual string
*/ */
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005" #define LEN_VCSWFUNC "\005"
#if defined(CPUARM) #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 #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 #endif
#define LEN_VFSWFUNC "\012" #define LEN_VFSWFUNC "\012"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset" #define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim" #define TR_TRIM "Trim"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curve" #define TR_CURVE "Curve"
#define TR_FLMODE TR("Mode","Modes") #define TR_FLMODE TR("Mode","Modes")
#define TR_MIXWARNING "Warning" #define TR_MIXWARNING "Warning"

View file

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

View file

@ -35,8 +35,9 @@
*/ */
/* Formatting octal codes available in TR_ strings: /* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal) * \037\x -sets LCD x-coord (x value in octal)
* \036 -newline * \n -newline
* \001 to \035 -extended spacing (value * FW/2) * \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string * \0 -ends actual string
*/ */
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005" #define LEN_VCSWFUNC "\005"
#if defined(CPUARM) #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 #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 #endif
#define LEN_VFSWFUNC "\015" #define LEN_VFSWFUNC "\015"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Offset" #define TR_OFFSET INDENT"Offset"
#define TR_TRIM "Trim" #define TR_TRIM "Trim"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curva" #define TR_CURVE "Curva"
#define TR_FLMODE "Fase" #define TR_FLMODE "Fase"
#define TR_MIXWARNING "Avviso" #define TR_MIXWARNING "Avviso"

View file

@ -35,8 +35,9 @@
*/ */
/* Formatting octal codes available in TR_ strings: /* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal) * \037\x -sets LCD x-coord (x value in octal)
* \036 -newline * \n -newline
* \001 to \035 -extended spacing (value * FW/2) * \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string * \0 -ends actual string
*/ */
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005" #define LEN_VCSWFUNC "\005"
#if defined(CPUARM) #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 #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 #endif
#define LEN_VFSWFUNC "\013" #define LEN_VFSWFUNC "\013"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Ofset" #define TR_OFFSET INDENT"Ofset"
#define TR_TRIM "Trymer" #define TR_TRIM "Trymer"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Krzywa" #define TR_CURVE "Krzywa"
#define TR_FLMODE "Tryb" #define TR_FLMODE "Tryb"
#define TR_MIXWARNING "UWAGA" #define TR_MIXWARNING "UWAGA"

View file

@ -35,8 +35,9 @@
*/ */
/* Formatting octal codes available in TR_ strings: /* Formatting octal codes available in TR_ strings:
* \037\x -sets LCD x-coord (x value in octal) * \037\x -sets LCD x-coord (x value in octal)
* \036 -newline * \n -newline
* \001 to \035 -extended spacing (value * FW/2) * \t -horizontal tab (ARM only)
* \001 to \034 -extended spacing (value * FW/2)
* \0 -ends actual string * \0 -ends actual string
*/ */
@ -187,9 +188,9 @@
#define LEN_VCSWFUNC "\005" #define LEN_VCSWFUNC "\005"
#if defined(CPUARM) #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 #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 #endif
#define LEN_VFSWFUNC "\015" #define LEN_VFSWFUNC "\015"
@ -501,6 +502,7 @@
#define TR_OFFSET INDENT"Desvio" #define TR_OFFSET INDENT"Desvio"
#define TR_TRIM "Trim" #define TR_TRIM "Trim"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30
#define TR_CURVE "Curvas" #define TR_CURVE "Curvas"
#define TR_FLMODE "Fase" #define TR_FLMODE "Fase"
#define TR_MIXWARNING "Aviso" #define TR_MIXWARNING "Aviso"

View file

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

View file

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