Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/Comms
diff options
context:
space:
mode:
authorManuel Coenen <manuel@duet3d.com>2020-12-07 14:18:19 +0300
committerManuel Coenen <manuel@duet3d.com>2020-12-07 14:18:19 +0300
commit9f87bd8b97dd7f408b1283276c3ba02e677e2da5 (patch)
tree692a3eb0a3bcb3ab168b6c2b6a176f9c788890d6 /src/Comms
parent662d3f85f4fb45c07de52e0f8c8201fbcbefa211 (diff)
Fix PanelDue not resetting at the end of flashing
Improve PanelDue resetting at the start of flashing (still not solved) Reduce flash memory usage by encapsulating debug statements in #if Fix FirmwareUpdate prerequisites failing to detect problems on Duet2+SBC and Duet 3 Mini 5+
Diffstat (limited to 'src/Comms')
-rw-r--r--src/Comms/PanelDueUpdater.cpp38
-rw-r--r--src/Comms/PanelDueUpdater.h9
2 files changed, 17 insertions, 30 deletions
diff --git a/src/Comms/PanelDueUpdater.cpp b/src/Comms/PanelDueUpdater.cpp
index 9ef721ff..c4b74c8f 100644
--- a/src/Comms/PanelDueUpdater.cpp
+++ b/src/Comms/PanelDueUpdater.cpp
@@ -12,10 +12,6 @@
#include <Platform.h>
#include <RepRap.h>
-#if !ALLOW_OTHER_AUX
- constexpr uint32_t serialChannel = 1;
-#endif
-
class AuxSerialPort : public SerialPort
{
public:
@@ -102,10 +98,8 @@ void DebugObserver::onProgress(int num, int div) noexcept
PanelDueUpdater::PanelDueUpdater() noexcept
:
-#if ALLOW_OTHER_AUX
- serialChannel(NumSerialChannels+1) ,
-#endif
- currentBaudRate(0)
+ serialChannel(NumSerialChannels+1)
+ , currentBaudRate(0)
, samba(nullptr)
, serialPort(nullptr)
, device(nullptr)
@@ -132,9 +126,7 @@ void PanelDueUpdater::Start(const uint32_t serialChan) noexcept
{
return;
}
-#if ALLOW_OTHER_AUX
serialChannel = serialChan;
-#endif
state = FlashState::eraseAndReset;
}
@@ -145,12 +137,16 @@ void PanelDueUpdater::Spin() noexcept
switch (state.RawValue())
{
case FlashState::eraseAndReset:
- reprap.GetPlatform().Message(GenericMessage, "Sending Erase-and-Reset command to PanelDue\n");
+ {
+ reprap.GetPlatform().Message(GenericMessage, "Sending Erase-and-Reset command to PanelDue\n");
- // Since writing messages via AppendAuxReply is disabled while flashing we need to send it directly
- GetAuxPort()->write(panelDueCommandEraseAndReset);
- state = FlashState::waitAfterEraseAndReset;
- erasedAndResetAt = millis();
+ // Since writing messages via AppendAuxReply is disabled while flashing we need to send it directly
+ auto auxPort = GetAuxPort();
+ auxPort->write(panelDueCommandEraseAndReset);
+ auxPort->flush();
+ state = FlashState::waitAfterEraseAndReset;
+ erasedAndResetAt = millis();
+ }
break;
case FlashState::waitAfterEraseAndReset:
@@ -179,7 +175,6 @@ void PanelDueUpdater::Spin() noexcept
}
samba = new Samba();
- samba->setDebug(DEBUG_BOSSA);
serialPort = new AuxSerialPort(*auxPort);
samba->connect(serialPort);
@@ -248,6 +243,7 @@ void PanelDueUpdater::Spin() noexcept
case FlashState::bossaReset:
reprap.GetPlatform().Message(GenericMessage, "Restarting PanelDue\n");
device->reset();
+ GetAuxPort()->flush();
state = FlashState::done;
break;
@@ -265,9 +261,7 @@ void PanelDueUpdater::Spin() noexcept
auto auxPort = GetAuxPort();
auxPort->SetInterruptCallback(currentInterruptCallbackFn);
currentInterruptCallbackFn = nullptr;
-#if ALLOW_OTHER_AUX
serialChannel = NumSerialChannels+1;
-#endif
currentBaudRate = 0;
// Delete all objects we new'd
@@ -305,7 +299,7 @@ void PanelDueUpdater::Spin() noexcept
#endif
if (state == FlashState::setup)
{
- reprap.GetPlatform().Message(ErrorMessage, "Failed to communicate with PanelDue bootloader (no START signal received). Please press the Erase and Reset switches on PanelDue.");
+ reprap.GetPlatform().Message(ErrorMessage, "Failed to communicate with PanelDue bootloader (no START signal received). Please try again or press the Erase and Reset switches on PanelDue.");
}
else
{
@@ -318,13 +312,11 @@ void PanelDueUpdater::Spin() noexcept
UARTClass* PanelDueUpdater::GetAuxPort() noexcept
{
return
-#if ALLOW_OTHER_AUX
serialChannel == 0 || serialChannel > NumSerialChannels ? nullptr :
-# ifdef SERIAL_AUX2_DEVICE
+#ifdef SERIAL_AUX2_DEVICE
serialChannel == 2 ? &SERIAL_AUX2_DEVICE :
-# endif
#endif
- &SERIAL_AUX_DEVICE;
+ &SERIAL_AUX_DEVICE; // Channel 1
}
#endif
diff --git a/src/Comms/PanelDueUpdater.h b/src/Comms/PanelDueUpdater.h
index 1a9a3e47..9d45fb99 100644
--- a/src/Comms/PanelDueUpdater.h
+++ b/src/Comms/PanelDueUpdater.h
@@ -21,9 +21,6 @@
# include <UARTClass.h>
#endif
-#define DEBUG_BOSSA (0)
-#define ALLOW_OTHER_AUX (0) // If we ever decide to allow PanelDue on something else than AUX reenable this
-
#include <bossa/Samba.h>
#include <bossa/Device.h>
#include <bossa/Flasher.h>
@@ -34,7 +31,7 @@ constexpr uint32_t RequiredBaudRate = 115200;
constexpr const char * panelDueCommandEraseAndReset = "{\"controlCommand\":\"eraseAndReset\"}\n";
constexpr const char * panelDueCommandReset = "{\"controlCommand\":\"reset\"}\n";
-constexpr uint32_t WaitMsAfterEraseAndReset = 1000; // How long to wait in ms after eraseAndReset
+constexpr uint16_t WaitMsAfterEraseAndReset = 2000; // How long to wait in ms after eraseAndReset
class PanelDueUpdater {
public:
@@ -62,9 +59,7 @@ private:
done
);
-#if ALLOW_OTHER_AUX
- size_t serialChannel;
-#endif
+ uint8_t serialChannel;
size_t currentBaudRate;
Samba* samba;
SerialPort* serialPort;