| @ -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"> | |||
| <storageModule moduleId="org.eclipse.cdt.core.settings"> | |||
| <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"> | |||
| <externalSettings/> | |||
| <externalSettings /> | |||
| <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> | |||
| </storageModule> | |||
| <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | |||
| <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.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=""> | |||
| <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"> | |||
| <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 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"> | |||
| <outputEntries> | |||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/> | |||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" /> | |||
| </outputEntries> | |||
| </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"> | |||
| <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"> | |||
| <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 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 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 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"> | |||
| <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 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 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 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"> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||
| </inputType> | |||
| </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"> | |||
| <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"> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||
| </inputType> | |||
| </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"> | |||
| <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | |||
| </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> | |||
| </toolChain> | |||
| </folderInfo> | |||
| <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> | |||
| </configuration> | |||
| </storageModule> | |||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | |||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> | |||
| </cconfiguration> | |||
| <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"> | |||
| <externalSettings/> | |||
| <externalSettings /> | |||
| <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> | |||
| </storageModule> | |||
| <storageModule moduleId="cdtBuildSystem" version="4.0.0"> | |||
| <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="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=""> | |||
| <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"> | |||
| <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 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"> | |||
| <outputEntries> | |||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release"/> | |||
| <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release" /> | |||
| </outputEntries> | |||
| </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"> | |||
| <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"> | |||
| <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 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 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 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"> | |||
| <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 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 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 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"> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||
| </inputType> | |||
| </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"> | |||
| <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"> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)"/> | |||
| <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> | |||
| <additionalInput kind="additionalinput" paths="$(LIBS)" /> | |||
| </inputType> | |||
| </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"> | |||
| <option id="gnu.both.asm.option.include.paths.1278058431" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"> | |||
| </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> | |||
| </toolChain> | |||
| </folderInfo> | |||
| <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> | |||
| </configuration> | |||
| </storageModule> | |||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | |||
| <storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> | |||
| </cconfiguration> | |||
| </storageModule> | |||
| <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 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"> | |||
| <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/> | |||
| <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="" /> | |||
| </scannerConfigBuildInfo> | |||
| </storageModule> | |||
| <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> | |||
| <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" /> | |||
| <storageModule moduleId="refreshScope" versionNumber="2"> | |||
| <configuration artifactName="${ProjName}" configurationName="Debug"> | |||
| <resource resourceType="PROJECT" workspacePath="F103C8T6_DIGI_USB"/> | |||
| <resource resourceType="PROJECT" workspacePath="F103C8T6_DIGI_USB" /> | |||
| </configuration> | |||
| </storageModule> | |||
| <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> | |||
| <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets" /> | |||
| </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] | |||
| 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] | |||
| 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; | |||
| [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****/ | |||