From 92fefbf5984f52d7252fe65b52abf8f24b36b35b Mon Sep 17 00:00:00 2001 From: David Crocker Date: Wed, 26 Mar 2014 18:07:49 +0000 Subject: [PATCH] Fixed G32 auto bed compensation Fixed bug introduced at version 057o-dc42 that broke the G32 bed compensation. Added the Z heights of the bed compensation points to the information displayed by M111 S2. Simplified the code that does Z-probing in fast and slow stages. Added function sncatf and used it to simplify the code in several places. --- Configuration.h | 4 +- GCodes.cpp | 81 ++++++++----------------- GCodes.h | 10 +--- Heat.cpp | 6 +- Move.cpp | 19 +++--- Move.h | 18 ++---- Platform.cpp | 10 ++++ Release/RepRapFirmware-057x-dc42.bin | Bin 0 -> 173932 bytes RepRapFirmware.cpp | 21 ++++++- RepRapFirmware.h | 9 ++- Webserver.cpp | 86 +++++++++++---------------- 11 files changed, 114 insertions(+), 150 deletions(-) create mode 100644 Release/RepRapFirmware-057x-dc42.bin diff --git a/Configuration.h b/Configuration.h index 554da3d..d582812 100644 --- a/Configuration.h +++ b/Configuration.h @@ -24,8 +24,8 @@ Licence: GPL #define CONFIGURATION_H #define NAME "RepRapFirmware" -#define VERSION "0.57w-dc42" -#define DATE "2014-03-25" +#define VERSION "0.57x-dc42" +#define DATE "2014-03-26" #define LAST_AUTHOR "dc42" // Other firmware that we might switch to be compatible with. diff --git a/GCodes.cpp b/GCodes.cpp index 4316266..f4abe28 100644 --- a/GCodes.cpp +++ b/GCodes.cpp @@ -55,7 +55,7 @@ void GCodes::Init() moveAvailable = false; drivesRelative = true; axesRelative = false; - checkEndStops = noEndstopCheck; + checkEndStops = false; gCodeLetters = GCODE_LETTERS; distanceScale = 1.0; for (int8_t i = 0; i < DRIVES - AXES; i++) @@ -305,7 +305,7 @@ bool GCodes::Pop() gFeedRate = feedrateStack[stackPointer]; moveBuffer[DRIVES] = gFeedRate; - checkEndStops = noEndstopCheck; + checkEndStops = false; moveAvailable = true; return true; } @@ -394,24 +394,23 @@ int GCodes::SetUpMove(GCodeBuffer *gb) if (!reprap.GetMove()->GetCurrentState(moveBuffer)) return 0; - bool doEndstopCheck = false; + checkEndStops = false; if (gb->Seen('S')) { if (gb->GetIValue() == 1) { - doEndstopCheck = true; + checkEndStops = true; } } - checkEndStops = (doEndstopCheck) ? checkAtEndstop : noEndstopCheck; - LoadMoveBufferFromGCode(gb, false, !doEndstopCheck); + LoadMoveBufferFromGCode(gb, false, !checkEndStops); moveAvailable = true; - return (doEndstopCheck) ? 2 : 1; + return (checkEndStops) ? 2 : 1; } // The Move class calls this function to find what to do next. -bool GCodes::ReadMove(float m[], EndstopMode& ce) +bool GCodes::ReadMove(float m[], bool& ce) { if (!moveAvailable) return false; @@ -419,7 +418,7 @@ bool GCodes::ReadMove(float m[], EndstopMode& ce) m[i] = moveBuffer[i]; ce = checkEndStops; moveAvailable = false; - checkEndStops = noEndstopCheck; + checkEndStops = false; return true; } @@ -498,7 +497,7 @@ bool GCodes::FileCannedCyclesReturn() // be ignored. Recall that moveToDo[DRIVES] should contain the feedrate // you want (if action[DRIVES] is true). -bool GCodes::DoCannedCycleMove(EndstopMode ce) +bool GCodes::DoCannedCycleMove(bool ce) { // Is the move already running? @@ -585,7 +584,7 @@ bool GCodes::OffsetAxes(GCodeBuffer* gb) offSetSet = true; } - if (DoCannedCycleMove(noEndstopCheck)) + if (DoCannedCycleMove(false)) { //LoadMoveBufferFromArray(record); for (int drive = 0; drive <= DRIVES; drive++) @@ -659,7 +658,7 @@ bool GCodes::DoHome(char* reply, bool& error) // Should never get here - checkEndStops = noEndstopCheck; + checkEndStops = false; moveAvailable = false; return true; @@ -680,19 +679,19 @@ bool GCodes::DoSingleZProbeAtPoint() switch (cannedCycleMoveCount) { - case 0: // This only does anything on the first move; on all the others Z is already there + case 0: // Raise Z to 5mm. This only does anything on the first move; on all the others Z is already there moveToDo[Z_AXIS] = Z_DIVE; activeDrive[Z_AXIS] = true; moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS); activeDrive[DRIVES] = true; - if (DoCannedCycleMove(noEndstopCheck)) + reprap.GetMove()->SetZProbing(false); + if (DoCannedCycleMove(false)) { cannedCycleMoveCount++; - reprap.GetMove()->SetZProbing(true); // we only want to call this once } return false; - case 1: + case 1: // Move to the correct XY coordinates GetProbeCoordinates(probeCount, moveToDo[X_AXIS], moveToDo[Y_AXIS], moveToDo[Z_AXIS]); activeDrive[X_AXIS] = true; activeDrive[Y_AXIS] = true; @@ -700,48 +699,33 @@ bool GCodes::DoSingleZProbeAtPoint() moveToDo[DRIVES] = platform->HomeFeedRate(X_AXIS); activeDrive[DRIVES] = true; reprap.GetMove()->SetZProbing(false); - if (DoCannedCycleMove(noEndstopCheck)) + if (DoCannedCycleMove(false)) { cannedCycleMoveCount++; + platform->SetZProbing(true); // do this here because we only want to call it once } return false; - case 2: + case 2: // Probe the bed moveToDo[Z_AXIS] = -2.0 * platform->AxisLength(Z_AXIS); activeDrive[Z_AXIS] = true; moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS); activeDrive[DRIVES] = true; reprap.GetMove()->SetZProbing(true); - if (DoCannedCycleMove(checkApproachingEndstop)) - { - cannedCycleMoveCount++; - } - return false; - - case 3: - { - float liveCoordinates[DRIVES + 1]; - reprap.GetMove()->LiveCoordinates(liveCoordinates); - moveToDo[Z_AXIS] = liveCoordinates[Z_AXIS] - 10.0; // move down at most another 10mm - } - activeDrive[Z_AXIS] = true; - moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS) * 0.2; - activeDrive[DRIVES] = true; - reprap.GetMove()->SetZProbing(true); - if (DoCannedCycleMove(checkAtEndstop)) + if (DoCannedCycleMove(true)) { cannedCycleMoveCount++; platform->SetZProbing(false); } return false; - case 4: + case 3: // Raise the head 5mm moveToDo[Z_AXIS] = Z_DIVE; activeDrive[Z_AXIS] = true; moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS); activeDrive[DRIVES] = true; reprap.GetMove()->SetZProbing(false); - if (DoCannedCycleMove(noEndstopCheck)) + if (DoCannedCycleMove(false)) { cannedCycleMoveCount++; } @@ -775,22 +759,7 @@ bool GCodes::DoSingleZProbe() activeDrive[Z_AXIS] = true; moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS); activeDrive[DRIVES] = true; - if (DoCannedCycleMove(checkApproachingEndstop)) - { - cannedCycleMoveCount++; - } - return false; - - case 2: - { - float liveCoordinates[DRIVES + 1]; - reprap.GetMove()->LiveCoordinates(liveCoordinates); - moveToDo[Z_AXIS] = liveCoordinates[Z_AXIS] - 10.0; // move down at most another 10mm - } - activeDrive[Z_AXIS] = true; - moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS) * 0.2; - activeDrive[DRIVES] = true; - if (DoCannedCycleMove(checkAtEndstop)) + if (DoCannedCycleMove(true)) { cannedCycleMoveCount++; probeCount = 0; @@ -1656,11 +1625,9 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb) strncpy(reply, "T:", STRING_LENGTH); for (int8_t heater = HEATERS - 1; heater > 0; heater--) { - strncat(reply, ftoa(0, reprap.GetHeat()->GetTemperature(heater), 1), STRING_LENGTH); - strncat(reply, " ", STRING_LENGTH); + sncatf(reply, STRING_LENGTH, "%.1f ", reprap.GetHeat()->GetTemperature(heater)); } - strncat(reply, "B:", STRING_LENGTH); - strncat(reply, ftoa(0, reprap.GetHeat()->GetTemperature(0), 1), STRING_LENGTH); + sncatf(reply, STRING_LENGTH, "B:%.1f", reprap.GetHeat()->GetTemperature(0)); break; case 106: // Fan on or off diff --git a/GCodes.h b/GCodes.h index 9cc3567..c43433e 100644 --- a/GCodes.h +++ b/GCodes.h @@ -27,10 +27,6 @@ Licence: GPL #define GCODE_LETTERS { 'X', 'Y', 'Z', 'E', 'F' } // The drives and feedrate in a GCode -// Enumeration to define the mode in which we check endstops - -enum EndstopMode { noEndstopCheck, checkApproachingEndstop, checkAtEndstop}; - // Small class to hold an individual GCode and provide functions to allow it to be parsed @@ -77,7 +73,7 @@ class GCodes void Init(); void Exit(); bool RunConfigurationGCodes(); - bool ReadMove(float* m, EndstopMode& ce); + bool ReadMove(float* m, bool& ce); void QueueFileToPrint(const char* fileName); void DeleteFile(const char* fileName); bool GetProbeCoordinates(int count, float& x, float& y, float& z); @@ -92,7 +88,7 @@ class GCodes void doFilePrint(GCodeBuffer* gb); bool AllMovesAreFinishedAndMoveBufferIsLoaded(); - bool DoCannedCycleMove(EndstopMode ce); + bool DoCannedCycleMove(bool ce); bool DoFileCannedCycles(const char* fileName); bool FileCannedCyclesReturn(); bool ActOnGcode(GCodeBuffer* gb); @@ -133,7 +129,7 @@ class GCodes GCodeBuffer* cannedCycleGCode; bool moveAvailable; float moveBuffer[DRIVES+1]; // Last is feed rate - EndstopMode checkEndStops; + bool checkEndStops; bool drivesRelative; // All except X, Y and Z bool axesRelative; // X, Y and Z bool drivesRelativeStack[STACK]; diff --git a/Heat.cpp b/Heat.cpp index 63f78af..2a9296c 100644 --- a/Heat.cpp +++ b/Heat.cpp @@ -128,12 +128,8 @@ void PID::Spin() { platform->SetHeater(heater, 0.0); temperatureFault = true; - platform->Message(HOST_MESSAGE, "Temperature measurement fault on heater "); - snprintf(scratchString, STRING_LENGTH, "%d", heater); + snprintf(scratchString, STRING_LENGTH, "Temperature measurement fault on heater %d, T = %.1f\n", heater, temperature); platform->Message(HOST_MESSAGE, scratchString); - platform->Message(HOST_MESSAGE, ", T = "); - platform->Message(HOST_MESSAGE, ftoa(scratchString, temperature, 1)); - platform->Message(HOST_MESSAGE, "\n"); } } else diff --git a/Move.cpp b/Move.cpp index b1f6e63..3a6ac8c 100644 --- a/Move.cpp +++ b/Move.cpp @@ -94,7 +94,7 @@ void Move::Init() liveCoordinates[i] = 0.0; } - lastMove->Init(ep, platform->HomeFeedRate(Z_AXIS), platform->InstantDv(Z_AXIS), noEndstopCheck, zMove); // Typically Z is the slowest Axis + lastMove->Init(ep, platform->HomeFeedRate(Z_AXIS), platform->InstantDv(Z_AXIS), false, zMove); // Typically Z is the slowest Axis lastMove->Release(); liveCoordinates[DRIVES] = platform->HomeFeedRate(Z_AXIS); @@ -167,7 +167,7 @@ void Move::Spin() // If there's a G Code move available, add it to the look-ahead // ring for processing. - EndstopMode checkEndStopsOnNextMove; + bool checkEndStopsOnNextMove; if(gCodes->ReadMove(nextMove, checkEndStopsOnNextMove)) { Transform(nextMove); @@ -572,7 +572,7 @@ void Move::Interrupt() } -bool Move::LookAheadRingAdd(const long ep[], float feedRate, float vv, EndstopMode ce, int8_t mt) +bool Move::LookAheadRingAdd(const long ep[], float feedRate, float vv, bool ce, int8_t mt) { if(LookAheadRingFull()) return false; @@ -600,7 +600,7 @@ LookAhead* Move::LookAheadRingGet() } // Note that we don't set the tan values to 0 here. This means that the bed probe -// values will be a fraction of a millimeter out in X and Y, which, as the bed should +// values will be a fraction of a millimetre out in X and Y, which, as the bed should // be nearly flat (and the probe doesn't coincide with the nozzle anyway), won't matter. // But it means that the tan values can be set for the machine // at the start in the configuration file and be retained, without having to know and reset @@ -614,7 +614,6 @@ void Move::SetIdentityTransform() secondDegreeCompensation = false; } - void Move::Transform(float xyzPoint[]) { xyzPoint[X_AXIS] = xyzPoint[X_AXIS] + tanXY*xyzPoint[Y_AXIS] + tanXZ*xyzPoint[Z_AXIS]; @@ -1099,7 +1098,7 @@ void DDA::Step() // Hit anything? - if(checkEndStops != noEndstopCheck) + if(checkEndStops) { switch(platform->Stopped(drive)) { @@ -1112,11 +1111,7 @@ void DDA::Step() active = false; break; case lowNear: - if (checkEndStops == checkApproachingEndstop) - { - move->NearLowStop(drive, myLookAheadEntry, this); - active = false; - } + velocity = instantDv; // slow down because we are getting close break; default: break; @@ -1180,7 +1175,7 @@ LookAhead::LookAhead(Move* m, Platform* p, LookAhead* n) next = n; } -void LookAhead::Init(const long ep[], float f, float vv, EndstopMode ce, int8_t mt) +void LookAhead::Init(const long ep[], float f, float vv, bool ce, int8_t mt) { v = vv; movementType = mt; diff --git a/Move.h b/Move.h index f60cadf..9f11b38 100644 --- a/Move.h +++ b/Move.h @@ -70,7 +70,7 @@ public: protected: LookAhead(Move* m, Platform* p, LookAhead* n); - void Init(const long ep[], float feedRate, float vv, EndstopMode ce, int8_t mt); + void Init(const long ep[], float feedRate, float vv, bool ce, int8_t mt); LookAhead* Next(); LookAhead* Previous(); const long* MachineEndPoints() const; @@ -85,7 +85,7 @@ protected: int8_t Processed() const; void SetProcessed(MovementState ms); void SetDriveCoordinateAndZeroEndSpeed(float a, int8_t drive); - EndstopMode CheckEndStops() const; + bool CheckEndStops() const; void Release(); private: @@ -97,7 +97,7 @@ private: long endPoint[DRIVES+1]; // Should never use the +1, but safety first int8_t movementType; float Cosine(); - EndstopMode checkEndStops; + bool checkEndStops; float cosine; float v; // The feedrate we can actually do float feedRate; // The requested feedrate @@ -135,7 +135,7 @@ private: bool directions[DRIVES]; long totalSteps; long stepCount; - EndstopMode checkEndStops; + bool checkEndStops; float timeStep; float velocity; long stopAStep; @@ -164,7 +164,6 @@ class Move void ResumeMoving(); void DoLookAhead(); void HitLowStop(int8_t drive, LookAhead* la, DDA* hitDDA); - void NearLowStop(int8_t drive, LookAhead* la, DDA* hitDDA); void HitHighStop(int8_t drive, LookAhead* la, DDA* hitDDA); void SetPositions(float move[]); void SetLiveCoordinates(float coords[]); @@ -204,7 +203,7 @@ class Move void ReleaseDDARingLock(); bool LookAheadRingEmpty() const; bool LookAheadRingFull() const; - bool LookAheadRingAdd(const long ep[], float feedRate, float vv, EndstopMode ce, int8_t movementType); + bool LookAheadRingAdd(const long ep[], float feedRate, float vv, bool ce, int8_t movementType); LookAhead* LookAheadRingGet(); int8_t GetMovementType(const long sp[], const long ep[]) const; @@ -304,7 +303,7 @@ inline void LookAhead::Release() processed = released; } -inline EndstopMode LookAhead::CheckEndStops() const +inline bool LookAhead::CheckEndStops() const { return checkEndStops; } @@ -583,11 +582,6 @@ inline void Move::HitHighStop(int8_t drive, LookAhead* la, DDA* hitDDA) gCodes->SetAxisIsHomed(drive); } -inline void Move::NearLowStop(int8_t drive, LookAhead* la, DDA* hitDDA) -{ - la->SetDriveCoordinateAndZeroEndSpeed(1.0, drive); // say we are at 1mm -} - inline float Move::ComputeCurrentCoordinate(int8_t drive, LookAhead* la, DDA* runningDDA) { float previous = la->Previous()->MachineToEndPoint(drive); diff --git a/Platform.cpp b/Platform.cpp index b3a04a2..47e8341 100644 --- a/Platform.cpp +++ b/Platform.cpp @@ -770,6 +770,16 @@ void Platform::PrintMemoryUsage() snprintf(scratchString, STRING_LENGTH, "Error status: %u\n", errorCodeBits); reprap.GetWebserver()->AppendReply(scratchString); Message(HOST_MESSAGE, scratchString); + + // Show the current probe position heights + strncpy(scratchString, "Bed probe heights:", STRING_LENGTH); + for (size_t i = 0; i < NUMBER_OF_PROBE_POINTS; ++i) + { + sncatf(scratchString, STRING_LENGTH, " %.3f", reprap.GetMove()->zBedProbePoint(i)); + } + strncat(scratchString, "\n", STRING_LENGTH); + reprap.GetWebserver()->AppendReply(scratchString); + Message(HOST_MESSAGE, scratchString); } void Platform::ClassReport(char* className, float &lastTime) diff --git a/Release/RepRapFirmware-057x-dc42.bin b/Release/RepRapFirmware-057x-dc42.bin new file mode 100644 index 0000000000000000000000000000000000000000..1787c8c6aed1f28164a4c3e45afeb78ad14cb808 GIT binary patch literal 173932 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 z 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 yC_g}_fB~2wSpf-{AYB2H>uCpk9tO8RbVsAV!m literal 0 HcmV?d00001 diff --git a/RepRapFirmware.cpp b/RepRapFirmware.cpp index 28b5852..3672693 100644 --- a/RepRapFirmware.cpp +++ b/RepRapFirmware.cpp @@ -302,11 +302,13 @@ void RepRap::SetDebug(int d) // Utilities and storage not part of any class +char scratchString[STRING_LENGTH]; + +#if 0 // no longer used, we use snprinf or sncatf instead // Float to a string. static long precision[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000}; -char scratchString[STRING_LENGTH]; char* ftoa(char *a, const float& f, int prec) { @@ -326,6 +328,23 @@ char* ftoa(char *a, const float& f, int prec) snprintf(a, STRING_LENGTH, "%0*d", prec, decimal); return ret; } +#endif + +// This behaves like snprintf but appends to an existing string +// The second parameter is the length of the entire destination buffer, not the length remaining +int sncatf(char *dst, size_t len, const char* fmt, ...) +{ + size_t n = strnlen(dst, len); + if (n + 1 < len) + { + va_list p; + va_start(p, fmt); + int ret = vsnprintf(dst + n, len - n, fmt, p); + va_end(p); + return ret; + } + return 0; +} // String testing diff --git a/RepRapFirmware.h b/RepRapFirmware.h index 27e8749..3f75f90 100644 --- a/RepRapFirmware.h +++ b/RepRapFirmware.h @@ -22,6 +22,9 @@ Licence: GPL #ifndef REPRAPFIRMWARE_H #define REPRAPFIRMWARE_H +#include // for size_t +#include + // Warn of what's to come, so we can use pointers to classes... class Platform; @@ -37,7 +40,10 @@ extern RepRap reprap; // Functions and globals not part of any class +int sncatf(char *dst, size_t len, const char* fmt, ...); +#if 0 // n longer used char* ftoa(char *a, const float& f, int prec); +#endif bool StringEndsWith(const char* string, const char* ending); bool StringStartsWith(const char* string, const char* starting); bool StringEquals(const char* s1, const char* s2); @@ -46,8 +52,6 @@ int StringContains(const char* string, const char* match); // Macro to give us the number of elements in an array #define ARRAY_SIZE(_x) (sizeof(_x)/sizeof(_x[0])) -#include - extern char scratchString[]; #include "Configuration.h" @@ -59,7 +63,6 @@ extern char scratchString[]; #include "Reprap.h" - #endif diff --git a/Webserver.cpp b/Webserver.cpp index ad234d7..ef81039 100644 --- a/Webserver.cpp +++ b/Webserver.cpp @@ -390,6 +390,7 @@ void Webserver::JsonReport(bool ok, const char* request) { if(reprap.Debug()) { + jsonResponse[STRING_LENGTH] = 0; platform->Message(HOST_MESSAGE, "JSON response: "); platform->Message(HOST_MESSAGE, jsonResponse); platform->Message(HOST_MESSAGE, " queued\n"); @@ -410,68 +411,65 @@ void Webserver::GetJsonResponse(const char* request) if(StringStartsWith(request, "poll")) { + // The 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, + // but we're stuck with it if we want to retain compatibility with existing web server javascript files. strncpy(jsonResponse, "{\"poll\":[", STRING_LENGTH); if(reprap.GetGCodes()->PrintingAFile()) + { strncat(jsonResponse, "\"P\",", STRING_LENGTH); // Printing + } else + { strncat(jsonResponse, "\"I\",", STRING_LENGTH); // Idle + } for(int8_t heater = 0; heater < HEATERS; heater++) { - strncat(jsonResponse, "\"", STRING_LENGTH); - strncat(jsonResponse, ftoa(0, reprap.GetHeat()->GetTemperature(heater), 1), STRING_LENGTH); - strncat(jsonResponse, "\",", STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, "\"%.1f\",", reprap.GetHeat()->GetTemperature(heater)); } float liveCoordinates[DRIVES+1]; reprap.GetMove()->LiveCoordinates(liveCoordinates); for(int8_t drive = 0; drive < AXES; drive++) { - strncat(jsonResponse, "\"", STRING_LENGTH); - strncat(jsonResponse, ftoa(0, liveCoordinates[drive], 2), STRING_LENGTH); - strncat(jsonResponse, "\",", STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, "\"%.2f\",", liveCoordinates[drive]); } - // FIXME: should loop through all Es - - strncat(jsonResponse, "\"", STRING_LENGTH); - strncat(jsonResponse, ftoa(0, liveCoordinates[AXES], 4), STRING_LENGTH); - strncat(jsonResponse, "\"", STRING_LENGTH); - strncat(jsonResponse, "]", STRING_LENGTH); + for(int8_t drive = AXES; drive < DRIVES; drive++) // loop through extruders + { + char ch = (drive == DRIVES - 1) ? ']' : ','; // append ] to the last one but , to the others + sncatf(jsonResponse, STRING_LENGTH, "\"%.f4\"%c", liveCoordinates[drive], ch); + } + // All the other values we send back are in separate variables. // Send the Z probe value - char scratch[SHORT_STRING_LENGTH+1]; - scratch[SHORT_STRING_LENGTH] = 0; int v0 = platform->ZProbe(); int v1, v2; switch(platform->GetZProbeSecondaryValues(v1, v2)) { case 1: - snprintf(scratch, SHORT_STRING_LENGTH, ",\"probe\":\"%d (%d)\"", v0, v1); + sncatf(jsonResponse, STRING_LENGTH, ",\"probe\":\"%d (%d)\"", v0, v1); break; case 2: - snprintf(scratch, SHORT_STRING_LENGTH, ",\"probe\":\"%d (%d, %d)\"", v0, v1, v2); + sncatf(jsonResponse, STRING_LENGTH, ",\"probe\":\"%d (%d, %d)\"", v0, v1, v2); break; default: - snprintf(scratch, SHORT_STRING_LENGTH, ",\"probe\":\"%d\"", v0); + sncatf(jsonResponse, STRING_LENGTH, ",\"probe\":\"%d\"", v0); break; } - strncat(jsonResponse, scratch, STRING_LENGTH); // Send the amount of buffer space available for gcodes - snprintf(scratch, SHORT_STRING_LENGTH, ",\"buff\":%u", GetReportedGcodeBufferSpace()); - strncat(jsonResponse, scratch, STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, ",\"buff\":%u", GetReportedGcodeBufferSpace()); // Send the home state. To keep the messages short, we send 1 for homed and 0 for not homed, instead of true and false. - strncat(jsonResponse, ",\"hx\":", STRING_LENGTH); - strncat(jsonResponse, (reprap.GetGCodes()->GetAxisIsHomed(0)) ? "1" : "0", STRING_LENGTH); - strncat(jsonResponse, ",\"hy\":", STRING_LENGTH); - strncat(jsonResponse, (reprap.GetGCodes()->GetAxisIsHomed(1)) ? "1" : "0", STRING_LENGTH); - strncat(jsonResponse, ",\"hz\":", STRING_LENGTH); - strncat(jsonResponse, (reprap.GetGCodes()->GetAxisIsHomed(2)) ? "1" : "0", STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, ",\"hx\":%d,\"hy\":%d,\"hz\":%d", + (reprap.GetGCodes()->GetAxisIsHomed(0)) ? 1 : 0, + (reprap.GetGCodes()->GetAxisIsHomed(1)) ? 1 : 0, + (reprap.GetGCodes()->GetAxisIsHomed(2)) ? 1 : 0 + ); // Send the response sequence number - strncat(jsonResponse, ",\"seq\":", STRING_LENGTH); - snprintf(scratch, SHORT_STRING_LENGTH, "%u", (unsigned int)seq); - strncat(jsonResponse, scratch, STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, ",\"seq\":%u", (unsigned int)seq); // Send the response to the last command. Do this last because it is long and may need to be truncated. strncat(jsonResponse, ",\"resp\":\"", STRING_LENGTH); @@ -510,7 +508,6 @@ void Webserver::GetJsonResponse(const char* request) } strncat(jsonResponse, "\"}", STRING_LENGTH); - jsonResponse[STRING_LENGTH] = 0; JsonReport(true, request); return; } @@ -518,10 +515,7 @@ void Webserver::GetJsonResponse(const char* request) if(StringStartsWith(request, "gcode")) { LoadGcodeBuffer(&clientQualifier[6], true); - char scratch[SHORT_STRING_LENGTH+1]; - scratch[SHORT_STRING_LENGTH] = 0; - snprintf(scratch, SHORT_STRING_LENGTH, "{\"buff\":%u}", GetReportedGcodeBufferSpace()); - strncat(jsonResponse, scratch, STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, "{\"buff\":%u}", GetReportedGcodeBufferSpace()); JsonReport(true, request); return; } @@ -529,18 +523,14 @@ void Webserver::GetJsonResponse(const char* request) if(StringStartsWith(request, "files")) { const char* fileList = platform->GetMassStorage()->FileList(platform->GetGCodeDir(), false); - strncpy(jsonResponse, "{\"files\":[", STRING_LENGTH); - strncat(jsonResponse, fileList, STRING_LENGTH); - strncat(jsonResponse, "]}", STRING_LENGTH); + snprintf(jsonResponse, STRING_LENGTH, "{\"files\":[%s]}", fileList); JsonReport(true, request); return; } if(StringStartsWith(request, "name")) { - strncpy(jsonResponse, "{\"myName\":\"", STRING_LENGTH); - strncat(jsonResponse, myName, STRING_LENGTH); - strncat(jsonResponse, "\"}", STRING_LENGTH); + snprintf(jsonResponse, STRING_LENGTH, "{\"myName\":\"%s\"}", myName); JsonReport(true, request); return; } @@ -548,12 +538,7 @@ void Webserver::GetJsonResponse(const char* request) if(StringStartsWith(request, "password")) { CheckPassword(); - strncpy(jsonResponse, "{\"password\":\"", STRING_LENGTH); - if(gotPassword) - strncat(jsonResponse, "right", STRING_LENGTH); - else - strncat(jsonResponse, "wrong", STRING_LENGTH); - strncat(jsonResponse, "\"}", STRING_LENGTH); + snprintf(jsonResponse, STRING_LENGTH, "{\"password\":\"%s\"}", (gotPassword) ? "right" : "wrong"); JsonReport(true, request); return; } @@ -563,12 +548,11 @@ void Webserver::GetJsonResponse(const char* request) strncpy(jsonResponse, "{\"axes\":[", STRING_LENGTH); for(int8_t drive = 0; drive < AXES; drive++) { - strncat(jsonResponse, "\"", STRING_LENGTH); - strncat(jsonResponse, ftoa(0, platform->AxisLength(drive), 1), STRING_LENGTH); + sncatf(jsonResponse, STRING_LENGTH, "\"%.1f\"", platform->AxisLength(drive)); if(drive < AXES-1) - strncat(jsonResponse, "\",", STRING_LENGTH); - else - strncat(jsonResponse, "\"", STRING_LENGTH); + { + strncat(jsonResponse, ",", STRING_LENGTH); + } } strncat(jsonResponse, "]}", STRING_LENGTH); JsonReport(true, request);