int SetupWizard::nextId() const { switch (currentId()) { case PAGE_START: if (canAutoUpdate()) { return PAGE_UPDATE; } else { return PAGE_CONTROLLER; } case PAGE_UPDATE: return PAGE_CONTROLLER; case PAGE_CONTROLLER: { switch (getControllerType()) { case CONTROLLER_CC: case CONTROLLER_CC3D: case CONTROLLER_REVO: case CONTROLLER_DISCOVERYF4: return PAGE_INPUT; case CONTROLLER_NANO: if (isRestartNeeded()) { reboot(); } return PAGE_INPUT; case CONTROLLER_OPLINK: default: return PAGE_NOTYETIMPLEMENTED; } } case PAGE_VEHICLES: { switch (getVehicleType()) { case VEHICLE_MULTI: return PAGE_MULTI; case VEHICLE_FIXEDWING: return PAGE_FIXEDWING; case VEHICLE_HELI: return PAGE_HELI; case VEHICLE_SURFACE: return PAGE_SURFACE; default: return PAGE_NOTYETIMPLEMENTED; } } case PAGE_MULTI: return PAGE_ESC; case PAGE_FIXEDWING: case PAGE_SURFACE: if (getVehicleSubType() == GROUNDVEHICLE_DIFFERENTIAL) { return PAGE_ESC; } else { return PAGE_SERVO; } case PAGE_INPUT: if (isRestartNeeded()) { saveHardwareSettings(); reboot(); } return PAGE_VEHICLES; case PAGE_ESC: if (getVehicleSubType() == MULTI_ROTOR_TRI_Y) { return PAGE_SERVO; } else { switch (getControllerType()) { case CONTROLLER_REVO: case CONTROLLER_NANO: return PAGE_GPS; default: return PAGE_SUMMARY; } } case PAGE_SERVO: { switch (getControllerType()) { case CONTROLLER_REVO: case CONTROLLER_NANO: return PAGE_GPS; default: return PAGE_SUMMARY; } } case PAGE_BIAS_CALIBRATION: if (getVehicleType() == VEHICLE_MULTI) { return PAGE_ESC_CALIBRATION; } else { return PAGE_OUTPUT_CALIBRATION; } case PAGE_ESC_CALIBRATION: return PAGE_OUTPUT_CALIBRATION; case PAGE_OUTPUT_CALIBRATION: return PAGE_AIRFRAME_INITIAL_TUNING; case PAGE_AIRFRAME_INITIAL_TUNING: return PAGE_SAVE; case PAGE_GPS: switch (getVehicleType()) { case VEHICLE_FIXEDWING: if (getGpsType() != GPS_DISABLED) { return PAGE_AIRSPEED; } else { return PAGE_SUMMARY; } default: return PAGE_SUMMARY; } case PAGE_AIRSPEED: return PAGE_SUMMARY; case PAGE_SUMMARY: { switch (getControllerType()) { case CONTROLLER_CC: case CONTROLLER_CC3D: case CONTROLLER_REVO: case CONTROLLER_NANO: case CONTROLLER_DISCOVERYF4: switch (getVehicleType()) { case VEHICLE_FIXEDWING: return PAGE_OUTPUT_CALIBRATION; default: return PAGE_BIAS_CALIBRATION; } default: return PAGE_NOTYETIMPLEMENTED; } } case PAGE_SAVE: return PAGE_END; case PAGE_NOTYETIMPLEMENTED: return PAGE_END; default: return -1; } }
QString SetupWizard::getSummaryText() { QString summary = ""; summary.append("<b>").append(tr("Controller type: ")).append("</b>"); switch(getControllerType()) { case CONTROLLER_CC: summary.append(tr("OpenPilot CopterControl")); break; case CONTROLLER_CC3D: summary.append(tr("OpenPilot CopterControl 3D")); break; case CONTROLLER_REVO: summary.append(tr("OpenPilot Revolution")); break; case CONTROLLER_PIPX: summary.append(tr("OpenPilot PipX Radio Modem")); break; default: summary.append(tr("Unknown")); break; } summary.append("<br>"); summary.append("<b>").append(tr("Vehicle type: ")).append("</b>"); switch (getVehicleType()) { case VEHICLE_MULTI: summary.append(tr("Multirotor")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: summary.append(tr("Tricopter")); break; case SetupWizard::MULTI_ROTOR_QUAD_X: summary.append(tr("Quadcopter X")); break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: summary.append(tr("Quadcopter +")); break; case SetupWizard::MULTI_ROTOR_HEXA: summary.append(tr("Hexacopter")); break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: summary.append(tr("Hexacopter Coax (Y6)")); break; case SetupWizard::MULTI_ROTOR_HEXA_H: summary.append(tr("Hexacopter X")); break; case SetupWizard::MULTI_ROTOR_OCTO: summary.append(tr("Octocopter")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: summary.append(tr("Octocopter Coax X")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: summary.append(tr("Octocopter Coax +")); break; case SetupWizard::MULTI_ROTOR_OCTO_V: summary.append(tr("Octocopter V")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_FIXEDWING: summary.append(tr("Fixed wing")); break; case VEHICLE_HELI: summary.append(tr("Helicopter")); break; case VEHICLE_SURFACE: summary.append(tr("Surface vehicle")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Input type: ")).append("</b>"); switch (getInputType()) { case INPUT_PWM: summary.append(tr("PWM (One cable per channel)")); break; case INPUT_PPM: summary.append(tr("PPM (One cable for all channels)")); break; case INPUT_SBUS: summary.append(tr("Futaba S.Bus")); break; case INPUT_DSM2: summary.append(tr("Spektrum satellite (DSM2)")); break; case INPUT_DSMX10: summary.append(tr("Spektrum satellite (DSMX10BIT)")); break; case INPUT_DSMX11: summary.append(tr("Spektrum satellite (DSMX11BIT)")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("ESC type: ")).append("</b>"); switch (getESCType()) { case ESC_LEGACY: summary.append(tr("Legacy ESC (50 Hz)")); break; case ESC_RAPID: summary.append(tr("Rapid ESC (400 Hz)")); break; default: summary.append(tr("Unknown")); } /* summary.append("<br>"); summary.append("<b>").append(tr("Reboot required: ")).append("</b>"); summary.append(isRestartNeeded() ? tr("<font color='red'>Yes</font>") : tr("<font color='green'>No</font>")); */ return summary; }
QString SetupWizard::getSummaryText() { QString summary = ""; summary.append("<b>").append(tr("Controller type: ")).append("</b>"); switch (getControllerType()) { case CONTROLLER_CC: summary.append(tr("OpenPilot CopterControl")); break; case CONTROLLER_CC3D: summary.append(tr("OpenPilot CopterControl 3D")); break; case CONTROLLER_REVO: summary.append(tr("OpenPilot Revolution")); break; case CONTROLLER_NANO: summary.append(tr("OpenPilot Nano")); break; case CONTROLLER_OPLINK: summary.append(tr("OpenPilot OPLink Radio Modem")); break; case CONTROLLER_DISCOVERYF4: summary.append(tr("OpenPilot DiscoveryF4 Development Board")); break; default: summary.append(tr("Unknown")); break; } summary.append("<br>"); summary.append("<b>").append(tr("Vehicle type: ")).append("</b>"); switch (getVehicleType()) { case VEHICLE_MULTI: summary.append(tr("Multirotor")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: summary.append(tr("Tricopter")); break; case SetupWizard::MULTI_ROTOR_QUAD_X: summary.append(tr("Quadcopter X")); break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: summary.append(tr("Quadcopter +")); break; case SetupWizard::MULTI_ROTOR_HEXA: summary.append(tr("Hexacopter")); break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: summary.append(tr("Hexacopter Coax (Y6)")); break; case SetupWizard::MULTI_ROTOR_HEXA_H: summary.append(tr("Hexacopter H")); break; case SetupWizard::MULTI_ROTOR_HEXA_X: summary.append(tr("Hexacopter X")); break; case SetupWizard::MULTI_ROTOR_OCTO: summary.append(tr("Octocopter")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: summary.append(tr("Octocopter Coax X")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: summary.append(tr("Octocopter Coax +")); break; case SetupWizard::MULTI_ROTOR_OCTO_V: summary.append(tr("Octocopter V")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_FIXEDWING: summary.append(tr("Fixed wing")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::FIXED_WING_DUAL_AILERON: summary.append(tr("Dual Aileron")); break; case SetupWizard::FIXED_WING_AILERON: summary.append(tr("Aileron")); break; case SetupWizard::FIXED_WING_ELEVON: summary.append(tr("Elevon")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_HELI: summary.append(tr("Helicopter")); break; case VEHICLE_SURFACE: summary.append(tr("Surface vehicle")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::GROUNDVEHICLE_CAR: summary.append(tr("Car")); break; case SetupWizard::GROUNDVEHICLE_DIFFERENTIAL: summary.append(tr("Tank")); break; case SetupWizard::GROUNDVEHICLE_MOTORCYCLE: summary.append(tr("Motorcycle")); break; default: summary.append(tr("Unknown")); break; } break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Input type: ")).append("</b>"); switch (getInputType()) { case INPUT_PWM: summary.append(tr("PWM (One cable per channel)")); break; case INPUT_PPM: summary.append(tr("PPM (One cable for all channels)")); break; case INPUT_SBUS: summary.append(tr("Futaba S.Bus")); break; case INPUT_DSM: summary.append(tr("Spektrum Satellite")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Speed Controller (ESC) type: ")).append("</b>"); switch (getEscType()) { case ESC_STANDARD: summary.append(tr("Standard ESC (%1 Hz)").arg(VehicleConfigurationHelper::LEGACY_ESC_FREQUENCY)); break; case ESC_RAPID: summary.append(tr("Rapid ESC (%1 Hz)").arg(VehicleConfigurationHelper::RAPID_ESC_FREQUENCY)); break; case ESC_SYNCHED: summary.append(tr("Synched ESC")); break; case ESC_ONESHOT: summary.append(tr("Oneshot ESC")); break; default: summary.append(tr("Unknown")); } // If Tricopter show tail servo speed if (getVehicleSubType() == MULTI_ROTOR_TRI_Y || getVehicleType() == VEHICLE_FIXEDWING || getVehicleSubType() == GROUNDVEHICLE_MOTORCYCLE || getVehicleSubType() == GROUNDVEHICLE_CAR) { summary.append("<br>"); summary.append("<b>").append(tr("Servo type: ")).append("</b>"); switch (getServoType()) { case SERVO_ANALOG: summary.append(tr("Analog Servos (50 Hz)")); break; case SERVO_DIGITAL: summary.append(tr("Digital Servos (333 Hz)")); break; default: summary.append(tr("Unknown")); } } // Show GPS Type if (getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) { summary.append("<br>"); summary.append("<b>").append(tr("GPS type: ")).append("</b>"); switch (getGpsType()) { case GPS_PLATINUM: summary.append(tr("OpenPilot Platinum")); break; case GPS_UBX: summary.append(tr("OpenPilot v8 or Generic UBLOX GPS")); break; case GPS_NMEA: summary.append(tr("Generic NMEA GPS")); break; default: summary.append(tr("None")); } } // Show Airspeed sensor type if ((getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) && getVehicleType() == VEHICLE_FIXEDWING) { summary.append("<br>"); summary.append("<b>").append(tr("Airspeed Sensor: ")).append("</b>"); switch (getAirspeedType()) { case AIRSPEED_ESTIMATE: summary.append(tr("Software Estimated")); break; case AIRSPEED_EAGLETREE: summary.append(tr("EagleTree on Flexi-Port")); break; case AIRSPEED_MS4525: summary.append(tr("MS4525 based on Flexi-Port")); break; default: summary.append(tr("Unknown")); } } return summary; }