| @ -1,247 +1,247 @@ | |||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> | <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> | ||||
| <storageModule moduleId="org.eclipse.cdt.core.settings"> | <storageModule moduleId="org.eclipse.cdt.core.settings"> | ||||
| <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917"> | <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917"> | ||||
| <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917" moduleId="org.eclipse.cdt.core.settings" name="Debug"> | <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917" moduleId="org.eclipse.cdt.core.settings" name="Debug"> | ||||
| <externalSettings/> | |||||
| <externalSettings /> | |||||
| <extensions> | <extensions> | ||||
| <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> | |||||
| <extension id="org.eclipse.cdt.core.GASErrorParser" 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.GLDErrorParser" 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.ELF" point="org.eclipse.cdt.core.BinaryParser" /> | |||||
| <extension id="org.eclipse.cdt.core.GASErrorParser" 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.GLDErrorParser" 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" /> | |||||
| </extensions> | </extensions> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | <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.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex" && arm-none-eabi-size "${BuildArtifactFileName}""> | <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.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex" && arm-none-eabi-size "${BuildArtifactFileName}""> | ||||
| <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917." name="/" resourcePath=""> | <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917." name="/" resourcePath=""> | ||||
| <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.2013979193" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug"> | <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.2013979193" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug"> | ||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.382830450" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.66405555" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F103C8Tx" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.board.1729153140" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="F103C8T6_DIGI_USB" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.382830450" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.66405555" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F103C8Tx" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.board.1729153140" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="F103C8T6_DIGI_USB" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> | <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> | ||||
| <listOptionValue builtIn="false" value="ARM Cortex-M3"/> | |||||
| <listOptionValue builtIn="false" value="CM3"/> | |||||
| <listOptionValue builtIn="false" value="ARM Cortex-M3" /> | |||||
| <listOptionValue builtIn="false" value="CM3" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1656935294" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1493691602" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2025609880" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated"/> | |||||
| <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.2146232636" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1656935294" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1493691602" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2025609880" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated" /> | |||||
| <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.2146232636" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" /> | |||||
| <builder buildPath="${workspace_loc:/F103C8T6_DIGI_USB}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.458407908" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> | <builder buildPath="${workspace_loc:/F103C8T6_DIGI_USB}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.458407908" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> | ||||
| <outputEntries> | <outputEntries> | ||||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/> | |||||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" /> | |||||
| </outputEntries> | </outputEntries> | ||||
| </builder> | </builder> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> | ||||
| <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1399206400" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated"/> | |||||
| <option id="gnu.c.compiler.option.debugging.level.806618685" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/> | |||||
| <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1399206400" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated" /> | |||||
| <option id="gnu.c.compiler.option.debugging.level.806618685" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" /> | |||||
| <option id="gnu.c.compiler.option.include.paths.74273181" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | <option id="gnu.c.compiler.option.include.paths.74273181" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| <listOptionValue builtIn="false" value="../Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Core/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> | |||||
| </option> | </option> | ||||
| <option id="gnu.c.compiler.option.preprocessor.def.symbols.600695662" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | <option id="gnu.c.compiler.option.preprocessor.def.symbols.600695662" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB"/> | |||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1107445133" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.901665218" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/> | |||||
| <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1107445133" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.901665218" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" /> | |||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1624185890" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1624185890" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> | ||||
| <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1920253922" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated"/> | |||||
| <option id="gnu.cpp.compiler.option.debugging.level.1618679064" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> | |||||
| <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1920253922" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated" /> | |||||
| <option id="gnu.cpp.compiler.option.debugging.level.1618679064" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated" /> | |||||
| <option id="gnu.cpp.compiler.option.include.paths.1699649370" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | <option id="gnu.cpp.compiler.option.include.paths.1699649370" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| <listOptionValue builtIn="false" value="../Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Core/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> | |||||
| </option> | </option> | ||||
| <option id="gnu.cpp.compiler.option.preprocessor.def.1783646902" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols"> | <option id="gnu.cpp.compiler.option.preprocessor.def.1783646902" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB"/> | |||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.550542539" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.859963469" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.314001530" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/> | |||||
| <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.550542539" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.859963469" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.314001530" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" /> | |||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.949266977" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.949266977" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> | ||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.100896041" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string"/> | |||||
| <option id="gnu.c.link.option.libs.1305202629" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs"/> | |||||
| <option id="gnu.c.link.option.paths.1292687187" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths"/> | |||||
| <option id="gnu.c.link.option.ldflags.2131178816" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/> | |||||
| <option id="gnu.c.link.option.other.623842724" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList"/> | |||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.100896041" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string" /> | |||||
| <option id="gnu.c.link.option.libs.1305202629" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" /> | |||||
| <option id="gnu.c.link.option.paths.1292687187" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" /> | |||||
| <option id="gnu.c.link.option.ldflags.2131178816" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> | |||||
| <option id="gnu.c.link.option.other.623842724" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" /> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.751662654" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.751662654" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | ||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||||
| </inputType> | </inputType> | ||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1051663558" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1051663558" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> | ||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1091464382" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string"/> | |||||
| <option id="gnu.cpp.link.option.libs.684453873" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"/> | |||||
| <option id="gnu.cpp.link.option.paths.749089985" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"/> | |||||
| <option id="gnu.cpp.link.option.flags.1490073641" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/> | |||||
| <option id="gnu.cpp.link.option.other.2071271866" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList"/> | |||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1091464382" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string" /> | |||||
| <option id="gnu.cpp.link.option.libs.684453873" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" /> | |||||
| <option id="gnu.cpp.link.option.paths.749089985" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" /> | |||||
| <option id="gnu.cpp.link.option.flags.1490073641" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> | |||||
| <option id="gnu.cpp.link.option.other.2071271866" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" /> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.963815527" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> | <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.963815527" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> | ||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||||
| </inputType> | </inputType> | ||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1989184041" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/> | |||||
| <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1989184041" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" /> | |||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1762903833" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1762903833" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler"> | ||||
| <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | ||||
| </option> | </option> | ||||
| <inputType id="cdt.managedbuild.tool.gnu.assembler.input.632714311" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1298773058" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.assembler.input.632714311" superClass="cdt.managedbuild.tool.gnu.assembler.input" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1298773058" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" /> | |||||
| </tool> | </tool> | ||||
| </toolChain> | </toolChain> | ||||
| </folderInfo> | </folderInfo> | ||||
| <sourceEntries> | <sourceEntries> | ||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Middlewares"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Middlewares" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src" /> | |||||
| </sourceEntries> | </sourceEntries> | ||||
| </configuration> | </configuration> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | |||||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> | |||||
| </cconfiguration> | </cconfiguration> | ||||
| <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153"> | <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153"> | ||||
| <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153" moduleId="org.eclipse.cdt.core.settings" name="Release"> | <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153" moduleId="org.eclipse.cdt.core.settings" name="Release"> | ||||
| <externalSettings/> | |||||
| <externalSettings /> | |||||
| <extensions> | <extensions> | ||||
| <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> | |||||
| <extension id="org.eclipse.cdt.core.GASErrorParser" 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.GLDErrorParser" 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.ELF" point="org.eclipse.cdt.core.BinaryParser" /> | |||||
| <extension id="org.eclipse.cdt.core.GASErrorParser" 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.GLDErrorParser" 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" /> | |||||
| </extensions> | </extensions> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | <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="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex" && arm-none-eabi-size "${BuildArtifactFileName}""> | <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="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex" && arm-none-eabi-size "${BuildArtifactFileName}""> | ||||
| <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153." name="/" resourcePath=""> | <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.2040258153." name="/" resourcePath=""> | ||||
| <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.1401143845" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release"> | <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.1401143845" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release"> | ||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.382830450" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.66405555" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F103C8Tx" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.board.1729153140" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="F103C8T6_DIGI_USB" valueType="string"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.382830450" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.66405555" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F103C8Tx" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.board.1729153140" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="F103C8T6_DIGI_USB" valueType="string" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> | <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> | ||||
| <listOptionValue builtIn="false" value="ARM Cortex-M3"/> | |||||
| <listOptionValue builtIn="false" value="CM3"/> | |||||
| <listOptionValue builtIn="false" value="ARM Cortex-M3" /> | |||||
| <listOptionValue builtIn="false" value="CM3" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1656935294" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1493691602" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2025609880" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated"/> | |||||
| <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.2146232636" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1656935294" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1493691602" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated" /> | |||||
| <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2025609880" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated" /> | |||||
| <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.2146232636" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" /> | |||||
| <builder buildPath="${workspace_loc:/F103C8T6_DIGI_USB}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.458407908" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> | <builder buildPath="${workspace_loc:/F103C8T6_DIGI_USB}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.458407908" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> | ||||
| <outputEntries> | <outputEntries> | ||||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release"/> | |||||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release" /> | |||||
| </outputEntries> | </outputEntries> | ||||
| </builder> | </builder> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> | ||||
| <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1399206400" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated"/> | |||||
| <option id="gnu.c.compiler.option.debugging.level.806618685" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/> | |||||
| <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1399206400" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated" /> | |||||
| <option id="gnu.c.compiler.option.debugging.level.806618685" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" /> | |||||
| <option id="gnu.c.compiler.option.include.paths.74273181" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | <option id="gnu.c.compiler.option.include.paths.74273181" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| <listOptionValue builtIn="false" value="../Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Core/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> | |||||
| </option> | </option> | ||||
| <option id="gnu.c.compiler.option.preprocessor.def.symbols.600695662" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | <option id="gnu.c.compiler.option.preprocessor.def.symbols.600695662" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB"/> | |||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1107445133" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.901665218" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/> | |||||
| <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1107445133" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.901665218" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" /> | |||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1624185890" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1624185890" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> | ||||
| <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1920253922" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated"/> | |||||
| <option id="gnu.cpp.compiler.option.debugging.level.1618679064" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated"/> | |||||
| <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1920253922" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated" /> | |||||
| <option id="gnu.cpp.compiler.option.debugging.level.1618679064" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated" /> | |||||
| <option id="gnu.cpp.compiler.option.include.paths.1699649370" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | <option id="gnu.cpp.compiler.option.include.paths.1699649370" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> | ||||
| <listOptionValue builtIn="false" value="../Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Core/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> | |||||
| <listOptionValue builtIn="false" value="../Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include" /> | |||||
| <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> | |||||
| </option> | </option> | ||||
| <option id="gnu.cpp.compiler.option.preprocessor.def.symbols.1266248233" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | <option id="gnu.cpp.compiler.option.preprocessor.def.symbols.1266248233" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> | ||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB"/> | |||||
| <listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> | |||||
| <listOptionValue builtIn="false" value="STM32F103xB" /> | |||||
| </option> | </option> | ||||
| <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.550542539" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.859963469" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.314001530" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/> | |||||
| <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.550542539" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.859963469" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.314001530" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" /> | |||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.949266977" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.949266977" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> | ||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.100896041" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string"/> | |||||
| <option id="gnu.c.link.option.libs.1305202629" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs"/> | |||||
| <option id="gnu.c.link.option.paths.1292687187" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths"/> | |||||
| <option id="gnu.c.link.option.ldflags.2131178816" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/> | |||||
| <option id="gnu.c.link.option.other.623842724" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList"/> | |||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.100896041" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string" /> | |||||
| <option id="gnu.c.link.option.libs.1305202629" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" /> | |||||
| <option id="gnu.c.link.option.paths.1292687187" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" /> | |||||
| <option id="gnu.c.link.option.ldflags.2131178816" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> | |||||
| <option id="gnu.c.link.option.other.623842724" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" /> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.751662654" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.751662654" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | ||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||||
| </inputType> | </inputType> | ||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1051663558" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1051663558" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> | ||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1091464382" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string"/> | |||||
| <option id="gnu.cpp.link.option.libs.684453873" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"/> | |||||
| <option id="gnu.cpp.link.option.paths.749089985" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"/> | |||||
| <option id="gnu.cpp.link.option.ldflags.1398019047" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/> | |||||
| <option id="gnu.cpp.link.option.other.2071271866" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList"/> | |||||
| <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1091464382" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string" /> | |||||
| <option id="gnu.cpp.link.option.libs.684453873" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" /> | |||||
| <option id="gnu.cpp.link.option.paths.749089985" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" /> | |||||
| <option id="gnu.cpp.link.option.ldflags.1398019047" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> | |||||
| <option id="gnu.cpp.link.option.other.2071271866" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" /> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.963815527" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> | <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.963815527" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> | ||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||||
| </inputType> | </inputType> | ||||
| </tool> | </tool> | ||||
| <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1989184041" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/> | |||||
| <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1989184041" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" /> | |||||
| <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.1892402399" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release"> | <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.1892402399" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release"> | ||||
| <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | ||||
| </option> | </option> | ||||
| <inputType id="cdt.managedbuild.tool.gnu.assembler.input.632714311" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1298773058" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/> | |||||
| <inputType id="cdt.managedbuild.tool.gnu.assembler.input.632714311" superClass="cdt.managedbuild.tool.gnu.assembler.input" /> | |||||
| <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1298773058" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" /> | |||||
| </tool> | </tool> | ||||
| </toolChain> | </toolChain> | ||||
| </folderInfo> | </folderInfo> | ||||
| <sourceEntries> | <sourceEntries> | ||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Middlewares"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Middlewares" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers" /> | |||||
| <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src" /> | |||||
| </sourceEntries> | </sourceEntries> | ||||
| </configuration> | </configuration> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | |||||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> | |||||
| </cconfiguration> | </cconfiguration> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | ||||
| <project id="F103C8T6_DIGI_USB.fr.ac6.managedbuild.target.gnu.cross.exe.1488070975" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/> | |||||
| <project id="F103C8T6_DIGI_USB.fr.ac6.managedbuild.target.gnu.cross.exe.1488070975" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe" /> | |||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="scannerConfiguration"> | <storageModule moduleId="scannerConfiguration"> | ||||
| <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> | |||||
| <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" /> | |||||
| <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917;fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365"> | <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917;fr.ac6.managedbuild.config.gnu.cross.exe.debug.785246917.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.736856211;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1385058365"> | ||||
| <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/> | |||||
| <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="" /> | |||||
| </scannerConfigBuildInfo> | </scannerConfigBuildInfo> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> | |||||
| <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" /> | |||||
| <storageModule moduleId="refreshScope" versionNumber="2"> | <storageModule moduleId="refreshScope" versionNumber="2"> | ||||
| <configuration artifactName="${ProjName}" configurationName="Debug"> | <configuration artifactName="${ProjName}" configurationName="Debug"> | ||||
| <resource resourceType="PROJECT" workspacePath="F103C8T6_DIGI_USB"/> | |||||
| <resource resourceType="PROJECT" workspacePath="F103C8T6_DIGI_USB" /> | |||||
| </configuration> | </configuration> | ||||
| </storageModule> | </storageModule> | ||||
| <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> | |||||
| <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets" /> | |||||
| </cproject> | </cproject> | ||||
| @ -1,14 +1,14 @@ | |||||
| [PreviousGenFiles] | |||||
| HeaderPath=C:/sw4stm32-projekty/vp-digi/Inc | |||||
| HeaderFiles=usb_device.h;usbd_conf.h;usbd_desc.h;usbd_cdc_if.h;stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h; | |||||
| SourcePath=C:/sw4stm32-projekty/vp-digi/Src | |||||
| SourceFiles=usb_device.c;usbd_conf.c;usbd_desc.c;usbd_cdc_if.c;stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c; | |||||
| [PreviousLibFiles] | [PreviousLibFiles] | ||||
| LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; | |||||
| LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; | |||||
| [PreviousUsedSW4STM32Files] | [PreviousUsedSW4STM32Files] | ||||
| SourceFiles=..\Src\main.c;..\Src\usb_device.c;..\Src\usbd_conf.c;..\Src\usbd_desc.c;..\Src\usbd_cdc_if.c;..\Src\stm32f1xx_it.c;..\Src\stm32f1xx_hal_msp.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;..\\Src/system_stm32f1xx.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;..\\Src/system_stm32f1xx.c;..\Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;..\Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c; | |||||
| HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc;..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Inc; | |||||
| SourceFiles=..\Src\main.c;..\Src\stm32f1xx_it.c;..\Src\stm32f1xx_hal_msp.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\\Src/system_stm32f1xx.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\\Src/system_stm32f1xx.c;..\Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;; | |||||
| HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Inc; | |||||
| CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; | CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; | ||||
| [PreviousGenFiles] | |||||
| HeaderPath=C:/sw4stm32-projekty/vp-digi/Inc | |||||
| HeaderFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h; | |||||
| SourcePath=C:/sw4stm32-projekty/vp-digi/Src | |||||
| SourceFiles=stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c; | |||||
| @ -1,90 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file stm32f1xx_hal_pcd_ex.h | |||||
| * @author MCD Application Team | |||||
| * @brief Header file of PCD HAL Extension module. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2016 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under BSD 3-Clause license, | |||||
| * the "License"; You may not use this file except in compliance with the | |||||
| * License. You may obtain a copy of the License at: | |||||
| * opensource.org/licenses/BSD-3-Clause | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef STM32F1xx_HAL_PCD_EX_H | |||||
| #define STM32F1xx_HAL_PCD_EX_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "stm32f1xx_hal_def.h" | |||||
| #if defined (USB) || defined (USB_OTG_FS) | |||||
| /** @addtogroup STM32F1xx_HAL_Driver | |||||
| * @{ | |||||
| */ | |||||
| /** @addtogroup PCDEx | |||||
| * @{ | |||||
| */ | |||||
| /* Exported types ------------------------------------------------------------*/ | |||||
| /* Exported constants --------------------------------------------------------*/ | |||||
| /* Exported macros -----------------------------------------------------------*/ | |||||
| /* Exported functions --------------------------------------------------------*/ | |||||
| /** @addtogroup PCDEx_Exported_Functions PCDEx Exported Functions | |||||
| * @{ | |||||
| */ | |||||
| /** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions | |||||
| * @{ | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size); | |||||
| HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size); | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, | |||||
| uint16_t ep_addr, | |||||
| uint16_t ep_kind, | |||||
| uint32_t pmaadress); | |||||
| void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); | |||||
| #endif /* defined (USB) */ | |||||
| void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); | |||||
| void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #endif /* defined (USB) || defined (USB_OTG_FS) */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* STM32F1xx_HAL_PCD_EX_H */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,651 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file stm32f1xx_ll_usb.h | |||||
| * @author MCD Application Team | |||||
| * @brief Header file of USB Low Layer HAL module. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2016 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under BSD 3-Clause license, | |||||
| * the "License"; You may not use this file except in compliance with the | |||||
| * License. You may obtain a copy of the License at: | |||||
| * opensource.org/licenses/BSD-3-Clause | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef STM32F1xx_LL_USB_H | |||||
| #define STM32F1xx_LL_USB_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "stm32f1xx_hal_def.h" | |||||
| #if defined (USB) || defined (USB_OTG_FS) | |||||
| /** @addtogroup STM32F1xx_HAL_Driver | |||||
| * @{ | |||||
| */ | |||||
| /** @addtogroup USB_LL | |||||
| * @{ | |||||
| */ | |||||
| /* Exported types ------------------------------------------------------------*/ | |||||
| /** | |||||
| * @brief USB Mode definition | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| typedef enum | |||||
| { | |||||
| USB_DEVICE_MODE = 0, | |||||
| USB_HOST_MODE = 1, | |||||
| USB_DRD_MODE = 2 | |||||
| } USB_ModeTypeDef; | |||||
| /** | |||||
| * @brief URB States definition | |||||
| */ | |||||
| typedef enum | |||||
| { | |||||
| URB_IDLE = 0, | |||||
| URB_DONE, | |||||
| URB_NOTREADY, | |||||
| URB_NYET, | |||||
| URB_ERROR, | |||||
| URB_STALL | |||||
| } USB_OTG_URBStateTypeDef; | |||||
| /** | |||||
| * @brief Host channel States definition | |||||
| */ | |||||
| typedef enum | |||||
| { | |||||
| HC_IDLE = 0, | |||||
| HC_XFRC, | |||||
| HC_HALTED, | |||||
| HC_NAK, | |||||
| HC_NYET, | |||||
| HC_STALL, | |||||
| HC_XACTERR, | |||||
| HC_BBLERR, | |||||
| HC_DATATGLERR | |||||
| } USB_OTG_HCStateTypeDef; | |||||
| /** | |||||
| * @brief USB OTG Initialization Structure definition | |||||
| */ | |||||
| typedef struct | |||||
| { | |||||
| uint32_t dev_endpoints; /*!< Device Endpoints number. | |||||
| This parameter depends on the used USB core. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint32_t Host_channels; /*!< Host Channels number. | |||||
| This parameter Depends on the used USB core. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint32_t speed; /*!< USB Core speed. | |||||
| This parameter can be any value of @ref USB_Core_Speed_ */ | |||||
| uint32_t dma_enable; /*!< Enable or disable of the USB embedded DMA used only for OTG HS. */ | |||||
| uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ | |||||
| uint32_t phy_itface; /*!< Select the used PHY interface. | |||||
| This parameter can be any value of @ref USB_Core_PHY_ */ | |||||
| uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ | |||||
| uint32_t low_power_enable; /*!< Enable or disable the low power mode. */ | |||||
| uint32_t lpm_enable; /*!< Enable or disable Link Power Management. */ | |||||
| uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ | |||||
| uint32_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */ | |||||
| uint32_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */ | |||||
| uint32_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */ | |||||
| } USB_OTG_CfgTypeDef; | |||||
| typedef struct | |||||
| { | |||||
| uint8_t num; /*!< Endpoint number | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint8_t is_in; /*!< Endpoint direction | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t is_stall; /*!< Endpoint stall condition | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t type; /*!< Endpoint type | |||||
| This parameter can be any value of @ref USB_EP_Type_ */ | |||||
| uint8_t data_pid_start; /*!< Initial data PID | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t even_odd_frame; /*!< IFrame parity | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint16_t tx_fifo_num; /*!< Transmission FIFO number | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint32_t maxpacket; /*!< Endpoint Max packet size | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ | |||||
| uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ | |||||
| uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */ | |||||
| uint32_t xfer_len; /*!< Current transfer length */ | |||||
| uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ | |||||
| } USB_OTG_EPTypeDef; | |||||
| typedef struct | |||||
| { | |||||
| uint8_t dev_addr ; /*!< USB device address. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 255 */ | |||||
| uint8_t ch_num; /*!< Host channel number. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint8_t ep_num; /*!< Endpoint number. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint8_t ep_is_in; /*!< Endpoint direction | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t speed; /*!< USB Host speed. | |||||
| This parameter can be any value of @ref USB_Core_Speed_ */ | |||||
| uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */ | |||||
| uint8_t process_ping; /*!< Execute the PING protocol for HS mode. */ | |||||
| uint8_t ep_type; /*!< Endpoint Type. | |||||
| This parameter can be any value of @ref USB_EP_Type_ */ | |||||
| uint16_t max_packet; /*!< Endpoint Max packet size. | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ | |||||
| uint8_t data_pid; /*!< Initial data PID. | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */ | |||||
| uint32_t xfer_len; /*!< Current transfer length. */ | |||||
| uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */ | |||||
| uint8_t toggle_in; /*!< IN transfer current toggle flag. | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t toggle_out; /*!< OUT transfer current toggle flag | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */ | |||||
| uint32_t ErrCnt; /*!< Host channel error count.*/ | |||||
| USB_OTG_URBStateTypeDef urb_state; /*!< URB state. | |||||
| This parameter can be any value of @ref USB_OTG_URBStateTypeDef */ | |||||
| USB_OTG_HCStateTypeDef state; /*!< Host Channel state. | |||||
| This parameter can be any value of @ref USB_OTG_HCStateTypeDef */ | |||||
| } USB_OTG_HCTypeDef; | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| typedef enum | |||||
| { | |||||
| USB_DEVICE_MODE = 0 | |||||
| } USB_ModeTypeDef; | |||||
| /** | |||||
| * @brief USB Initialization Structure definition | |||||
| */ | |||||
| typedef struct | |||||
| { | |||||
| uint32_t dev_endpoints; /*!< Device Endpoints number. | |||||
| This parameter depends on the used USB core. | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint32_t speed; /*!< USB Core speed. | |||||
| This parameter can be any value of @ref USB_Core_Speed */ | |||||
| uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ | |||||
| uint32_t phy_itface; /*!< Select the used PHY interface. | |||||
| This parameter can be any value of @ref USB_Core_PHY */ | |||||
| uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ | |||||
| uint32_t low_power_enable; /*!< Enable or disable Low Power mode */ | |||||
| uint32_t lpm_enable; /*!< Enable or disable Battery charging. */ | |||||
| uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ | |||||
| } USB_CfgTypeDef; | |||||
| typedef struct | |||||
| { | |||||
| uint8_t num; /*!< Endpoint number | |||||
| This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ | |||||
| uint8_t is_in; /*!< Endpoint direction | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t is_stall; /*!< Endpoint stall condition | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint8_t type; /*!< Endpoint type | |||||
| This parameter can be any value of @ref USB_EP_Type */ | |||||
| uint8_t data_pid_start; /*!< Initial data PID | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ | |||||
| uint16_t pmaadress; /*!< PMA Address | |||||
| This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ | |||||
| uint16_t pmaaddr0; /*!< PMA Address0 | |||||
| This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ | |||||
| uint16_t pmaaddr1; /*!< PMA Address1 | |||||
| This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ | |||||
| uint8_t doublebuffer; /*!< Double buffer enable | |||||
| This parameter can be 0 or 1 */ | |||||
| uint16_t tx_fifo_num; /*!< This parameter is not required by USB Device FS peripheral, it is used | |||||
| only by USB OTG FS peripheral | |||||
| This parameter is added to ensure compatibility across USB peripherals */ | |||||
| uint32_t maxpacket; /*!< Endpoint Max packet size | |||||
| This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ | |||||
| uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ | |||||
| uint32_t xfer_len; /*!< Current transfer length */ | |||||
| uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ | |||||
| } USB_EPTypeDef; | |||||
| #endif /* defined (USB) */ | |||||
| /* Exported constants --------------------------------------------------------*/ | |||||
| /** @defgroup PCD_Exported_Constants PCD Exported Constants | |||||
| * @{ | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| /** @defgroup USB_OTG_CORE VERSION ID | |||||
| * @{ | |||||
| */ | |||||
| #define USB_OTG_CORE_ID_300A 0x4F54300AU | |||||
| #define USB_OTG_CORE_ID_310A 0x4F54310AU | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_Core_Mode_ USB Core Mode | |||||
| * @{ | |||||
| */ | |||||
| #define USB_OTG_MODE_DEVICE 0U | |||||
| #define USB_OTG_MODE_HOST 1U | |||||
| #define USB_OTG_MODE_DRD 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL Device Speed | |||||
| * @{ | |||||
| */ | |||||
| #define USBD_FS_SPEED 2U | |||||
| #define USBH_FS_SPEED 1U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed | |||||
| * @{ | |||||
| */ | |||||
| #define USB_OTG_SPEED_FULL 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_Core_PHY USB Low Layer Core PHY | |||||
| * @{ | |||||
| */ | |||||
| #define USB_OTG_ULPI_PHY 1U | |||||
| #define USB_OTG_EMBEDDED_PHY 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_Turnaround_Timeout Turnaround Timeout Value | |||||
| * @{ | |||||
| */ | |||||
| #ifndef USBD_FS_TRDT_VALUE | |||||
| #define USBD_FS_TRDT_VALUE 5U | |||||
| #define USBD_DEFAULT_TRDT_VALUE 9U | |||||
| #endif /* USBD_HS_TRDT_VALUE */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS | |||||
| * @{ | |||||
| */ | |||||
| #define USB_OTG_FS_MAX_PACKET_SIZE 64U | |||||
| #define USB_OTG_MAX_EP0_SIZE 64U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_Core_PHY_Frequency USB Low Layer Core PHY Frequency | |||||
| * @{ | |||||
| */ | |||||
| #define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1) | |||||
| #define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1) | |||||
| #define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1) | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_CORE_Frame_Interval USB Low Layer Core Frame Interval | |||||
| * @{ | |||||
| */ | |||||
| #define DCFG_FRAME_INTERVAL_80 0U | |||||
| #define DCFG_FRAME_INTERVAL_85 1U | |||||
| #define DCFG_FRAME_INTERVAL_90 2U | |||||
| #define DCFG_FRAME_INTERVAL_95 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS | |||||
| * @{ | |||||
| */ | |||||
| #define DEP0CTL_MPS_64 0U | |||||
| #define DEP0CTL_MPS_32 1U | |||||
| #define DEP0CTL_MPS_16 2U | |||||
| #define DEP0CTL_MPS_8 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed | |||||
| * @{ | |||||
| */ | |||||
| #define EP_SPEED_LOW 0U | |||||
| #define EP_SPEED_FULL 1U | |||||
| #define EP_SPEED_HIGH 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_EP_Type USB Low Layer EP Type | |||||
| * @{ | |||||
| */ | |||||
| #define EP_TYPE_CTRL 0U | |||||
| #define EP_TYPE_ISOC 1U | |||||
| #define EP_TYPE_BULK 2U | |||||
| #define EP_TYPE_INTR 3U | |||||
| #define EP_TYPE_MSK 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines | |||||
| * @{ | |||||
| */ | |||||
| #define STS_GOUT_NAK 1U | |||||
| #define STS_DATA_UPDT 2U | |||||
| #define STS_XFER_COMP 3U | |||||
| #define STS_SETUP_COMP 4U | |||||
| #define STS_SETUP_UPDT 6U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_HCFG_SPEED_Defines USB Low Layer HCFG Speed Defines | |||||
| * @{ | |||||
| */ | |||||
| #define HCFG_30_60_MHZ 0U | |||||
| #define HCFG_48_MHZ 1U | |||||
| #define HCFG_6_MHZ 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines | |||||
| * @{ | |||||
| */ | |||||
| #define HPRT0_PRTSPD_HIGH_SPEED 0U | |||||
| #define HPRT0_PRTSPD_FULL_SPEED 1U | |||||
| #define HPRT0_PRTSPD_LOW_SPEED 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #define HCCHAR_CTRL 0U | |||||
| #define HCCHAR_ISOC 1U | |||||
| #define HCCHAR_BULK 2U | |||||
| #define HCCHAR_INTR 3U | |||||
| #define HC_PID_DATA0 0U | |||||
| #define HC_PID_DATA2 1U | |||||
| #define HC_PID_DATA1 2U | |||||
| #define HC_PID_SETUP 3U | |||||
| #define GRXSTS_PKTSTS_IN 2U | |||||
| #define GRXSTS_PKTSTS_IN_XFER_COMP 3U | |||||
| #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U | |||||
| #define GRXSTS_PKTSTS_CH_HALTED 7U | |||||
| #define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) | |||||
| #define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) | |||||
| #define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) | |||||
| #define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) | |||||
| #define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) | |||||
| #define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) | |||||
| #define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) | |||||
| #define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE + USB_OTG_HOST_CHANNEL_BASE + ((i) * USB_OTG_HOST_CHANNEL_SIZE))) | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS | |||||
| * @{ | |||||
| */ | |||||
| #define DEP0CTL_MPS_64 0U | |||||
| #define DEP0CTL_MPS_32 1U | |||||
| #define DEP0CTL_MPS_16 2U | |||||
| #define DEP0CTL_MPS_8 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL_EP_Type USB Low Layer EP Type | |||||
| * @{ | |||||
| */ | |||||
| #define EP_TYPE_CTRL 0U | |||||
| #define EP_TYPE_ISOC 1U | |||||
| #define EP_TYPE_BULK 2U | |||||
| #define EP_TYPE_INTR 3U | |||||
| #define EP_TYPE_MSK 3U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_LL Device Speed | |||||
| * @{ | |||||
| */ | |||||
| #define USBD_FS_SPEED 2U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #define BTABLE_ADDRESS 0x000U | |||||
| #define PMA_ACCESS 2U | |||||
| #endif /* defined (USB) */ | |||||
| #if defined (USB_OTG_FS) | |||||
| #define EP_ADDR_MSK 0xFU | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| #define EP_ADDR_MSK 0x7U | |||||
| #endif /* defined (USB) */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /* Exported macro ------------------------------------------------------------*/ | |||||
| /** @defgroup USB_LL_Exported_Macros USB Low Layer Exported Macros | |||||
| * @{ | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| #define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) | |||||
| #define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) | |||||
| #define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) | |||||
| #define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /* Exported functions --------------------------------------------------------*/ | |||||
| /** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions | |||||
| * @{ | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); | |||||
| HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); | |||||
| HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed); | |||||
| HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode); | |||||
| HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed); | |||||
| HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num); | |||||
| HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); | |||||
| void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len); | |||||
| HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address); | |||||
| HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup); | |||||
| uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); | |||||
| uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); | |||||
| void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt); | |||||
| HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); | |||||
| HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq); | |||||
| HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state); | |||||
| uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx); | |||||
| uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, | |||||
| uint8_t ch_num, | |||||
| uint8_t epnum, | |||||
| uint8_t dev_address, | |||||
| uint8_t speed, | |||||
| uint8_t ep_type, | |||||
| uint16_t mps); | |||||
| HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc); | |||||
| uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num); | |||||
| HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num); | |||||
| HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); | |||||
| HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); | |||||
| HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode); | |||||
| HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed); | |||||
| HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num); | |||||
| HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); | |||||
| void *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len); | |||||
| HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); | |||||
| HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address); | |||||
| HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup); | |||||
| uint32_t USB_ReadInterrupts(USB_TypeDef *USBx); | |||||
| uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx); | |||||
| uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); | |||||
| uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx); | |||||
| uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); | |||||
| void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt); | |||||
| HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx); | |||||
| HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx); | |||||
| void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); | |||||
| void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); | |||||
| #endif /* defined (USB) */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #endif /* defined (USB) || defined (USB_OTG_FS) */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* STM32F1xx_LL_USB_H */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,246 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file stm32f1xx_hal_pcd_ex.c | |||||
| * @author MCD Application Team | |||||
| * @brief PCD Extended HAL module driver. | |||||
| * This file provides firmware functions to manage the following | |||||
| * functionalities of the USB Peripheral Controller: | |||||
| * + Extended features functions | |||||
| * | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2016 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under BSD 3-Clause license, | |||||
| * the "License"; You may not use this file except in compliance with the | |||||
| * License. You may obtain a copy of the License at: | |||||
| * opensource.org/licenses/BSD-3-Clause | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "stm32f1xx_hal.h" | |||||
| /** @addtogroup STM32F1xx_HAL_Driver | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup PCDEx PCDEx | |||||
| * @brief PCD Extended HAL module driver | |||||
| * @{ | |||||
| */ | |||||
| #ifdef HAL_PCD_MODULE_ENABLED | |||||
| #if defined (USB) || defined (USB_OTG_FS) | |||||
| /* Private types -------------------------------------------------------------*/ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* Private constants ---------------------------------------------------------*/ | |||||
| /* Private macros ------------------------------------------------------------*/ | |||||
| /* Private functions ---------------------------------------------------------*/ | |||||
| /* Exported functions --------------------------------------------------------*/ | |||||
| /** @defgroup PCDEx_Exported_Functions PCDEx Exported Functions | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions | |||||
| * @brief PCDEx control functions | |||||
| * | |||||
| @verbatim | |||||
| =============================================================================== | |||||
| ##### Extended features functions ##### | |||||
| =============================================================================== | |||||
| [..] This section provides functions allowing to: | |||||
| (+) Update FIFO configuration | |||||
| @endverbatim | |||||
| * @{ | |||||
| */ | |||||
| #if defined (USB_OTG_FS) | |||||
| /** | |||||
| * @brief Set Tx FIFO | |||||
| * @param hpcd PCD handle | |||||
| * @param fifo The number of Tx fifo | |||||
| * @param size Fifo size | |||||
| * @retval HAL status | |||||
| */ | |||||
| HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size) | |||||
| { | |||||
| uint8_t i; | |||||
| uint32_t Tx_Offset; | |||||
| /* TXn min size = 16 words. (n : Transmit FIFO index) | |||||
| When a TxFIFO is not used, the Configuration should be as follows: | |||||
| case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes) | |||||
| --> Txm can use the space allocated for Txn. | |||||
| case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes) | |||||
| --> Txn should be configured with the minimum space of 16 words | |||||
| The FIFO is used optimally when used TxFIFOs are allocated in the top | |||||
| of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones. | |||||
| When DMA is used 3n * FIFO locations should be reserved for internal DMA registers */ | |||||
| Tx_Offset = hpcd->Instance->GRXFSIZ; | |||||
| if (fifo == 0U) | |||||
| { | |||||
| hpcd->Instance->DIEPTXF0_HNPTXFSIZ = ((uint32_t)size << 16) | Tx_Offset; | |||||
| } | |||||
| else | |||||
| { | |||||
| Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16; | |||||
| for (i = 0U; i < (fifo - 1U); i++) | |||||
| { | |||||
| Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16); | |||||
| } | |||||
| /* Multiply Tx_Size by 2 to get higher performance */ | |||||
| hpcd->Instance->DIEPTXF[fifo - 1U] = ((uint32_t)size << 16) | Tx_Offset; | |||||
| } | |||||
| return HAL_OK; | |||||
| } | |||||
| /** | |||||
| * @brief Set Rx FIFO | |||||
| * @param hpcd PCD handle | |||||
| * @param size Size of Rx fifo | |||||
| * @retval HAL status | |||||
| */ | |||||
| HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size) | |||||
| { | |||||
| hpcd->Instance->GRXFSIZ = size; | |||||
| return HAL_OK; | |||||
| } | |||||
| #endif /* defined (USB_OTG_FS) */ | |||||
| #if defined (USB) | |||||
| /** | |||||
| * @brief Configure PMA for EP | |||||
| * @param hpcd Device instance | |||||
| * @param ep_addr endpoint address | |||||
| * @param ep_kind endpoint Kind | |||||
| * USB_SNG_BUF: Single Buffer used | |||||
| * USB_DBL_BUF: Double Buffer used | |||||
| * @param pmaadress: EP address in The PMA: In case of single buffer endpoint | |||||
| * this parameter is 16-bit value providing the address | |||||
| * in PMA allocated to endpoint. | |||||
| * In case of double buffer endpoint this parameter | |||||
| * is a 32-bit value providing the endpoint buffer 0 address | |||||
| * in the LSB part of 32-bit value and endpoint buffer 1 address | |||||
| * in the MSB part of 32-bit value. | |||||
| * @retval HAL status | |||||
| */ | |||||
| HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, | |||||
| uint16_t ep_addr, | |||||
| uint16_t ep_kind, | |||||
| uint32_t pmaadress) | |||||
| { | |||||
| PCD_EPTypeDef *ep; | |||||
| /* initialize ep structure*/ | |||||
| if ((0x80U & ep_addr) == 0x80U) | |||||
| { | |||||
| ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; | |||||
| } | |||||
| else | |||||
| { | |||||
| ep = &hpcd->OUT_ep[ep_addr]; | |||||
| } | |||||
| /* Here we check if the endpoint is single or double Buffer*/ | |||||
| if (ep_kind == PCD_SNG_BUF) | |||||
| { | |||||
| /* Single Buffer */ | |||||
| ep->doublebuffer = 0U; | |||||
| /* Configure the PMA */ | |||||
| ep->pmaadress = (uint16_t)pmaadress; | |||||
| } | |||||
| else /* USB_DBL_BUF */ | |||||
| { | |||||
| /* Double Buffer Endpoint */ | |||||
| ep->doublebuffer = 1U; | |||||
| /* Configure the PMA */ | |||||
| ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); | |||||
| ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); | |||||
| } | |||||
| return HAL_OK; | |||||
| } | |||||
| /** | |||||
| * @brief Software Device Connection, | |||||
| * this function is not required by USB OTG FS peripheral, it is used | |||||
| * only by USB Device FS peripheral. | |||||
| * @param hpcd: PCD handle | |||||
| * @param state: connection state (0 : disconnected / 1: connected) | |||||
| * @retval None | |||||
| */ | |||||
| __weak void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) | |||||
| { | |||||
| /* Prevent unused argument(s) compilation warning */ | |||||
| UNUSED(hpcd); | |||||
| UNUSED(state); | |||||
| /* NOTE : This function Should not be modified, when the callback is needed, | |||||
| the HAL_PCDEx_SetConnectionState could be implemented in the user file | |||||
| */ | |||||
| } | |||||
| #endif /* defined (USB) */ | |||||
| /** | |||||
| * @brief Send LPM message to user layer callback. | |||||
| * @param hpcd PCD handle | |||||
| * @param msg LPM message | |||||
| * @retval HAL status | |||||
| */ | |||||
| __weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg) | |||||
| { | |||||
| /* Prevent unused argument(s) compilation warning */ | |||||
| UNUSED(hpcd); | |||||
| UNUSED(msg); | |||||
| /* NOTE : This function should not be modified, when the callback is needed, | |||||
| the HAL_PCDEx_LPM_Callback could be implemented in the user file | |||||
| */ | |||||
| } | |||||
| /** | |||||
| * @brief Send BatteryCharging message to user layer callback. | |||||
| * @param hpcd PCD handle | |||||
| * @param msg LPM message | |||||
| * @retval HAL status | |||||
| */ | |||||
| __weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg) | |||||
| { | |||||
| /* Prevent unused argument(s) compilation warning */ | |||||
| UNUSED(hpcd); | |||||
| UNUSED(msg); | |||||
| /* NOTE : This function should not be modified, when the callback is needed, | |||||
| the HAL_PCDEx_BCD_Callback could be implemented in the user file | |||||
| */ | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #endif /* defined (USB) || defined (USB_OTG_FS) */ | |||||
| #endif /* HAL_PCD_MODULE_ENABLED */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,105 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usb_device.h | |||||
| * @version : v2.0_Cube | |||||
| * @brief : Header for usb_device.c file. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USB_DEVICE__H__ | |||||
| #define __USB_DEVICE__H__ | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "stm32f1xx.h" | |||||
| #include "stm32f1xx_hal.h" | |||||
| #include "usbd_def.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| /* USER CODE END INCLUDE */ | |||||
| /** @addtogroup USBD_OTG_DRIVER | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_DEVICE USBD_DEVICE | |||||
| * @brief Device file for Usb otg low level driver. | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables | |||||
| * @brief Public variables. | |||||
| * @{ | |||||
| */ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* USER CODE BEGIN PV */ | |||||
| /* USER CODE END PV */ | |||||
| /* Private function prototypes -----------------------------------------------*/ | |||||
| /* USER CODE BEGIN PFP */ | |||||
| /* USER CODE END PFP */ | |||||
| /* | |||||
| * -- Insert your variables declaration here -- | |||||
| */ | |||||
| /* USER CODE BEGIN VARIABLES */ | |||||
| /* USER CODE END VARIABLES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype | |||||
| * @brief Declaration of public functions for Usb device. | |||||
| * @{ | |||||
| */ | |||||
| /** USB Device initialization function. */ | |||||
| void MX_USB_DEVICE_Init(void); | |||||
| /* | |||||
| * -- Insert functions declaration here -- | |||||
| */ | |||||
| /* USER CODE BEGIN FD */ | |||||
| /* USER CODE END FD */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USB_DEVICE__H__ */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,132 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_cdc_if.h | |||||
| * @version : v2.0_Cube | |||||
| * @brief : Header for usbd_cdc_if.c file. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_CDC_IF_H__ | |||||
| #define __USBD_CDC_IF_H__ | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_cdc.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| #include "drivers/uart.h" | |||||
| /* USER CODE END INCLUDE */ | |||||
| /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY | |||||
| * @brief For Usb device. | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF USBD_CDC_IF | |||||
| * @brief Usb VCP device module | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines | |||||
| * @brief Defines. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_DEFINES */ | |||||
| /* USER CODE END EXPORTED_DEFINES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types | |||||
| * @brief Types. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_TYPES */ | |||||
| /* USER CODE END EXPORTED_TYPES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros | |||||
| * @brief Aliases. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_MACRO */ | |||||
| /* USER CODE END EXPORTED_MACRO */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables | |||||
| * @brief Public variables. | |||||
| * @{ | |||||
| */ | |||||
| /** CDC Interface callback. */ | |||||
| extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; | |||||
| /* USER CODE BEGIN EXPORTED_VARIABLES */ | |||||
| uint8_t usbrcvdflag; | |||||
| uint8_t usbcdcdata[UARTBUFLEN]; | |||||
| uint16_t usbcdcidx; | |||||
| /* USER CODE END EXPORTED_VARIABLES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype | |||||
| * @brief Public functions declaration. | |||||
| * @{ | |||||
| */ | |||||
| uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); | |||||
| /* USER CODE BEGIN EXPORTED_FUNCTIONS */ | |||||
| /* USER CODE END EXPORTED_FUNCTIONS */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_CDC_IF_H__ */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,177 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_conf.h | |||||
| * @version : v2.0_Cube | |||||
| * @brief : Header for usbd_conf.c file. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_CONF__H__ | |||||
| #define __USBD_CONF__H__ | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include <stdio.h> | |||||
| #include <stdlib.h> | |||||
| #include <string.h> | |||||
| #include "main.h" | |||||
| #include "stm32f1xx.h" | |||||
| #include "stm32f1xx_hal.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| /* USER CODE END INCLUDE */ | |||||
| /** @addtogroup USBD_OTG_DRIVER | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CONF USBD_CONF | |||||
| * @brief Configuration file for Usb otg low level driver. | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables | |||||
| * @brief Public variables. | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines | |||||
| * @brief Defines for configuration of the Usb device. | |||||
| * @{ | |||||
| */ | |||||
| /*---------- -----------*/ | |||||
| #define USBD_MAX_NUM_INTERFACES 1 | |||||
| /*---------- -----------*/ | |||||
| #define USBD_MAX_NUM_CONFIGURATION 1 | |||||
| /*---------- -----------*/ | |||||
| #define USBD_MAX_STR_DESC_SIZ 512 | |||||
| /*---------- -----------*/ | |||||
| #define USBD_DEBUG_LEVEL 0 | |||||
| /*---------- -----------*/ | |||||
| #define USBD_SELF_POWERED 1 | |||||
| /*---------- -----------*/ | |||||
| #define MAX_STATIC_ALLOC_SIZE 512 | |||||
| /****************************************/ | |||||
| /* #define for FS and HS identification */ | |||||
| #define DEVICE_FS 0 | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros | |||||
| * @brief Aliases. | |||||
| * @{ | |||||
| */ | |||||
| /* Memory management macros */ | |||||
| /** Alias for memory allocation. */ | |||||
| #define USBD_malloc (uint32_t *)USBD_static_malloc | |||||
| /** Alias for memory release. */ | |||||
| #define USBD_free USBD_static_free | |||||
| /** Alias for memory set. */ | |||||
| #define USBD_memset /* Not used */ | |||||
| /** Alias for memory copy. */ | |||||
| #define USBD_memcpy /* Not used */ | |||||
| /** Alias for delay. */ | |||||
| #define USBD_Delay HAL_Delay | |||||
| /* For footprint reasons and since only one allocation is handled in the HID class | |||||
| driver, the malloc/free is changed into a static allocation method */ | |||||
| void *USBD_static_malloc(uint32_t size); | |||||
| void USBD_static_free(void *p); | |||||
| /* DEBUG macros */ | |||||
| #if (USBD_DEBUG_LEVEL > 0) | |||||
| #define USBD_UsrLog(...) printf(__VA_ARGS__);\ | |||||
| printf("\n"); | |||||
| #else | |||||
| #define USBD_UsrLog(...) | |||||
| #endif | |||||
| #if (USBD_DEBUG_LEVEL > 1) | |||||
| #define USBD_ErrLog(...) printf("ERROR: ") ;\ | |||||
| printf(__VA_ARGS__);\ | |||||
| printf("\n"); | |||||
| #else | |||||
| #define USBD_ErrLog(...) | |||||
| #endif | |||||
| #if (USBD_DEBUG_LEVEL > 2) | |||||
| #define USBD_DbgLog(...) printf("DEBUG : ") ;\ | |||||
| printf(__VA_ARGS__);\ | |||||
| printf("\n"); | |||||
| #else | |||||
| #define USBD_DbgLog(...) | |||||
| #endif | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types | |||||
| * @brief Types. | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype | |||||
| * @brief Declaration of public functions for Usb device. | |||||
| * @{ | |||||
| */ | |||||
| /* Exported functions -------------------------------------------------------*/ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_CONF__H__ */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,145 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_desc.c | |||||
| * @version : v2.0_Cube | |||||
| * @brief : Header for usbd_conf.c file. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_DESC__C__ | |||||
| #define __USBD_DESC__C__ | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_def.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| /* USER CODE END INCLUDE */ | |||||
| /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_DESC USBD_DESC | |||||
| * @brief Usb device descriptors module. | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants | |||||
| * @brief Constants. | |||||
| * @{ | |||||
| */ | |||||
| #define DEVICE_ID1 (UID_BASE) | |||||
| #define DEVICE_ID2 (UID_BASE + 0x4) | |||||
| #define DEVICE_ID3 (UID_BASE + 0x8) | |||||
| #define USB_SIZ_STRING_SERIAL 0x1A | |||||
| /* USER CODE BEGIN EXPORTED_CONSTANTS */ | |||||
| /* USER CODE END EXPORTED_CONSTANTS */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines | |||||
| * @brief Defines. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_DEFINES */ | |||||
| /* USER CODE END EXPORTED_DEFINES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions | |||||
| * @brief Types. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_TYPES */ | |||||
| /* USER CODE END EXPORTED_TYPES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros | |||||
| * @brief Aliases. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_MACRO */ | |||||
| /* USER CODE END EXPORTED_MACRO */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables | |||||
| * @brief Public variables. | |||||
| * @{ | |||||
| */ | |||||
| /** Descriptor for the Usb device. */ | |||||
| extern USBD_DescriptorsTypeDef FS_Desc; | |||||
| /* USER CODE BEGIN EXPORTED_VARIABLES */ | |||||
| /* USER CODE END EXPORTED_VARIABLES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype | |||||
| * @brief Public functions declaration. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN EXPORTED_FUNCTIONS */ | |||||
| /* USER CODE END EXPORTED_FUNCTIONS */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_DESC__C__ */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,179 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_cdc.h | |||||
| * @author MCD Application Team | |||||
| * @brief header file for the usbd_cdc.c file. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USB_CDC_H | |||||
| #define __USB_CDC_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_ioreq.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup usbd_cdc | |||||
| * @brief This file is the Header file for usbd_cdc.c | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup usbd_cdc_Exported_Defines | |||||
| * @{ | |||||
| */ | |||||
| #define CDC_IN_EP 0x81U /* EP1 for data IN */ | |||||
| #define CDC_OUT_EP 0x01U /* EP1 for data OUT */ | |||||
| #define CDC_CMD_EP 0x82U /* EP2 for CDC commands */ | |||||
| #ifndef CDC_HS_BINTERVAL | |||||
| #define CDC_HS_BINTERVAL 0x10U | |||||
| #endif /* CDC_HS_BINTERVAL */ | |||||
| #ifndef CDC_FS_BINTERVAL | |||||
| #define CDC_FS_BINTERVAL 0x10U | |||||
| #endif /* CDC_FS_BINTERVAL */ | |||||
| /* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */ | |||||
| #define CDC_DATA_HS_MAX_PACKET_SIZE 512U /* Endpoint IN & OUT Packet size */ | |||||
| #define CDC_DATA_FS_MAX_PACKET_SIZE 64U /* Endpoint IN & OUT Packet size */ | |||||
| #define CDC_CMD_PACKET_SIZE 8U /* Control Endpoint Packet size */ | |||||
| #define USB_CDC_CONFIG_DESC_SIZ 67U | |||||
| #define CDC_DATA_HS_IN_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE | |||||
| #define CDC_DATA_HS_OUT_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE | |||||
| #define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE | |||||
| #define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE | |||||
| /*---------------------------------------------------------------------*/ | |||||
| /* CDC definitions */ | |||||
| /*---------------------------------------------------------------------*/ | |||||
| #define CDC_SEND_ENCAPSULATED_COMMAND 0x00U | |||||
| #define CDC_GET_ENCAPSULATED_RESPONSE 0x01U | |||||
| #define CDC_SET_COMM_FEATURE 0x02U | |||||
| #define CDC_GET_COMM_FEATURE 0x03U | |||||
| #define CDC_CLEAR_COMM_FEATURE 0x04U | |||||
| #define CDC_SET_LINE_CODING 0x20U | |||||
| #define CDC_GET_LINE_CODING 0x21U | |||||
| #define CDC_SET_CONTROL_LINE_STATE 0x22U | |||||
| #define CDC_SEND_BREAK 0x23U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| typedef struct | |||||
| { | |||||
| uint32_t bitrate; | |||||
| uint8_t format; | |||||
| uint8_t paritytype; | |||||
| uint8_t datatype; | |||||
| } USBD_CDC_LineCodingTypeDef; | |||||
| typedef struct _USBD_CDC_Itf | |||||
| { | |||||
| int8_t (* Init)(void); | |||||
| int8_t (* DeInit)(void); | |||||
| int8_t (* Control)(uint8_t cmd, uint8_t *pbuf, uint16_t length); | |||||
| int8_t (* Receive)(uint8_t *Buf, uint32_t *Len); | |||||
| } USBD_CDC_ItfTypeDef; | |||||
| typedef struct | |||||
| { | |||||
| uint32_t data[CDC_DATA_HS_MAX_PACKET_SIZE / 4U]; /* Force 32bits alignment */ | |||||
| uint8_t CmdOpCode; | |||||
| uint8_t CmdLength; | |||||
| uint8_t *RxBuffer; | |||||
| uint8_t *TxBuffer; | |||||
| uint32_t RxLength; | |||||
| uint32_t TxLength; | |||||
| __IO uint32_t TxState; | |||||
| __IO uint32_t RxState; | |||||
| } | |||||
| USBD_CDC_HandleTypeDef; | |||||
| /** @defgroup USBD_CORE_Exported_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_Variables | |||||
| * @{ | |||||
| */ | |||||
| extern USBD_ClassTypeDef USBD_CDC; | |||||
| #define USBD_CDC_CLASS &USBD_CDC | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USB_CORE_Exported_Functions | |||||
| * @{ | |||||
| */ | |||||
| uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, | |||||
| USBD_CDC_ItfTypeDef *fops); | |||||
| uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuff, | |||||
| uint16_t length); | |||||
| uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuff); | |||||
| uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev); | |||||
| uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USB_CDC_H */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,945 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_cdc.c | |||||
| * @author MCD Application Team | |||||
| * @brief This file provides the high layer firmware functions to manage the | |||||
| * following functionalities of the USB CDC Class: | |||||
| * - Initialization and Configuration of high and low layer | |||||
| * - Enumeration as CDC Device (and enumeration for each implemented memory interface) | |||||
| * - OUT/IN data transfer | |||||
| * - Command IN transfer (class requests management) | |||||
| * - Error management | |||||
| * | |||||
| * @verbatim | |||||
| * | |||||
| * =================================================================== | |||||
| * CDC Class Driver Description | |||||
| * =================================================================== | |||||
| * This driver manages the "Universal Serial Bus Class Definitions for Communications Devices | |||||
| * Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus | |||||
| * Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007" | |||||
| * This driver implements the following aspects of the specification: | |||||
| * - Device descriptor management | |||||
| * - Configuration descriptor management | |||||
| * - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN) | |||||
| * - Requests management (as described in section 6.2 in specification) | |||||
| * - Abstract Control Model compliant | |||||
| * - Union Functional collection (using 1 IN endpoint for control) | |||||
| * - Data interface class | |||||
| * | |||||
| * These aspects may be enriched or modified for a specific user application. | |||||
| * | |||||
| * This driver doesn't implement the following aspects of the specification | |||||
| * (but it is possible to manage these features with some modifications on this driver): | |||||
| * - Any class-specific aspect relative to communication classes should be managed by user application. | |||||
| * - All communication classes other than PSTN are not managed | |||||
| * | |||||
| * @endverbatim | |||||
| * | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* BSPDependencies | |||||
| - "stm32xxxxx_{eval}{discovery}{nucleo_144}.c" | |||||
| - "stm32xxxxx_{eval}{discovery}_io.c" | |||||
| EndBSPDependencies */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_cdc.h" | |||||
| #include "usbd_ctlreq.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CDC | |||||
| * @brief usbd core module | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_FunctionPrototypes | |||||
| * @{ | |||||
| */ | |||||
| static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, | |||||
| uint8_t cfgidx); | |||||
| static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, | |||||
| uint8_t cfgidx); | |||||
| static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum); | |||||
| static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum); | |||||
| static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev); | |||||
| static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length); | |||||
| static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length); | |||||
| static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length); | |||||
| static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length); | |||||
| uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length); | |||||
| /* USB Standard Device Descriptor */ | |||||
| __ALIGN_BEGIN static uint8_t USBD_CDC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = | |||||
| { | |||||
| USB_LEN_DEV_QUALIFIER_DESC, | |||||
| USB_DESC_TYPE_DEVICE_QUALIFIER, | |||||
| 0x00, | |||||
| 0x02, | |||||
| 0x00, | |||||
| 0x00, | |||||
| 0x00, | |||||
| 0x40, | |||||
| 0x01, | |||||
| 0x00, | |||||
| }; | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_Variables | |||||
| * @{ | |||||
| */ | |||||
| /* CDC interface class callbacks structure */ | |||||
| USBD_ClassTypeDef USBD_CDC = | |||||
| { | |||||
| USBD_CDC_Init, | |||||
| USBD_CDC_DeInit, | |||||
| USBD_CDC_Setup, | |||||
| NULL, /* EP0_TxSent, */ | |||||
| USBD_CDC_EP0_RxReady, | |||||
| USBD_CDC_DataIn, | |||||
| USBD_CDC_DataOut, | |||||
| NULL, | |||||
| NULL, | |||||
| NULL, | |||||
| USBD_CDC_GetHSCfgDesc, | |||||
| USBD_CDC_GetFSCfgDesc, | |||||
| USBD_CDC_GetOtherSpeedCfgDesc, | |||||
| USBD_CDC_GetDeviceQualifierDescriptor, | |||||
| }; | |||||
| /* USB CDC device Configuration Descriptor */ | |||||
| __ALIGN_BEGIN uint8_t USBD_CDC_CfgHSDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = | |||||
| { | |||||
| /*Configuration Descriptor*/ | |||||
| 0x09, /* bLength: Configuration Descriptor size */ | |||||
| USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ | |||||
| USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength:no of returned bytes */ | |||||
| 0x00, | |||||
| 0x02, /* bNumInterfaces: 2 interface */ | |||||
| 0x01, /* bConfigurationValue: Configuration value */ | |||||
| 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ | |||||
| 0xC0, /* bmAttributes: self powered */ | |||||
| 0x32, /* MaxPower 0 mA */ | |||||
| /*---------------------------------------------------------------------------*/ | |||||
| /*Interface Descriptor */ | |||||
| 0x09, /* bLength: Interface Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */ | |||||
| /* Interface descriptor type */ | |||||
| 0x00, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x01, /* bNumEndpoints: One endpoints used */ | |||||
| 0x02, /* bInterfaceClass: Communication Interface Class */ | |||||
| 0x02, /* bInterfaceSubClass: Abstract Control Model */ | |||||
| 0x01, /* bInterfaceProtocol: Common AT commands */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Header Functional Descriptor*/ | |||||
| 0x05, /* bLength: Endpoint Descriptor size */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x00, /* bDescriptorSubtype: Header Func Desc */ | |||||
| 0x10, /* bcdCDC: spec release number */ | |||||
| 0x01, | |||||
| /*Call Management Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x01, /* bDescriptorSubtype: Call Management Func Desc */ | |||||
| 0x00, /* bmCapabilities: D0+D1 */ | |||||
| 0x01, /* bDataInterface: 1 */ | |||||
| /*ACM Functional Descriptor*/ | |||||
| 0x04, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ | |||||
| 0x02, /* bmCapabilities */ | |||||
| /*Union Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x06, /* bDescriptorSubtype: Union func desc */ | |||||
| 0x00, /* bMasterInterface: Communication class interface */ | |||||
| 0x01, /* bSlaveInterface0: Data Class Interface */ | |||||
| /*Endpoint 2 Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_CMD_EP, /* bEndpointAddress */ | |||||
| 0x03, /* bmAttributes: Interrupt */ | |||||
| LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_CMD_PACKET_SIZE), | |||||
| CDC_HS_BINTERVAL, /* bInterval: */ | |||||
| /*---------------------------------------------------------------------------*/ | |||||
| /*Data class interface descriptor*/ | |||||
| 0x09, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */ | |||||
| 0x01, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x02, /* bNumEndpoints: Two endpoints used */ | |||||
| 0x0A, /* bInterfaceClass: CDC */ | |||||
| 0x00, /* bInterfaceSubClass: */ | |||||
| 0x00, /* bInterfaceProtocol: */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Endpoint OUT Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_OUT_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| LOBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), | |||||
| 0x00, /* bInterval: ignore for Bulk transfer */ | |||||
| /*Endpoint IN Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_IN_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| LOBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), | |||||
| 0x00 /* bInterval: ignore for Bulk transfer */ | |||||
| } ; | |||||
| /* USB CDC device Configuration Descriptor */ | |||||
| __ALIGN_BEGIN uint8_t USBD_CDC_CfgFSDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = | |||||
| { | |||||
| /*Configuration Descriptor*/ | |||||
| 0x09, /* bLength: Configuration Descriptor size */ | |||||
| USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ | |||||
| USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength:no of returned bytes */ | |||||
| 0x00, | |||||
| 0x02, /* bNumInterfaces: 2 interface */ | |||||
| 0x01, /* bConfigurationValue: Configuration value */ | |||||
| 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ | |||||
| 0xC0, /* bmAttributes: self powered */ | |||||
| 0x32, /* MaxPower 0 mA */ | |||||
| /*---------------------------------------------------------------------------*/ | |||||
| /*Interface Descriptor */ | |||||
| 0x09, /* bLength: Interface Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */ | |||||
| /* Interface descriptor type */ | |||||
| 0x00, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x01, /* bNumEndpoints: One endpoints used */ | |||||
| 0x02, /* bInterfaceClass: Communication Interface Class */ | |||||
| 0x02, /* bInterfaceSubClass: Abstract Control Model */ | |||||
| 0x01, /* bInterfaceProtocol: Common AT commands */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Header Functional Descriptor*/ | |||||
| 0x05, /* bLength: Endpoint Descriptor size */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x00, /* bDescriptorSubtype: Header Func Desc */ | |||||
| 0x10, /* bcdCDC: spec release number */ | |||||
| 0x01, | |||||
| /*Call Management Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x01, /* bDescriptorSubtype: Call Management Func Desc */ | |||||
| 0x00, /* bmCapabilities: D0+D1 */ | |||||
| 0x01, /* bDataInterface: 1 */ | |||||
| /*ACM Functional Descriptor*/ | |||||
| 0x04, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ | |||||
| 0x02, /* bmCapabilities */ | |||||
| /*Union Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x06, /* bDescriptorSubtype: Union func desc */ | |||||
| 0x00, /* bMasterInterface: Communication class interface */ | |||||
| 0x01, /* bSlaveInterface0: Data Class Interface */ | |||||
| /*Endpoint 2 Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_CMD_EP, /* bEndpointAddress */ | |||||
| 0x03, /* bmAttributes: Interrupt */ | |||||
| LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_CMD_PACKET_SIZE), | |||||
| CDC_FS_BINTERVAL, /* bInterval: */ | |||||
| /*---------------------------------------------------------------------------*/ | |||||
| /*Data class interface descriptor*/ | |||||
| 0x09, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */ | |||||
| 0x01, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x02, /* bNumEndpoints: Two endpoints used */ | |||||
| 0x0A, /* bInterfaceClass: CDC */ | |||||
| 0x00, /* bInterfaceSubClass: */ | |||||
| 0x00, /* bInterfaceProtocol: */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Endpoint OUT Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_OUT_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), | |||||
| 0x00, /* bInterval: ignore for Bulk transfer */ | |||||
| /*Endpoint IN Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_IN_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), | |||||
| 0x00 /* bInterval: ignore for Bulk transfer */ | |||||
| } ; | |||||
| __ALIGN_BEGIN uint8_t USBD_CDC_OtherSpeedCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = | |||||
| { | |||||
| 0x09, /* bLength: Configuation Descriptor size */ | |||||
| USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, | |||||
| USB_CDC_CONFIG_DESC_SIZ, | |||||
| 0x00, | |||||
| 0x02, /* bNumInterfaces: 2 interfaces */ | |||||
| 0x01, /* bConfigurationValue: */ | |||||
| 0x04, /* iConfiguration: */ | |||||
| 0xC0, /* bmAttributes: */ | |||||
| 0x32, /* MaxPower 100 mA */ | |||||
| /*Interface Descriptor */ | |||||
| 0x09, /* bLength: Interface Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */ | |||||
| /* Interface descriptor type */ | |||||
| 0x00, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x01, /* bNumEndpoints: One endpoints used */ | |||||
| 0x02, /* bInterfaceClass: Communication Interface Class */ | |||||
| 0x02, /* bInterfaceSubClass: Abstract Control Model */ | |||||
| 0x01, /* bInterfaceProtocol: Common AT commands */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Header Functional Descriptor*/ | |||||
| 0x05, /* bLength: Endpoint Descriptor size */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x00, /* bDescriptorSubtype: Header Func Desc */ | |||||
| 0x10, /* bcdCDC: spec release number */ | |||||
| 0x01, | |||||
| /*Call Management Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x01, /* bDescriptorSubtype: Call Management Func Desc */ | |||||
| 0x00, /* bmCapabilities: D0+D1 */ | |||||
| 0x01, /* bDataInterface: 1 */ | |||||
| /*ACM Functional Descriptor*/ | |||||
| 0x04, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ | |||||
| 0x02, /* bmCapabilities */ | |||||
| /*Union Functional Descriptor*/ | |||||
| 0x05, /* bFunctionLength */ | |||||
| 0x24, /* bDescriptorType: CS_INTERFACE */ | |||||
| 0x06, /* bDescriptorSubtype: Union func desc */ | |||||
| 0x00, /* bMasterInterface: Communication class interface */ | |||||
| 0x01, /* bSlaveInterface0: Data Class Interface */ | |||||
| /*Endpoint 2 Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_CMD_EP, /* bEndpointAddress */ | |||||
| 0x03, /* bmAttributes: Interrupt */ | |||||
| LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */ | |||||
| HIBYTE(CDC_CMD_PACKET_SIZE), | |||||
| CDC_FS_BINTERVAL, /* bInterval: */ | |||||
| /*---------------------------------------------------------------------------*/ | |||||
| /*Data class interface descriptor*/ | |||||
| 0x09, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */ | |||||
| 0x01, /* bInterfaceNumber: Number of Interface */ | |||||
| 0x00, /* bAlternateSetting: Alternate setting */ | |||||
| 0x02, /* bNumEndpoints: Two endpoints used */ | |||||
| 0x0A, /* bInterfaceClass: CDC */ | |||||
| 0x00, /* bInterfaceSubClass: */ | |||||
| 0x00, /* bInterfaceProtocol: */ | |||||
| 0x00, /* iInterface: */ | |||||
| /*Endpoint OUT Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_OUT_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| 0x40, /* wMaxPacketSize: */ | |||||
| 0x00, | |||||
| 0x00, /* bInterval: ignore for Bulk transfer */ | |||||
| /*Endpoint IN Descriptor*/ | |||||
| 0x07, /* bLength: Endpoint Descriptor size */ | |||||
| USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ | |||||
| CDC_IN_EP, /* bEndpointAddress */ | |||||
| 0x02, /* bmAttributes: Bulk */ | |||||
| 0x40, /* wMaxPacketSize: */ | |||||
| 0x00, | |||||
| 0x00 /* bInterval */ | |||||
| }; | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_Private_Functions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @brief USBD_CDC_Init | |||||
| * Initialize the CDC interface | |||||
| * @param pdev: device instance | |||||
| * @param cfgidx: Configuration index | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) | |||||
| { | |||||
| uint8_t ret = 0U; | |||||
| USBD_CDC_HandleTypeDef *hcdc; | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| /* Open EP IN */ | |||||
| USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, | |||||
| CDC_DATA_HS_IN_PACKET_SIZE); | |||||
| pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; | |||||
| /* Open EP OUT */ | |||||
| USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, | |||||
| CDC_DATA_HS_OUT_PACKET_SIZE); | |||||
| pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; | |||||
| } | |||||
| else | |||||
| { | |||||
| /* Open EP IN */ | |||||
| USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, | |||||
| CDC_DATA_FS_IN_PACKET_SIZE); | |||||
| pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; | |||||
| /* Open EP OUT */ | |||||
| USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, | |||||
| CDC_DATA_FS_OUT_PACKET_SIZE); | |||||
| pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; | |||||
| } | |||||
| /* Open Command IN EP */ | |||||
| USBD_LL_OpenEP(pdev, CDC_CMD_EP, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); | |||||
| pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 1U; | |||||
| pdev->pClassData = USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); | |||||
| if (pdev->pClassData == NULL) | |||||
| { | |||||
| ret = 1U; | |||||
| } | |||||
| else | |||||
| { | |||||
| hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| /* Init physical Interface components */ | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init(); | |||||
| /* Init Xfer states */ | |||||
| hcdc->TxState = 0U; | |||||
| hcdc->RxState = 0U; | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| /* Prepare Out endpoint to receive next packet */ | |||||
| USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, | |||||
| CDC_DATA_HS_OUT_PACKET_SIZE); | |||||
| } | |||||
| else | |||||
| { | |||||
| /* Prepare Out endpoint to receive next packet */ | |||||
| USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, | |||||
| CDC_DATA_FS_OUT_PACKET_SIZE); | |||||
| } | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_Init | |||||
| * DeInitialize the CDC layer | |||||
| * @param pdev: device instance | |||||
| * @param cfgidx: Configuration index | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) | |||||
| { | |||||
| uint8_t ret = 0U; | |||||
| /* Close EP IN */ | |||||
| USBD_LL_CloseEP(pdev, CDC_IN_EP); | |||||
| pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 0U; | |||||
| /* Close EP OUT */ | |||||
| USBD_LL_CloseEP(pdev, CDC_OUT_EP); | |||||
| pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 0U; | |||||
| /* Close Command IN EP */ | |||||
| USBD_LL_CloseEP(pdev, CDC_CMD_EP); | |||||
| pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 0U; | |||||
| /* DeInit physical Interface components */ | |||||
| if (pdev->pClassData != NULL) | |||||
| { | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit(); | |||||
| USBD_free(pdev->pClassData); | |||||
| pdev->pClassData = NULL; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_Setup | |||||
| * Handle the CDC specific requests | |||||
| * @param pdev: instance | |||||
| * @param req: usb requests | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| uint8_t ifalt = 0U; | |||||
| uint16_t status_info = 0U; | |||||
| uint8_t ret = USBD_OK; | |||||
| switch (req->bmRequest & USB_REQ_TYPE_MASK) | |||||
| { | |||||
| case USB_REQ_TYPE_CLASS : | |||||
| if (req->wLength) | |||||
| { | |||||
| if (req->bmRequest & 0x80U) | |||||
| { | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, | |||||
| (uint8_t *)(void *)hcdc->data, | |||||
| req->wLength); | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); | |||||
| } | |||||
| else | |||||
| { | |||||
| hcdc->CmdOpCode = req->bRequest; | |||||
| hcdc->CmdLength = (uint8_t)req->wLength; | |||||
| USBD_CtlPrepareRx(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, | |||||
| (uint8_t *)(void *)req, 0U); | |||||
| } | |||||
| break; | |||||
| case USB_REQ_TYPE_STANDARD: | |||||
| switch (req->bRequest) | |||||
| { | |||||
| case USB_REQ_GET_STATUS: | |||||
| if (pdev->dev_state == USBD_STATE_CONFIGURED) | |||||
| { | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| ret = USBD_FAIL; | |||||
| } | |||||
| break; | |||||
| case USB_REQ_GET_INTERFACE: | |||||
| if (pdev->dev_state == USBD_STATE_CONFIGURED) | |||||
| { | |||||
| USBD_CtlSendData(pdev, &ifalt, 1U); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| ret = USBD_FAIL; | |||||
| } | |||||
| break; | |||||
| case USB_REQ_SET_INTERFACE: | |||||
| if (pdev->dev_state != USBD_STATE_CONFIGURED) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| ret = USBD_FAIL; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| ret = USBD_FAIL; | |||||
| break; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| ret = USBD_FAIL; | |||||
| break; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_DataIn | |||||
| * Data sent on non-control IN endpoint | |||||
| * @param pdev: device instance | |||||
| * @param epnum: endpoint number | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassData; | |||||
| PCD_HandleTypeDef *hpcd = pdev->pData; | |||||
| if (pdev->pClassData != NULL) | |||||
| { | |||||
| if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U)) | |||||
| { | |||||
| /* Update the packet total length */ | |||||
| pdev->ep_in[epnum].total_length = 0U; | |||||
| /* Send ZLP */ | |||||
| USBD_LL_Transmit(pdev, epnum, NULL, 0U); | |||||
| } | |||||
| else | |||||
| { | |||||
| hcdc->TxState = 0U; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| else | |||||
| { | |||||
| return USBD_FAIL; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_DataOut | |||||
| * Data received on non-control Out endpoint | |||||
| * @param pdev: device instance | |||||
| * @param epnum: endpoint number | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| /* Get the received data length */ | |||||
| hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); | |||||
| /* USB data will be immediately processed, this allow next USB traffic being | |||||
| NAKed till the end of the application Xfer */ | |||||
| if (pdev->pClassData != NULL) | |||||
| { | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength); | |||||
| return USBD_OK; | |||||
| } | |||||
| else | |||||
| { | |||||
| return USBD_FAIL; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_EP0_RxReady | |||||
| * Handle EP0 Rx Ready event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| if ((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFFU)) | |||||
| { | |||||
| ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, | |||||
| (uint8_t *)(void *)hcdc->data, | |||||
| (uint16_t)hcdc->CmdLength); | |||||
| hcdc->CmdOpCode = 0xFFU; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_GetFSCfgDesc | |||||
| * Return configuration descriptor | |||||
| * @param speed : current device speed | |||||
| * @param length : pointer data length | |||||
| * @retval pointer to descriptor buffer | |||||
| */ | |||||
| static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) | |||||
| { | |||||
| *length = sizeof(USBD_CDC_CfgFSDesc); | |||||
| return USBD_CDC_CfgFSDesc; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_GetHSCfgDesc | |||||
| * Return configuration descriptor | |||||
| * @param speed : current device speed | |||||
| * @param length : pointer data length | |||||
| * @retval pointer to descriptor buffer | |||||
| */ | |||||
| static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) | |||||
| { | |||||
| *length = sizeof(USBD_CDC_CfgHSDesc); | |||||
| return USBD_CDC_CfgHSDesc; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_GetCfgDesc | |||||
| * Return configuration descriptor | |||||
| * @param speed : current device speed | |||||
| * @param length : pointer data length | |||||
| * @retval pointer to descriptor buffer | |||||
| */ | |||||
| static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) | |||||
| { | |||||
| *length = sizeof(USBD_CDC_OtherSpeedCfgDesc); | |||||
| return USBD_CDC_OtherSpeedCfgDesc; | |||||
| } | |||||
| /** | |||||
| * @brief DeviceQualifierDescriptor | |||||
| * return Device Qualifier descriptor | |||||
| * @param length : pointer data length | |||||
| * @retval pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) | |||||
| { | |||||
| *length = sizeof(USBD_CDC_DeviceQualifierDesc); | |||||
| return USBD_CDC_DeviceQualifierDesc; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_RegisterInterface | |||||
| * @param pdev: device instance | |||||
| * @param fops: CD Interface callback | |||||
| * @retval status | |||||
| */ | |||||
| uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, | |||||
| USBD_CDC_ItfTypeDef *fops) | |||||
| { | |||||
| uint8_t ret = USBD_FAIL; | |||||
| if (fops != NULL) | |||||
| { | |||||
| pdev->pUserData = fops; | |||||
| ret = USBD_OK; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_SetTxBuffer | |||||
| * @param pdev: device instance | |||||
| * @param pbuff: Tx Buffer | |||||
| * @retval status | |||||
| */ | |||||
| uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuff, | |||||
| uint16_t length) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| hcdc->TxBuffer = pbuff; | |||||
| hcdc->TxLength = length; | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_SetRxBuffer | |||||
| * @param pdev: device instance | |||||
| * @param pbuff: Rx Buffer | |||||
| * @retval status | |||||
| */ | |||||
| uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuff) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| hcdc->RxBuffer = pbuff; | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_TransmitPacket | |||||
| * Transmit packet on IN endpoint | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| if (pdev->pClassData != NULL) | |||||
| { | |||||
| if (hcdc->TxState == 0U) | |||||
| { | |||||
| /* Tx Transfer in progress */ | |||||
| hcdc->TxState = 1U; | |||||
| /* Update the packet total length */ | |||||
| pdev->ep_in[CDC_IN_EP & 0xFU].total_length = hcdc->TxLength; | |||||
| /* Transmit next packet */ | |||||
| USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, | |||||
| (uint16_t)hcdc->TxLength); | |||||
| return USBD_OK; | |||||
| } | |||||
| else | |||||
| { | |||||
| return USBD_BUSY; | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| return USBD_FAIL; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CDC_ReceivePacket | |||||
| * prepare OUT Endpoint for reception | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; | |||||
| /* Suspend or Resume USB Out process */ | |||||
| if (pdev->pClassData != NULL) | |||||
| { | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| /* Prepare Out endpoint to receive next packet */ | |||||
| USBD_LL_PrepareReceive(pdev, | |||||
| CDC_OUT_EP, | |||||
| hcdc->RxBuffer, | |||||
| CDC_DATA_HS_OUT_PACKET_SIZE); | |||||
| } | |||||
| else | |||||
| { | |||||
| /* Prepare Out endpoint to receive next packet */ | |||||
| USBD_LL_PrepareReceive(pdev, | |||||
| CDC_OUT_EP, | |||||
| hcdc->RxBuffer, | |||||
| CDC_DATA_FS_OUT_PACKET_SIZE); | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| else | |||||
| { | |||||
| return USBD_FAIL; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,161 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_core.h | |||||
| * @author MCD Application Team | |||||
| * @brief Header file for usbd_core.c file | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_CORE_H | |||||
| #define __USBD_CORE_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_conf.h" | |||||
| #include "usbd_def.h" | |||||
| #include "usbd_ioreq.h" | |||||
| #include "usbd_ctlreq.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CORE | |||||
| * @brief This file is the Header file for usbd_core.c file | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_Defines | |||||
| * @{ | |||||
| */ | |||||
| #ifndef USBD_DEBUG_LEVEL | |||||
| #define USBD_DEBUG_LEVEL 0U | |||||
| #endif /* USBD_DEBUG_LEVEL */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_Variables | |||||
| * @{ | |||||
| */ | |||||
| #define USBD_SOF USBD_LL_SOF | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Exported_FunctionsPrototype | |||||
| * @{ | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id); | |||||
| USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass); | |||||
| USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); | |||||
| USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); | |||||
| USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup); | |||||
| USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); | |||||
| USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); | |||||
| USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed); | |||||
| USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev); | |||||
| /* USBD Low Level Driver */ | |||||
| USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, | |||||
| uint8_t ep_addr, | |||||
| uint8_t ep_type, | |||||
| uint16_t ep_mps); | |||||
| USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr); | |||||
| USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, | |||||
| uint8_t ep_addr, | |||||
| uint8_t *pbuf, | |||||
| uint16_t size); | |||||
| USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, | |||||
| uint8_t ep_addr, | |||||
| uint8_t *pbuf, | |||||
| uint16_t size); | |||||
| uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| void USBD_LL_Delay(uint32_t Delay); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_CORE_H */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,105 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_req.h | |||||
| * @author MCD Application Team | |||||
| * @brief Header file for the usbd_req.c file | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USB_REQUEST_H | |||||
| #define __USB_REQUEST_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_def.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_REQ | |||||
| * @brief header file for the usbd_req.c file | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Exported_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Exported_Types | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Exported_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Exported_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Exported_FunctionsPrototype | |||||
| * @{ | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); | |||||
| USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); | |||||
| USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); | |||||
| void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); | |||||
| void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata); | |||||
| void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USB_REQUEST_H */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,348 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_def.h | |||||
| * @author MCD Application Team | |||||
| * @brief General defines for the usb device library | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_DEF_H | |||||
| #define __USBD_DEF_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_conf.h" | |||||
| /** @addtogroup STM32_USBD_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USB_DEF | |||||
| * @brief general defines for the usb device library file | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USB_DEF_Exported_Defines | |||||
| * @{ | |||||
| */ | |||||
| #ifndef NULL | |||||
| #define NULL 0U | |||||
| #endif /* NULL */ | |||||
| #ifndef USBD_MAX_NUM_INTERFACES | |||||
| #define USBD_MAX_NUM_INTERFACES 1U | |||||
| #endif /* USBD_MAX_NUM_CONFIGURATION */ | |||||
| #ifndef USBD_MAX_NUM_CONFIGURATION | |||||
| #define USBD_MAX_NUM_CONFIGURATION 1U | |||||
| #endif /* USBD_MAX_NUM_CONFIGURATION */ | |||||
| #ifndef USBD_LPM_ENABLED | |||||
| #define USBD_LPM_ENABLED 0U | |||||
| #endif /* USBD_LPM_ENABLED */ | |||||
| #ifndef USBD_SELF_POWERED | |||||
| #define USBD_SELF_POWERED 1U | |||||
| #endif /*USBD_SELF_POWERED */ | |||||
| #ifndef USBD_SUPPORT_USER_STRING_DESC | |||||
| #define USBD_SUPPORT_USER_STRING_DESC 0U | |||||
| #endif /* USBD_SUPPORT_USER_STRING_DESC */ | |||||
| #define USB_LEN_DEV_QUALIFIER_DESC 0x0AU | |||||
| #define USB_LEN_DEV_DESC 0x12U | |||||
| #define USB_LEN_CFG_DESC 0x09U | |||||
| #define USB_LEN_IF_DESC 0x09U | |||||
| #define USB_LEN_EP_DESC 0x07U | |||||
| #define USB_LEN_OTG_DESC 0x03U | |||||
| #define USB_LEN_LANGID_STR_DESC 0x04U | |||||
| #define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09U | |||||
| #define USBD_IDX_LANGID_STR 0x00U | |||||
| #define USBD_IDX_MFC_STR 0x01U | |||||
| #define USBD_IDX_PRODUCT_STR 0x02U | |||||
| #define USBD_IDX_SERIAL_STR 0x03U | |||||
| #define USBD_IDX_CONFIG_STR 0x04U | |||||
| #define USBD_IDX_INTERFACE_STR 0x05U | |||||
| #define USB_REQ_TYPE_STANDARD 0x00U | |||||
| #define USB_REQ_TYPE_CLASS 0x20U | |||||
| #define USB_REQ_TYPE_VENDOR 0x40U | |||||
| #define USB_REQ_TYPE_MASK 0x60U | |||||
| #define USB_REQ_RECIPIENT_DEVICE 0x00U | |||||
| #define USB_REQ_RECIPIENT_INTERFACE 0x01U | |||||
| #define USB_REQ_RECIPIENT_ENDPOINT 0x02U | |||||
| #define USB_REQ_RECIPIENT_MASK 0x03U | |||||
| #define USB_REQ_GET_STATUS 0x00U | |||||
| #define USB_REQ_CLEAR_FEATURE 0x01U | |||||
| #define USB_REQ_SET_FEATURE 0x03U | |||||
| #define USB_REQ_SET_ADDRESS 0x05U | |||||
| #define USB_REQ_GET_DESCRIPTOR 0x06U | |||||
| #define USB_REQ_SET_DESCRIPTOR 0x07U | |||||
| #define USB_REQ_GET_CONFIGURATION 0x08U | |||||
| #define USB_REQ_SET_CONFIGURATION 0x09U | |||||
| #define USB_REQ_GET_INTERFACE 0x0AU | |||||
| #define USB_REQ_SET_INTERFACE 0x0BU | |||||
| #define USB_REQ_SYNCH_FRAME 0x0CU | |||||
| #define USB_DESC_TYPE_DEVICE 0x01U | |||||
| #define USB_DESC_TYPE_CONFIGURATION 0x02U | |||||
| #define USB_DESC_TYPE_STRING 0x03U | |||||
| #define USB_DESC_TYPE_INTERFACE 0x04U | |||||
| #define USB_DESC_TYPE_ENDPOINT 0x05U | |||||
| #define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U | |||||
| #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U | |||||
| #define USB_DESC_TYPE_BOS 0x0FU | |||||
| #define USB_CONFIG_REMOTE_WAKEUP 0x02U | |||||
| #define USB_CONFIG_SELF_POWERED 0x01U | |||||
| #define USB_FEATURE_EP_HALT 0x00U | |||||
| #define USB_FEATURE_REMOTE_WAKEUP 0x01U | |||||
| #define USB_FEATURE_TEST_MODE 0x02U | |||||
| #define USB_DEVICE_CAPABITY_TYPE 0x10U | |||||
| #define USB_HS_MAX_PACKET_SIZE 512U | |||||
| #define USB_FS_MAX_PACKET_SIZE 64U | |||||
| #define USB_MAX_EP0_SIZE 64U | |||||
| /* Device Status */ | |||||
| #define USBD_STATE_DEFAULT 0x01U | |||||
| #define USBD_STATE_ADDRESSED 0x02U | |||||
| #define USBD_STATE_CONFIGURED 0x03U | |||||
| #define USBD_STATE_SUSPENDED 0x04U | |||||
| /* EP0 State */ | |||||
| #define USBD_EP0_IDLE 0x00U | |||||
| #define USBD_EP0_SETUP 0x01U | |||||
| #define USBD_EP0_DATA_IN 0x02U | |||||
| #define USBD_EP0_DATA_OUT 0x03U | |||||
| #define USBD_EP0_STATUS_IN 0x04U | |||||
| #define USBD_EP0_STATUS_OUT 0x05U | |||||
| #define USBD_EP0_STALL 0x06U | |||||
| #define USBD_EP_TYPE_CTRL 0x00U | |||||
| #define USBD_EP_TYPE_ISOC 0x01U | |||||
| #define USBD_EP_TYPE_BULK 0x02U | |||||
| #define USBD_EP_TYPE_INTR 0x03U | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DEF_Exported_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| typedef struct usb_setup_req | |||||
| { | |||||
| uint8_t bmRequest; | |||||
| uint8_t bRequest; | |||||
| uint16_t wValue; | |||||
| uint16_t wIndex; | |||||
| uint16_t wLength; | |||||
| } USBD_SetupReqTypedef; | |||||
| struct _USBD_HandleTypeDef; | |||||
| typedef struct _Device_cb | |||||
| { | |||||
| uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); | |||||
| uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); | |||||
| /* Control Endpoints*/ | |||||
| uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); | |||||
| uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev); | |||||
| uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev); | |||||
| /* Class Specific Endpoints*/ | |||||
| uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev); | |||||
| uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); | |||||
| uint8_t *(*GetHSConfigDescriptor)(uint16_t *length); | |||||
| uint8_t *(*GetFSConfigDescriptor)(uint16_t *length); | |||||
| uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length); | |||||
| uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length); | |||||
| #if (USBD_SUPPORT_USER_STRING_DESC == 1U) | |||||
| uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length); | |||||
| #endif | |||||
| } USBD_ClassTypeDef; | |||||
| /* Following USB Device Speed */ | |||||
| typedef enum | |||||
| { | |||||
| USBD_SPEED_HIGH = 0U, | |||||
| USBD_SPEED_FULL = 1U, | |||||
| USBD_SPEED_LOW = 2U, | |||||
| } USBD_SpeedTypeDef; | |||||
| /* Following USB Device status */ | |||||
| typedef enum | |||||
| { | |||||
| USBD_OK = 0U, | |||||
| USBD_BUSY, | |||||
| USBD_FAIL, | |||||
| } USBD_StatusTypeDef; | |||||
| /* USB Device descriptors structure */ | |||||
| typedef struct | |||||
| { | |||||
| uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| #if (USBD_LPM_ENABLED == 1U) | |||||
| uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| #endif | |||||
| } USBD_DescriptorsTypeDef; | |||||
| /* USB Device handle structure */ | |||||
| typedef struct | |||||
| { | |||||
| uint32_t status; | |||||
| uint32_t is_used; | |||||
| uint32_t total_length; | |||||
| uint32_t rem_length; | |||||
| uint32_t maxpacket; | |||||
| } USBD_EndpointTypeDef; | |||||
| /* USB Device handle structure */ | |||||
| typedef struct _USBD_HandleTypeDef | |||||
| { | |||||
| uint8_t id; | |||||
| uint32_t dev_config; | |||||
| uint32_t dev_default_config; | |||||
| uint32_t dev_config_status; | |||||
| USBD_SpeedTypeDef dev_speed; | |||||
| USBD_EndpointTypeDef ep_in[16]; | |||||
| USBD_EndpointTypeDef ep_out[16]; | |||||
| uint32_t ep0_state; | |||||
| uint32_t ep0_data_len; | |||||
| uint8_t dev_state; | |||||
| uint8_t dev_old_state; | |||||
| uint8_t dev_address; | |||||
| uint8_t dev_connection_status; | |||||
| uint8_t dev_test_mode; | |||||
| uint32_t dev_remote_wakeup; | |||||
| USBD_SetupReqTypedef request; | |||||
| USBD_DescriptorsTypeDef *pDesc; | |||||
| USBD_ClassTypeDef *pClass; | |||||
| void *pClassData; | |||||
| void *pUserData; | |||||
| void *pData; | |||||
| } USBD_HandleTypeDef; | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DEF_Exported_Macros | |||||
| * @{ | |||||
| */ | |||||
| #define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ | |||||
| (((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U)) | |||||
| #define LOBYTE(x) ((uint8_t)((x) & 0x00FFU)) | |||||
| #define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U)) | |||||
| #define MIN(a, b) (((a) < (b)) ? (a) : (b)) | |||||
| #define MAX(a, b) (((a) > (b)) ? (a) : (b)) | |||||
| #if defined ( __GNUC__ ) | |||||
| #ifndef __weak | |||||
| #define __weak __attribute__((weak)) | |||||
| #endif /* __weak */ | |||||
| #ifndef __packed | |||||
| #define __packed __attribute__((__packed__)) | |||||
| #endif /* __packed */ | |||||
| #endif /* __GNUC__ */ | |||||
| /* In HS mode and when the DMA is used, all variables and data structures dealing | |||||
| with the DMA during the transaction process should be 4-bytes aligned */ | |||||
| #if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ | |||||
| #ifndef __ALIGN_END | |||||
| #define __ALIGN_END __attribute__ ((aligned (4U))) | |||||
| #endif /* __ALIGN_END */ | |||||
| #ifndef __ALIGN_BEGIN | |||||
| #define __ALIGN_BEGIN | |||||
| #endif /* __ALIGN_BEGIN */ | |||||
| #else | |||||
| #ifndef __ALIGN_END | |||||
| #define __ALIGN_END | |||||
| #endif /* __ALIGN_END */ | |||||
| #ifndef __ALIGN_BEGIN | |||||
| #if defined (__CC_ARM) /* ARM Compiler */ | |||||
| #define __ALIGN_BEGIN __align(4U) | |||||
| #elif defined (__ICCARM__) /* IAR Compiler */ | |||||
| #define __ALIGN_BEGIN | |||||
| #endif /* __CC_ARM */ | |||||
| #endif /* __ALIGN_BEGIN */ | |||||
| #endif /* __GNUC__ */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DEF_Exported_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DEF_Exported_FunctionsPrototype | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_DEF_H */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,119 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_ioreq.h | |||||
| * @author MCD Application Team | |||||
| * @brief Header file for the usbd_ioreq.c file | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | |||||
| #ifndef __USBD_IOREQ_H | |||||
| #define __USBD_IOREQ_H | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_def.h" | |||||
| #include "usbd_core.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ | |||||
| * @brief header file for the usbd_ioreq.c file | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Exported_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Exported_Types | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Exported_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Exported_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype | |||||
| * @{ | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, | |||||
| uint16_t len); | |||||
| USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, | |||||
| uint16_t len); | |||||
| USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, | |||||
| uint16_t len); | |||||
| USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, | |||||
| uint16_t len); | |||||
| USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev); | |||||
| USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev); | |||||
| uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* __USBD_IOREQ_H */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,611 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_core.c | |||||
| * @author MCD Application Team | |||||
| * @brief This file provides all the USBD core functions. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_core.h" | |||||
| /** @addtogroup STM32_USBD_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CORE | |||||
| * @brief usbd core module | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_FunctionPrototypes | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CORE_Private_Functions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @brief USBD_Init | |||||
| * Initializes the device stack and load the class driver | |||||
| * @param pdev: device instance | |||||
| * @param pdesc: Descriptor structure address | |||||
| * @param id: Low level core index | |||||
| * @retval None | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, | |||||
| USBD_DescriptorsTypeDef *pdesc, uint8_t id) | |||||
| { | |||||
| /* Check whether the USB Host handle is valid */ | |||||
| if (pdev == NULL) | |||||
| { | |||||
| #if (USBD_DEBUG_LEVEL > 1U) | |||||
| USBD_ErrLog("Invalid Device handle"); | |||||
| #endif | |||||
| return USBD_FAIL; | |||||
| } | |||||
| /* Unlink previous class*/ | |||||
| if (pdev->pClass != NULL) | |||||
| { | |||||
| pdev->pClass = NULL; | |||||
| } | |||||
| /* Assign USBD Descriptors */ | |||||
| if (pdesc != NULL) | |||||
| { | |||||
| pdev->pDesc = pdesc; | |||||
| } | |||||
| /* Set Device initial State */ | |||||
| pdev->dev_state = USBD_STATE_DEFAULT; | |||||
| pdev->id = id; | |||||
| /* Initialize low level driver */ | |||||
| USBD_LL_Init(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_DeInit | |||||
| * Re-Initialize th device library | |||||
| * @param pdev: device instance | |||||
| * @retval status: status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Set Default State */ | |||||
| pdev->dev_state = USBD_STATE_DEFAULT; | |||||
| /* Free Class Resources */ | |||||
| pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); | |||||
| /* Stop the low level driver */ | |||||
| USBD_LL_Stop(pdev); | |||||
| /* Initialize low level driver */ | |||||
| USBD_LL_DeInit(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_RegisterClass | |||||
| * Link class driver to Device Core. | |||||
| * @param pDevice : Device Handle | |||||
| * @param pclass: Class handle | |||||
| * @retval USBD Status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) | |||||
| { | |||||
| USBD_StatusTypeDef status = USBD_OK; | |||||
| if (pclass != NULL) | |||||
| { | |||||
| /* link the class to the USB Device handle */ | |||||
| pdev->pClass = pclass; | |||||
| status = USBD_OK; | |||||
| } | |||||
| else | |||||
| { | |||||
| #if (USBD_DEBUG_LEVEL > 1U) | |||||
| USBD_ErrLog("Invalid Class handle"); | |||||
| #endif | |||||
| status = USBD_FAIL; | |||||
| } | |||||
| return status; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_Start | |||||
| * Start the USB Device Core. | |||||
| * @param pdev: Device Handle | |||||
| * @retval USBD Status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Start the low level driver */ | |||||
| USBD_LL_Start(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_Stop | |||||
| * Stop the USB Device Core. | |||||
| * @param pdev: Device Handle | |||||
| * @retval USBD Status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Free Class Resources */ | |||||
| pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); | |||||
| /* Stop the low level driver */ | |||||
| USBD_LL_Stop(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_RunTestMode | |||||
| * Launch test mode process | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Prevent unused argument compilation warning */ | |||||
| UNUSED(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SetClassConfig | |||||
| * Configure device and start the interface | |||||
| * @param pdev: device instance | |||||
| * @param cfgidx: configuration index | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) | |||||
| { | |||||
| USBD_StatusTypeDef ret = USBD_FAIL; | |||||
| if (pdev->pClass != NULL) | |||||
| { | |||||
| /* Set configuration and Start the Class*/ | |||||
| if (pdev->pClass->Init(pdev, cfgidx) == 0U) | |||||
| { | |||||
| ret = USBD_OK; | |||||
| } | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_ClrClassConfig | |||||
| * Clear current configuration | |||||
| * @param pdev: device instance | |||||
| * @param cfgidx: configuration index | |||||
| * @retval status: USBD_StatusTypeDef | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) | |||||
| { | |||||
| /* Clear configuration and De-initialize the Class process*/ | |||||
| pdev->pClass->DeInit(pdev, cfgidx); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SetupStage | |||||
| * Handle the setup stage | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) | |||||
| { | |||||
| USBD_ParseSetupRequest(&pdev->request, psetup); | |||||
| pdev->ep0_state = USBD_EP0_SETUP; | |||||
| pdev->ep0_data_len = pdev->request.wLength; | |||||
| switch (pdev->request.bmRequest & 0x1FU) | |||||
| { | |||||
| case USB_REQ_RECIPIENT_DEVICE: | |||||
| USBD_StdDevReq(pdev, &pdev->request); | |||||
| break; | |||||
| case USB_REQ_RECIPIENT_INTERFACE: | |||||
| USBD_StdItfReq(pdev, &pdev->request); | |||||
| break; | |||||
| case USB_REQ_RECIPIENT_ENDPOINT: | |||||
| USBD_StdEPReq(pdev, &pdev->request); | |||||
| break; | |||||
| default: | |||||
| USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); | |||||
| break; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_DataOutStage | |||||
| * Handle data OUT stage | |||||
| * @param pdev: device instance | |||||
| * @param epnum: endpoint index | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum, uint8_t *pdata) | |||||
| { | |||||
| USBD_EndpointTypeDef *pep; | |||||
| if (epnum == 0U) | |||||
| { | |||||
| pep = &pdev->ep_out[0]; | |||||
| if (pdev->ep0_state == USBD_EP0_DATA_OUT) | |||||
| { | |||||
| if (pep->rem_length > pep->maxpacket) | |||||
| { | |||||
| pep->rem_length -= pep->maxpacket; | |||||
| USBD_CtlContinueRx(pdev, pdata, | |||||
| (uint16_t)MIN(pep->rem_length, pep->maxpacket)); | |||||
| } | |||||
| else | |||||
| { | |||||
| if ((pdev->pClass->EP0_RxReady != NULL) && | |||||
| (pdev->dev_state == USBD_STATE_CONFIGURED)) | |||||
| { | |||||
| pdev->pClass->EP0_RxReady(pdev); | |||||
| } | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| if (pdev->ep0_state == USBD_EP0_STATUS_OUT) | |||||
| { | |||||
| /* | |||||
| * STATUS PHASE completed, update ep0_state to idle | |||||
| */ | |||||
| pdev->ep0_state = USBD_EP0_IDLE; | |||||
| USBD_LL_StallEP(pdev, 0U); | |||||
| } | |||||
| } | |||||
| } | |||||
| else if ((pdev->pClass->DataOut != NULL) && | |||||
| (pdev->dev_state == USBD_STATE_CONFIGURED)) | |||||
| { | |||||
| pdev->pClass->DataOut(pdev, epnum); | |||||
| } | |||||
| else | |||||
| { | |||||
| /* should never be in this condition */ | |||||
| return USBD_FAIL; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_DataInStage | |||||
| * Handle data in stage | |||||
| * @param pdev: device instance | |||||
| * @param epnum: endpoint index | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum, uint8_t *pdata) | |||||
| { | |||||
| USBD_EndpointTypeDef *pep; | |||||
| if (epnum == 0U) | |||||
| { | |||||
| pep = &pdev->ep_in[0]; | |||||
| if (pdev->ep0_state == USBD_EP0_DATA_IN) | |||||
| { | |||||
| if (pep->rem_length > pep->maxpacket) | |||||
| { | |||||
| pep->rem_length -= pep->maxpacket; | |||||
| USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); | |||||
| /* Prepare endpoint for premature end of transfer */ | |||||
| USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); | |||||
| } | |||||
| else | |||||
| { | |||||
| /* last packet is MPS multiple, so send ZLP packet */ | |||||
| if ((pep->total_length % pep->maxpacket == 0U) && | |||||
| (pep->total_length >= pep->maxpacket) && | |||||
| (pep->total_length < pdev->ep0_data_len)) | |||||
| { | |||||
| USBD_CtlContinueSendData(pdev, NULL, 0U); | |||||
| pdev->ep0_data_len = 0U; | |||||
| /* Prepare endpoint for premature end of transfer */ | |||||
| USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); | |||||
| } | |||||
| else | |||||
| { | |||||
| if ((pdev->pClass->EP0_TxSent != NULL) && | |||||
| (pdev->dev_state == USBD_STATE_CONFIGURED)) | |||||
| { | |||||
| pdev->pClass->EP0_TxSent(pdev); | |||||
| } | |||||
| USBD_LL_StallEP(pdev, 0x80U); | |||||
| USBD_CtlReceiveStatus(pdev); | |||||
| } | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || | |||||
| (pdev->ep0_state == USBD_EP0_IDLE)) | |||||
| { | |||||
| USBD_LL_StallEP(pdev, 0x80U); | |||||
| } | |||||
| } | |||||
| if (pdev->dev_test_mode == 1U) | |||||
| { | |||||
| USBD_RunTestMode(pdev); | |||||
| pdev->dev_test_mode = 0U; | |||||
| } | |||||
| } | |||||
| else if ((pdev->pClass->DataIn != NULL) && | |||||
| (pdev->dev_state == USBD_STATE_CONFIGURED)) | |||||
| { | |||||
| pdev->pClass->DataIn(pdev, epnum); | |||||
| } | |||||
| else | |||||
| { | |||||
| /* should never be in this condition */ | |||||
| return USBD_FAIL; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_LL_Reset | |||||
| * Handle Reset event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Open EP0 OUT */ | |||||
| USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); | |||||
| pdev->ep_out[0x00U & 0xFU].is_used = 1U; | |||||
| pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; | |||||
| /* Open EP0 IN */ | |||||
| USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); | |||||
| pdev->ep_in[0x80U & 0xFU].is_used = 1U; | |||||
| pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; | |||||
| /* Upon Reset call user call back */ | |||||
| pdev->dev_state = USBD_STATE_DEFAULT; | |||||
| pdev->ep0_state = USBD_EP0_IDLE; | |||||
| pdev->dev_config = 0U; | |||||
| pdev->dev_remote_wakeup = 0U; | |||||
| if (pdev->pClassData) | |||||
| { | |||||
| pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_LL_Reset | |||||
| * Handle Reset event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, | |||||
| USBD_SpeedTypeDef speed) | |||||
| { | |||||
| pdev->dev_speed = speed; | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_Suspend | |||||
| * Handle Suspend event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| pdev->dev_old_state = pdev->dev_state; | |||||
| pdev->dev_state = USBD_STATE_SUSPENDED; | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_Resume | |||||
| * Handle Resume event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| if (pdev->dev_state == USBD_STATE_SUSPENDED) | |||||
| { | |||||
| pdev->dev_state = pdev->dev_old_state; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SOF | |||||
| * Handle SOF event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| if (pdev->dev_state == USBD_STATE_CONFIGURED) | |||||
| { | |||||
| if (pdev->pClass->SOF != NULL) | |||||
| { | |||||
| pdev->pClass->SOF(pdev); | |||||
| } | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_IsoINIncomplete | |||||
| * Handle iso in incomplete event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum) | |||||
| { | |||||
| /* Prevent unused arguments compilation warning */ | |||||
| UNUSED(pdev); | |||||
| UNUSED(epnum); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_IsoOUTIncomplete | |||||
| * Handle iso out incomplete event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, | |||||
| uint8_t epnum) | |||||
| { | |||||
| /* Prevent unused arguments compilation warning */ | |||||
| UNUSED(pdev); | |||||
| UNUSED(epnum); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_DevConnected | |||||
| * Handle device connection event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Prevent unused argument compilation warning */ | |||||
| UNUSED(pdev); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_DevDisconnected | |||||
| * Handle device disconnection event | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Free Class Resources */ | |||||
| pdev->dev_state = USBD_STATE_DEFAULT; | |||||
| pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,918 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_req.c | |||||
| * @author MCD Application Team | |||||
| * @brief This file provides the standard USB requests following chapter 9. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_ctlreq.h" | |||||
| #include "usbd_ioreq.h" | |||||
| /** @addtogroup STM32_USBD_STATE_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_REQ | |||||
| * @brief USB standard requests module | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_FunctionPrototypes | |||||
| * @{ | |||||
| */ | |||||
| static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_SetAddress(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_SetConfig(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_GetConfig(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_GetStatus(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_SetFeature(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req); | |||||
| static uint8_t USBD_GetLen(uint8_t *buf); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_REQ_Private_Functions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @brief USBD_StdDevReq | |||||
| * Handle standard usb device requests | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| USBD_StatusTypeDef ret = USBD_OK; | |||||
| switch (req->bmRequest & USB_REQ_TYPE_MASK) | |||||
| { | |||||
| case USB_REQ_TYPE_CLASS: | |||||
| case USB_REQ_TYPE_VENDOR: | |||||
| pdev->pClass->Setup(pdev, req); | |||||
| break; | |||||
| case USB_REQ_TYPE_STANDARD: | |||||
| switch (req->bRequest) | |||||
| { | |||||
| case USB_REQ_GET_DESCRIPTOR: | |||||
| USBD_GetDescriptor(pdev, req); | |||||
| break; | |||||
| case USB_REQ_SET_ADDRESS: | |||||
| USBD_SetAddress(pdev, req); | |||||
| break; | |||||
| case USB_REQ_SET_CONFIGURATION: | |||||
| USBD_SetConfig(pdev, req); | |||||
| break; | |||||
| case USB_REQ_GET_CONFIGURATION: | |||||
| USBD_GetConfig(pdev, req); | |||||
| break; | |||||
| case USB_REQ_GET_STATUS: | |||||
| USBD_GetStatus(pdev, req); | |||||
| break; | |||||
| case USB_REQ_SET_FEATURE: | |||||
| USBD_SetFeature(pdev, req); | |||||
| break; | |||||
| case USB_REQ_CLEAR_FEATURE: | |||||
| USBD_ClrFeature(pdev, req); | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_StdItfReq | |||||
| * Handle standard usb interface requests | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| USBD_StatusTypeDef ret = USBD_OK; | |||||
| switch (req->bmRequest & USB_REQ_TYPE_MASK) | |||||
| { | |||||
| case USB_REQ_TYPE_CLASS: | |||||
| case USB_REQ_TYPE_VENDOR: | |||||
| case USB_REQ_TYPE_STANDARD: | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_DEFAULT: | |||||
| case USBD_STATE_ADDRESSED: | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) | |||||
| { | |||||
| ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); | |||||
| if ((req->wLength == 0U) && (ret == USBD_OK)) | |||||
| { | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_StdEPReq | |||||
| * Handle standard usb endpoint requests | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| USBD_EndpointTypeDef *pep; | |||||
| uint8_t ep_addr; | |||||
| USBD_StatusTypeDef ret = USBD_OK; | |||||
| ep_addr = LOBYTE(req->wIndex); | |||||
| switch (req->bmRequest & USB_REQ_TYPE_MASK) | |||||
| { | |||||
| case USB_REQ_TYPE_CLASS: | |||||
| case USB_REQ_TYPE_VENDOR: | |||||
| pdev->pClass->Setup(pdev, req); | |||||
| break; | |||||
| case USB_REQ_TYPE_STANDARD: | |||||
| /* Check if it is a class request */ | |||||
| if ((req->bmRequest & 0x60U) == 0x20U) | |||||
| { | |||||
| ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); | |||||
| return ret; | |||||
| } | |||||
| switch (req->bRequest) | |||||
| { | |||||
| case USB_REQ_SET_FEATURE: | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_ADDRESSED: | |||||
| if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) | |||||
| { | |||||
| USBD_LL_StallEP(pdev, ep_addr); | |||||
| USBD_LL_StallEP(pdev, 0x80U); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| break; | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (req->wValue == USB_FEATURE_EP_HALT) | |||||
| { | |||||
| if ((ep_addr != 0x00U) && | |||||
| (ep_addr != 0x80U) && (req->wLength == 0x00U)) | |||||
| { | |||||
| USBD_LL_StallEP(pdev, ep_addr); | |||||
| } | |||||
| } | |||||
| USBD_CtlSendStatus(pdev); | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| case USB_REQ_CLEAR_FEATURE: | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_ADDRESSED: | |||||
| if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) | |||||
| { | |||||
| USBD_LL_StallEP(pdev, ep_addr); | |||||
| USBD_LL_StallEP(pdev, 0x80U); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| break; | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (req->wValue == USB_FEATURE_EP_HALT) | |||||
| { | |||||
| if ((ep_addr & 0x7FU) != 0x00U) | |||||
| { | |||||
| USBD_LL_ClearStallEP(pdev, ep_addr); | |||||
| } | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| case USB_REQ_GET_STATUS: | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_ADDRESSED: | |||||
| if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ | |||||
| &pdev->ep_out[ep_addr & 0x7FU]; | |||||
| pep->status = 0x0000U; | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); | |||||
| break; | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if ((ep_addr & 0x80U) == 0x80U) | |||||
| { | |||||
| if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| } | |||||
| pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ | |||||
| &pdev->ep_out[ep_addr & 0x7FU]; | |||||
| if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) | |||||
| { | |||||
| pep->status = 0x0000U; | |||||
| } | |||||
| else if (USBD_LL_IsStallEP(pdev, ep_addr)) | |||||
| { | |||||
| pep->status = 0x0001U; | |||||
| } | |||||
| else | |||||
| { | |||||
| pep->status = 0x0000U; | |||||
| } | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetDescriptor | |||||
| * Handle Get Descriptor requests | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| uint16_t len = 0U; | |||||
| uint8_t *pbuf = NULL; | |||||
| uint8_t err = 0U; | |||||
| switch (req->wValue >> 8) | |||||
| { | |||||
| #if (USBD_LPM_ENABLED == 1U) | |||||
| case USB_DESC_TYPE_BOS: | |||||
| if (pdev->pDesc->GetBOSDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| #endif | |||||
| case USB_DESC_TYPE_DEVICE: | |||||
| pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); | |||||
| break; | |||||
| case USB_DESC_TYPE_CONFIGURATION: | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| pbuf = pdev->pClass->GetHSConfigDescriptor(&len); | |||||
| pbuf[1] = USB_DESC_TYPE_CONFIGURATION; | |||||
| } | |||||
| else | |||||
| { | |||||
| pbuf = pdev->pClass->GetFSConfigDescriptor(&len); | |||||
| pbuf[1] = USB_DESC_TYPE_CONFIGURATION; | |||||
| } | |||||
| break; | |||||
| case USB_DESC_TYPE_STRING: | |||||
| switch ((uint8_t)(req->wValue)) | |||||
| { | |||||
| case USBD_IDX_LANGID_STR: | |||||
| if (pdev->pDesc->GetLangIDStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USBD_IDX_MFC_STR: | |||||
| if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USBD_IDX_PRODUCT_STR: | |||||
| if (pdev->pDesc->GetProductStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USBD_IDX_SERIAL_STR: | |||||
| if (pdev->pDesc->GetSerialStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USBD_IDX_CONFIG_STR: | |||||
| if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USBD_IDX_INTERFACE_STR: | |||||
| if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| #if (USBD_SUPPORT_USER_STRING_DESC == 1U) | |||||
| if (pdev->pClass->GetUsrStrDescriptor != NULL) | |||||
| { | |||||
| pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue), &len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| #else | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| #endif | |||||
| } | |||||
| break; | |||||
| case USB_DESC_TYPE_DEVICE_QUALIFIER: | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: | |||||
| if (pdev->dev_speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); | |||||
| pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| err++; | |||||
| break; | |||||
| } | |||||
| if (err != 0U) | |||||
| { | |||||
| return; | |||||
| } | |||||
| else | |||||
| { | |||||
| if ((len != 0U) && (req->wLength != 0U)) | |||||
| { | |||||
| len = MIN(len, req->wLength); | |||||
| (void)USBD_CtlSendData(pdev, pbuf, len); | |||||
| } | |||||
| if (req->wLength == 0U) | |||||
| { | |||||
| (void)USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SetAddress | |||||
| * Set device address | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_SetAddress(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| uint8_t dev_addr; | |||||
| if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) | |||||
| { | |||||
| dev_addr = (uint8_t)(req->wValue) & 0x7FU; | |||||
| if (pdev->dev_state == USBD_STATE_CONFIGURED) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| else | |||||
| { | |||||
| pdev->dev_address = dev_addr; | |||||
| USBD_LL_SetUSBAddress(pdev, dev_addr); | |||||
| USBD_CtlSendStatus(pdev); | |||||
| if (dev_addr != 0U) | |||||
| { | |||||
| pdev->dev_state = USBD_STATE_ADDRESSED; | |||||
| } | |||||
| else | |||||
| { | |||||
| pdev->dev_state = USBD_STATE_DEFAULT; | |||||
| } | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SetConfig | |||||
| * Handle Set device configuration request | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) | |||||
| { | |||||
| static uint8_t cfgidx; | |||||
| cfgidx = (uint8_t)(req->wValue); | |||||
| if (cfgidx > USBD_MAX_NUM_CONFIGURATION) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| else | |||||
| { | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_ADDRESSED: | |||||
| if (cfgidx) | |||||
| { | |||||
| pdev->dev_config = cfgidx; | |||||
| pdev->dev_state = USBD_STATE_CONFIGURED; | |||||
| if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| return; | |||||
| } | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| break; | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (cfgidx == 0U) | |||||
| { | |||||
| pdev->dev_state = USBD_STATE_ADDRESSED; | |||||
| pdev->dev_config = cfgidx; | |||||
| USBD_ClrClassConfig(pdev, cfgidx); | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| else if (cfgidx != pdev->dev_config) | |||||
| { | |||||
| /* Clear old configuration */ | |||||
| USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); | |||||
| /* set new configuration */ | |||||
| pdev->dev_config = cfgidx; | |||||
| if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| return; | |||||
| } | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| USBD_ClrClassConfig(pdev, cfgidx); | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetConfig | |||||
| * Handle Get device configuration request | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) | |||||
| { | |||||
| if (req->wLength != 1U) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| } | |||||
| else | |||||
| { | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_DEFAULT: | |||||
| case USBD_STATE_ADDRESSED: | |||||
| pdev->dev_default_config = 0U; | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); | |||||
| break; | |||||
| case USBD_STATE_CONFIGURED: | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetStatus | |||||
| * Handle Get Status request | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) | |||||
| { | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_DEFAULT: | |||||
| case USBD_STATE_ADDRESSED: | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (req->wLength != 0x2U) | |||||
| { | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| #if (USBD_SELF_POWERED == 1U) | |||||
| pdev->dev_config_status = USB_CONFIG_SELF_POWERED; | |||||
| #else | |||||
| pdev->dev_config_status = 0U; | |||||
| #endif | |||||
| if (pdev->dev_remote_wakeup) | |||||
| { | |||||
| pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; | |||||
| } | |||||
| USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_SetFeature | |||||
| * Handle Set device feature request | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_SetFeature(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) | |||||
| { | |||||
| pdev->dev_remote_wakeup = 1U; | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_ClrFeature | |||||
| * Handle clear device feature request | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval status | |||||
| */ | |||||
| static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| switch (pdev->dev_state) | |||||
| { | |||||
| case USBD_STATE_DEFAULT: | |||||
| case USBD_STATE_ADDRESSED: | |||||
| case USBD_STATE_CONFIGURED: | |||||
| if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) | |||||
| { | |||||
| pdev->dev_remote_wakeup = 0U; | |||||
| USBD_CtlSendStatus(pdev); | |||||
| } | |||||
| break; | |||||
| default: | |||||
| USBD_CtlError(pdev, req); | |||||
| break; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_ParseSetupRequest | |||||
| * Copy buffer into setup structure | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval None | |||||
| */ | |||||
| void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) | |||||
| { | |||||
| req->bmRequest = *(uint8_t *)(pdata); | |||||
| req->bRequest = *(uint8_t *)(pdata + 1U); | |||||
| req->wValue = SWAPBYTE(pdata + 2U); | |||||
| req->wIndex = SWAPBYTE(pdata + 4U); | |||||
| req->wLength = SWAPBYTE(pdata + 6U); | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlError | |||||
| * Handle USB low level Error | |||||
| * @param pdev: device instance | |||||
| * @param req: usb request | |||||
| * @retval None | |||||
| */ | |||||
| void USBD_CtlError(USBD_HandleTypeDef *pdev, | |||||
| USBD_SetupReqTypedef *req) | |||||
| { | |||||
| USBD_LL_StallEP(pdev, 0x80U); | |||||
| USBD_LL_StallEP(pdev, 0U); | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetString | |||||
| * Convert Ascii string into unicode one | |||||
| * @param desc : descriptor buffer | |||||
| * @param unicode : Formatted string buffer (unicode) | |||||
| * @param len : descriptor length | |||||
| * @retval None | |||||
| */ | |||||
| void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) | |||||
| { | |||||
| uint8_t idx = 0U; | |||||
| if (desc != NULL) | |||||
| { | |||||
| *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; | |||||
| unicode[idx++] = *(uint8_t *)(void *)len; | |||||
| unicode[idx++] = USB_DESC_TYPE_STRING; | |||||
| while (*desc != '\0') | |||||
| { | |||||
| unicode[idx++] = *desc++; | |||||
| unicode[idx++] = 0U; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetLen | |||||
| * return the string length | |||||
| * @param buf : pointer to the ascii string buffer | |||||
| * @retval string length | |||||
| */ | |||||
| static uint8_t USBD_GetLen(uint8_t *buf) | |||||
| { | |||||
| uint8_t len = 0U; | |||||
| while (*buf != '\0') | |||||
| { | |||||
| len++; | |||||
| buf++; | |||||
| } | |||||
| return len; | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,216 +0,0 @@ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file usbd_ioreq.c | |||||
| * @author MCD Application Team | |||||
| * @brief This file provides the IO requests APIs for control endpoints. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2015 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_ioreq.h" | |||||
| /** @addtogroup STM32_USB_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ | |||||
| * @brief control I/O requests module | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_TypesDefinitions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_Defines | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_Macros | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_Variables | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_FunctionPrototypes | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_IOREQ_Private_Functions | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @brief USBD_CtlSendData | |||||
| * send data on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @param buff: pointer to data buffer | |||||
| * @param len: length of data to be sent | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, uint16_t len) | |||||
| { | |||||
| /* Set EP0 State */ | |||||
| pdev->ep0_state = USBD_EP0_DATA_IN; | |||||
| pdev->ep_in[0].total_length = len; | |||||
| pdev->ep_in[0].rem_length = len; | |||||
| /* Start the transfer */ | |||||
| USBD_LL_Transmit(pdev, 0x00U, pbuf, len); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlContinueSendData | |||||
| * continue sending data on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @param buff: pointer to data buffer | |||||
| * @param len: length of data to be sent | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, uint16_t len) | |||||
| { | |||||
| /* Start the next transfer */ | |||||
| USBD_LL_Transmit(pdev, 0x00U, pbuf, len); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlPrepareRx | |||||
| * receive data on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @param buff: pointer to data buffer | |||||
| * @param len: length of data to be received | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, uint16_t len) | |||||
| { | |||||
| /* Set EP0 State */ | |||||
| pdev->ep0_state = USBD_EP0_DATA_OUT; | |||||
| pdev->ep_out[0].total_length = len; | |||||
| pdev->ep_out[0].rem_length = len; | |||||
| /* Start the transfer */ | |||||
| USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlContinueRx | |||||
| * continue receive data on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @param buff: pointer to data buffer | |||||
| * @param len: length of data to be received | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, | |||||
| uint8_t *pbuf, uint16_t len) | |||||
| { | |||||
| USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlSendStatus | |||||
| * send zero lzngth packet on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Set EP0 State */ | |||||
| pdev->ep0_state = USBD_EP0_STATUS_IN; | |||||
| /* Start the transfer */ | |||||
| USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_CtlReceiveStatus | |||||
| * receive zero lzngth packet on the ctl pipe | |||||
| * @param pdev: device instance | |||||
| * @retval status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Set EP0 State */ | |||||
| pdev->ep0_state = USBD_EP0_STATUS_OUT; | |||||
| /* Start the transfer */ | |||||
| USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief USBD_GetRxCount | |||||
| * returns the received data length | |||||
| * @param pdev: device instance | |||||
| * @param ep_addr: endpoint address | |||||
| * @retval Rx Data blength | |||||
| */ | |||||
| uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| return USBD_LL_GetRxDataSize(pdev, ep_addr); | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,102 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usb_device.c | |||||
| * @version : v2.0_Cube | |||||
| * @brief : This file implements the USB Device | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usb_device.h" | |||||
| #include "usbd_core.h" | |||||
| #include "usbd_desc.h" | |||||
| #include "usbd_cdc.h" | |||||
| #include "usbd_cdc_if.h" | |||||
| /* USER CODE BEGIN Includes */ | |||||
| /* USER CODE END Includes */ | |||||
| /* USER CODE BEGIN PV */ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* USER CODE END PV */ | |||||
| /* USER CODE BEGIN PFP */ | |||||
| /* Private function prototypes -----------------------------------------------*/ | |||||
| /* USER CODE END PFP */ | |||||
| /* USB Device Core handle declaration. */ | |||||
| USBD_HandleTypeDef hUsbDeviceFS; | |||||
| /* | |||||
| * -- Insert your variables declaration here -- | |||||
| */ | |||||
| /* USER CODE BEGIN 0 */ | |||||
| /* USER CODE END 0 */ | |||||
| /* | |||||
| * -- Insert your external function declaration here -- | |||||
| */ | |||||
| /* USER CODE BEGIN 1 */ | |||||
| /* USER CODE END 1 */ | |||||
| /** | |||||
| * Init USB device Library, add supported class and start the library | |||||
| * @retval None | |||||
| */ | |||||
| void MX_USB_DEVICE_Init(void) | |||||
| { | |||||
| /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ | |||||
| /* USER CODE END USB_DEVICE_Init_PreTreatment */ | |||||
| /* Init Device Library, add supported class and start the library. */ | |||||
| if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| if (USBD_Start(&hUsbDeviceFS) != USBD_OK) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ | |||||
| /* USER CODE END USB_DEVICE_Init_PostTreatment */ | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,344 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_cdc_if.c | |||||
| * @version : v2.0_Cube | |||||
| * @brief : Usb device for Virtual Com Port. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_cdc_if.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| #include "drivers/uart.h" | |||||
| /* USER CODE END INCLUDE */ | |||||
| /* Private typedef -----------------------------------------------------------*/ | |||||
| /* Private define ------------------------------------------------------------*/ | |||||
| /* Private macro -------------------------------------------------------------*/ | |||||
| /* USER CODE BEGIN PV */ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* USER CODE END PV */ | |||||
| /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY | |||||
| * @brief Usb device library. | |||||
| * @{ | |||||
| */ | |||||
| /** @addtogroup USBD_CDC_IF | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions | |||||
| * @brief Private types. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN PRIVATE_TYPES */ | |||||
| /* USER CODE END PRIVATE_TYPES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines | |||||
| * @brief Private defines. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN PRIVATE_DEFINES */ | |||||
| /* Define size for the receive and transmit buffer over CDC */ | |||||
| /* It's up to user to redefine and/or remove those define */ | |||||
| #define APP_RX_DATA_SIZE 1000 | |||||
| #define APP_TX_DATA_SIZE 1000 | |||||
| /* USER CODE END PRIVATE_DEFINES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros | |||||
| * @brief Private macros. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN PRIVATE_MACRO */ | |||||
| /* USER CODE END PRIVATE_MACRO */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables | |||||
| * @brief Private variables. | |||||
| * @{ | |||||
| */ | |||||
| /* Create buffer for reception and transmission */ | |||||
| /* It's up to user to redefine and/or remove those define */ | |||||
| /** Received data over USB are stored in this buffer */ | |||||
| uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; | |||||
| /** Data to send over USB CDC are stored in this buffer */ | |||||
| uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; | |||||
| /* USER CODE BEGIN PRIVATE_VARIABLES */ | |||||
| /* USER CODE END PRIVATE_VARIABLES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables | |||||
| * @brief Public variables. | |||||
| * @{ | |||||
| */ | |||||
| extern USBD_HandleTypeDef hUsbDeviceFS; | |||||
| /* USER CODE BEGIN EXPORTED_VARIABLES */ | |||||
| /* USER CODE END EXPORTED_VARIABLES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes | |||||
| * @brief Private functions declaration. | |||||
| * @{ | |||||
| */ | |||||
| static int8_t CDC_Init_FS(void); | |||||
| static int8_t CDC_DeInit_FS(void); | |||||
| static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); | |||||
| static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); | |||||
| /* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ | |||||
| /* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = | |||||
| { | |||||
| CDC_Init_FS, | |||||
| CDC_DeInit_FS, | |||||
| CDC_Control_FS, | |||||
| CDC_Receive_FS | |||||
| }; | |||||
| /* Private functions ---------------------------------------------------------*/ | |||||
| /** | |||||
| * @brief Initializes the CDC media low layer over the FS USB IP | |||||
| * @retval USBD_OK if all operations are OK else USBD_FAIL | |||||
| */ | |||||
| static int8_t CDC_Init_FS(void) | |||||
| { | |||||
| /* USER CODE BEGIN 3 */ | |||||
| /* Set Application Buffers */ | |||||
| USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); | |||||
| USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); | |||||
| return (USBD_OK); | |||||
| /* USER CODE END 3 */ | |||||
| } | |||||
| /** | |||||
| * @brief DeInitializes the CDC media low layer | |||||
| * @retval USBD_OK if all operations are OK else USBD_FAIL | |||||
| */ | |||||
| static int8_t CDC_DeInit_FS(void) | |||||
| { | |||||
| /* USER CODE BEGIN 4 */ | |||||
| return (USBD_OK); | |||||
| /* USER CODE END 4 */ | |||||
| } | |||||
| /** | |||||
| * @brief Manage the CDC class requests | |||||
| * @param cmd: Command code | |||||
| * @param pbuf: Buffer containing command data (request parameters) | |||||
| * @param length: Number of data to be sent (in bytes) | |||||
| * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL | |||||
| */ | |||||
| static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) | |||||
| { | |||||
| /* USER CODE BEGIN 5 */ | |||||
| switch(cmd) | |||||
| { | |||||
| case CDC_SEND_ENCAPSULATED_COMMAND: | |||||
| break; | |||||
| case CDC_GET_ENCAPSULATED_RESPONSE: | |||||
| break; | |||||
| case CDC_SET_COMM_FEATURE: | |||||
| break; | |||||
| case CDC_GET_COMM_FEATURE: | |||||
| break; | |||||
| case CDC_CLEAR_COMM_FEATURE: | |||||
| break; | |||||
| /*******************************************************************************/ | |||||
| /* Line Coding Structure */ | |||||
| /*-----------------------------------------------------------------------------*/ | |||||
| /* Offset | Field | Size | Value | Description */ | |||||
| /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ | |||||
| /* 4 | bCharFormat | 1 | Number | Stop bits */ | |||||
| /* 0 - 1 Stop bit */ | |||||
| /* 1 - 1.5 Stop bits */ | |||||
| /* 2 - 2 Stop bits */ | |||||
| /* 5 | bParityType | 1 | Number | Parity */ | |||||
| /* 0 - None */ | |||||
| /* 1 - Odd */ | |||||
| /* 2 - Even */ | |||||
| /* 3 - Mark */ | |||||
| /* 4 - Space */ | |||||
| /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ | |||||
| /*******************************************************************************/ | |||||
| case CDC_SET_LINE_CODING: | |||||
| break; | |||||
| case CDC_GET_LINE_CODING: | |||||
| break; | |||||
| case CDC_SET_CONTROL_LINE_STATE: | |||||
| break; | |||||
| case CDC_SEND_BREAK: | |||||
| break; | |||||
| default: | |||||
| break; | |||||
| } | |||||
| return (USBD_OK); | |||||
| /* USER CODE END 5 */ | |||||
| } | |||||
| /** | |||||
| * @brief Data received over USB OUT endpoint are sent over CDC interface | |||||
| * through this function. | |||||
| * | |||||
| * @note | |||||
| * This function will block any OUT packet reception on USB endpoint | |||||
| * untill exiting this function. If you exit this function before transfer | |||||
| * is complete on CDC interface (ie. using DMA controller) it will result | |||||
| * in receiving more data while previous ones are still not sent. | |||||
| * | |||||
| * @param Buf: Buffer of data to be received | |||||
| * @param Len: Number of data received (in bytes) | |||||
| * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL | |||||
| */ | |||||
| static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) | |||||
| { | |||||
| /* USER CODE BEGIN 6 */ | |||||
| /** | |||||
| * Z tej funkcji zaraz po odebraniu danych chcemy wyjsc, bo pozostanie w niej zablokuje mozliwosc nadawania czegokolwiek przez USB. | |||||
| * Poza tym ta funkcja jest tak naprawde czescia ISR. | |||||
| * Ustawiamy wiec flage z informacja, co odebralismy i to przetwarzamy w innym miejscu (w petli glownej). | |||||
| */ | |||||
| USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); | |||||
| USBD_CDC_ReceivePacket(&hUsbDeviceFS); | |||||
| //this function receives 64 bytes max. | |||||
| //add them to the buffer and set USB "interrupt" flag | |||||
| for(uint16_t cv = 0; cv < *Len; cv++) | |||||
| { | |||||
| usbcdcdata[usbcdcidx++] = *(Buf + cv); | |||||
| if(usbcdcidx == UARTBUFLEN) | |||||
| { | |||||
| usbcdcidx = 0; | |||||
| return USBD_FAIL; | |||||
| } | |||||
| USBint = 1; | |||||
| } | |||||
| return (USBD_OK); | |||||
| /* USER CODE END 6 */ | |||||
| } | |||||
| /** | |||||
| * @brief CDC_Transmit_FS | |||||
| * Data to send over USB IN endpoint are sent over CDC interface | |||||
| * through this function. | |||||
| * @note | |||||
| * | |||||
| * | |||||
| * @param Buf: Buffer of data to be sent | |||||
| * @param Len: Number of data to be sent (in bytes) | |||||
| * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY | |||||
| */ | |||||
| uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) | |||||
| { | |||||
| uint8_t result = USBD_OK; | |||||
| /* USER CODE BEGIN 7 */ | |||||
| if(hUsbDeviceFS.dev_state != 3) return USBD_BUSY; | |||||
| USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; | |||||
| if (hcdc->TxState > 1){ //jesli cos wiekszego od 1, to USB nie jest podlaczone | |||||
| return USBD_BUSY; | |||||
| } | |||||
| uint32_t to = 0; | |||||
| while(hcdc->TxState != 0) | |||||
| { | |||||
| //czekamy dopoki USB jest zajete, bo inaczej bedziemy tracic dane | |||||
| to++; | |||||
| if(to > 90000) return USBD_FAIL; //trzeba bylo zrobic jakis timeout | |||||
| } | |||||
| USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); | |||||
| result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); | |||||
| /* USER CODE END 7 */ | |||||
| return result; | |||||
| } | |||||
| /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ | |||||
| /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,663 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_conf.c | |||||
| * @version : v2.0_Cube | |||||
| * @brief : This file implements the board support package for the USB device library | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "stm32f1xx.h" | |||||
| #include "stm32f1xx_hal.h" | |||||
| #include "usbd_def.h" | |||||
| #include "usbd_core.h" | |||||
| #include "usbd_cdc.h" | |||||
| /* USER CODE BEGIN Includes */ | |||||
| /* USER CODE END Includes */ | |||||
| /* Private typedef -----------------------------------------------------------*/ | |||||
| /* Private define ------------------------------------------------------------*/ | |||||
| /* Private macro -------------------------------------------------------------*/ | |||||
| /* USER CODE BEGIN PV */ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* USER CODE END PV */ | |||||
| PCD_HandleTypeDef hpcd_USB_FS; | |||||
| void Error_Handler(void); | |||||
| /* USER CODE BEGIN 0 */ | |||||
| /* USER CODE END 0 */ | |||||
| /* USER CODE BEGIN PFP */ | |||||
| /* Private function prototypes -----------------------------------------------*/ | |||||
| /* USER CODE END PFP */ | |||||
| /* Private functions ---------------------------------------------------------*/ | |||||
| static USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); | |||||
| /* USER CODE BEGIN 1 */ | |||||
| /* USER CODE END 1 */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); | |||||
| else | |||||
| void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| /******************************************************************************* | |||||
| LL Driver Callbacks (PCD -> USB Device Library) | |||||
| *******************************************************************************/ | |||||
| /* MSP Init */ | |||||
| void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) | |||||
| { | |||||
| if(pcdHandle->Instance==USB) | |||||
| { | |||||
| /* USER CODE BEGIN USB_MspInit 0 */ | |||||
| /* USER CODE END USB_MspInit 0 */ | |||||
| /* Peripheral clock enable */ | |||||
| __HAL_RCC_USB_CLK_ENABLE(); | |||||
| /* Peripheral interrupt init */ | |||||
| HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); | |||||
| HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); | |||||
| /* USER CODE BEGIN USB_MspInit 1 */ | |||||
| /* USER CODE END USB_MspInit 1 */ | |||||
| } | |||||
| } | |||||
| void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle) | |||||
| { | |||||
| if(pcdHandle->Instance==USB) | |||||
| { | |||||
| /* USER CODE BEGIN USB_MspDeInit 0 */ | |||||
| /* USER CODE END USB_MspDeInit 0 */ | |||||
| /* Peripheral clock disable */ | |||||
| __HAL_RCC_USB_CLK_DISABLE(); | |||||
| /* Peripheral interrupt Deinit*/ | |||||
| HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); | |||||
| /* USER CODE BEGIN USB_MspDeInit 1 */ | |||||
| /* USER CODE END USB_MspDeInit 1 */ | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief Setup stage callback | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); | |||||
| } | |||||
| /** | |||||
| * @brief Data Out stage callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @param epnum: Endpoint number | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #else | |||||
| void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); | |||||
| } | |||||
| /** | |||||
| * @brief Data In stage callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @param epnum: Endpoint number | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #else | |||||
| void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); | |||||
| } | |||||
| /** | |||||
| * @brief SOF callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); | |||||
| } | |||||
| /** | |||||
| * @brief Reset callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_SpeedTypeDef speed = USBD_SPEED_FULL; | |||||
| if ( hpcd->Init.speed != PCD_SPEED_FULL) | |||||
| { | |||||
| Error_Handler(); | |||||
| } | |||||
| /* Set Speed. */ | |||||
| USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); | |||||
| /* Reset Device. */ | |||||
| USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); | |||||
| } | |||||
| /** | |||||
| * @brief Suspend callback. | |||||
| * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| /* Inform USB library that core enters in suspend Mode. */ | |||||
| USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); | |||||
| /* Enter in STOP mode. */ | |||||
| /* USER CODE BEGIN 2 */ | |||||
| if (hpcd->Init.low_power_enable) | |||||
| { | |||||
| /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ | |||||
| SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); | |||||
| } | |||||
| /* USER CODE END 2 */ | |||||
| } | |||||
| /** | |||||
| * @brief Resume callback. | |||||
| * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| /* USER CODE BEGIN 3 */ | |||||
| /* USER CODE END 3 */ | |||||
| USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); | |||||
| } | |||||
| /** | |||||
| * @brief ISOOUTIncomplete callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @param epnum: Endpoint number | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #else | |||||
| void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); | |||||
| } | |||||
| /** | |||||
| * @brief ISOINIncomplete callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @param epnum: Endpoint number | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #else | |||||
| void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); | |||||
| } | |||||
| /** | |||||
| * @brief Connect callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_DevConnected((USBD_HandleTypeDef*)hpcd->pData); | |||||
| } | |||||
| /** | |||||
| * @brief Disconnect callback. | |||||
| * @param hpcd: PCD handle | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) | |||||
| #else | |||||
| void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| USBD_LL_DevDisconnected((USBD_HandleTypeDef*)hpcd->pData); | |||||
| } | |||||
| /******************************************************************************* | |||||
| LL Driver Interface (USB Device Library --> PCD) | |||||
| *******************************************************************************/ | |||||
| /** | |||||
| * @brief Initializes the low level portion of the device driver. | |||||
| * @param pdev: Device handle | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| /* Init USB Ip. */ | |||||
| /* Link the driver to the stack. */ | |||||
| hpcd_USB_FS.pData = pdev; | |||||
| pdev->pData = &hpcd_USB_FS; | |||||
| hpcd_USB_FS.Instance = USB; | |||||
| hpcd_USB_FS.Init.dev_endpoints = 8; | |||||
| hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; | |||||
| hpcd_USB_FS.Init.low_power_enable = DISABLE; | |||||
| hpcd_USB_FS.Init.lpm_enable = DISABLE; | |||||
| hpcd_USB_FS.Init.battery_charging_enable = DISABLE; | |||||
| if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) | |||||
| { | |||||
| Error_Handler( ); | |||||
| } | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| /* Register USB PCD CallBacks */ | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); | |||||
| HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); | |||||
| HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_FS, PCD_DataOutStageCallback); | |||||
| HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); | |||||
| HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); | |||||
| HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| /* USER CODE BEGIN EndPoint_Configuration */ | |||||
| HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); | |||||
| HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); | |||||
| /* USER CODE END EndPoint_Configuration */ | |||||
| /* USER CODE BEGIN EndPoint_Configuration_CDC */ | |||||
| HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); | |||||
| HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); | |||||
| HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); | |||||
| /* USER CODE END EndPoint_Configuration_CDC */ | |||||
| return USBD_OK; | |||||
| } | |||||
| /** | |||||
| * @brief De-Initializes the low level portion of the device driver. | |||||
| * @param pdev: Device handle | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_DeInit(pdev->pData); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Starts the low level portion of the device driver. | |||||
| * @param pdev: Device handle | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_Start(pdev->pData); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Stops the low level portion of the device driver. | |||||
| * @param pdev: Device handle | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_Stop(pdev->pData); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Opens an endpoint of the low level driver. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @param ep_type: Endpoint type | |||||
| * @param ep_mps: Endpoint max packet size | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Closes an endpoint of the low level driver. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Flushes an endpoint of the Low Level Driver. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Sets a Stall condition on an endpoint of the Low Level Driver. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Clears a Stall condition on an endpoint of the Low Level Driver. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Returns Stall condition. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval Stall (1: Yes, 0: No) | |||||
| */ | |||||
| uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; | |||||
| if((ep_addr & 0x80) == 0x80) | |||||
| { | |||||
| return hpcd->IN_ep[ep_addr & 0x7F].is_stall; | |||||
| } | |||||
| else | |||||
| { | |||||
| return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief Assigns a USB address to the device. | |||||
| * @param pdev: Device handle | |||||
| * @param dev_addr: Device address | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Transmits data over an endpoint. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @param pbuf: Pointer to data to be sent | |||||
| * @param size: Data size | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Prepares an endpoint for reception. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @param pbuf: Pointer to data to be received | |||||
| * @param size: Data size | |||||
| * @retval USBD status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) | |||||
| { | |||||
| HAL_StatusTypeDef hal_status = HAL_OK; | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); | |||||
| usb_status = USBD_Get_USB_Status(hal_status); | |||||
| return usb_status; | |||||
| } | |||||
| /** | |||||
| * @brief Returns the last transfered packet size. | |||||
| * @param pdev: Device handle | |||||
| * @param ep_addr: Endpoint number | |||||
| * @retval Recived Data Size | |||||
| */ | |||||
| uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) | |||||
| { | |||||
| return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); | |||||
| } | |||||
| /** | |||||
| * @brief Delays routine for the USB device library. | |||||
| * @param Delay: Delay in ms | |||||
| * @retval None | |||||
| */ | |||||
| void USBD_LL_Delay(uint32_t Delay) | |||||
| { | |||||
| HAL_Delay(Delay); | |||||
| } | |||||
| /** | |||||
| * @brief Static single allocation. | |||||
| * @param size: Size of allocated memory | |||||
| * @retval None | |||||
| */ | |||||
| void *USBD_static_malloc(uint32_t size) | |||||
| { | |||||
| static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ | |||||
| return mem; | |||||
| } | |||||
| /** | |||||
| * @brief Dummy memory free | |||||
| * @param p: Pointer to allocated memory address | |||||
| * @retval None | |||||
| */ | |||||
| void USBD_static_free(void *p) | |||||
| { | |||||
| } | |||||
| /** | |||||
| * @brief Software Device Connection | |||||
| * @param hpcd: PCD handle | |||||
| * @param state: Connection state (0: disconnected / 1: connected) | |||||
| * @retval None | |||||
| */ | |||||
| #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) | |||||
| static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) | |||||
| #else | |||||
| void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) | |||||
| #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ | |||||
| { | |||||
| /* USER CODE BEGIN 6 */ | |||||
| if (state == 1) | |||||
| { | |||||
| /* Configure Low connection state. */ | |||||
| } | |||||
| else | |||||
| { | |||||
| /* Configure High connection state. */ | |||||
| } | |||||
| /* USER CODE END 6 */ | |||||
| } | |||||
| /** | |||||
| * @brief Retuns the USB status depending on the HAL status: | |||||
| * @param hal_status: HAL status | |||||
| * @retval USB status | |||||
| */ | |||||
| USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) | |||||
| { | |||||
| USBD_StatusTypeDef usb_status = USBD_OK; | |||||
| switch (hal_status) | |||||
| { | |||||
| case HAL_OK : | |||||
| usb_status = USBD_OK; | |||||
| break; | |||||
| case HAL_ERROR : | |||||
| usb_status = USBD_FAIL; | |||||
| break; | |||||
| case HAL_BUSY : | |||||
| usb_status = USBD_BUSY; | |||||
| break; | |||||
| case HAL_TIMEOUT : | |||||
| usb_status = USBD_FAIL; | |||||
| break; | |||||
| default : | |||||
| usb_status = USBD_FAIL; | |||||
| break; | |||||
| } | |||||
| return usb_status; | |||||
| } | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||
| @ -1,394 +0,0 @@ | |||||
| /* USER CODE BEGIN Header */ | |||||
| /** | |||||
| ****************************************************************************** | |||||
| * @file : usbd_desc.c | |||||
| * @version : v2.0_Cube | |||||
| * @brief : This file implements the USB device descriptors. | |||||
| ****************************************************************************** | |||||
| * @attention | |||||
| * | |||||
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |||||
| * All rights reserved.</center></h2> | |||||
| * | |||||
| * This software component is licensed by ST under Ultimate Liberty license | |||||
| * SLA0044, the "License"; You may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at: | |||||
| * www.st.com/SLA0044 | |||||
| * | |||||
| ****************************************************************************** | |||||
| */ | |||||
| /* USER CODE END Header */ | |||||
| /* Includes ------------------------------------------------------------------*/ | |||||
| #include "usbd_core.h" | |||||
| #include "usbd_desc.h" | |||||
| #include "usbd_conf.h" | |||||
| /* USER CODE BEGIN INCLUDE */ | |||||
| /* USER CODE END INCLUDE */ | |||||
| /* Private typedef -----------------------------------------------------------*/ | |||||
| /* Private define ------------------------------------------------------------*/ | |||||
| /* Private macro -------------------------------------------------------------*/ | |||||
| /* USER CODE BEGIN PV */ | |||||
| /* Private variables ---------------------------------------------------------*/ | |||||
| /* USER CODE END PV */ | |||||
| /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY | |||||
| * @{ | |||||
| */ | |||||
| /** @addtogroup USBD_DESC | |||||
| * @{ | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_TypesDefinitions USBD_DESC_Private_TypesDefinitions | |||||
| * @brief Private types. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN PRIVATE_TYPES */ | |||||
| /* USER CODE END PRIVATE_TYPES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines | |||||
| * @brief Private defines. | |||||
| * @{ | |||||
| */ | |||||
| #define USBD_VID 1155 | |||||
| #define USBD_LANGID_STRING 1033 | |||||
| #define USBD_MANUFACTURER_STRING "Piotr Wilkon SQ8L" | |||||
| #define USBD_PID_FS 22336 | |||||
| #define USBD_PRODUCT_STRING_FS "VP-Digi" | |||||
| #define USBD_CONFIGURATION_STRING_FS "VP-Digi" | |||||
| #define USBD_INTERFACE_STRING_FS "VP-Digi" | |||||
| /* USER CODE BEGIN PRIVATE_DEFINES */ | |||||
| /* USER CODE END PRIVATE_DEFINES */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /* USER CODE BEGIN 0 */ | |||||
| /* USER CODE END 0 */ | |||||
| /** @defgroup USBD_DESC_Private_Macros USBD_DESC_Private_Macros | |||||
| * @brief Private macros. | |||||
| * @{ | |||||
| */ | |||||
| /* USER CODE BEGIN PRIVATE_MACRO */ | |||||
| /* USER CODE END PRIVATE_MACRO */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes | |||||
| * @brief Private functions declaration. | |||||
| * @{ | |||||
| */ | |||||
| static void Get_SerialNum(void); | |||||
| static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes | |||||
| * @brief Private functions declaration for FS. | |||||
| * @{ | |||||
| */ | |||||
| uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables | |||||
| * @brief Private variables. | |||||
| * @{ | |||||
| */ | |||||
| USBD_DescriptorsTypeDef FS_Desc = | |||||
| { | |||||
| USBD_FS_DeviceDescriptor | |||||
| , USBD_FS_LangIDStrDescriptor | |||||
| , USBD_FS_ManufacturerStrDescriptor | |||||
| , USBD_FS_ProductStrDescriptor | |||||
| , USBD_FS_SerialStrDescriptor | |||||
| , USBD_FS_ConfigStrDescriptor | |||||
| , USBD_FS_InterfaceStrDescriptor | |||||
| }; | |||||
| #if defined ( __ICCARM__ ) /* IAR Compiler */ | |||||
| #pragma data_alignment=4 | |||||
| #endif /* defined ( __ICCARM__ ) */ | |||||
| /** USB standard device descriptor. */ | |||||
| __ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = | |||||
| { | |||||
| 0x12, /*bLength */ | |||||
| USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ | |||||
| 0x00, /*bcdUSB */ | |||||
| 0x02, | |||||
| 0x02, /*bDeviceClass*/ | |||||
| 0x02, /*bDeviceSubClass*/ | |||||
| 0x00, /*bDeviceProtocol*/ | |||||
| USB_MAX_EP0_SIZE, /*bMaxPacketSize*/ | |||||
| LOBYTE(USBD_VID), /*idVendor*/ | |||||
| HIBYTE(USBD_VID), /*idVendor*/ | |||||
| LOBYTE(USBD_PID_FS), /*idProduct*/ | |||||
| HIBYTE(USBD_PID_FS), /*idProduct*/ | |||||
| 0x00, /*bcdDevice rel. 2.00*/ | |||||
| 0x02, | |||||
| USBD_IDX_MFC_STR, /*Index of manufacturer string*/ | |||||
| USBD_IDX_PRODUCT_STR, /*Index of product string*/ | |||||
| USBD_IDX_SERIAL_STR, /*Index of serial number string*/ | |||||
| USBD_MAX_NUM_CONFIGURATION /*bNumConfigurations*/ | |||||
| }; | |||||
| /* USB_DeviceDescriptor */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables | |||||
| * @brief Private variables. | |||||
| * @{ | |||||
| */ | |||||
| #if defined ( __ICCARM__ ) /* IAR Compiler */ | |||||
| #pragma data_alignment=4 | |||||
| #endif /* defined ( __ICCARM__ ) */ | |||||
| /** USB lang indentifier descriptor. */ | |||||
| __ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END = | |||||
| { | |||||
| USB_LEN_LANGID_STR_DESC, | |||||
| USB_DESC_TYPE_STRING, | |||||
| LOBYTE(USBD_LANGID_STRING), | |||||
| HIBYTE(USBD_LANGID_STRING) | |||||
| }; | |||||
| #if defined ( __ICCARM__ ) /* IAR Compiler */ | |||||
| #pragma data_alignment=4 | |||||
| #endif /* defined ( __ICCARM__ ) */ | |||||
| /* Internal string descriptor. */ | |||||
| __ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END; | |||||
| #if defined ( __ICCARM__ ) /*!< IAR Compiler */ | |||||
| #pragma data_alignment=4 | |||||
| #endif | |||||
| __ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] __ALIGN_END = { | |||||
| USB_SIZ_STRING_SERIAL, | |||||
| USB_DESC_TYPE_STRING, | |||||
| }; | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** @defgroup USBD_DESC_Private_Functions USBD_DESC_Private_Functions | |||||
| * @brief Private functions. | |||||
| * @{ | |||||
| */ | |||||
| /** | |||||
| * @brief Return the device descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| UNUSED(speed); | |||||
| *length = sizeof(USBD_FS_DeviceDesc); | |||||
| return USBD_FS_DeviceDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Return the LangID string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| UNUSED(speed); | |||||
| *length = sizeof(USBD_LangIDDesc); | |||||
| return USBD_LangIDDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Return the product string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| if(speed == 0) | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| return USBD_StrDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Return the manufacturer string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| UNUSED(speed); | |||||
| USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); | |||||
| return USBD_StrDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Return the serial number string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| UNUSED(speed); | |||||
| *length = USB_SIZ_STRING_SERIAL; | |||||
| /* Update the serial number string descriptor with the data from the unique | |||||
| * ID */ | |||||
| Get_SerialNum(); | |||||
| /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ | |||||
| /* USER CODE END USBD_FS_SerialStrDescriptor */ | |||||
| return (uint8_t *) USBD_StringSerial; | |||||
| } | |||||
| /** | |||||
| * @brief Return the configuration string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| if(speed == USBD_SPEED_HIGH) | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| return USBD_StrDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Return the interface string descriptor | |||||
| * @param speed : Current device speed | |||||
| * @param length : Pointer to data length variable | |||||
| * @retval Pointer to descriptor buffer | |||||
| */ | |||||
| uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) | |||||
| { | |||||
| if(speed == 0) | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| else | |||||
| { | |||||
| USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); | |||||
| } | |||||
| return USBD_StrDesc; | |||||
| } | |||||
| /** | |||||
| * @brief Create the serial number string descriptor | |||||
| * @param None | |||||
| * @retval None | |||||
| */ | |||||
| static void Get_SerialNum(void) | |||||
| { | |||||
| uint32_t deviceserial0, deviceserial1, deviceserial2; | |||||
| deviceserial0 = *(uint32_t *) DEVICE_ID1; | |||||
| deviceserial1 = *(uint32_t *) DEVICE_ID2; | |||||
| deviceserial2 = *(uint32_t *) DEVICE_ID3; | |||||
| deviceserial0 += deviceserial2; | |||||
| if (deviceserial0 != 0) | |||||
| { | |||||
| IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); | |||||
| IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @brief Convert Hex 32Bits value into char | |||||
| * @param value: value to convert | |||||
| * @param pbuf: pointer to the buffer | |||||
| * @param len: buffer length | |||||
| * @retval None | |||||
| */ | |||||
| static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) | |||||
| { | |||||
| uint8_t idx = 0; | |||||
| for (idx = 0; idx < len; idx++) | |||||
| { | |||||
| if (((value >> 28)) < 0xA) | |||||
| { | |||||
| pbuf[2 * idx] = (value >> 28) + '0'; | |||||
| } | |||||
| else | |||||
| { | |||||
| pbuf[2 * idx] = (value >> 28) + 'A' - 10; | |||||
| } | |||||
| value = value << 4; | |||||
| pbuf[2 * idx + 1] = 0; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /** | |||||
| * @} | |||||
| */ | |||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | |||||