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:
authorDavid Crocker <dcrocker@eschertech.com>2017-09-22 23:01:39 +0300
committerDavid Crocker <dcrocker@eschertech.com>2017-09-22 23:02:01 +0300
commit1bf86a532b80777c49ae13cda56c1326ac94de17 (patch)
tree0026f9741571dd68e6a7041e74cb6a0277d80283 /src/RepRap.cpp
parent8a71354e057609c6b015ed83826149a06e2aa8d6 (diff)
Version 1.20alpha3
Upgraded compiler Floading point constants now default to single-precision Changed to hardware floating point ABI on Cortex-M4 targets
Diffstat (limited to 'src/RepRap.cpp')
-rw-r--r--src/RepRap.cpp119
1 files changed, 59 insertions, 60 deletions
diff --git a/src/RepRap.cpp b/src/RepRap.cpp
index d77e0f2e..6f73fd6d 100644
--- a/src/RepRap.cpp
+++ b/src/RepRap.cpp
@@ -258,7 +258,7 @@ void RepRap::Spin()
void RepRap::Timing(MessageType mtype)
{
- platform->MessageF(mtype, "Slowest main loop (seconds): %f; fastest: %f\n", (float)slowLoop * 0.000001, (float)fastLoop * 0.000001);
+ platform->MessageF(mtype, "Slowest main loop (seconds): %f; fastest: %f\n", (double)(slowLoop * 0.000001), (double)(fastLoop * 0.000001));
fastLoop = UINT32_MAX;
slowLoop = 0;
}
@@ -610,7 +610,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t extruder = 0; extruder < GetExtrudersInUse(); extruder++)
{
- response->catf("%c%.1f", ch, liveCoordinates[numAxes + extruder]);
+ response->catf("%c%.1f", ch, (double)liveCoordinates[numAxes + extruder]);
ch = ',';
}
if (ch == '[')
@@ -626,7 +626,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
{
// Coordinates may be NaNs, for example when delta or SCARA homing fails. Replace any NaNs by 999.9 to prevent JSON parsing errors.
const float coord = liveCoordinates[axis];
- response->catf("%c%.3f", ch, (std::isnan(coord) || std::isinf(coord)) ? 999.9 : coord);
+ response->catf("%c%.3f", ch, (double)((std::isnan(coord) || std::isinf(coord)) ? 999.9 : coord));
ch = ',';
}
}
@@ -681,8 +681,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
response->EncodeString(boxMessage, ARRAY_SIZE(boxMessage), false);
response->cat(",\"title\":");
response->EncodeString(boxTitle, ARRAY_SIZE(boxTitle), false);
- response->catf(",\"mode\":%d,\"timeout\":%.1f,\"controls\":%u}",
- boxMode, timeLeft, boxControls);
+ response->catf(",\"mode\":%d,\"timeout\":%.1f,\"controls\":%u}", boxMode, (double)timeLeft, boxControls);
}
response->cat("}");
}
@@ -698,20 +697,20 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for(size_t i = 0; i < NUM_FANS; i++)
{
- response->catf("%c%.2f", ch, platform->GetFanValue(i) * 100.0);
+ response->catf("%c%.2f", ch, (double)(platform->GetFanValue(i) * 100.0));
ch = ',';
}
// Speed and Extrusion factors
- response->catf("],\"speedFactor\":%.2f,\"extrFactors\":", gCodes->GetSpeedFactor() * 100.0);
+ response->catf("],\"speedFactor\":%.2f,\"extrFactors\":", (double)(gCodes->GetSpeedFactor() * 100.0));
ch = '[';
for (size_t extruder = 0; extruder < GetExtrudersInUse(); extruder++)
{
- response->catf("%c%.2f", ch, gCodes->GetExtrusionFactor(extruder) * 100.0);
+ response->catf("%c%.2f", ch, (double)(gCodes->GetExtrusionFactor(extruder) * 100.0));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
- response->catf(",\"babystep\":%.03f}", gCodes->GetBabyStepOffset());
+ response->catf(",\"babystep\":%.03f}", (double)gCodes->GetBabyStepOffset());
}
// G-code reply sequence for webserver (sequence number for AUX is handled later)
@@ -753,7 +752,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
if (bedHeater != -1)
{
response->catf("\"bed\":{\"current\":%.1f,\"active\":%.1f,\"state\":%d,\"heater\":%d},",
- heat->GetTemperature(bedHeater), heat->GetActiveTemperature(bedHeater),
+ (double)heat->GetTemperature(bedHeater), (double)heat->GetActiveTemperature(bedHeater),
heat->GetStatus(bedHeater), bedHeater);
}
@@ -762,7 +761,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
if (chamberHeater != -1)
{
response->catf("\"chamber\":{\"current\":%.1f,\"active\":%.1f,\"state\":%d,\"heater\":%d},",
- heat->GetTemperature(chamberHeater), heat->GetActiveTemperature(chamberHeater),
+ (double)heat->GetTemperature(chamberHeater), (double)heat->GetActiveTemperature(chamberHeater),
heat->GetStatus(chamberHeater), chamberHeater);
}
@@ -773,7 +772,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = 0; heater < Heaters; heater++)
{
- response->catf("%c%.1f", ch, heat->GetTemperature(heater));
+ response->catf("%c%.1f", ch, (double)heat->GetTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -795,7 +794,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetTemperature(heater));
+ response->catf("%c%.1f", ch, (double)heat->GetTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -805,7 +804,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetActiveTemperature(heater));
+ response->catf("%c%.1f", ch, (double)heat->GetActiveTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -815,7 +814,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetStandbyTemperature(heater));
+ response->catf("%c%.1f", ch, (double)heat->GetStandbyTemperature(heater));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -837,7 +836,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = 0; heater < tool->heaterCount; heater++)
{
- response->catf("%c%.1f", ch, tool->activeTemperatures[heater]);
+ response->catf("%c%.1f", ch, (double)tool->activeTemperatures[heater]);
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -854,7 +853,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
ch = '[';
for (size_t heater = 0; heater < tool->heaterCount; heater++)
{
- response->catf("%c%.1f", ch, tool->standbyTemperatures[heater]);
+ response->catf("%c%.1f", ch, (double)tool->standbyTemperatures[heater]);
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -882,7 +881,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
response->EncodeString(nm, strlen(nm), false, true);
TemperatureError err;
const float t = heat->GetTemperature(heater, err);
- response->catf(",\"temp\":%.1f}", t);
+ response->catf(",\"temp\":%.1f}", (double)t);
}
}
@@ -890,14 +889,14 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
}
// Time since last reset
- response->catf(",\"time\":%.1f", (float)millis64() * 0.001);
+ response->catf(",\"time\":%.1f", (double)(millis64()/1000u));
#if SUPPORT_SCANNER
// Scanner
if (scanner->IsEnabled())
{
response->catf(",\"scanner\":{\"status\":\"%c\"", scanner->GetStatusCharacter());
- response->catf(",\"progress\":%.1f}", scanner->GetProgress());
+ response->catf(",\"progress\":%.1f}", (double)(scanner->GetProgress()));
}
#endif
@@ -905,11 +904,11 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
if (type == 2)
{
// Cold Extrude/Retract
- response->catf(",\"coldExtrudeTemp\":%1.f", heat->ColdExtrude() ? 0 : HOT_ENOUGH_TO_EXTRUDE);
- response->catf(",\"coldRetractTemp\":%1.f", heat->ColdExtrude() ? 0 : HOT_ENOUGH_TO_RETRACT);
+ response->catf(",\"coldExtrudeTemp\":%1.f", (double)(heat->ColdExtrude() ? 0.0 : HOT_ENOUGH_TO_EXTRUDE));
+ response->catf(",\"coldRetractTemp\":%1.f", (double)(heat->ColdExtrude() ? 0.0 : HOT_ENOUGH_TO_RETRACT));
// Maximum hotend temperature - DWC just wants the highest one
- response->catf(",\"tempLimit\":%1.f", heat->GetHighestTemperatureLimit());
+ response->catf(",\"tempLimit\":%1.f", (double)(heat->GetHighestTemperatureLimit()));
// Endstops
uint32_t endstops = 0;
@@ -949,7 +948,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
response->catf(",\"probe\":{\"threshold\":%d", probeParams.adcValue);
// Trigger height
- response->catf(",\"height\":%.2f", probeParams.height);
+ response->catf(",\"height\":%.2f", (double)probeParams.height);
// Type
response->catf(",\"type\":%d}", platform->GetZProbeType());
@@ -1043,7 +1042,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
{
float minT, currT, maxT;
platform->GetMcuTemperatures(minT, currT, maxT);
- response->catf(",\"mcutemp\":{\"min\":%.1f,\"cur\":%.1f,\"max\":%.1f}", minT, currT, maxT);
+ response->catf(",\"mcutemp\":{\"min\":%.1f,\"cur\":%.1f,\"max\":%.1f}", (double)minT, (double)currT, (double)maxT);
}
#endif
@@ -1052,7 +1051,7 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
{
float minV, currV, maxV;
platform->GetPowerVoltages(minV, currV, maxV);
- response->catf(",\"vin\":{\"min\":%.1f,\"cur\":%.1f,\"max\":%.1f}", minV, currV, maxV);
+ response->catf(",\"vin\":{\"min\":%.1f,\"cur\":%.1f,\"max\":%.1f}", (double)minV, (double)currV, (double)maxV);
}
#endif
}
@@ -1062,14 +1061,14 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
response->catf(",\"currentLayer\":%d", printMonitor->GetCurrentLayer());
// Current Layer Time
- response->catf(",\"currentLayerTime\":%.1f", printMonitor->GetCurrentLayerTime());
+ response->catf(",\"currentLayerTime\":%.1f", (double)(printMonitor->GetCurrentLayerTime()));
// Raw Extruder Positions
response->cat(",\"extrRaw\":");
ch = '[';
for (size_t extruder = 0; extruder < GetExtrudersInUse(); extruder++) // loop through extruders
{
- response->catf("%c%.1f", ch, gCodes->GetRawExtruderTotalByDrive(extruder));
+ response->catf("%c%.1f", ch, (double)(gCodes->GetRawExtruderTotalByDrive(extruder)));
ch = ',';
}
if (ch == '[')
@@ -1078,31 +1077,31 @@ OutputBuffer *RepRap::GetStatusResponse(uint8_t type, ResponseSource source)
}
// Fraction of file printed
- response->catf("],\"fractionPrinted\":%.1f", (printMonitor->IsPrinting()) ? (gCodes->FractionOfFilePrinted() * 100.0) : 0.0);
+ response->catf("],\"fractionPrinted\":%.1f", (double)((printMonitor->IsPrinting()) ? (gCodes->FractionOfFilePrinted() * 100.0) : 0.0));
// First Layer Duration
- response->catf(",\"firstLayerDuration\":%.1f", printMonitor->GetFirstLayerDuration());
+ response->catf(",\"firstLayerDuration\":%.1f", (double)(printMonitor->GetFirstLayerDuration()));
// First Layer Height
// NB: This shouldn't be needed any more, but leave it here for the case that the file-based first-layer detection fails
- response->catf(",\"firstLayerHeight\":%.2f", printMonitor->GetFirstLayerHeight());
+ response->catf(",\"firstLayerHeight\":%.2f", (double)(printMonitor->GetFirstLayerHeight()));
// Print Duration
- response->catf(",\"printDuration\":%.1f", printMonitor->GetPrintDuration());
+ response->catf(",\"printDuration\":%.1f", (double)(printMonitor->GetPrintDuration()));
// Warm-Up Time
- response->catf(",\"warmUpDuration\":%.1f", printMonitor->GetWarmUpDuration());
+ response->catf(",\"warmUpDuration\":%.1f", (double)(printMonitor->GetWarmUpDuration()));
/* Print Time Estimations */
{
// Based on file progress
- response->catf(",\"timesLeft\":{\"file\":%.1f", printMonitor->EstimateTimeLeft(fileBased));
+ response->catf(",\"timesLeft\":{\"file\":%.1f", (double)(printMonitor->EstimateTimeLeft(fileBased)));
// Based on filament usage
- response->catf(",\"filament\":%.1f", printMonitor->EstimateTimeLeft(filamentBased));
+ response->catf(",\"filament\":%.1f", (double)(printMonitor->EstimateTimeLeft(filamentBased)));
// Based on layers
- response->catf(",\"layer\":%.1f}", printMonitor->EstimateTimeLeft(layerBased));
+ response->catf(",\"layer\":%.1f}", (double)(printMonitor->EstimateTimeLeft(layerBased)));
}
}
@@ -1139,7 +1138,7 @@ OutputBuffer *RepRap::GetConfigResponse()
char ch = '[';
for (size_t axis = 0; axis < numAxes; axis++)
{
- response->catf("%c%.2f", ch, platform->AxisMinimum(axis));
+ response->catf("%c%.2f", ch, (double)(platform->AxisMinimum(axis)));
ch = ',';
}
@@ -1148,7 +1147,7 @@ OutputBuffer *RepRap::GetConfigResponse()
ch = '[';
for (size_t axis = 0; axis < numAxes; axis++)
{
- response->catf("%c%.2f", ch, platform->AxisMaximum(axis));
+ response->catf("%c%.2f", ch, (double)(platform->AxisMaximum(axis)));
ch = ',';
}
@@ -1157,7 +1156,7 @@ OutputBuffer *RepRap::GetConfigResponse()
ch = '[';
for (size_t drive = 0; drive < DRIVES; drive++)
{
- response->catf("%c%.2f", ch, platform->Acceleration(drive));
+ response->catf("%c%.2f", ch, (double)(platform->Acceleration(drive)));
ch = ',';
}
@@ -1166,7 +1165,7 @@ OutputBuffer *RepRap::GetConfigResponse()
ch = '[';
for (size_t drive = 0; drive < DRIVES; drive++)
{
- response->catf("%c%.2f", ch, platform->GetMotorCurrent(drive, false));
+ response->catf("%c%.2f", ch, (double)(platform->GetMotorCurrent(drive, false)));
ch = ',';
}
@@ -1192,15 +1191,15 @@ OutputBuffer *RepRap::GetConfigResponse()
response->catf(",\"firmwareDate\":\"%s\"", DATE);
// Motor idle parameters
- response->catf(",\"idleCurrentFactor\":%.1f", platform->GetIdleCurrentFactor() * 100.0);
- response->catf(",\"idleTimeout\":%u", move->IdleTimeout());
+ response->catf(",\"idleCurrentFactor\":%.1f", (double)(platform->GetIdleCurrentFactor() * 100.0));
+ response->catf(",\"idleTimeout\":%u", (double)(move->IdleTimeout()));
// Minimum feedrates
response->cat(",\"minFeedrates\":");
ch = '[';
for (size_t drive = 0; drive < DRIVES; drive++)
{
- response->catf("%c%.2f", ch, platform->ConfiguredInstantDv(drive));
+ response->catf("%c%.2f", ch, (double)(platform->ConfiguredInstantDv(drive)));
ch = ',';
}
@@ -1209,7 +1208,7 @@ OutputBuffer *RepRap::GetConfigResponse()
ch = '[';
for (size_t drive = 0; drive < DRIVES; drive++)
{
- response->catf("%c%.2f", ch, platform->MaxFeedrate(drive));
+ response->catf("%c%.2f", ch, (double)(platform->MaxFeedrate(drive)));
ch = ',';
}
@@ -1252,7 +1251,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
if (bedHeater != -1)
{
ch = ',';
- response->catf("[%.1f", heat->GetTemperature(bedHeater));
+ response->catf("[%.1f", (double)(heat->GetTemperature(bedHeater)));
}
else
{
@@ -1260,7 +1259,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
}
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetTemperature(heater));
+ response->catf("%c%.1f", ch, (double)(heat->GetTemperature(heater)));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -1270,7 +1269,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
if (heat->GetBedHeater() != -1)
{
ch = ',';
- response->catf("[%.1f", heat->GetActiveTemperature(heat->GetBedHeater()));
+ response->catf("[%.1f", (double)(heat->GetActiveTemperature(heat->GetBedHeater())));
}
else
{
@@ -1278,7 +1277,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
}
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetActiveTemperature(heater));
+ response->catf("%c%.1f", ch, (double)(heat->GetActiveTemperature(heater)));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -1288,7 +1287,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
if (bedHeater != -1)
{
ch = ',';
- response->catf("[%.1f", heat->GetStandbyTemperature(bedHeater));
+ response->catf("[%.1f", (double)(heat->GetStandbyTemperature(bedHeater)));
}
else
{
@@ -1296,7 +1295,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
}
for (size_t heater = DefaultE0Heater; heater < GetToolHeatersInUse(); heater++)
{
- response->catf("%c%.1f", ch, heat->GetStandbyTemperature(heater));
+ response->catf("%c%.1f", ch, (double)(heat->GetStandbyTemperature(heater)));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
@@ -1336,22 +1335,22 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
ch = '[';
for (size_t drive = 0; drive < numAxes; drive++)
{
- response->catf("%c%.3f", ch, liveCoordinates[drive]);
+ response->catf("%c%.3f", ch, (double)liveCoordinates[drive]);
ch = ',';
}
// Send the speed and extruder override factors
- response->catf("],\"sfactor\":%.2f,\"efactor\":", gCodes->GetSpeedFactor() * 100.0);
+ response->catf("],\"sfactor\":%.2f,\"efactor\":", (double)(gCodes->GetSpeedFactor() * 100.0));
ch = '[';
for (size_t i = 0; i < reprap.GetExtrudersInUse(); ++i)
{
- response->catf("%c%.2f", ch, gCodes->GetExtrusionFactor(i) * 100.0);
+ response->catf("%c%.2f", ch, (double)(gCodes->GetExtrusionFactor(i) * 100.0));
ch = ',';
}
response->cat((ch == '[') ? "[]" : "]");
// Send the baby stepping offset
- response->catf(",\"babystep\":%.03f", gCodes->GetBabyStepOffset());
+ response->catf(",\"babystep\":%.03f", (double)(gCodes->GetBabyStepOffset()));
// Send the current tool number
const int toolNumber = (currentTool == nullptr) ? 0 : currentTool->Number();
@@ -1378,7 +1377,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
ch = '[';
for (size_t i = 0; i < NUM_FANS; ++i)
{
- response->catf("%c%.02f", ch, platform->GetFanValue(i) * 100.0);
+ response->catf("%c%.02f", ch, (double)(platform->GetFanValue(i) * 100.0));
ch = ',';
}
@@ -1398,7 +1397,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
if (printMonitor->IsPrinting())
{
// Send the fraction printed
- response->catf(",\"fraction_printed\":%.4f", max<float>(0.0, gCodes->FractionOfFilePrinted()));
+ response->catf(",\"fraction_printed\":%.4f", (double)max<float>(0.0, gCodes->FractionOfFilePrinted()));
}
// Short messages are now pushed directly to PanelDue, so don't include them here as well
@@ -1415,7 +1414,7 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
if (displayMessageBox)
{
response->catf(",\"msgBox.mode\":%d,\"msgBox.timeout\":%.1f,\"msgBox.controls\":%u",
- boxMode, timeLeft, boxControls);
+ boxMode, (double)timeLeft, boxControls);
response->cat(",\"msgBox.msg\":");
response->EncodeString(boxMessage, ARRAY_SIZE(boxMessage), false);
response->cat(",\"msgBox.title\":");
@@ -1432,9 +1431,9 @@ OutputBuffer *RepRap::GetLegacyStatusResponse(uint8_t type, int seq)
{
// Send estimated times left based on file progress, filament usage, and layers
response->catf(",\"timesLeft\":[%.1f,%.1f,%.1f]",
- printMonitor->EstimateTimeLeft(fileBased),
- printMonitor->EstimateTimeLeft(filamentBased),
- printMonitor->EstimateTimeLeft(layerBased));
+ (double)(printMonitor->EstimateTimeLeft(fileBased)),
+ (double)(printMonitor->EstimateTimeLeft(filamentBased)),
+ (double)(printMonitor->EstimateTimeLeft(layerBased)));
}
}
else if (type == 3)