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
diff options
context:
space:
mode:
Diffstat (limited to 'src/RepRap.cpp')
-rw-r--r--src/RepRap.cpp66
1 files changed, 51 insertions, 15 deletions
diff --git a/src/RepRap.cpp b/src/RepRap.cpp
index 34fda25a..25ebfd99 100644
--- a/src/RepRap.cpp
+++ b/src/RepRap.cpp
@@ -170,63 +170,63 @@ void RepRap::Spin()
if(!active)
return;
- spinningModule = modulePlatform;
ticksInSpinState = 0;
+ spinningModule = modulePlatform;
platform->Spin();
- spinningModule = moduleNetwork;
ticksInSpinState = 0;
+ spinningModule = moduleNetwork;
network->Spin(true);
- spinningModule = moduleWebserver;
ticksInSpinState = 0;
+ spinningModule = moduleWebserver;
- spinningModule = moduleGcodes;
ticksInSpinState = 0;
+ spinningModule = moduleGcodes;
gCodes->Spin();
- spinningModule = moduleMove;
ticksInSpinState = 0;
+ spinningModule = moduleMove;
move->Spin();
- spinningModule = moduleHeat;
ticksInSpinState = 0;
+ spinningModule = moduleHeat;
heat->Spin();
#if SUPPORT_ROLAND
- spinningModule = moduleRoland;
ticksInSpinState = 0;
+ spinningModule = moduleRoland;
roland->Spin();
#endif
#if SUPPORT_SCANNER
- spinningModule = moduleScanner;
ticksInSpinState = 0;
+ spinningModule = moduleScanner;
scanner->Spin();
#endif
#if SUPPORT_IOBITS
- spinningModule = modulePortControl;
ticksInSpinState = 0;
+ spinningModule = modulePortControl;
portControl->Spin(true);
#endif
- spinningModule = modulePrintMonitor;
ticksInSpinState = 0;
+ spinningModule = modulePrintMonitor;
printMonitor->Spin();
#ifdef DUET_NG
- spinningModule = moduleDuetExpansion;
ticksInSpinState = 0;
+ spinningModule = moduleDuetExpansion;
DuetExpansion::Spin(true);
#endif
- spinningModule = moduleFilamentSensors;
ticksInSpinState = 0;
+ spinningModule = moduleFilamentSensors;
FilamentSensor::Spin(true);
- spinningModule = noModule;
ticksInSpinState = 0;
+ spinningModule = noModule;
// Check if we need to display a cold extrusion warning
const uint32_t now = millis();
@@ -534,7 +534,7 @@ void RepRap::Tick()
{
platform->Tick();
++ticksInSpinState;
- if (ticksInSpinState >= 20000) // if we stall for 20 seconds, save diagnostic data and reset
+ if (ticksInSpinState >= MaxTicksInSpinState) // if we stall for 20 seconds, save diagnostic data and reset
{
resetting = true;
for(size_t i = 0; i < Heaters; i++)
@@ -554,6 +554,12 @@ void RepRap::Tick()
}
}
+// Return true if we are close to timeout
+bool RepRap::SpinTimeoutImminent() const
+{
+ return ticksInSpinState >= HighTicksInSpinState;
+}
+
// Get the JSON status response for the web server (or later for the M105 command).
// Type 1 is the ordinary JSON status response.
// Type 2 is the same except that static parameters are also included.
@@ -1046,7 +1052,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
}
#endif
-#ifdef DUET_NG
+#if HAS_VOLTAGE_MONITOR
// Power in voltages
{
float minV, currV, maxV;
@@ -1748,6 +1754,30 @@ bool RepRap::WriteToolSettings(FileStore *f) const
return ok;
}
+// Save some information in config-override.g
+bool RepRap::WriteToolParameters(FileStore *f) const
+{
+ bool ok = true;
+ for (const Tool *t = toolList; ok && t != nullptr; t = t->Next())
+ {
+ const AxesBitmap axesProbed = t->GetAxisOffsetsProbed();
+ if (axesProbed != 0)
+ {
+ scratchString.printf("G10 P%d", t->Number());
+ for (size_t axis = 0; axis < MaxAxes; ++axis)
+ {
+ if (IsBitSet(axesProbed, axis))
+ {
+ scratchString.catf(" %c%.2f", GCodes::axisLetters[axis], (double)(t->GetOffsets()[axis]));
+ }
+ }
+ }
+ scratchString.cat('\n');
+ ok = f->Write(scratchString.Pointer());
+ }
+ return ok;
+}
+
// Helper function for diagnostic tests in Platform.cpp, to cause a deliberate divide-by-zero
/*static*/ uint32_t RepRap::DoDivide(uint32_t a, uint32_t b)
{
@@ -1760,4 +1790,10 @@ bool RepRap::WriteToolSettings(FileStore *f) const
return *reinterpret_cast<const uint32_t*>(p);
}
+// Report an internal error
+void RepRap::ReportInternalError(const char *file, const char *func, int line) const
+{
+ platform->MessageF(ErrorMessage, "Internal Error in %s at %s(%d)\n", func, file, line);
+}
+
// End