Skip to content

Commit 498aba5

Browse files
committed
LP-514 Add DShot150/600/1200 and OneShot42/MultiShot Esc support to Wizard
1 parent 9a4fd5a commit 498aba5

12 files changed

Lines changed: 435 additions & 46 deletions

ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ void ConnectionDiagram::setupGraphicsScene()
179179
case VehicleConfigurationSource::CONTROLLER_CC:
180180
case VehicleConfigurationSource::CONTROLLER_CC3D:
181181
prefix = "cc-";
182-
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
182+
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT125 ||
183+
m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT42 ||
184+
m_configSource->getEscType() == VehicleConfigurationSource::ESC_MULTISHOT ||
183185
m_configSource->getEscType() == VehicleConfigurationSource::ESC_SYNCHED) {
184186
suffix = "-oneshot";
185187
}

ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,10 @@ void EscCalibrationPage::resetAllSecurityCheckboxes()
9393

9494
int EscCalibrationPage::getHighOutputRate()
9595
{
96-
if (getWizard()->getEscType() == SetupWizard::ESC_ONESHOT) {
97-
return HIGH_ONESHOT125_OUTPUT_PULSE_LENGTH_MICROSECONDS;
96+
if (getWizard()->getEscType() == SetupWizard::ESC_ONESHOT125 ||
97+
getWizard()->getEscType() == SetupWizard::ESC_ONESHOT42 ||
98+
getWizard()->getEscType() == SetupWizard::ESC_MULTISHOT) {
99+
return HIGH_ONESHOT_MULTISHOT_OUTPUT_PULSE_LENGTH_MICROSECONDS;
98100
} else {
99101
return HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS;
100102
}

ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private slots:
5959
// Min value should match min value defined in vehicleconfigurationsource.h
6060
static const int LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1000;
6161
static const int HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1900;
62-
static const int HIGH_ONESHOT125_OUTPUT_PULSE_LENGTH_MICROSECONDS = 2000;
62+
static const int HIGH_ONESHOT_MULTISHOT_OUTPUT_PULSE_LENGTH_MICROSECONDS = 2000;
6363
Ui::EscCalibrationPage *ui;
6464
bool m_isCalibrating;
6565
OutputCalibrationUtil m_outputUtil;

ground/gcs/src/plugins/setupwizard/pages/escpage.cpp

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,49 @@ void EscPage::initializePage()
4747
{
4848
bool enabled = isSynchOrOneShotAvailable();
4949

50-
ui->oneshotESCButton->setEnabled(enabled);
51-
if (ui->oneshotESCButton->isChecked() && !enabled) {
52-
ui->oneshotESCButton->setChecked(false);
50+
ui->oneshot125ESCButton->setEnabled(enabled);
51+
ui->oneshot42ESCButton->setEnabled(enabled);
52+
ui->multishotESCButton->setEnabled(enabled);
53+
54+
if ((ui->oneshot125ESCButton->isChecked() ||
55+
ui->oneshot42ESCButton->isChecked() ||
56+
ui->multishotESCButton->isChecked()) && !enabled) {
57+
ui->oneshot125ESCButton->setChecked(false);
58+
ui->oneshot42ESCButton->setChecked(false);
59+
ui->multishotESCButton->setChecked(false);
5360
ui->rapidESCButton->setChecked(true);
5461
}
62+
63+
enabled = isFastDShotAvailable();
64+
ui->dshot1200ESCButton->setEnabled(enabled);
65+
if (ui->dshot1200ESCButton->isChecked() && !enabled) {
66+
ui->dshot1200ESCButton->setChecked(false);
67+
ui->dshot600ESCButton->setChecked(true);
68+
}
5569
}
5670

5771
bool EscPage::validatePage()
5872
{
59-
if (ui->oneshotESCButton->isChecked()) {
60-
getWizard()->setEscType(SetupWizard::ESC_ONESHOT);
73+
if (ui->dshot1200ESCButton->isChecked()) {
74+
getWizard()->setEscType(SetupWizard::ESC_DSHOT1200);
75+
} else if (ui->dshot600ESCButton->isChecked()) {
76+
getWizard()->setEscType(SetupWizard::ESC_DSHOT600);
77+
} else if (ui->dshot150ESCButton->isChecked()) {
78+
getWizard()->setEscType(SetupWizard::ESC_DSHOT150);
79+
} else if (ui->multishotESCButton->isChecked()) {
80+
getWizard()->setEscType(SetupWizard::ESC_MULTISHOT);
81+
} else if (ui->oneshot42ESCButton->isChecked()) {
82+
getWizard()->setEscType(SetupWizard::ESC_ONESHOT42);
83+
} else if (ui->oneshot125ESCButton->isChecked()) {
84+
getWizard()->setEscType(SetupWizard::ESC_ONESHOT125);
6185
} else if (ui->rapidESCButton->isChecked()) {
6286
if (isSynchOrOneShotAvailable()) {
6387
getWizard()->setEscType(SetupWizard::ESC_SYNCHED);
6488
} else {
6589
getWizard()->setEscType(SetupWizard::ESC_RAPID);
6690
}
6791
} else if (ui->defaultESCButton->isChecked()) {
68-
getWizard()->setEscType(SetupWizard::ESC_STANDARD);
92+
getWizard()->setEscType(SetupWizard::ESC_STANDARD300);
6993
}
7094

7195
return true;
@@ -107,3 +131,22 @@ bool EscPage::isSynchOrOneShotAvailable()
107131

108132
return available;
109133
}
134+
135+
bool EscPage::isFastDShotAvailable()
136+
{
137+
bool available = true;
138+
139+
switch (getWizard()->getControllerType()) {
140+
case SetupWizard::CONTROLLER_CC3D:
141+
case SetupWizard::CONTROLLER_SPRACINGF3:
142+
case SetupWizard::CONTROLLER_SPRACINGF3EVO:
143+
case SetupWizard::CONTROLLER_PIKOBLX:
144+
case SetupWizard::CONTROLLER_TINYFISH:
145+
available = false;
146+
break;
147+
default:
148+
break;
149+
}
150+
151+
return available;
152+
}

ground/gcs/src/plugins/setupwizard/pages/escpage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class EscPage : public AbstractWizardPage {
4646
private:
4747
Ui::EscPage *ui;
4848
bool isSynchOrOneShotAvailable();
49+
bool isFastDShotAvailable();
4950
};
5051

5152
#endif // ESCPAGE_H

0 commit comments

Comments
 (0)