1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-28 17:54:15 +01:00

OP-893 Added Auto Update functionality to the firmware page.

This commit is contained in:
Fredrik Arvidsson 2013-05-19 13:08:50 +02:00 committed by Oleg Semyonov
parent 649667d338
commit 864300d975
4 changed files with 349 additions and 176 deletions

View File

@ -77,7 +77,7 @@ void AutoUpdatePage::updateStatus(uploader::AutoUpdateStep status, QVariant valu
getWizard()->setWindowIcon(qApp->windowIcon()); getWizard()->setWindowIcon(qApp->windowIcon());
enableButtons(true); enableButtons(true);
getWizard()->show(); getWizard()->show();
ui->statusLabel->setText("Something went wrong, you will have to manualy upgrade the board using the uploader plugin"); ui->statusLabel->setText("Something went wrong, you will have to manually upgrade the board using the uploader plugin");
break; break;
} }
} }

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>822</width> <width>822</width>
<height>350</height> <height>523</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -15,215 +15,316 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <widget class="QScrollArea" name="scrollArea">
<item> <property name="frameShape">
<widget class="QPushButton" name="haltButton"> <enum>QFrame::NoFrame</enum>
<property name="enabled"> </property>
<bool>false</bool> <property name="widgetResizable">
</property> <bool>true</bool>
<property name="toolTip"> </property>
<string>Tells the mainboard to go down <widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>804</width>
<height>505</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="buttonFrame">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="autoUpdateButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Start a guided procedure to manually
recover a system which does not boot.
Rescue is possible in USB mode only.</string>
</property>
<property name="text">
<string>Auto Update</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="haltButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Tells the mainboard to go down
to bootloader mode. to bootloader mode.
(Only enabled if telemetry link is established, either (Only enabled if telemetry link is established, either
through serial or USB)</string> through serial or USB)</string>
</property> </property>
<property name="text"> <property name="text">
<string>Halt</string> <string>Halt</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="bootButton"> <widget class="QPushButton" name="resetButton">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>false</bool>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Boots the system. <string>Reset the system.
(Only enabled if telemetry link is established, either
through serial or USB)</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="bootButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="toolTip">
<string>Boots the system.
Only useful if the system is halted Only useful if the system is halted
(mainboard blue LED blinking slowly, green LED on) (mainboard blue LED blinking slowly, green LED on)
If telemetry is not running, select the link using the dropdown If telemetry is not running, select the link using the dropdown
menu on the right.</string> menu on the right.</string>
</property> </property>
<property name="text"> <property name="text">
<string>Boot</string> <string>Boot</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="safeBootButton"> <widget class="QPushButton" name="safeBootButton">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Boots the system into safe mode (ie. default HwSettings). <string>Boots the system into safe mode (ie. default HwSettings).
Only useful if the system is halted Only useful if the system is halted
(mainboard blue LED blinking slowly, orange LED off) (mainboard blue LED blinking slowly, orange LED off)
If telemetry is not running, select the link using the dropdown If telemetry is not running, select the link using the dropdown
menu on the right.</string> menu on the right.</string>
</property> </property>
<property name="text"> <property name="text">
<string>Safe Boot</string> <string>Safe Boot</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="eraseBootButton"> <widget class="QPushButton" name="rescueButton">
<property name="enabled"> <property name="toolTip">
<bool>true</bool> <string>Start a guided procedure to manually
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reboot the board and clear its settings memory.&lt;/p&gt;&lt;p&gt; Useful if the board cannot boot properly.&lt;/p&gt;&lt;p&gt; Blue led starts blinking quick for 20-30 seconds than the board will start normally&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;If telemetry is not running, select the link using the dropdown&lt;/p&gt;&lt;p&gt;menu on the right.&lt;/p&gt;&lt;p&gt;PLEASE NOTE: Supported with bootloader versions 4.0 and earlier&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Erase settings</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="resetButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Reset the system.
(Only enabled if telemetry link is established, either
through serial or USB)</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="rescueButton">
<property name="toolTip">
<string>Start a guided procedure to manually
recover a system which does not boot. recover a system which does not boot.
Rescue is possible in USB mode only.</string> Rescue is possible in USB mode only.</string>
</property> </property>
<property name="text"> <property name="text">
<string>Rescue</string> <string>Rescue</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer"> <widget class="QPushButton" name="eraseBootButton">
<property name="orientation"> <property name="enabled">
<enum>Qt::Horizontal</enum> <bool>true</bool>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="toolTip">
<size> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reboot the board and clear its settings memory.&lt;/p&gt;&lt;p&gt; Useful if the board cannot boot properly.&lt;/p&gt;&lt;p&gt; Blue led starts blinking quick for 20-30 seconds than the board will start normally&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;If telemetry is not running, select the link using the dropdown&lt;/p&gt;&lt;p&gt;menu on the right.&lt;/p&gt;&lt;p&gt;PLEASE NOTE: Supported with bootloader versions 4.0 and earlier&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<width>40</width> </property>
<height>20</height> <property name="text">
</size> <string>Erase settings</string>
</property> </property>
</spacer> </widget>
</item> </item>
<item> <item>
<widget class="QComboBox" name="telemetryLink"> <spacer name="horizontalSpacer">
<property name="toolTip"> <property name="orientation">
<string>When telemetry is not connected, select the communication <enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QComboBox" name="telemetryLink">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>When telemetry is not connected, select the communication
method using this combo box. method using this combo box.
You can use this to force a communication channel when doing You can use this to force a communication channel when doing
a &quot;Boot&quot; (button on the left). It is updated automatically when a &quot;Boot&quot; (button on the left). It is updated automatically when
halting a running board.</string> halting a running board.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QToolButton" name="refreshPorts"> <widget class="QToolButton" name="refreshPorts">
<property name="toolTip"> <property name="toolTip">
<string>Refresh the list of serial ports</string> <string>Refresh the list of serial ports</string>
</property> </property>
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="boardStatus"> <widget class="QLabel" name="boardStatus">
<property name="font"> <property name="font">
<font> <font>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>Running</string> <string>Running</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pbHelp"> <widget class="QPushButton" name="pbHelp">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../coreplugin/core.qrc"> <iconset resource="../coreplugin/core.qrc">
<normaloff>:/core/images/helpicon.svg</normaloff>:/core/images/helpicon.svg</iconset> <normaloff>:/core/images/helpicon.svg</normaloff>:/core/images/helpicon.svg</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>30</width> <width>30</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="flat"> <property name="flat">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item> </layout>
<widget class="QSplitter" name="splitter"> </widget>
<property name="orientation"> </item>
<enum>Qt::Vertical</enum> <item>
</property> <widget class="QGroupBox" name="autoUpdateGroupBox">
<widget class="QTabWidget" name="systemElements"> <property name="title">
<property name="currentIndex"> <string>Auto update</string>
<number>0</number> </property>
</property> <layout class="QGridLayout" name="gridLayout_2">
<widget class="QWidget" name="defaultTab"> <item row="1" column="1">
<attribute name="title"> <widget class="QPushButton" name="autoUpdateOkButton">
<string>Mainboard</string> <property name="text">
</attribute> <string>OK</string>
<layout class="QHBoxLayout" name="horizontalLayout_2"> </property>
<item> </widget>
<widget class="QTextEdit" name="textEdit"> </item>
<property name="html"> <item row="1" column="0">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <widget class="QProgressBar" name="autoUpdateProgressBar">
<property name="value">
<number>0</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="autoUpdateLabel">
<property name="text">
<string>Progress</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QTabWidget" name="systemElements">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="defaultTab">
<attribute name="title">
<string>Mainboard</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QTextEdit" name="textEdit">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;To upgrade the firmware in your boards, proceed as follows:&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;To upgrade the firmware in your boards,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;press Auto Update and follow instructions&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;or&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;proceed as follows:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- Connect telemetry&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- Connect telemetry&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- Once telemetry is running, press &amp;quot;Halt&amp;quot; above&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- Once telemetry is running, press &amp;quot;Halt&amp;quot; above&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You will get a list of devices.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You will get a list of devices.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You can then upload/download to/from each board as you wish&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You can then upload/download to/from each board as you wish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You can resume operations by pressing &amp;quot;Boot&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;- You can resume operations by pressing &amp;quot;Boot&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget>
</item>
</layout>
</widget>
</widget> </widget>
</item> <widget class="QTextBrowser" name="textBrowser">
</layout> <property name="horizontalScrollBarPolicy">
</widget> <enum>Qt::ScrollBarAlwaysOff</enum>
</widget> </property>
<widget class="QTextBrowser" name="textBrowser"> <property name="html">
<property name="horizontalScrollBarPolicy"> <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget>
</widget>
</item>
</layout>
</widget> </widget>
</widget> </widget>
</item> </item>

View File

@ -60,6 +60,11 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent)
connect(cm, SIGNAL(deviceConnected(QIODevice *)), this, SLOT(onPhisicalHWConnect())); connect(cm, SIGNAL(deviceConnected(QIODevice *)), this, SLOT(onPhisicalHWConnect()));
getSerialPorts(); getSerialPorts();
m_config->autoUpdateButton->setEnabled(autoUpdateCapable());
connect(m_config->autoUpdateButton, SIGNAL(clicked()), this, SLOT(startAutoUpdate()));
connect(m_config->autoUpdateOkButton, SIGNAL(clicked()), this, SLOT(closeAutoUpdate()));
m_config->autoUpdateGroupBox->setVisible(false);
QIcon rbi; QIcon rbi;
rbi.addFile(QString(":uploader/images/view-refresh.svg")); rbi.addFile(QString(":uploader/images/view-refresh.svg"));
m_config->refreshPorts->setIcon(rbi); m_config->refreshPorts->setIcon(rbi);
@ -816,6 +821,68 @@ void UploaderGadgetWidget::downloadEnded(bool succeed)
m_config->rescueButton->setEnabled(true); m_config->rescueButton->setEnabled(true);
} }
void UploaderGadgetWidget::startAutoUpdate()
{
m_config->buttonFrame->setEnabled(false);
m_config->splitter->setEnabled(false);
m_config->autoUpdateGroupBox->setVisible(true);
m_config->autoUpdateOkButton->setEnabled(false);
connect(this, SIGNAL(autoUpdateSignal(uploader::AutoUpdateStep, QVariant)), this, SLOT(autoUpdateStatus(uploader::AutoUpdateStep, QVariant)));
autoUpdate();
}
void UploaderGadgetWidget::finishAutoUpdate()
{
disconnect(this, SIGNAL(autoUpdateSignal(uploader::AutoUpdateStep, QVariant)), this, SLOT(autoUpdateStatus(uploader::AutoUpdateStep, QVariant)));
m_config->autoUpdateOkButton->setEnabled(true);
}
void UploaderGadgetWidget::closeAutoUpdate()
{
m_config->autoUpdateGroupBox->setVisible(false);
m_config->buttonFrame->setEnabled(true);
m_config->splitter->setEnabled(true);
}
void UploaderGadgetWidget::autoUpdateStatus(uploader::AutoUpdateStep status, QVariant value)
{
switch(status)
{
case uploader::WAITING_DISCONNECT:
m_config->autoUpdateLabel->setText("Waiting for all OpenPilot boards to be disconnected from USB.");
break;
case uploader::WAITING_CONNECT:
m_config->autoUpdateLabel->setText("Please connect the OpenPilot board to the USB port.");
m_config->autoUpdateProgressBar->setValue(value.toInt());
break;
case uploader::JUMP_TO_BL:
m_config->autoUpdateProgressBar->setValue(0);
m_config->autoUpdateLabel->setText("Bringing the board into boot loader mode.");
break;
case uploader::LOADING_FW:
m_config->autoUpdateLabel->setText("Preparing to upload firmware to the board.");
break;
case uploader::UPLOADING_FW:
m_config->autoUpdateLabel->setText("Uploading firmware to the board.");
m_config->autoUpdateProgressBar->setValue(value.toInt());
break;
case uploader::UPLOADING_DESC:
m_config->autoUpdateLabel->setText("Uploading description of the new firmware to the board.");
break;
case uploader::BOOTING:
m_config->autoUpdateLabel->setText("Rebooting the board.");
break;
case uploader::SUCCESS:
m_config->autoUpdateLabel->setText("<font color='green'>Board was updated successfully, press OK to finish.</font>");
finishAutoUpdate();
break;
case uploader::FAILURE:
m_config->autoUpdateLabel->setText("<font color='red'>Something went wrong, you will have to manually upgrade the board. Press OK to continue.</font>");
finishAutoUpdate();
break;
}
}
/** /**
Update log entry Update log entry
*/ */

View File

@ -118,6 +118,11 @@ private slots:
void uploadEnded(bool succeed); void uploadEnded(bool succeed);
void downloadStarted(); void downloadStarted();
void downloadEnded(bool succeed); void downloadEnded(bool succeed);
void startAutoUpdate();
void finishAutoUpdate();
void closeAutoUpdate();
void autoUpdateStatus(uploader::AutoUpdateStep status, QVariant value);
}; };
#endif // UPLOADERGADGETWIDGET_H #endif // UPLOADERGADGETWIDGET_H