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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user