diff options
author | David Crocker <dcrocker@eschertech.com> | 2018-12-24 16:25:20 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2018-12-24 16:25:20 +0300 |
commit | c4a62480eb4e4b9acfe967a09142326345628b1d (patch) | |
tree | d6ea8d40a5e27fd611cbc14294cd3da3ac3229f7 | |
parent | dc455f5361d905b1bf70f01c075e849cdbf18cf5 (diff) |
2.02 release2.02
Fixes for Duet 06/085 build
-rw-r--r-- | .cproject | 28 | ||||
-rw-r--r-- | src/BugList.txt | 6 | ||||
-rw-r--r-- | src/Duet/MCP4461/MCP4461.cpp | 8 | ||||
-rw-r--r-- | src/Duet/Webserver.cpp | 75 | ||||
-rw-r--r-- | src/Networking/HttpResponder.cpp | 12 | ||||
-rw-r--r-- | src/Platform.h | 2 | ||||
-rw-r--r-- | src/Version.h | 6 |
7 files changed, 76 insertions, 61 deletions
@@ -20,13 +20,13 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850" name="Duet085" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> + <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850" name="Duet085" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850." name="/" resourcePath=""> <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.947353540" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release"> <option id="cdt.managedbuild.option.gnu.cross.path.1742191832" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" useByScannerDiscovery="false" value="${GccPath}" valueType="string"/> <option id="cdt.managedbuild.option.gnu.cross.prefix.1660769040" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.223860525" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/> - <builder buildPath="${workspace_loc:/RepRapFirmware}/Release" id="cdt.managedbuild.builder.gnu.cross.13059261" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> + <builder buildPath="${workspace_loc:/RepRapFirmware}/Duet085" id="cdt.managedbuild.builder.gnu.cross.1509050538" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> <tool id="cdt.managedbuild.tool.gnu.cross.assembler.163742171" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler"> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.230262206" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> </tool> @@ -138,7 +138,7 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactExtension="elf" artifactName="${ProjName}-RADDS" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1027429289" name="RADDS_RTOS" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> + <configuration artifactExtension="elf" artifactName="${ProjName}-RADDS" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1027429289" name="RADDS_RTOS" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1027429289." name="/" resourcePath=""> <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.1973208555" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release"> <option id="cdt.managedbuild.option.gnu.cross.path.2092504710" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" useByScannerDiscovery="false" value="${GccPath}" valueType="string"/> @@ -249,11 +249,11 @@ <externalSettings/> <extensions> <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> - <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> @@ -263,7 +263,7 @@ <option id="cdt.managedbuild.option.gnu.cross.path.645044151" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" useByScannerDiscovery="false" value="${GccPath}" valueType="string"/> <option id="cdt.managedbuild.option.gnu.cross.prefix.629438941" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.878309876" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/> - <builder buildPath="${workspace_loc:/RepRapFirmware}/Release" id="cdt.managedbuild.builder.gnu.cross.56178753" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> + <builder buildPath="${workspace_loc:/RepRapFirmware}/Alligator" id="cdt.managedbuild.builder.gnu.cross.1518897616" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross"/> <tool id="cdt.managedbuild.tool.gnu.cross.assembler.384615201" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler"> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1769413014" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> </tool> @@ -318,7 +318,7 @@ <option id="gnu.cpp.compiler.option.optimization.level.1431609218" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/> <option id="gnu.cpp.compiler.option.debugging.level.1167774913" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> <option id="gnu.cpp.compiler.option.other.verbose.68487747" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/> - <option id="gnu.cpp.compiler.option.other.other.1532821901" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" useByScannerDiscovery="false" value="-c -std=gnu++17 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib -Wdouble-promotion -fsingle-precision-constant "-Wa,-ahl=$*.s"" valueType="string"/> + <option id="gnu.cpp.compiler.option.other.other.1532821901" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" useByScannerDiscovery="false" value="-c -std=gnu++17 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib -Wdouble-promotion -fsingle-precision-constant -Wa,-ahl="$*.s"" valueType="string"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1825159078" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${CoreName}/cores/arduino}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${CoreName}/libraries/Flash}""/> @@ -381,7 +381,7 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactExtension="elf" artifactName="Duet2CombinedFirmware" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.241502451.170574622" name="Duet2_RTOS" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> + <configuration artifactExtension="elf" artifactName="Duet2CombinedFirmware" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.241502451.170574622" name="Duet2_RTOS" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.241502451.170574622." name="/" resourcePath=""> <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.435431950" name="Cross GCC" nonInternalBuilderId="cdt.managedbuild.builder.gnu.cross" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release"> <option id="cdt.managedbuild.option.gnu.cross.path.1881231799" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" useByScannerDiscovery="false" value="${GccPath}" valueType="string"/> @@ -1150,7 +1150,7 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1168118439" name="Duet085_RTOS" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> + <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1168118439" name="Duet085_RTOS" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating binary file" postbuildStep="arm-none-eabi-objcopy -O binary ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.elf ${workspace_loc:/${ProjName}/${ConfigName}}/${BuildArtifactFileBaseName}.bin"> <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.1168118439." name="/" resourcePath=""> <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.734437241" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release"> <option id="cdt.managedbuild.option.gnu.cross.path.546334814" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path" useByScannerDiscovery="false" value="${GccPath}" valueType="string"/> @@ -1190,7 +1190,7 @@ </tool> <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1773357270" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/> <tool id="cdt.managedbuild.tool.gnu.cross.archiver.1736790466" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/> - <tool command="gcc" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${LinkFlags1} "${workspace_loc}/${CoreName}/SAM3X8E/cores/arduino/syscalls.o" ${INPUTS} ${LinkFlags2}" id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1544286968" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> + <tool command="gcc" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${LinkFlags1} "${workspace_loc}/${CoreName}/SAM3X8E_RTOS/cores/arduino/syscalls.o" ${INPUTS} ${LinkFlags2}" id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1544286968" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> <option id="gnu.cpp.link.option.nostdlibs.808535222" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.link.option.paths.1574037015" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths"> <listOptionValue builtIn="false" value=""${workspace_loc:/${CoreName}/SAM3X8E_RTOS/}""/> @@ -1261,18 +1261,20 @@ </storageModule> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> <storageModule moduleId="refreshScope" versionNumber="2"> + <configuration configurationName="RADDS_RTOS"/> <configuration configurationName="DuetM_RTOS"/> - <configuration configurationName="Alligator"/> + <configuration configurationName="Duet085_RTOS"/> <configuration configurationName="SAME70"/> <configuration configurationName="RADDS"/> - <configuration configurationName="Duet2_RTOS"/> <configuration configurationName="Duet2"/> <configuration configurationName="Duet3"/> + <configuration configurationName="SAME70XPLD"/> + <configuration configurationName="Alligator"/> + <configuration configurationName="Duet2_RTOS"/> <configuration configurationName="PCCB"/> <configuration configurationName="DuetM"/> <configuration configurationName="PCCB_X5"/> <configuration configurationName="Duet085"/> - <configuration configurationName="SAME70XPLD"/> </storageModule> <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> diff --git a/src/BugList.txt b/src/BugList.txt index 7c658d2c..b158730d 100644 --- a/src/BugList.txt +++ b/src/BugList.txt @@ -225,11 +225,11 @@ Done in 2.02RC7: - [done, ok] Support Fanuc-style G2/G3 whole circle moves - [done, ok] Add SD card write timing -Todo before 2.02 release: +Done in 2.02 release: - [done] Step clock on Duet Maestro going backwards, https://forum.duet3d.com/topic/8264/steptimer-getinterruptclocks-isn-t-incrementing -- Investigate Duet Maestro socket behaviour when cable disconnected, see email from chris +- [can't reproduce] Investigate Duet Maestro socket behaviour when cable disconnected, see email from chris -2.03: +2.03 planned: - Object model - Conditionals, loops and maths in GCode commands - S-curve acceleration diff --git a/src/Duet/MCP4461/MCP4461.cpp b/src/Duet/MCP4461/MCP4461.cpp index 6e742daf..1c4e6f04 100644 --- a/src/Duet/MCP4461/MCP4461.cpp +++ b/src/Duet/MCP4461/MCP4461.cpp @@ -68,7 +68,9 @@ void MCP4461::setVolatileWiper(uint8_t wiper, uint16_t wiper_value) uint8_t i2cBytes[2] = { c_byte, d_byte }; MutexLocker lock(Tasks::GetI2CMutex()); - MCP_WIRE.Transfer(_mcp4461_address, i2cBytes, 2, 0, nullptr); + MCP_WIRE.Transfer(_mcp4461_address, i2cBytes, 2, 0); + + delayMicroseconds(5); // bus needs to be free for 4.7us before the next command } void MCP4461::setNonVolatileWiper(uint8_t wiper, uint16_t wiper_value) @@ -101,7 +103,9 @@ void MCP4461::setNonVolatileWiper(uint8_t wiper, uint16_t wiper_value) uint8_t i2cBytes[2] = { c_byte, d_byte }; MutexLocker lock(Tasks::GetI2CMutex()); - MCP_WIRE.Transfer(_mcp4461_address, i2cBytes, 2, 0, nullptr); + MCP_WIRE.Transfer(_mcp4461_address, i2cBytes, 2, 0); + + delay(20); // writing to nonvolatile memory takes up to 10ms to complete } // End diff --git a/src/Duet/Webserver.cpp b/src/Duet/Webserver.cpp index 07df853f..4585eea2 100644 --- a/src/Duet/Webserver.cpp +++ b/src/Duet/Webserver.cpp @@ -619,29 +619,48 @@ void Webserver::HttpInterpreter::SendFile(const char* nameOfFileToSend, bool isW if (nameOfFileToSend[0] == '/') { ++nameOfFileToSend; // all web files are relative to the /www folder, so remove the leading '/' - if (nameOfFileToSend[0] == 0) - { - nameOfFileToSend = INDEX_PAGE_FILE; - } } - // Try to open a gzipped version of the file first - if (!StringEndsWithIgnoreCase(nameOfFileToSend, ".gz") && strlen(nameOfFileToSend) + 3 <= MaxFilenameLength) + if (nameOfFileToSend[0] == 0) { - char nameBuf[MaxFilenameLength + 1]; - strcpy(nameBuf, nameOfFileToSend); - strcat(nameBuf, ".gz"); - fileToSend = platform->OpenFile(platform->GetWebDir(), nameBuf, OpenMode::read); - if (fileToSend != nullptr) - { - zip = true; - } + nameOfFileToSend = INDEX_PAGE_FILE; } - // If that failed, try to open the normal version of the file - if (fileToSend == nullptr) + for (;;) { + // Try to open a gzipped version of the file first + if (!StringEndsWithIgnoreCase(nameOfFileToSend, ".gz") && strlen(nameOfFileToSend) + 3 <= MaxFilenameLength) + { + char nameBuf[MaxFilenameLength + 1]; + strcpy(nameBuf, nameOfFileToSend); + strcat(nameBuf, ".gz"); + fileToSend = platform->OpenFile(platform->GetWebDir(), nameBuf, OpenMode::read); + if (fileToSend != nullptr) + { + zip = true; + break; + } + } + + // That failed, try to open the normal version of the file fileToSend = platform->OpenFile(platform->GetWebDir(), nameOfFileToSend, OpenMode::read); + if (fileToSend != nullptr) + { + break; + } + + if (StringEqualsIgnoreCase(nameOfFileToSend, INDEX_PAGE_FILE)) + { + nameOfFileToSend = OLD_INDEX_PAGE_FILE; // the index file wasn't found, so try the old one + } + else if (!strchr(nameOfFileToSend, '.')) // if we were asked to return a file without a '.' in the name, return the index page + { + nameOfFileToSend = INDEX_PAGE_FILE; + } + else + { + break; + } } // If we still couldn't find the file and it was an HTML file, return the 404 error page @@ -650,25 +669,19 @@ void Webserver::HttpInterpreter::SendFile(const char* nameOfFileToSend, bool isW nameOfFileToSend = FOUR04_PAGE_FILE; fileToSend = platform->OpenFile(platform->GetWebDir(), nameOfFileToSend, OpenMode::read); } - - if (fileToSend == nullptr) - { - RejectMessage("not found", 404); - return; - } - transaction->SetFileToWrite(fileToSend); } else { fileToSend = platform->OpenFile(FS_PREFIX, nameOfFileToSend, OpenMode::read); - if (fileToSend == nullptr) - { - RejectMessage("not found", 404); - return; - } - transaction->SetFileToWrite(fileToSend); } + if (fileToSend == nullptr) + { + RejectMessage("not found", 404); + return; + } + + transaction->SetFileToWrite(fileToSend); transaction->Write("HTTP/1.1 200 OK\r\n"); // Don't cache files served by rr_download @@ -716,12 +729,12 @@ void Webserver::HttpInterpreter::SendFile(const char* nameOfFileToSend, bool isW } transaction->Printf("Content-Type: %s\r\n", contentType); - if (zip && fileToSend != nullptr) + if (zip) { transaction->Write("Content-Encoding: gzip\r\n"); - transaction->Printf("Content-Length: %lu\r\n", fileToSend->Length()); } + transaction->Printf("Content-Length: %lu\r\n", fileToSend->Length()); transaction->Write("Connection: close\r\n\r\n"); transaction->Commit(false); } diff --git a/src/Networking/HttpResponder.cpp b/src/Networking/HttpResponder.cpp index 1a81756e..8a859ca8 100644 --- a/src/Networking/HttpResponder.cpp +++ b/src/Networking/HttpResponder.cpp @@ -779,7 +779,6 @@ void HttpResponder::SendFile(const char* nameOfFileToSend, bool isWebFile) RejectMessage("page not found<br>Check that the SD card is mounted and has the correct files in its /www folder", 404); return; } - fileBeingSent = fileToSend; } else { @@ -789,9 +788,9 @@ void HttpResponder::SendFile(const char* nameOfFileToSend, bool isWebFile) RejectMessage("file not found", 404); return; } - fileBeingSent = fileToSend; } + fileBeingSent = fileToSend; outBuf->copy("HTTP/1.1 200 OK\r\n"); // Don't cache files served by rr_download @@ -840,15 +839,12 @@ void HttpResponder::SendFile(const char* nameOfFileToSend, bool isWebFile) } outBuf->catf("Content-Type: %s\r\n", contentType); - if (fileToSend != nullptr) + if (zip) { - if (zip) - { - outBuf->cat("Content-Encoding: gzip\r\n"); - } - outBuf->catf("Content-Length: %lu\r\n", fileToSend->Length()); + outBuf->cat("Content-Encoding: gzip\r\n"); } + outBuf->catf("Content-Length: %lu\r\n", fileToSend->Length()); outBuf->cat("Connection: close\r\n\r\n"); Commit(); } diff --git a/src/Platform.h b/src/Platform.h index d94289b9..93076d62 100644 --- a/src/Platform.h +++ b/src/Platform.h @@ -760,7 +760,7 @@ private: // Digipots MCP4461 mcpDuet; MCP4461 mcpExpansion; - Pin potWipes[8]; // we have only 8 digipots, on the Duet 0.8.5 we use the DAC for the 9th + uint8_t potWipes[8]; // we have only 8 digipots, on the Duet 0.8.5 we use the DAC for the 9th float senseResistor; float maxStepperDigipotVoltage; float stepperDacVoltageRange, stepperDacVoltageOffset; diff --git a/src/Version.h b/src/Version.h index 43e34b18..4f682e7f 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,9 +12,9 @@ #ifndef VERSION #ifdef RTOS # define RTOSVER "(RTOS)" -# define MAIN_VERSION "2.02RC7+" +# define MAIN_VERSION "2.02" #else -# define MAIN_VERSION "1.22" +# define MAIN_VERSION "1.23" # define RTOSVER #endif @@ -22,7 +22,7 @@ #endif #ifndef DATE -# define DATE "2018-12-23b2" +# define DATE "2018-12-24b1" #endif #define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman, printm3d" |