Flaps and air brakes have been added. The Wizard is now done as far as OpenTX 2.0 is concerned (Helicopter functionality to be added in 2.x)

This commit is contained in:
Kjell Kernen
2014-04-01 12:56:18 +02:00
parent 7a29fcf266
commit cad1850116
4 changed files with 76 additions and 60 deletions
+27 -13
View File
@@ -22,8 +22,8 @@ Channel::Channel()
void Channel::clear()
{
page = Page_None;
input1 = NOINPUT;
input2 = NOINPUT;
input1 = NO_INPUT;
input2 = NO_INPUT;
weight1 = 0;
weight2 = 0;
}
@@ -37,24 +37,38 @@ WizMix::WizMix(const GeneralSettings & settings, const unsigned int modelId):
strcpy(name, " ");
}
void WizMix::addMix(ModelData &model, Input input, int weight, int channel, int & mixerIndex)
void WizMix::maxMixSwitch(MixData &mix, int channel, int sw, int weight)
{
if (input != NOINPUT)
{
MixData & mix = model.mixData[mixerIndex++];
mix.destCh = channel+1;
if (input >= RUDDER && input <= AILERON)
{
if (IS_TARANIS(GetEepromInterface()->getBoard()))
mix.destCh = channel;
mix.srcRaw = RawSource(SOURCE_TYPE_MAX);
mix.swtch = RawSwitch(SWITCH_TYPE_SWITCH, sw);
mix.weight = weight;
}
void WizMix::addMix(ModelData &model, Input input, int weight, int channel, int & mixIndex)
{
if (input != NO_INPUT) {
bool isTaranis = IS_TARANIS(GetEepromInterface()->getBoard());
if (input >= RUDDER_INPUT && input <= AILERONS_INPUT) {
MixData & mix = model.mixData[mixIndex++];
mix.destCh = channel+1;
if (isTaranis)
mix.srcRaw = RawSource(SOURCE_TYPE_VIRTUAL_INPUT, input-1, &model);
else
mix.srcRaw = RawSource(SOURCE_TYPE_STICK, input-1);
mix.weight = weight;
}
if (input==FLAP){
else if (input==FLAPS_INPUT){
// There must be some kind of constants for switches somewhere...
maxMixSwitch( model.mixData[mixIndex++], channel+1, isTaranis ? 1 :-3 , -100); //SA-UP or ELE-UP
maxMixSwitch( model.mixData[mixIndex++], channel+1, isTaranis ? 3 : 3 , 100); //SA-DOWN or ELE-DOWN
}
if (input==AIRBREAK){
else if (input==AIRBRAKES_INPUT){
maxMixSwitch( model.mixData[mixIndex++], channel+1, isTaranis ? 13 :-2 , -100); //SE-UP or RUD-UP
maxMixSwitch( model.mixData[mixIndex++], channel+1, isTaranis ? 15 : 2 , 100); //SE-DOWN or RUD-DOWN
}
mix.weight = weight;
}
}
+9 -7
View File
@@ -24,13 +24,13 @@
#define WIZ_MODEL_NAME_LENGTH 12
enum Input {
NOINPUT,
RUDDER,
ELEVATOR,
THROTTLE,
AILERON,
FLAP,
AIRBREAK
NO_INPUT,
RUDDER_INPUT,
ELEVATOR_INPUT,
THROTTLE_INPUT,
AILERONS_INPUT,
FLAPS_INPUT,
AIRBRAKES_INPUT
};
enum Vehicle {
@@ -92,6 +92,8 @@ class WizMix
private:
WizMix();
void addMix(ModelData & model, Input input, int weight, int channel, int & mixerIndex);
void maxMixSwitch(MixData &mix, int destCh, int sw, int weight);
};
#endif // WIZARDDATA_H
+39 -39
View File
@@ -338,14 +338,14 @@ ThrottlePage::ThrottlePage(WizardDialog *dlg, QString image, QString title, QStr
void ThrottlePage::initializePage()
{
populateCB(throttleCB, getDefaultChannel(THROTTLE));
populateCB(throttleCB, getDefaultChannel(THROTTLE_INPUT));
}
bool ThrottlePage::validatePage()
{
releaseChannels();
if (motorRB->isChecked())
return bookChannel(throttleCB, THROTTLE, 100);
return bookChannel(throttleCB, THROTTLE_INPUT, 100);
else
return true;
}
@@ -386,10 +386,10 @@ bool AileronsPage::validatePage() {
return true;
}
if (oneAileronRB->isChecked()) {
return (bookChannel(aileron1CB, AILERON, 100 ));
return (bookChannel(aileron1CB, AILERONS_INPUT, 100 ));
}
return( bookChannel(aileron1CB, AILERON, 100 ) &&
bookChannel(aileron2CB, AILERON, 100 ));
return( bookChannel(aileron1CB, AILERONS_INPUT, 100 ) &&
bookChannel(aileron2CB, AILERONS_INPUT, 100 ));
}
FlapsPage::FlapsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -423,10 +423,10 @@ bool FlapsPage::validatePage() {
return true;
}
if (oneFlapRB->isChecked()) {
return (bookChannel(flap1CB, FLAP, 100 ));
return (bookChannel(flap1CB, FLAPS_INPUT, 100 ));
}
return( bookChannel(flap1CB, FLAP, 100 ) &&
bookChannel(flap2CB, FLAP, 100 ));
return( bookChannel(flap1CB, FLAPS_INPUT, 100 ) &&
bookChannel(flap2CB, FLAPS_INPUT, 100 ));
}
AirbreaksPage::AirbreaksPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -460,10 +460,10 @@ bool AirbreaksPage::validatePage() {
return true;
}
if (oneAirbreakRB->isChecked()) {
return (bookChannel(airbreak1CB, AIRBREAK, 100 ));
return (bookChannel(airbreak1CB, AIRBRAKES_INPUT, 100 ));
}
return( bookChannel(airbreak1CB, AIRBREAK, 100 ) &&
bookChannel(airbreak2CB, AIRBREAK, 100 ));
return( bookChannel(airbreak1CB, AIRBRAKES_INPUT, 100 ) &&
bookChannel(airbreak2CB, AIRBRAKES_INPUT, 100 ));
}
BankPage::BankPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -492,10 +492,10 @@ void BankPage::initializePage(){
bool BankPage::validatePage() {
releaseChannels();
if (oneElevonChRB->isChecked()) {
return (bookChannel(elevon1CB, AILERON, 100, ELEVATOR, 100 ));
return (bookChannel(elevon1CB, AILERONS_INPUT, 100, ELEVATOR_INPUT, 100 ));
}
return( bookChannel(elevon1CB, AILERON, 100, ELEVATOR, 100 ) &&
bookChannel(elevon2CB, AILERON, 100, ELEVATOR, 100 ));
return( bookChannel(elevon1CB, AILERONS_INPUT, 100, ELEVATOR_INPUT, 100 ) &&
bookChannel(elevon2CB, AILERONS_INPUT, 100, ELEVATOR_INPUT, 100 ));
}
RudderPage::RudderPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -522,7 +522,7 @@ bool RudderPage::validatePage() {
if (noRudderRB->isChecked())
return true;
return (bookChannel(rudderCB, RUDDER, 100));
return (bookChannel(rudderCB, RUDDER_INPUT, 100));
}
VTailPage::VTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -545,8 +545,8 @@ void VTailPage::initializePage(){
bool VTailPage::validatePage() {
releaseChannels();
return (bookChannel(tail1CB, ELEVATOR, 100, RUDDER, 100) &&
bookChannel(tail2CB, ELEVATOR, 100, RUDDER, 100 ));
return (bookChannel(tail1CB, ELEVATOR_INPUT, 100, RUDDER_INPUT, 100) &&
bookChannel(tail2CB, ELEVATOR_INPUT, 100, RUDDER_INPUT, 100 ));
}
TailPage::TailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -569,8 +569,8 @@ void TailPage::initializePage(){
bool TailPage::validatePage() {
releaseChannels();
return( bookChannel(elevatorCB, ELEVATOR, 100 ) &&
bookChannel(rudderCB, RUDDER, 100 ));
return( bookChannel(elevatorCB, ELEVATOR_INPUT, 100 ) &&
bookChannel(rudderCB, RUDDER_INPUT, 100 ));
}
SimpleTailPage::SimpleTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -589,7 +589,7 @@ void SimpleTailPage::initializePage(){
bool SimpleTailPage::validatePage() {
releaseChannels();
return( bookChannel(elevatorCB, ELEVATOR, 100 ));
return( bookChannel(elevatorCB, ELEVATOR_INPUT, 100 ));
}
CyclicPage::CyclicPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -666,10 +666,10 @@ void FblPage::initializePage(){
bool FblPage::validatePage() {
releaseChannels();
return( bookChannel(throttleCB, THROTTLE, 100 ) &&
bookChannel( yawCB, RUDDER, 100 ) &&
bookChannel( pitchCB, ELEVATOR, 100 ) &&
bookChannel( rollCB, AILERON, 100 ));
return( bookChannel(throttleCB, THROTTLE_INPUT, 100 ) &&
bookChannel( yawCB, RUDDER_INPUT, 100 ) &&
bookChannel( pitchCB, ELEVATOR_INPUT, 100 ) &&
bookChannel( rollCB, AILERONS_INPUT, 100 ));
}
HeliPage::HeliPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -700,10 +700,10 @@ void HeliPage::initializePage(){
bool HeliPage::validatePage() {
releaseChannels();
return( bookChannel(throttleCB, THROTTLE, 100 ) &&
bookChannel( yawCB, RUDDER, 100 ) &&
bookChannel( pitchCB, ELEVATOR, 100 ) &&
bookChannel( rollCB, AILERON, 100 ));
return( bookChannel(throttleCB, THROTTLE_INPUT, 100 ) &&
bookChannel( yawCB, RUDDER_INPUT, 100 ) &&
bookChannel( pitchCB, ELEVATOR_INPUT, 100 ) &&
bookChannel( rollCB, AILERONS_INPUT, 100 ));
}
MultirotorPage::MultirotorPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -734,10 +734,10 @@ void MultirotorPage::initializePage(){
bool MultirotorPage::validatePage() {
releaseChannels();
return( bookChannel(throttleCB, THROTTLE, 100 ) &&
bookChannel(yawCB, RUDDER, 100 ) &&
bookChannel(pitchCB, ELEVATOR, 100 ) &&
bookChannel(rollCB, AILERON, 100 ));
return( bookChannel(throttleCB, THROTTLE_INPUT, 100 ) &&
bookChannel(yawCB, RUDDER_INPUT, 100 ) &&
bookChannel(pitchCB, ELEVATOR_INPUT, 100 ) &&
bookChannel(rollCB, AILERONS_INPUT, 100 ));
}
ConclusionPage::ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
@@ -766,12 +766,12 @@ bool ConclusionPage::validatePage() {
QString WizardPrinter::inputName(Input input)
{
switch (input){
case THROTTLE: return "THR";
case RUDDER: return "RUD";
case ELEVATOR: return "ELE";
case AILERON: return "AIL";
case FLAP: return "FLP";
case AIRBREAK: return "AIR";
case THROTTLE_INPUT: return "THR";
case RUDDER_INPUT: return "RUD";
case ELEVATOR_INPUT: return "ELE";
case AILERONS_INPUT: return "AIL";
case FLAPS_INPUT: return "FLP";
case AIRBRAKES_INPUT: return "AIR";
default: return "---";
}
}
@@ -795,7 +795,7 @@ WizardPrinter::WizardPrinter(WizMix *wizMix)
{
QString str;
str = QString("[%1, %2]").arg(inputName(input1)).arg(weight1);
if ( input2 != NOINPUT )
if ( input2 != NO_INPUT )
str += QString("[%1, %2]").arg(inputName(input2)).arg(weight2);
return str;
}
+1 -1
View File
@@ -53,7 +53,7 @@ class StandardPage: public QWizardPage
protected:
int getDefaultChannel(const Input input);
void populateCB(QComboBox * cb, int preferred=-1);
bool bookChannel(QComboBox * cb, Input input1, int weight1, Input input2=NOINPUT, int weight2=0);
bool bookChannel(QComboBox * cb, Input input1, int weight1, Input input2=NO_INPUT, int weight2=0);
private:
QLabel *topLabel;