diff options
author | David Crocker <dcrocker@eschertech.com> | 2017-09-22 23:01:39 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2017-09-22 23:02:01 +0300 |
commit | 1bf86a532b80777c49ae13cda56c1326ac94de17 (patch) | |
tree | 0026f9741571dd68e6a7041e74cb6a0277d80283 /src/RepRap.cpp | |
parent | 8a71354e057609c6b015ed83826149a06e2aa8d6 (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.cpp | 119 |
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) |