From 3053359b30d4219ca2e7635444f314fb52f5e2e7 Mon Sep 17 00:00:00 2001 From: David Crocker Date: Sun, 6 Jul 2014 23:06:49 +0100 Subject: [PATCH] Post-merge fixes Fixed M122 so that diagnostics are sent to the web interface as well as USB Fixed M220 command to respond to speed change requests faster Count the number of active extruders and heaters, and only send their values to the web interface, subject to a minimum of 2 heaters and 1 extruder --- Configuration.h | 2 +- GCodes.cpp | 40 ++++++++++-------- GCodes.h | 1 + Heat.cpp | 2 +- Move.cpp | 2 +- Platform.cpp | 7 +-- ...-dc42.bin => RepRapFirmware-078a-dc42.bin} | Bin 284412 -> 284492 bytes RepRapFirmware.cpp | 6 ++- Reprap.h | 6 +++ Tool.cpp | 19 +++++++++ Tool.h | 1 + Webserver.cpp | 11 ++--- 12 files changed, 67 insertions(+), 30 deletions(-) rename Release/{RepRapFirmware-078-dc42.bin => RepRapFirmware-078a-dc42.bin} (60%) diff --git a/Configuration.h b/Configuration.h index adbd53d..ad8d95a 100644 --- a/Configuration.h +++ b/Configuration.h @@ -24,7 +24,7 @@ Licence: GPL #define CONFIGURATION_H #define NAME "RepRapFirmware" -#define VERSION "0.78-dc42" +#define VERSION "0.78a-dc42" #define DATE "2014-07-06" #define LAST_AUTHOR "reprappro, dc42. zpl" diff --git a/GCodes.cpp b/GCodes.cpp index a09ee0e..2f32f01 100644 --- a/GCodes.cpp +++ b/GCodes.cpp @@ -91,6 +91,7 @@ void GCodes::Reset() cannedCycleMoveCount = 0; cannedCycleMoveQueued = false; speedFactor = 1.0/60.0; // default is just to convert from mm/minute to mm/second + speedFactorChange = 1.0; for (size_t i = 0; i < DRIVES - AXES; ++i) { extrusionFactors[i] = 1.0; @@ -234,7 +235,7 @@ void GCodes::Spin() void GCodes::Diagnostics() { - platform->Message(BOTH_MESSAGE, "GCodes Diagnostics:\n"); + platform->AppendMessage(BOTH_MESSAGE, "GCodes Diagnostics:\n"); } // The wait till everything's done function. If you need the machine to @@ -367,12 +368,12 @@ bool GCodes::LoadMoveBufferFromGCode(GCodeBuffer *gb, bool doingG92, bool applyL } else if(drivesRelative) { - moveBuffer[drive + AXES] = moveArg * extrusionFactors[eDrive]; + moveBuffer[drive + AXES] = moveArg * extrusionFactors[drive]; lastPos[drive] += moveArg; } else { - moveBuffer[drive + AXES] = (moveArg - lastPos[drive]) * extrusionFactors[eDrive]; + moveBuffer[drive + AXES] = (moveArg - lastPos[drive]) * extrusionFactors[drive]; lastPos[drive] = moveArg; } } @@ -430,10 +431,13 @@ int GCodes::SetUpMove(GCodeBuffer *gb) if (moveAvailable) return 0; - // Load the last position into moveBuffer; If Move can't accept more, return false + // Load the last position and feed rate into moveBuffer; If Move can't accept more, return false if (!reprap.GetMove()->GetCurrentUserPosition(moveBuffer)) return 0; + moveBuffer[DRIVES] *= speedFactorChange; // account for any change in the speed factor since the last move + speedFactorChange = 1.0; + // Check to see if the move is a 'homing' move that endstops are checked on. checkEndStops = false; if (gb->Seen('S')) @@ -1367,21 +1371,22 @@ void GCodes::SetMACAddress(GCodeBuffer *gb) void GCodes::HandleReply(bool error, bool fromLine, const char* reply, char gMOrT, int code, bool resend) { - if (gMOrT != 'M' || code != 111) // web server reply for M111 is handled before we get here + if (gMOrT != 'M' || (code != 111 && code != 122)) // web server reply for M111 and M122 is handled before we get here { - if(error) - platform->Message(WEB_ERROR_MESSAGE, reply); - else - platform->Message(WEB_MESSAGE, reply); + platform->Message((error) ? WEB_ERROR_MESSAGE : WEB_MESSAGE, reply); } Compatibility c = platform->Emulating(); if (!fromLine) + { c = me; + } const char* response = "ok"; if (resend) + { response = "rs "; + } const char* s = 0; @@ -1392,13 +1397,14 @@ void GCodes::HandleReply(bool error, bool fromLine, const char* reply, char gMOr if (!reply[0]) return; if (error) + { platform->GetLine()->Write("Error: "); + } platform->GetLine()->Write(reply); platform->GetLine()->Write("\n"); return; case marlin: - if (gMOrT == 'M' && code == 20) { platform->GetLine()->Write("Begin file list\n"); @@ -2273,7 +2279,7 @@ bool GCodes::HandleMcode(GCodeBuffer* gb) float newSpeedFactor = gb->GetFValue()/(60 * 100.0); // include the conversion from mm/minute to mm/second if (newSpeedFactor > 0) { - moveBuffer[DRIVES] *= newSpeedFactor/speedFactor; + speedFactorChange *= newSpeedFactor/speedFactor; speedFactor = newSpeedFactor; } } @@ -2283,18 +2289,18 @@ bool GCodes::HandleMcode(GCodeBuffer* gb) if (gb->Seen('S')) // S parameter sets the override percentage { float extrusionFactor = gb->GetFValue()/100.0; - int head; - if (gb->Seen('P')) // P parameter (if present) selects the head + int drive; + if (gb->Seen('D')) // D parameter (if present) selects the extruder drive number { - head = gb->GetIValue(); + drive = gb->GetIValue(); } else { - head = 1; // default to head 1 if not specified + drive = 0; // default to drive 0 if not specified } - if (head >= 1 && head < DRIVES - AXES + 1 && extrusionFactor >= 0) + if (drive >= 0 && drive < DRIVES - AXES && extrusionFactor >= 0) { - extrusionFactors[head - 1] = extrusionFactor; + extrusionFactors[drive] = extrusionFactor; } } break; diff --git a/GCodes.h b/GCodes.h index 6b227f4..3825e09 100644 --- a/GCodes.h +++ b/GCodes.h @@ -191,6 +191,7 @@ class GCodes bool waitingForMoveToComplete; bool coolingInverted; float speedFactor; // speed factor, including the conversion from mm/min to mm/sec, normally 1/60 + float speedFactorChange; // factor by which we changed the speed factor since the last move float extrusionFactors[DRIVES - AXES]; // extrusion factors (normally 1.0) int8_t toolChangeSequence; // Steps through the tool change procedure }; diff --git a/Heat.cpp b/Heat.cpp index fe63806..f91cd21 100644 --- a/Heat.cpp +++ b/Heat.cpp @@ -62,7 +62,7 @@ void Heat::Spin() void Heat::Diagnostics() { - platform->Message(HOST_MESSAGE, "Heat Diagnostics:\n"); + platform->AppendMessage(BOTH_MESSAGE, "Heat Diagnostics:\n"); // TODO - Put something useful in here } diff --git a/Move.cpp b/Move.cpp index 48ecc2e..8840e71 100644 --- a/Move.cpp +++ b/Move.cpp @@ -327,7 +327,7 @@ void Move::SetFeedrate(float feedRate) void Move::Diagnostics() { - platform->Message(HOST_MESSAGE, "Move Diagnostics:\n"); + platform->AppendMessage(BOTH_MESSAGE, "Move Diagnostics:\n"); /* if(active) platform->Message(HOST_MESSAGE, " active\n"); diff --git a/Platform.cpp b/Platform.cpp index ced185a..dafef0f 100644 --- a/Platform.cpp +++ b/Platform.cpp @@ -714,14 +714,15 @@ void Platform::Tick() //************************************************************************************************* +// This diagnostics function is the first to be called, so it calls Message to start with. +// All other messages generated by this and other diagnostics functions must call AppendMessage. void Platform::Diagnostics() { - Message(HOST_MESSAGE, "Platform Diagnostics:\n"); + Message(BOTH_MESSAGE, "Platform Diagnostics:\n"); // Print memory stats and error codes to USB and copy them to the current webserver reply const char *ramstart = (char *) 0x20070000; const struct mallinfo mi = mallinfo(); - Message(BOTH_MESSAGE, "\n"); AppendMessage(BOTH_MESSAGE, "Memory usage:\n\n"); snprintf(scratchString, STRING_LENGTH, "Program static ram used: %d\n", &_end - ramstart); AppendMessage(BOTH_MESSAGE, scratchString); @@ -777,7 +778,7 @@ void Platform::Diagnostics() reprap.Timing(); #if LWIP_STATS - // Print LWIP stats to USB + // Print LWIP stats to USB only stats_display(); #endif } diff --git a/Release/RepRapFirmware-078-dc42.bin b/Release/RepRapFirmware-078a-dc42.bin similarity index 60% rename from Release/RepRapFirmware-078-dc42.bin rename to Release/RepRapFirmware-078a-dc42.bin index 885cb9b5d06083821d134ed3a4a2362868c315c4..b9c22ba4d3c1d5b232b178f6ff4ca43e9bcb7ae1 100644 GIT binary patch delta 65219 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 z%0A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 @@ -302,12 +304,11 @@ void RepRap::Timing() void RepRap::Diagnostics() { - platform->Diagnostics(); + platform->Diagnostics(); // this includes a call to our Timing() function move->Diagnostics(); heat->Diagnostics(); gCodes->Diagnostics(); webserver->Diagnostics(); - Timing(); } // Turn off the heaters, disable the motors, and @@ -366,6 +367,7 @@ void RepRap::AddTool(Tool* tool) } toolList->AddTool(tool); + tool->UpdateExtrudersAndHeaters(activeExtruders, activeHeaters); } void RepRap::SelectTool(int toolNumber) diff --git a/Reprap.h b/Reprap.h index 86daa33..41235be 100644 --- a/Reprap.h +++ b/Reprap.h @@ -50,6 +50,8 @@ class RepRap void Tick(); bool IsStopped() const; uint16_t GetTicksInSpinState() const; + uint16_t GetExtrudersInUse() const; + uint16_t GetHeatersInUse() const; private: @@ -69,6 +71,8 @@ class RepRap bool stopped; bool active; bool resetting; + uint16_t activeExtruders; + uint16_t activeHeaters; }; inline Platform* RepRap::GetPlatform() const { return platform; } @@ -79,6 +83,8 @@ inline Network* RepRap::GetNetwork() const { return network; } inline Webserver* RepRap::GetWebserver() const { return webserver; } inline bool RepRap::Debug() const { return debug; } inline Tool* RepRap::GetCurrentTool() { return currentTool; } +inline uint16_t RepRap::GetExtrudersInUse() const { return activeExtruders; } +inline uint16_t RepRap::GetHeatersInUse() const { return activeHeaters; } inline void RepRap::SetDebug(bool d) { diff --git a/Tool.cpp b/Tool.cpp index 1ad3044..9e89635 100644 --- a/Tool.cpp +++ b/Tool.cpp @@ -173,4 +173,23 @@ void Tool::GetVariables(float* standby, float* active) } } +// Update the number of active drives and extruders in use to reflect what this tool uses +void Tool::UpdateExtrudersAndHeaters(uint16_t &numExtruders, uint16_t &numHeaters) +{ + for(int8_t drive = 0; drive < driveCount; drive++) + { + if (drives[drive] >= numExtruders) + { + numExtruders = drives[drive] + 1; + } + } + + for(int8_t heater = 0; heater < heaterCount; heater++) + { + if (heaters[heater] >= numHeaters) + { + numHeaters = heaters[heater] + 1; + } + } +} diff --git a/Tool.h b/Tool.h index 811d566..f759577 100644 --- a/Tool.h +++ b/Tool.h @@ -50,6 +50,7 @@ protected: void Activate(Tool* currentlyActive); void Standby(); void AddTool(Tool* t); + void UpdateExtrudersAndHeaters(uint16_t &extruders, uint16_t &heaters); private: diff --git a/Webserver.cpp b/Webserver.cpp index 94c2f78..404707b 100644 --- a/Webserver.cpp +++ b/Webserver.cpp @@ -273,7 +273,7 @@ void Webserver::Exit() void Webserver::Diagnostics() { - platform->Message(HOST_MESSAGE, "Webserver Diagnostics:\n"); + platform->AppendMessage(BOTH_MESSAGE, "Webserver Diagnostics:\n"); } void Webserver::SetPassword(const char* pw) @@ -970,7 +970,7 @@ void Webserver::HttpInterpreter::GetStatusResponse(uint8_t type) // Send the heater temperatures ch = '['; - for (int8_t heater = 0; heater < HEATERS; heater++) + for (int8_t heater = 0; heater < reprap.GetHeatersInUse(); heater++) { sncatf(jsonResponse, ARRAY_UPB(jsonResponse), "%c\%.1f", ch, reprap.GetHeat()->GetTemperature(heater)); ch = ','; @@ -988,9 +988,9 @@ void Webserver::HttpInterpreter::GetStatusResponse(uint8_t type) } sncatf(jsonResponse, ARRAY_UPB(jsonResponse), "],\"extr\":"); // announce the extruder positions ch = '['; - for (int8_t drive = AXES; drive < DRIVES; drive++) // loop through extruders + for (int8_t drive = 0; drive < reprap.GetExtrudersInUse(); drive++) // loop through extruders { - sncatf(jsonResponse, ARRAY_UPB(jsonResponse), "%c%.3f", ch, gc->GetExtruderPosition(drive - AXES)); + sncatf(jsonResponse, ARRAY_UPB(jsonResponse), "%c%.3f", ch, gc->GetExtruderPosition(drive)); ch = ','; } strncat(jsonResponse, "]", ARRAY_UPB(jsonResponse)); @@ -998,7 +998,7 @@ void Webserver::HttpInterpreter::GetStatusResponse(uint8_t type) // Send the speed and extruder override factors sncatf(jsonResponse, ARRAY_UPB(jsonResponse), ",\"sfactor\":%.2f,\"efactor:\":", gc->GetSpeedFactor() * 100.0); const float *extrusionFactors = gc->GetExtrusionFactors(); - for (unsigned int i = 0; i < DRIVES - AXES; ++i) + for (unsigned int i = 0; i < reprap.GetExtrudersInUse(); ++i) { sncatf(jsonResponse, ARRAY_UPB(jsonResponse), "%c%.2f", (i == 0) ? '[' : ',', extrusionFactors[i] * 100.0); } @@ -1009,6 +1009,7 @@ void Webserver::HttpInterpreter::GetStatusResponse(uint8_t type) // The old (deprecated) poll response lists the status, then all the heater temperatures, then the XYZ positions, then all the extruder positions. // These are all returned in a single vector called "poll". // This is a poor choice of format because we can't easily tell which is which unless we already know the number of heaters and extruders. + // RRP reversed the order at version 0.65 to send the positions before the heaters, but we haven't yet done that. char c = (gc->PrintingAFile()) ? 'P' : 'I'; snprintf(jsonResponse, ARRAY_UPB(jsonResponse), "{\"poll\":[\"%c\",", c); // Printing for (int8_t heater = 0; heater < HEATERS; heater++)