11 Commits

93 changed files with 57673 additions and 41054 deletions
Vendored
BIN
View File
Binary file not shown.
-187
View File
@@ -1,187 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<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"/>
</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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639." name="/" resourcePath="">
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1017099221" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1244048691" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32F107VCTx" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1379215735" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.960532971" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1990552137" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1586976077" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F107VCTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32F1xx_HAL_Driver/Inc | ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32F1xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32F107xC || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F107VCTX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.82282192" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="72" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat.808472221" name="Use float with printf from newlib-nano (-u _printf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex.400501462" name="Convert to Intel Hex file (-O ihex)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.converthex" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertsrec.519949918" name="Convert to Motorola S-record file (-O srec)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertsrec" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary.1730912092" name="Convert to binary file (-O binary)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.convertbinary" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1026339783" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/GbTModuleSW}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.653659782" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1272315080" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.370357426" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols.1924718806" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.340226531" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="/Users/colorbass/STM32CubeIDE/workspace_1.12.0/lib_EDCAN"/>
</option>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.602034741" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.129443933" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.150601486" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.2041244846" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o0" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.504560065" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F107xC"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.452593111" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Core/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>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1408123272" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.2070441151" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1543951018" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.2049580629" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2102490823" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.272103658" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F107VCTX_FLASH.ld}" valueType="string"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.266162782" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.502005820" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1392625179" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.771001125" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1682381984" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.467663480" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1608796910" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1767624081" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.139156618" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1422585447" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127" moduleId="org.eclipse.cdt.core.settings" name="Release">
<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"/>
</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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127." name="/" resourcePath="">
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.368317543" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1083778044" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32F107VCTx" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1672048738" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.716214807" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1611406059" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.2026840843" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F107VCTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32F1xx_HAL_Driver/Inc | ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32F1xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32F107xC || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F107VCTX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1744697906" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="72" valueType="string"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1433680358" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/GbTModuleSW}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1316679712" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1810954687" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1184417617" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.679037772" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.2023937975" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.2061465690" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.463973701" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1124370999" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F107xC"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.2130633236" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Core/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>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.139233432" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.77997183" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.954735929" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1509118949" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.os" valueType="enumerated"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.455795129" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.135018481" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F107VCTX_FLASH.ld}" valueType="string"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.850565080" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1304115760" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.2125898682" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.862607409" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.268643843" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2012318786" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.25627582" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1856490045" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.573281510" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.336799426" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="GbTModuleSW.null.359723610" name="GbTModuleSW"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.2023937975;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.139233432">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.129443933;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1408123272">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/GbTModuleSW"/>
</configuration>
<configuration configurationName="Release">
<resource resourceType="PROJECT" workspacePath="/GbTModuleSW"/>
</configuration>
</storageModule>
</cproject>
+117 -51
View File
@@ -1,63 +1,129 @@
# macOS # ---> C
.DS_Store # Prerequisites
**/.DS_Store
# Temporary/editor files
*.swp
*.swo
*~
*.tmp
*.bak
# STM32CubeIDE build intermediates
Debug/**/*.o
Debug/**/*.d
Debug/**/*.su
Debug/**/*.cyclo
Debug/**/*.mk
Debug/**/*.lst
Debug/**/*.log
Debug/**/*.tmp
Debug/**/*.a
Debug/**/*.obj
Release/**/*.o
Release/**/*.d
Release/**/*.su
Release/**/*.cyclo
Release/**/*.mk
Release/**/*.lst
Release/**/*.log
Release/**/*.tmp
Release/**/*.a
Release/**/*.obj
# Generic C/C++ intermediates
*.o
*.obj
*.d *.d
*.su
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch *.gch
*.pch *.pch
*.ilk
*.exp # Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb *.idb
*.pdb *.pdb
*.dSYM/
# Preserve firmware artifacts in git # Kernel Module Compile Results
!*.hex *.mod*
!*.bin *.cmd
!*.srec .tmp_versions/
!*.elf modules.order
Module.symvers
Mkfile.old
dkms.conf
# Eclipse local workspace metadata # ---> CMake
.metadata/ CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
# ---> Eclipse
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/ .externalToolBuilders/
# Optional local launch configs # Locally stored "Eclipse launch configurations"
*.launch *.launch
# VS Code local settings # PyDev specific (Python IDE for Eclipse)
.vscode/ *.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
#.project
@@ -1,2 +0,0 @@
eclipse.preferences.version=1
sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}}
-25
View File
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1370229639" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="529144383163155105" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1286135127" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="529144383163155105" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>
-6
View File
@@ -1,6 +0,0 @@
doxygen/doxygen_new_line_after_brief=true
doxygen/doxygen_use_brief_tag=false
doxygen/doxygen_use_javadoc_tags=true
doxygen/doxygen_use_pre_tag=false
doxygen/doxygen_use_structural_commands=false
eclipse.preferences.version=1
-5
View File
@@ -1,5 +0,0 @@
2F62501ED4689FB349E356AB974DBE57=0A9B2D4C5DCB32842F05F53136A1D1D7
66BE74F758C12D739921AEA421D593D3=1
8DF89ED150041C4CBC7CB9A9CAA90856=0A9B2D4C5DCB32842F05F53136A1D1D7
DC22A860405A8BF2F2C095E5B6529F12=283F84148D7B38E239E7ECD52C68B71F
eclipse.preferences.version=1
+34 -41
View File
@@ -6,7 +6,7 @@ ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_9
ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_VREFINT ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T3_TRGO ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T3_TRGO
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,NbrOfConversion,ExternalTrigConv,master ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,NbrOfConversion,ExternalTrigConv
ADC1.NbrOfConversion=6 ADC1.NbrOfConversion=6
ADC1.NbrOfConversionFlag=1 ADC1.NbrOfConversionFlag=1
ADC1.Rank-0\#ChannelRegularConversion=1 ADC1.Rank-0\#ChannelRegularConversion=1
@@ -143,47 +143,46 @@ Mcu.Pin25=PB11
Mcu.Pin26=PD13 Mcu.Pin26=PD13
Mcu.Pin27=PD14 Mcu.Pin27=PD14
Mcu.Pin28=PD15 Mcu.Pin28=PD15
Mcu.Pin29=PC9 Mcu.Pin29=PA9
Mcu.Pin3=OSC_OUT Mcu.Pin3=OSC_OUT
Mcu.Pin30=PA9 Mcu.Pin30=PA10
Mcu.Pin31=PA10 Mcu.Pin31=PA13
Mcu.Pin32=PA13 Mcu.Pin32=PA14
Mcu.Pin33=PA14 Mcu.Pin33=PA15
Mcu.Pin34=PA15 Mcu.Pin34=PC10
Mcu.Pin35=PC10 Mcu.Pin35=PC11
Mcu.Pin36=PC11 Mcu.Pin36=PC12
Mcu.Pin37=PC12 Mcu.Pin37=PD0
Mcu.Pin38=PD0 Mcu.Pin38=PD1
Mcu.Pin39=PD1 Mcu.Pin39=PD2
Mcu.Pin4=PC2 Mcu.Pin4=PC2
Mcu.Pin40=PD2 Mcu.Pin40=PD3
Mcu.Pin41=PD3 Mcu.Pin41=PD4
Mcu.Pin42=PD4 Mcu.Pin42=PD5
Mcu.Pin43=PD5 Mcu.Pin43=PD6
Mcu.Pin44=PD6 Mcu.Pin44=PD7
Mcu.Pin45=PD7 Mcu.Pin45=PB3
Mcu.Pin46=PB3 Mcu.Pin46=PB4
Mcu.Pin47=PB4 Mcu.Pin47=PB5
Mcu.Pin48=PB5 Mcu.Pin48=PB6
Mcu.Pin49=PB6 Mcu.Pin49=PB7
Mcu.Pin5=PC3 Mcu.Pin5=PC3
Mcu.Pin50=PB7 Mcu.Pin50=PB8
Mcu.Pin51=PB8 Mcu.Pin51=PB9
Mcu.Pin52=PB9 Mcu.Pin52=PE1
Mcu.Pin53=PE1 Mcu.Pin53=VP_ADC1_TempSens_Input
Mcu.Pin54=VP_ADC1_TempSens_Input Mcu.Pin54=VP_ADC1_Vref_Input
Mcu.Pin55=VP_ADC1_Vref_Input Mcu.Pin55=VP_CRC_VS_CRC
Mcu.Pin56=VP_CRC_VS_CRC Mcu.Pin56=VP_RTC_VS_RTC_Activate
Mcu.Pin57=VP_RTC_VS_RTC_Activate Mcu.Pin57=VP_SYS_VS_Systick
Mcu.Pin58=VP_SYS_VS_Systick Mcu.Pin58=VP_TIM3_VS_ClockSourceINT
Mcu.Pin59=VP_TIM3_VS_ClockSourceINT Mcu.Pin59=VP_TIM3_VS_no_output1
Mcu.Pin6=PA1 Mcu.Pin6=PA1
Mcu.Pin60=VP_TIM3_VS_no_output1 Mcu.Pin60=VP_TIM4_VS_ClockSourceINT
Mcu.Pin61=VP_TIM4_VS_ClockSourceINT
Mcu.Pin7=PA2 Mcu.Pin7=PA2
Mcu.Pin8=PA3 Mcu.Pin8=PA3
Mcu.Pin9=PA4 Mcu.Pin9=PA4
Mcu.PinsNb=62 Mcu.PinsNb=61
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32F107VCTx Mcu.UserName=STM32F107VCTx
@@ -307,8 +306,6 @@ PC10.Signal=USART3_TX
PC11.Locked=true PC11.Locked=true
PC11.Mode=Asynchronous PC11.Mode=Asynchronous
PC11.Signal=USART3_RX PC11.Signal=USART3_RX
PC12.GPIOParameters=GPIO_Label
PC12.GPIO_Label=HEATER
PC12.Mode=Asynchronous PC12.Mode=Asynchronous
PC12.Signal=UART5_TX PC12.Signal=UART5_TX
PC14-OSC32_IN.Mode=LSE-External-Oscillator PC14-OSC32_IN.Mode=LSE-External-Oscillator
@@ -332,10 +329,6 @@ PC5.GPIOParameters=GPIO_Label
PC5.GPIO_Label=LOCK_B PC5.GPIO_Label=LOCK_B
PC5.Locked=true PC5.Locked=true
PC5.Signal=GPIO_Output PC5.Signal=GPIO_Output
PC9.GPIOParameters=GPIO_Label
PC9.GPIO_Label=LED_DATA
PC9.Locked=true
PC9.Signal=GPIO_Output
PD0.Locked=true PD0.Locked=true
PD0.Mode=CAN_Activate PD0.Mode=CAN_Activate
PD0.Signal=CAN1_RX PD0.Signal=CAN1_RX
+133
View File
@@ -0,0 +1,133 @@
# Журнал изменений (сессия чата): `fork/CCSModuleSW30Web`
Документ фиксирует доработки проекта **CCSModuleSW30Web** в ветке/каталоге форка
`/Users/colorbass/STM32CubeIDE/workspace_1.12.0/fork/CCSModuleSW30Web`, обсуждавшиеся и вносившиеся в рамках описанной сессии (UART, ADC/DMA, CP, отладка IRQ, оптимизация `-Ofast` для кода из прерываний).
---
## 1. UART и протокол
### 1.1. UART3 (Everest / `serial.c`)
- Таймаут «нет связи с хостом»:** `EVEREST_TIMEOUT_MS` = **5000** мс.
- Жёсткий реинициал при отсутствии RX:** `UART3_REINIT_TIMEOUT_MS` = **1500** мс (с защитой от слишком частых реинициалов через `uart3_last_reinit_tick`).
- Расширено логирование путей сброса/ошибок приёма и ошибок HAL для диагностики «таймаут без остановки UART3».
- Колбэки и вспомогательные функции, вызываемые из контекста прерывания, помечены **`ISR_FAST`** (см. раздел 6):
`CCS_RxEventCallback`, `HAL_UART_ErrorCallback`, `uart3_log_hal_error`, `uart3_arm_rx_or_log`, цепочка разбора пакета (`process_received_packet`, `crc16_ibm`, `expected_payload_len`, `apply_command`).
### 1.2. UART2 / `serial_control.c`
- Отдельная логика **`SC_UART2_Watchdog()`**, вызывается из **`SC_Task()`** (не из IRQ).
- Константы:
- **`SC_UART2_REINIT_TIMEOUT_MS`** = **500** мс — порог для жёсткого реинициала при отсутствии пакетов;
- **`SC_UART2_PACKET_TIMEOUT_MS`** = **5000** мс — таймаут коммуникации.
- Сценарий **новый пакет при `BUSY_TX`**: при необходимости **`Abort_IT`**, сброс направления RS-485, затем повторная инициализация UART и приём `ReceiveToIdle_IT` (защита от обрыва TX из-за агрессивного watchdog).
- Отдельная ветка **жёсткого реинициала при `BUSY_TX`** с логом `USART2 BUSY_TX: hard reinit` (отслеживание `sc_uart2_last_busy_tx_reinit_packet_tick`).
- HAL-колбэки **`HAL_UARTEx_RxEventCallback`**, **`HAL_UART_TxCpltCallback`** помечены **`ISR_FAST`**.
### 1.3. `SC_SendPacket` и стек CRC/кодирования
- Для единообразной оптимизации пути «IRQ → ответ» на функции **`calculate_crc32`**, **`encode_packet`**, **`parse_packet`**, **`process_received_packet`** и публичную **`SC_SendPacket`** добавлен **`ISR_FAST`**.
- В **`Core/Inc/serial_control.h`**: подключение **`isr_opt.h`**, прототип **`ISR_FAST void SC_SendPacket(...)`** (согласованность с определением в `.c`).
**Замечание:** `SC_SendPacket` вызывается и из основного потока; для GCC вся функция компилируется с `-Ofast`. При необходимости строгого разделения можно вынести отдельную версию «только из IRQ».
---
## 2. Отладочные линии DBG в `stm32f1xx_it.c`
На время входа/выхода из выбранных обработчиков прерываний поднимается/опускается соответствующий GPIO — удобно для осциллографа (длительность IRQ).
| Линия | Обработчик |
|--------|------------|
| **DBG1** | `UART5_IRQHandler` |
| **DBG2** | `USART2_IRQHandler` |
| **DBG3** | `USART3_IRQHandler` |
| **DBG4** | `DMA1_Channel1_IRQHandler`, `ADC1_2_IRQHandler`, `TIM3_IRQHandler` |
| **DBG5** | `CAN1_RX0_IRQHandler`, `CAN2_TX_IRQHandler`, `CAN2_RX1_IRQHandler` |
| — | `USART1_IRQHandler` — без обёртки DBG (по согласованию) |
В **`DMA1_Channel1_IRQHandler`** вызывается **`HAL_DMA_IRQHandler(&hdma_adc1)`** для цепочки ADC+DMA.
Для всего файла **`stm32f1xx_it.c`** под GCC добавлено:
```c
#pragma GCC optimize("Ofast")
```
(в блоке `USER CODE BEGIN Includes`).
---
## 3. ADC: DMA, глобальные данные, колбэк
- Файлы **`adc.c` / `adc.h`**: структура **`ADC_ScanData_t`**, глобально **`volatile ADC_ScanData_t adc_data`** с полями сырых каналов (`in3_raw`, `cp_raw`, `ntc1_raw`, `ntc2_raw`, `temp_sensor_raw`, `vrefint_raw` и т.д. по фактическому объявлению в заголовке).
- **`HAL_ADC_ConvCpltCallback`**: копирование из буфера DMA в **`adc_data`**, помечен **`ISR_FAST`**.
- Публичная **`ADC_ScanStart()`** — запуск сканирования (после калибровки вызывается из инициализации платы).
- **`board.c`**: после **`HAL_ADCEx_Calibration_Start`** вызывается **`ADC_ScanStart()`**; **`CONN_ReadTemp`** читает **`adc_data.ntc1_raw` / `ntc2_raw`** вместо блокирующего опроса ADC.
**Диагностика (из обсуждения):** если не вызываются **`HAL_ADC_ConvCpltCallback`** / **`HAL_DMA_IRQHandler`**, проверять: срабатывание триггера ADC (например, **TIM3 TRGO**), работу TIM3, порядок инициализации DMA/NVIC, срабатывание **`DMA1_Channel1_IRQHandler`**.
---
## 4. CP (`cp.c` / `cp.h`)
- Измерение опоры на **`adc_data.cp_raw`** (и при необходимости **`vrefint_raw`** по текущей реализации в коде).
- Логика классификации/порогов приведена к варианту, согласованному с основным **CCSModuleSW30Web** (не форк).
- Сэмпл по таймеру: уход от тяжёлой работы в IRQ OC — использование **`HAL_TIM_OC_Start`** без прерывания по сравнению, обновление напряжения в **`CP_GetVoltage()`** / основном цикле (**`CP_Loop`** опирается на **`CP_GetState()`** и т.п. по фактическому коду).
---
## 5. Отладочный UART (`debug.c`)
При **`#ifndef USE_WEB_INTERFACE`** (или эквивалентной ветке сборки в файле): колбэк **`HAL_UARTEx_RxEventCallback`** и **`debug_rx_interrupt`** помечены **`ISR_FAST`**.
---
## 6. Оптимизация `-Ofast` для кода из прерываний
### 6.1. Макрос `ISR_FAST`
Файл **`Core/Inc/isr_opt.h`**:
- **GCC:** `#define ISR_FAST __attribute__((optimize("Ofast")))`
- **Иное:** пустой макрос.
### 6.2. Где используется (по состоянию репозитория)
| Файл | Элементы с `ISR_FAST` / pragma |
|------|--------------------------------|
| `stm32f1xx_it.c` | `#pragma GCC optimize("Ofast")` на весь файл (GCC) |
| `adc.c` | `HAL_ADC_ConvCpltCallback` |
| `serial.c` | `CCS_RxEventCallback`, `HAL_UART_ErrorCallback`, `uart3_log_hal_error`, `uart3_arm_rx_or_log`, `process_received_packet`, `crc16_ibm`, `expected_payload_len`, `apply_command` |
| `serial_control.c` | `HAL_UARTEx_RxEventCallback`, `HAL_UART_TxCpltCallback`, `calculate_crc32`, `encode_packet`, `parse_packet`, `process_received_packet`, `SC_SendPacket` |
| `serial_control.h` | прототип `SC_SendPacket` + `#include "isr_opt.h"` |
| `psu_control.c` | `HAL_CAN_RxFifo1MsgPendingCallback` |
| `debug.c` | см. раздел 5 |
---
## 7. Ограничения и переносимость
- **`ISR_FAST`** и pragma в **`stm32f1xx_it.c`** рассчитаны на **GCC** (STM32CubeIDE по умолчанию). Для **IAR / ARM Compiler 6** потребуется отдельная стратегия (прагмы/ключи проекта).
- **`-Ofast`** допускает агрессивные преобразования с плавающей точкой и перестановки, влияющие на строго воспроизводимую арифметику; для критичных вычислений вне IRQ при необходимости ограничивайте область оптимизации.
---
## 8. Затронутые пути (краткий список)
- `Core/Inc/isr_opt.h` — новый/центральный заголовок оптимизации IRQ.
- `Core/Inc/serial_control.h``isr_opt.h`, `ISR_FAST` у `SC_SendPacket`.
- `Core/Src/stm32f1xx_it.c` — DBG, DMA ADC, pragma `Ofast`.
- `Core/Src/adc.c`, `Core/Inc/adc.h` — DMA, `adc_data`, `ADC_ScanStart`, колбэк.
- `Core/Src/board.c` — калибровка, старт скана, температура из `adc_data`.
- `Core/Src/cp.c`, `Core/Inc/cp.h` — CP и ADC.
- `Core/Src/serial.c` — UART3, таймауты, логи, `ISR_FAST`.
- `Core/Src/serial_control.c` — UART2, watchdog, `ISR_FAST`.
- `Core/Src/psu_control.c` — CAN RX callback.
- `Core/Src/debug.c` — отладочный UART под условием сборки.
- `Core/Src/dma.c`, `gpio.c`, `main.h` — по необходимости для DMA1 Ch1 и DBG-пинов.
---
*Документ сгенерирован для фиксации контекста сессии; при дальнейших правках кода имеет смысл обновлять соответствующие разделы вручную.*
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file adc.h
* @brief This file contains all the function prototypes for
* the adc.c file
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ADC_H__ #ifndef __ADC_H__
+13 -3
View File
@@ -1,6 +1,14 @@
#pragma once /*
* board.h
*
* Created on: Apr 15, 2024
* Author: colorbass
*/
#include <stdint.h> #ifndef SRC_BOARD_H_
#define SRC_BOARD_H_
void GBT_Lock(uint8_t state);
typedef enum{ typedef enum{
RELAY_AUX0 = 0, RELAY_AUX0 = 0,
@@ -16,7 +24,6 @@ typedef enum{
} relay_t; } relay_t;
void RELAY_Write(relay_t num, uint8_t state); void RELAY_Write(relay_t num, uint8_t state);
uint8_t RELAY_Read(relay_t num);
void Init_Peripheral(); void Init_Peripheral();
uint8_t GBT_LockGetState(); uint8_t GBT_LockGetState();
void GBT_Lock(uint8_t state); void GBT_Lock(uint8_t state);
@@ -53,3 +60,6 @@ typedef struct __attribute__((packed)) {
} InfoBlock_t; } InfoBlock_t;
extern InfoBlock_t *InfoBlock; extern InfoBlock_t *InfoBlock;
#endif /* SRC_BOARD_H_ */
Regular → Executable
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file can.h
* @brief This file contains all the function prototypes for
* the can.c file
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __CAN_H__ #ifndef __CAN_H__
+3 -5
View File
@@ -5,11 +5,9 @@
#define PSU_MIN_VOLTAGE 150 //1V/bit #define PSU_MIN_VOLTAGE 150 //1V/bit
#define PSU_MAX_CURRENT 133 //1A/bit #define PSU_MAX_CURRENT 133 //1A/bit
#define PSU_MIN_CURRENT 1 //1A/bit #define PSU_MIN_CURRENT 1 //1A/bit
#define PSU_MAX_POWER 40000 //1W/bit #define PSU_MAX_POWER 30000 //1W/bit
#define PSU_NUM 1 #define PSU_NUM 1
/* Everest / стенд: запрос «500 В» на шине — реально на PSU задаются U/I ниже; статус может оставаться 500 В (serial.c). */ #define GBT_CH_VER_MAJOR 1
#define FAKE_EVREQ_VOLTAGE_V 500u #define GBT_CH_VER_MINOR 0
#define FAKE_PSU_VOLTAGE_V 300u
#define FAKE_PSU_CURRENT_0P1A 10u
+19 -1
View File
@@ -1,4 +1,12 @@
#pragma once /*
* charger_control.h
*
* Created on: Jul 29, 2024
* Author: colorbass
*/
#ifndef INC_CHARGER_CONTROL_H_
#define INC_CHARGER_CONTROL_H_
#include "main.h" #include "main.h"
@@ -75,6 +83,16 @@ typedef struct{
extern ChargingConnector_t CONN; extern ChargingConnector_t CONN;
//информация о зарядке
//база данных с хранением инфы
//главный блок хранит в себе инфу о конфиге возможно во флеше
//либо в charger_config.h
//OCPP - универсальный блок типа
void CONN_Init(); void CONN_Init();
void CONN_Loop(); void CONN_Loop();
void CONN_PrintChargingTotal();
#endif /* INC_CHARGER_CONTROL_H_ */
+12 -1
View File
@@ -1,4 +1,12 @@
#pragma once /*
* connector.h
*
* Created on: Jul 31, 2024
* Author: colorbass
*/
#ifndef INC_CONNECTOR_H_
#define INC_CONNECTOR_H_
#include "main.h" #include "main.h"
#include "charger_control.h" #include "charger_control.h"
@@ -7,4 +15,7 @@
extern CONN_State_t connectorState; extern CONN_State_t connectorState;
void CONN_Init(); void CONN_Init();
void CONN_Task();
void CONN_SetState(CONN_State_t state); void CONN_SetState(CONN_State_t state);
#endif /* INC_CONNECTOR_H_ */
+4 -1
View File
@@ -1,4 +1,5 @@
#pragma once #ifndef __CP_H
#define __CP_H
#include "main.h" #include "main.h"
#include <stdint.h> #include <stdint.h>
@@ -26,3 +27,5 @@ CP_State_t CP_GetFilteredState(void);
void CP_FilterState(void); void CP_FilterState(void);
void CP_Loop(void); void CP_Loop(void);
#endif
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file crc.h
* @brief This file contains all the function prototypes for
* the crc.c file
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __CRC_H__ #ifndef __CRC_H__
+11 -1
View File
@@ -1,4 +1,12 @@
#pragma once /*
* debug.h
*
* Created on: Apr 16, 2024
* Author: colorbass
*/
#ifndef SRC_DEBUG_H_
#define SRC_DEBUG_H_
#include <stdint.h> #include <stdint.h>
#include <stdarg.h> #include <stdarg.h>
@@ -22,3 +30,5 @@ void debug_buffer_send(void);
// Кастомный printf с приоритетом лога // Кастомный printf с приоритетом лога
int log_printf(LogLevel_t level, const char *format, ...); int log_printf(LogLevel_t level, const char *format, ...);
#endif /* SRC_DEBUG_H_ */
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file dma.h
* @brief This file contains all the function prototypes for
* the dma.c file
******************************************************************************
* @attention
*
* Copyright (c) 2026 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __DMA_H__ #ifndef __DMA_H__
Regular → Executable
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file gpio.h
* @brief This file contains all the function prototypes for
* the gpio.c file
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __GPIO_H__ #ifndef __GPIO_H__
+4 -1
View File
@@ -1,4 +1,5 @@
#pragma once #ifndef ISR_OPT_H
#define ISR_OPT_H
/* GCC: быстрые функции, вызываемые из IRQ / из HAL из IRQ-контекста */ /* GCC: быстрые функции, вызываемые из IRQ / из HAL из IRQ-контекста */
#if defined(__GNUC__) #if defined(__GNUC__)
@@ -6,3 +7,5 @@
#else #else
#define ISR_FAST #define ISR_FAST
#endif #endif
#endif /* ISR_OPT_H */
+17 -7
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.h
* @brief : Header for main.c file.
* This file contains the common defines of the application.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
@@ -39,8 +55,6 @@ extern "C" {
void Error_Handler(void); void Error_Handler(void);
/* USER CODE BEGIN EFP */ /* USER CODE BEGIN EFP */
uint8_t ED_TraceWarning(uint8_t flag, uint8_t id);
void ED_Delay(uint32_t Delay);
/* USER CODE END EFP */ /* USER CODE END EFP */
@@ -87,12 +101,8 @@ void ED_Delay(uint32_t Delay);
#define DBG5_GPIO_Port GPIOB #define DBG5_GPIO_Port GPIOB
#define DBG4_Pin GPIO_PIN_11 #define DBG4_Pin GPIO_PIN_11
#define DBG4_GPIO_Port GPIOB #define DBG4_GPIO_Port GPIOB
#define LED_DATA_Pin GPIO_PIN_9
#define LED_DATA_GPIO_Port GPIOC
#define RELAY_CC_Pin GPIO_PIN_15 #define RELAY_CC_Pin GPIO_PIN_15
#define RELAY_CC_GPIO_Port GPIOA #define RELAY_CC_GPIO_Port GPIOA
#define HEATER_Pin GPIO_PIN_12
#define HEATER_GPIO_Port GPIOC
#define RELAY_DC_Pin GPIO_PIN_3 #define RELAY_DC_Pin GPIO_PIN_3
#define RELAY_DC_GPIO_Port GPIOD #define RELAY_DC_GPIO_Port GPIOD
#define USART2_DIR_Pin GPIO_PIN_4 #define USART2_DIR_Pin GPIO_PIN_4
+13 -1
View File
@@ -1,15 +1,25 @@
#pragma once /*
* psu_struct.h
*
* Created on: Jul 24, 2024
* Author: colorbass
*/
#ifndef INC_METER_H_
#define INC_METER_H_
#include "main.h" #include "main.h"
#include "charger_config.h" #include "charger_config.h"
typedef struct { typedef struct {
uint32_t meterLastTick; // Время последнего пакета Alive
uint8_t online; uint8_t online;
uint32_t lastTick; // Время последнего вызова для каждого коннектора uint32_t lastTick; // Время последнего вызова для каждого коннектора
uint64_t EnergyPSU_Ws; // Энергия для каждого коннектора (расчет по силовым модулям) uint64_t EnergyPSU_Ws; // Энергия для каждого коннектора (расчет по силовым модулям)
uint32_t AbsoluteEnergy; // Абсолютная энергия каждого счетчика (ватт*час) uint32_t AbsoluteEnergy; // Абсолютная энергия каждого счетчика (ватт*час)
uint32_t EnergyOffset; // смещение энергии по счетчикам (если 0, значит не успели захватить Offset) (ватт*час) uint32_t EnergyOffset; // смещение энергии по счетчикам (если 0, значит не успели захватить Offset) (ватт*час)
uint32_t EnergyOffset1; // смещение энергии по счетчикам относительно PSU
uint8_t enable; //если 0, то счетчик обнуляется uint8_t enable; //если 0, то счетчик обнуляется
}METER_t; }METER_t;
@@ -17,3 +27,5 @@ typedef struct {
extern METER_t METER; extern METER_t METER;
void METER_CalculateEnergy(); void METER_CalculateEnergy();
#endif /* INC_METER_H_ */
+15 -2
View File
@@ -1,11 +1,20 @@
#pragma once /*
* ccs_control.h
*
* Created on: 19 авг. 2024 г.
* Author: colorbass
*/
#ifndef INC_PSU_CONTROL_H_
#define INC_PSU_CONTROL_H_
#include "main.h" #include "main.h"
#include "charger_config.h" #include "charger_config.h"
void PSU_Init(); void PSU_Init();
void PSU_Enable(uint8_t addr, uint8_t enable); void PSU_Enable(uint8_t addr, uint8_t enable);
void PSU_ReadWrite(void); void PSU_Loop();
void CONT_Loop();
// --- Состояние силового модуля (DC30, один PSU) --- // --- Состояние силового модуля (DC30, один PSU) ---
@@ -182,3 +191,7 @@ extern PSU_1B_t PSU_1B;
extern PSU_1C_t PSU_1C; extern PSU_1C_t PSU_1C;
#pragma pack(pop) #pragma pack(pop)
#endif /* INC_PSU_CONTROL_H_ */
+12 -2
View File
@@ -1,4 +1,12 @@
#pragma once /*
* rgb_handler.h
*
* Created on: Jul 25, 2024
* Author: colorbass
*/
#ifndef INC_RGB_CONTROLLER_H_
#define INC_RGB_CONTROLLER_H_
#include "main.h" #include "main.h"
@@ -40,4 +48,6 @@ typedef struct{
void LED_Task(); void LED_Task();
void LED_Write(); void LED_Write();
void LED_Init(); void LED_Init();
void LED_SetColor(RGB_Cycle_t *color);
#endif /* INC_RGB_CONTROLLER_H_ */
Regular → Executable
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file rtc.h
* @brief This file contains all the function prototypes for
* the rtc.c file
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __RTC_H__ #ifndef __RTC_H__
+5 -1
View File
@@ -1,4 +1,5 @@
#pragma once #ifndef __SERIAL_H
#define __SERIAL_H
#include "main.h" #include "main.h"
#include "charger_control.h" #include "charger_control.h"
@@ -124,3 +125,6 @@ extern CCS_MaxLoad_t CCS_MaxLoad;
extern CCS_EvInfo_t CCS_EvInfo; extern CCS_EvInfo_t CCS_EvInfo;
extern CONN_State_t CCS_EvseState; extern CONN_State_t CCS_EvseState;
extern uint8_t REPLUG; extern uint8_t REPLUG;
#endif
+6 -1
View File
@@ -1,10 +1,13 @@
#pragma once #ifndef SERIALCONTROL_H
#define SERIALCONTROL_H
#include "main.h" #include "main.h"
#include <string.h> #include <string.h>
#include "charger_control.h" #include "charger_control.h"
#include "isr_opt.h" #include "isr_opt.h"
#define USE_WEB_INTERFACE
// Команды от ПК к устройству // Команды от ПК к устройству
// Пакет статуса изоляции от отдельного блока по одностороннему UART // Пакет статуса изоляции от отдельного блока по одностороннему UART
#define CMD_ISOLATION_STATUS 0x01 #define CMD_ISOLATION_STATUS 0x01
@@ -177,3 +180,5 @@ extern StatusPacket_t statusPacket;
extern InfoPacket_t infoPacket; extern InfoPacket_t infoPacket;
extern IsolationStatusPacket_t ISO; extern IsolationStatusPacket_t ISO;
extern volatile SC_Source_t g_sc_command_source; extern volatile SC_Source_t g_sc_command_source;
#endif // SERIALCONTROL_H
+5 -1
View File
@@ -1,4 +1,5 @@
#pragma once #ifndef SMA_FILTER_H
#define SMA_FILTER_H
#include <stdint.h> #include <stdint.h>
@@ -17,3 +18,6 @@ typedef struct {
void SMAFilter_Init(SMAFilter_t* f); void SMAFilter_Init(SMAFilter_t* f);
int32_t SMAFilter_Update(SMAFilter_t* f, int32_t x); int32_t SMAFilter_Update(SMAFilter_t* f, int32_t x);
#endif // SMA_FILTER_H
+11 -1
View File
@@ -1,4 +1,12 @@
#pragma once /*
* soft_rtc.h
*
* Created on: Jul 22, 2024
* Author: colorbass
*/
#ifndef INC_SOFT_RTC_H_
#define INC_SOFT_RTC_H_
#include "main.h" #include "main.h"
@@ -7,3 +15,5 @@ void set_Time(uint32_t unix_time);
void unix_to_bcd(uint32_t unix_time, uint8_t *time); void unix_to_bcd(uint32_t unix_time, uint8_t *time);
void writeTimeReg(uint8_t reg_number, uint8_t value); void writeTimeReg(uint8_t reg_number, uint8_t value);
uint8_t getTimeReg(uint8_t reg_number); uint8_t getTimeReg(uint8_t reg_number);
#endif /* INC_SOFT_RTC_H_ */
+16 -1
View File
@@ -1,5 +1,20 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file stm32f1xx_hal_conf.h
* @brief HAL configuration file.
******************************************************************************
* @attention
*
* Copyright (c) 2017 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
+16 -1
View File
@@ -1,5 +1,20 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file stm32f1xx_it.h
* @brief This file contains the headers of the interrupt handlers.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file tim.h
* @brief This file contains all the function prototypes for
* the tim.c file
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __TIM_H__ #ifndef __TIM_H__
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file usart.h
* @brief This file contains all the function prototypes for
* the usart.c file
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USART_H__ #ifndef __USART_H__
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file adc.c
* @brief This file provides code for the configuration
* of the ADC instances.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "adc.h" #include "adc.h"
+17 -24
View File
@@ -1,9 +1,13 @@
#include "board.h"
#include "adc.h"
#include "main.h" #include "main.h"
#include "sma_filter.h" #include "board.h"
#include "adc.h"
#include "tim.h" #include "tim.h"
#include "sma_filter.h"
//TODO:
//TEMP READ
// Connector temperature sensors
InfoBlock_t *InfoBlock = (InfoBlock_t *)(VERSION_OFFSET); InfoBlock_t *InfoBlock = (InfoBlock_t *)(VERSION_OFFSET);
@@ -70,31 +74,19 @@ uint8_t IN_ReadInput(inputNum_t input_n){
} }
} }
/* Заглушка: температура платы не измеряется (нет реализации АЦП для канала). */ uint8_t GetBoardTemp(){
uint8_t GetBoardTemp(void){ //TODO
// HAL_ADC_Start(&hadc1); // start the adc
//
// HAL_ADC_PollForConversion(&hadc1, 100); // poll for conversion
//
// adc_val = HAL_ADC_GetValue(&hadc1); // get the adc value
//
// HAL_ADC_Stop(&hadc1); // stop adc
return 0; return 0;
} }
/**
* @brief Force PC12 (HEATER) as GPIO output via CRH/ODR, overriding UART5 MspInit.
* CubeMX assigns PC12 to UART5_TX; on the board it drives the heater relay.
*/
static void Heater_PinForceOutput(void)
{
const uint32_t pin_cfg = GPIO_SPEED_FREQ_LOW; /* MODE=10, CNF=00: GP output PP, 2 MHz */
__HAL_RCC_GPIOC_CLK_ENABLE();
MODIFY_REG(HEATER_GPIO_Port->CRH,
(GPIO_CRH_MODE12 | GPIO_CRH_CNF12),
(pin_cfg << GPIO_CRH_MODE12_Pos));
HEATER_GPIO_Port->BSRR = (uint32_t)HEATER_Pin << 16U;
}
void Init_Peripheral(){ void Init_Peripheral(){
Heater_PinForceOutput();
HAL_GPIO_WritePin(HEATER_GPIO_Port, HEATER_Pin, GPIO_PIN_RESET);
HAL_ADCEx_Calibration_Start(&hadc1); HAL_ADCEx_Calibration_Start(&hadc1);
ADC_ScanStart(); ADC_ScanStart();
@@ -146,6 +138,7 @@ int16_t CONN_ReadTemp(uint8_t ch){
return 20; //Термодатчик не подключен return 20; //Термодатчик не подключен
} }
// int adc_value = 2048; // Пример значения АЦП
float Vref = 3.3; // Напряжение опорное float Vref = 3.3; // Напряжение опорное
float Vin = 5.0; // Входное напряжение float Vin = 5.0; // Входное напряжение
float R = 1000; // Сопротивление резистора в Омах float R = 1000; // Сопротивление резистора в Омах
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file can.c
* @brief This file provides code for the configuration
* of the CAN instances.
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "can.h" #include "can.h"
+21 -4
View File
@@ -1,11 +1,13 @@
#include "charger_control.h"
#include "charger_control.h"
#include "charger_config.h" #include "charger_config.h"
#include "debug.h"
#include "psu_control.h" #include "psu_control.h"
#include "connector.h"
#include "debug.h"
ChargingConnector_t CONN; ChargingConnector_t CONN;
CONN_State_t connectorState; CONN_State_t connectorState;
extern uint8_t config_initialized;
void CONN_Init(){ void CONN_Init(){
@@ -26,14 +28,22 @@ void CONN_Loop(){
CONN.chargingError = CONN_ERR_CONTACTOR; CONN.chargingError = CONN_ERR_CONTACTOR;
} else if(PSU0.psu_fault){ } else if(PSU0.psu_fault){
CONN.chargingError = CONN_ERR_PSU_FAULT; CONN.chargingError = CONN_ERR_PSU_FAULT;
// } else if(!CTRL.ac_ok) {
// CONN.chargingError = CONN_ERR_AC_FAULT;
// } else
}else if (CONN.EvConnected == 0){ }else if (CONN.EvConnected == 0){
CONN.chargingError = CONN_NO_ERROR; CONN.chargingError = CONN_NO_ERROR;
} }
if(ED_TraceWarning(CONN.chargingError, 0)) { if(ED_TraceWarning(CONN.chargingError, 0)) printf("CONN%d Error: %d\n", 0, CONN.chargingError);
log_printf(LOG_WARN, "CONN0 Error: %d\n", (int)CONN.chargingError);
} }
void CONN_Task(){
/* CCS state machine is handled in serial.c.
* Keep this task lightweight for scheduler compatibility.
*/
return;
} }
void CONN_SetState(CONN_State_t state){ void CONN_SetState(CONN_State_t state){
@@ -61,3 +71,10 @@ void CONN_SetState(CONN_State_t state){
CONN.connState = state; CONN.connState = state;
} }
void CONN_PrintChargingTotal(){
printf("CONN%d Charging Finished:\n", 0);
// printf("Charging Time: %d\n", CONN.chargingTime);
printf("Charging Energy: %d\n", CONN.Energy);
// printf("Charging Power: %d\n", CONN.chargingPower);
}
-1
View File
@@ -1,5 +1,4 @@
#include "cp.h" #include "cp.h"
#include "adc.h" #include "adc.h"
#include "board.h" #include "board.h"
#include "debug.h" #include "debug.h"
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file crc.c
* @brief This file provides code for the configuration
* of the CRC instances.
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "crc.h" #include "crc.h"
+14 -7
View File
@@ -1,14 +1,21 @@
/*
* debug.c
*
* Created on: Apr 16, 2024
* Author: colorbass
*/
#include "main.h" #include "main.h"
#include "board.h"
#include "connector.h"
#include "debug.h"
#include "serial_control.h"
#include "usart.h"
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include <stdarg.h>
#include "debug.h"
#include "board.h"
#include "usart.h"
#include <time.h> #include <time.h>
#include <connector.h>
#include "serial_control.h"
// Кольцевой буфер для отладочных сообщений // Кольцевой буфер для отладочных сообщений
#define DEBUG_BUFFER_SIZE 1024 #define DEBUG_BUFFER_SIZE 1024
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file dma.c
* @brief This file provides code for the configuration
* of all the requested memory to memory DMA transfers.
******************************************************************************
* @attention
*
* Copyright (c) 2026 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
+20 -5
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file gpio.c
* @brief This file provides code for the configuration
* of all used GPIO pins.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
@@ -38,8 +54,7 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, DBG1_Pin|RELAY_CP_Pin|LOCK_A_Pin|LOCK_B_Pin HAL_GPIO_WritePin(GPIOC, DBG1_Pin|RELAY_CP_Pin|LOCK_A_Pin|LOCK_B_Pin, GPIO_PIN_RESET);
|LED_DATA_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, DBG2_Pin|DBG3_Pin|RELAY_CC_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, DBG2_Pin|DBG3_Pin|RELAY_CC_Pin, GPIO_PIN_RESET);
@@ -61,8 +76,8 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(DBG1_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(DBG1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : RELAY_CP_Pin LOCK_A_Pin LOCK_B_Pin LED_DATA_Pin */ /*Configure GPIO pins : RELAY_CP_Pin LOCK_A_Pin LOCK_B_Pin */
GPIO_InitStruct.Pin = RELAY_CP_Pin|LOCK_A_Pin|LOCK_B_Pin|LED_DATA_Pin; GPIO_InitStruct.Pin = RELAY_CP_Pin|LOCK_A_Pin|LOCK_B_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+11 -12
View File
@@ -1,5 +1,4 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "main.h" #include "main.h"
@@ -14,17 +13,15 @@
/* Private includes ----------------------------------------------------------*/ /* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#include "can.h"
#include "board.h" #include "board.h"
#include "charger_config.h"
#include "connector.h"
#include "debug.h"
#include "meter.h"
#include "psu_control.h"
#include "rgb_controller.h"
#include "serial.h"
#include "serial_control.h"
#include "soft_rtc.h"
#include <stdio.h> #include <stdio.h>
#include "debug.h"
#include "soft_rtc.h"
#include "connector.h"
#include "serial_control.h"
#include "charger_config.h"
#include "serial.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
@@ -56,7 +53,6 @@ void SystemClock_Config(void);
/* Private user code ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */ /* USER CODE BEGIN 0 */
static void StopButtonControl(void);
/** /**
* @brief Vector base address configuration. It should no longer be at the start of * @brief Vector base address configuration. It should no longer be at the start of
@@ -103,12 +99,13 @@ void ED_Delay(uint32_t Delay)
CCS_SerialLoop(); CCS_SerialLoop();
StopButtonControl(); StopButtonControl();
CP_Loop(); CP_Loop();
CONN_Task();
LED_Task(); LED_Task();
SC_Task(); SC_Task();
} }
} }
static void StopButtonControl(void){ void StopButtonControl(){
static uint32_t tick; static uint32_t tick;
static uint32_t hold_time; static uint32_t hold_time;
static uint8_t stop_btn_fault = 1; static uint8_t stop_btn_fault = 1;
@@ -149,6 +146,8 @@ static void StopButtonControl(void){
} }
} }
uint8_t temp0, temp1;
static void CAN1_MinimalReInit(void) static void CAN1_MinimalReInit(void)
{ {
HAL_CAN_Stop(&hcan1); HAL_CAN_Stop(&hcan1);
+9 -1
View File
@@ -1,5 +1,13 @@
#include "meter.h" /*
* meter.c
*
* Created on: 27 сент. 2024 г.
* Author: root
*/
#include "meter.h"
#include "charger_config.h"
#include "charger_control.h" #include "charger_control.h"
+15 -8
View File
@@ -1,13 +1,14 @@
#include "psu_control.h"
#include "board.h" #include <psu_control.h>
#include "can.h" #include "can.h"
#include "string.h"
#include "stdio.h"
#include "charger_config.h" #include "charger_config.h"
#include "charger_control.h" #include "charger_control.h"
#include "board.h"
#include "debug.h" #include "debug.h"
#include "isr_opt.h" #include "isr_opt.h"
#include <stdio.h>
#include <string.h>
PSU_02_t PSU_02; PSU_02_t PSU_02;
PSU_04_t PSU_04; PSU_04_t PSU_04;
@@ -30,8 +31,6 @@ uint32_t can_lastpacket;
extern CAN_HandleTypeDef hcan2; extern CAN_HandleTypeDef hcan2;
static void PSU_SendCmd(uint8_t source, uint8_t destination, uint8_t cmd, void *data);
static void PSU_SwitchState(PSU_State_t state){ static void PSU_SwitchState(PSU_State_t state){
PSU0.state = state; PSU0.state = state;
PSU0.statetick = HAL_GetTick(); PSU0.statetick = HAL_GetTick();
@@ -228,6 +227,7 @@ void PSU_SendCmd(uint8_t source, uint8_t destination, uint8_t cmd, void *data){
/* если отправка удалась, выход */ /* если отправка удалась, выход */
if(CAN_result == HAL_OK) { if(CAN_result == HAL_OK) {
return; return;
retry_counter = 0;
} }
} }
ED_Delay(1); ED_Delay(1);
@@ -237,6 +237,11 @@ void PSU_SendCmd(uint8_t source, uint8_t destination, uint8_t cmd, void *data){
} }
uint32_t max(uint32_t a, uint32_t b){
if(a>b) return a;
else return b;
}
void PSU_ReadWrite(){ void PSU_ReadWrite(){
uint8_t zero_data[8] = {0,0,0,0,0,0,0,0}; uint8_t zero_data[8] = {0,0,0,0,0,0,0,0};
@@ -259,8 +264,8 @@ void PSU_ReadWrite(){
CONN.RequestedPower = CONN.RequestedCurrent * CONN.RequestedVoltage / 10; CONN.RequestedPower = CONN.RequestedCurrent * CONN.RequestedVoltage / 10;
if(PSU0.ready){ if(PSU0.ready){
if (CONN.RequestedVoltage == FAKE_EVREQ_VOLTAGE_V) { if (CONN.RequestedVoltage == 500) { // fake
PSU_SetVoltageCurrent(0, (uint16_t)FAKE_PSU_VOLTAGE_V, (uint16_t)FAKE_PSU_CURRENT_0P1A); PSU_SetVoltageCurrent(0, 300, 10); // Normal mode
}else{ }else{
PSU_SetVoltageCurrent(0, CONN.RequestedVoltage, CONN.RequestedCurrent); // Normal mode PSU_SetVoltageCurrent(0, CONN.RequestedVoltage, CONN.RequestedCurrent); // Normal mode
} }
@@ -283,6 +288,7 @@ void PSU_ReadWrite(){
void PSU_Task(void){ void PSU_Task(void){
static uint32_t psu_on_tick = 0; static uint32_t psu_on_tick = 0;
static uint32_t dc_on_tick = 0;
static uint32_t cont_ok_tick = 0; static uint32_t cont_ok_tick = 0;
// Обновляем ONLINE/READY по таймауту // Обновляем ONLINE/READY по таймауту
@@ -362,6 +368,7 @@ void PSU_Task(void){
case PSU_WAIT_ACK_ON: case PSU_WAIT_ACK_ON:
if(PSU0.PSU_enabled && PSU0.ready){ if(PSU0.PSU_enabled && PSU0.ready){
dc_on_tick = HAL_GetTick();
PSU_SwitchState(PSU_CONT_WAIT_ACK_ON); PSU_SwitchState(PSU_CONT_WAIT_ACK_ON);
}else if(PSU_StateTime() > 10000){ }else if(PSU_StateTime() > 10000){
PSU0.psu_fault = 1; PSU0.psu_fault = 1;
+29 -4
View File
@@ -1,10 +1,10 @@
#include "rgb_controller.h" #include "rgb_controller.h"
#include "board.h"
#include "charger_control.h"
#include "main.h" #include "main.h"
#include "string.h"
#include "charger_control.h"
#include "board.h"
#include "tim.h" #include "tim.h"
#include <string.h>
RGB_State_t LED_State; RGB_State_t LED_State;
RGB_Cycle_t LED_Cycle; RGB_Cycle_t LED_Cycle;
@@ -198,11 +198,36 @@ void LED_Init(){
RGB_SetColor(&color); RGB_SetColor(&color);
} }
// void LED_PhaseSync(uint8_t led_n){
// if(LED_State[led_n].phasesync){
// LED_State[led_n].phasesync = 0;
// //default settings
// LED_State[led_n].state = LED_HIGH;
// LED_State[led_n].tick = 0;
// //ищем среди всех светодиодов такую же последовательность
// for (uint8_t led_n1 = 0; led_n1 < 5; led_n1++){
// if ((LED_Cycle[led_n].Tf == LED_Cycle[led_n1].Tf) &&
// (LED_Cycle[led_n].Tr == LED_Cycle[led_n1].Tr) &&
// (LED_Cycle[led_n].Th == LED_Cycle[led_n1].Th) &&
// (LED_Cycle[led_n].Tl == LED_Cycle[led_n1].Tl) &&
// (led_n != led_n1)){
// //если нашли, то копируем фазу оттуда
// LED_State[led_n].state = LED_State[led_n1].state;
// LED_State[led_n].tick = LED_State[led_n1].tick;
// return;
// }
// }
// }
// }
void LED_Task(){ void LED_Task(){
static uint32_t led_tick; static uint32_t led_tick;
if((HAL_GetTick() - led_tick) > 20){ if((HAL_GetTick() - led_tick) > 20){
led_tick = HAL_GetTick(); led_tick = HAL_GetTick();
LED_State.tick++; LED_State.tick++;
// LED_PhaseSync(led_n);
switch(LED_State.state){ switch(LED_State.state){
case LED_RISING: case LED_RISING:
interpolateColors(&LED_Cycle.Color2, &LED_Cycle.Color1, LED_State.tick, LED_Cycle.Tr, &LED_State.color); interpolateColors(&LED_Cycle.Color2, &LED_Cycle.Color1, LED_State.tick, LED_Cycle.Tr, &LED_State.color);
+11 -6
View File
@@ -1,15 +1,14 @@
#include "serial.h" #include "serial.h"
#include "board.h"
#include "charger_config.h"
#include "connector.h"
#include "cp.h" #include "cp.h"
#include "connector.h"
#include "board.h"
#include "debug.h" #include "debug.h"
#include "isr_opt.h" #include "isr_opt.h"
#include "psu_control.h"
#include "serial_control.h"
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "charger_config.h"
#include "psu_control.h"
#include "serial_control.h"
extern UART_HandleTypeDef huart3; extern UART_HandleTypeDef huart3;
extern uint8_t config_initialized; extern uint8_t config_initialized;
@@ -29,9 +28,15 @@ CONN_Control_t last_cmd = CMD_NONE;
uint8_t ev_enable_output = 0; uint8_t ev_enable_output = 0;
#define CMD_INTERVAL 10 #define CMD_INTERVAL 10
#define MAX_TX_BUFFER_SIZE 256
#define MAX_RX_BUFFER_SIZE 256
#define EVEREST_TIMEOUT_WARN_MS 5000u #define EVEREST_TIMEOUT_WARN_MS 5000u
#define EVEREST_TIMEOUT_STOP_MS 10000u #define EVEREST_TIMEOUT_STOP_MS 10000u
#define UART3_REINIT_TIMEOUT_MS 1500u #define UART3_REINIT_TIMEOUT_MS 1500u
/* Everest requests 500 V -> PSU really gets 300 V / 1 A, state still reports 500 V. */
#define FAKE_EVREQ_VOLTAGE_V 500u
#define FAKE_PSU_VOLTAGE_V 300u
#define FAKE_PSU_CURRENT_0P1A 10u
static uint8_t rx_buffer[MAX_RX_BUFFER_SIZE]; static uint8_t rx_buffer[MAX_RX_BUFFER_SIZE];
static uint8_t tx_buffer[MAX_TX_BUFFER_SIZE]; static uint8_t tx_buffer[MAX_TX_BUFFER_SIZE];
+2 -3
View File
@@ -1,10 +1,9 @@
#include "serial_control.h" #include "serial_control.h"
#include "usart.h"
#include "board.h" #include "board.h"
#include "serial.h"
#include "debug.h" #include "debug.h"
#include "isr_opt.h" #include "isr_opt.h"
#include "serial.h"
#include "usart.h"
// Приватные функции // Приватные функции
ISR_FAST static uint32_t calculate_crc32(const uint8_t* data, uint16_t length); ISR_FAST static uint32_t calculate_crc32(const uint8_t* data, uint16_t length);
+8 -7
View File
@@ -1,14 +1,14 @@
#include "serial_control.h" #include "serial_control.h"
#include "board.h"
#include "charger_control.h"
#include "debug.h"
#include "psu_control.h"
#include "usart.h" #include "usart.h"
#include "charger_control.h"
#include "board.h"
#include "psu_control.h"
#include "debug.h"
#include <string.h> #include <string.h>
#ifdef USE_WEB_INTERFACE
extern volatile SC_Source_t g_sc_command_source; extern volatile SC_Source_t g_sc_command_source;
static void monitoring_data_callback(void);
IsolationStatusPacket_t ISO = { IsolationStatusPacket_t ISO = {
.isolationResistance = 0xFFFF .isolationResistance = 0xFFFF
@@ -122,7 +122,7 @@ void SC_CommandHandler(ReceivedCommand_t* cmd) {
// Колбэк для заполнения данных мониторинга // Колбэк для заполнения данных мониторинга
static void monitoring_data_callback(void) { void monitoring_data_callback() {
// Информация о зарядной сессии // Информация о зарядной сессии
statusPacket.SOC = CONN.SOC; statusPacket.SOC = CONN.SOC;
@@ -202,3 +202,4 @@ static void monitoring_data_callback(void) {
} }
#endif
+22 -2
View File
@@ -1,4 +1,11 @@
#include "soft_rtc.h" /*
* rtc.c
*
* Created on: Jul 22, 2024
* Author: colorbass
*/
#include <soft_rtc.h>
#include <stdint.h> #include <stdint.h>
#include <time.h> #include <time.h>
@@ -56,7 +63,20 @@ uint8_t getTimeReg(uint8_t reg_number){
}else{ }else{
return 0x00; return 0x00;
} }
} };
//int main() {
// uint32_t unix_time = 1672531199; // Example Unix timestamp
// uint8_t time[8];
//
// unix_to_bcd(unix_time, time);
//
// // Print the BCD values for verification
// for (int i = 0; i < 8; i++) {
// log_printf(LOG_INFO, "time[%d]: %02X\n", i, time[i]);
// }
//
// return 0;
//}
/** /**
* @brief Read the time counter available in RTC_CNT registers. * @brief Read the time counter available in RTC_CNT registers.
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file stm32f1xx_hal_msp.c
* @brief This file provides code for the MSP Initialization
* and de-Initialization codes.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
+16 -1
View File
@@ -1,5 +1,20 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file stm32f1xx_it.c
* @brief Interrupt Service Routines.
******************************************************************************
* @attention
*
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
+17 -1
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file tim.c
* @brief This file provides code for the configuration
* of the TIM instances.
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "tim.h" #include "tim.h"
+20 -4
View File
@@ -1,5 +1,21 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/**
******************************************************************************
* @file usart.c
* @brief This file provides code for the configuration
* of the USART instances.
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usart.h" #include "usart.h"
@@ -151,10 +167,10 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
PC12 ------> UART5_TX PC12 ------> UART5_TX
PD2 ------> UART5_RX PD2 ------> UART5_RX
*/ */
GPIO_InitStruct.Pin = HEATER_Pin; GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(HEATER_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
@@ -345,7 +361,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
PC12 ------> UART5_TX PC12 ------> UART5_TX
PD2 ------> UART5_RX PD2 ------> UART5_RX
*/ */
HAL_GPIO_DeInit(HEATER_GPIO_Port, HEATER_Pin); HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2); HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+23321 -23323
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3727 -3726
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+5 -5
View File
@@ -1,5 +1,5 @@
../Core/Src/adc.c:13:6:ADC_ScanStart 2 ../Core/Src/adc.c:29:6:ADC_ScanStart 2
../Core/Src/adc.c:21:15:HAL_ADC_ConvCpltCallback 2 ../Core/Src/adc.c:37:15:HAL_ADC_ConvCpltCallback 2
../Core/Src/adc.c:43:6:MX_ADC1_Init 8 ../Core/Src/adc.c:59:6:MX_ADC1_Init 8
../Core/Src/adc.c:130:6:HAL_ADC_MspInit 3 ../Core/Src/adc.c:146:6:HAL_ADC_MspInit 3
../Core/Src/adc.c:184:6:HAL_ADC_MspDeInit 2 ../Core/Src/adc.c:200:6:HAL_ADC_MspDeInit 2
+13 -14
View File
@@ -1,14 +1,13 @@
../Core/Src/board.c:14:6:RELAY_Write 9 ../Core/Src/board.c:18:6:RELAY_Write 9
../Core/Src/board.c:47:9:RELAY_Read 1 ../Core/Src/board.c:51:9:RELAY_Read 1
../Core/Src/board.c:52:9:IN_ReadInput 8 ../Core/Src/board.c:56:9:IN_ReadInput 8
../Core/Src/board.c:74:9:GetBoardTemp 1 ../Core/Src/board.c:77:9:GetBoardTemp 1
../Core/Src/board.c:82:13:Heater_PinForceOutput 1 ../Core/Src/board.c:89:6:Init_Peripheral 1
../Core/Src/board.c:95:6:Init_Peripheral 1 ../Core/Src/board.c:106:7:pt1000_to_temperature 1
../Core/Src/board.c:114:7:pt1000_to_temperature 1 ../Core/Src/board.c:117:7:calculate_NTC_resistance 2
../Core/Src/board.c:125:7:calculate_NTC_resistance 2 ../Core/Src/board.c:132:9:CONN_ReadTemp 4
../Core/Src/board.c:140:9:CONN_ReadTemp 4 ../Core/Src/board.c:152:9:GBT_ReadTemp 1
../Core/Src/board.c:159:9:GBT_ReadTemp 1 ../Core/Src/board.c:156:6:ADC_Select_Channel 2
../Core/Src/board.c:163:6:ADC_Select_Channel 2 ../Core/Src/board.c:167:9:ADC_TryLock 4
../Core/Src/board.c:174:9:ADC_TryLock 4 ../Core/Src/board.c:183:6:ADC_LockBlocking 2
../Core/Src/board.c:190:6:ADC_LockBlocking 2 ../Core/Src/board.c:189:6:ADC_Unlock 2
../Core/Src/board.c:196:6:ADC_Unlock 2
+4 -4
View File
@@ -1,4 +1,4 @@
../Core/Src/can.c:15:6:MX_CAN1_Init 2 ../Core/Src/can.c:31:6:MX_CAN1_Init 2
../Core/Src/can.c:47:6:MX_CAN2_Init 2 ../Core/Src/can.c:63:6:MX_CAN2_Init 2
../Core/Src/can.c:81:6:HAL_CAN_MspInit 5 ../Core/Src/can.c:97:6:HAL_CAN_MspInit 5
../Core/Src/can.c:160:6:HAL_CAN_MspDeInit 5 ../Core/Src/can.c:176:6:HAL_CAN_MspDeInit 5
+5 -3
View File
@@ -1,3 +1,5 @@
../Core/Src/charger_control.c:10:6:CONN_Init 1 ../Core/Src/charger_control.c:12:6:CONN_Init 1
../Core/Src/charger_control.c:18:6:CONN_Loop 6 ../Core/Src/charger_control.c:20:6:CONN_Loop 6
../Core/Src/charger_control.c:39:6:CONN_SetState 16 ../Core/Src/charger_control.c:42:6:CONN_Task 1
../Core/Src/charger_control.c:49:6:CONN_SetState 16
../Core/Src/charger_control.c:75:6:CONN_PrintChargingTotal 1
+9 -9
View File
@@ -1,9 +1,9 @@
../Core/Src/cp.c:20:16:CP_ReadVoltageMv 1 ../Core/Src/cp.c:19:16:CP_ReadVoltageMv 1
../Core/Src/cp.c:37:6:CP_Init 1 ../Core/Src/cp.c:36:6:CP_Init 1
../Core/Src/cp.c:54:6:CP_SetDuty 1 ../Core/Src/cp.c:53:6:CP_SetDuty 1
../Core/Src/cp.c:67:9:CP_GetDuty 1 ../Core/Src/cp.c:66:9:CP_GetDuty 1
../Core/Src/cp.c:71:9:CP_GetVoltage 1 ../Core/Src/cp.c:70:9:CP_GetVoltage 1
../Core/Src/cp.c:76:12:CP_GetState 12 ../Core/Src/cp.c:75:12:CP_GetState 12
../Core/Src/cp.c:100:12:CP_GetFilteredState 1 ../Core/Src/cp.c:99:12:CP_GetFilteredState 1
../Core/Src/cp.c:104:6:CP_FilterState 5 ../Core/Src/cp.c:103:6:CP_FilterState 5
../Core/Src/cp.c:132:6:CP_Loop 5 ../Core/Src/cp.c:131:6:CP_Loop 5
+3 -3
View File
@@ -1,3 +1,3 @@
../Core/Src/crc.c:14:6:MX_CRC_Init 2 ../Core/Src/crc.c:30:6:MX_CRC_Init 2
../Core/Src/crc.c:35:6:HAL_CRC_MspInit 2 ../Core/Src/crc.c:51:6:HAL_CRC_MspInit 2
../Core/Src/crc.c:51:6:HAL_CRC_MspDeInit 2 ../Core/Src/crc.c:67:6:HAL_CRC_MspDeInit 2
+5 -5
View File
@@ -1,5 +1,5 @@
../Core/Src/debug.c:35:5:_write 1 ../Core/Src/debug.c:42:5:_write 1
../Core/Src/debug.c:43:6:debug_buffer_add 3 ../Core/Src/debug.c:50:6:debug_buffer_add 3
../Core/Src/debug.c:63:10:debug_buffer_available 1 ../Core/Src/debug.c:70:10:debug_buffer_available 1
../Core/Src/debug.c:72:6:debug_buffer_send 5 ../Core/Src/debug.c:79:6:debug_buffer_send 5
../Core/Src/debug.c:112:5:log_printf 3 ../Core/Src/debug.c:119:5:log_printf 3
+1 -1
View File
@@ -1 +1 @@
../Core/Src/dma.c:23:6:MX_DMA_Init 1 ../Core/Src/dma.c:39:6:MX_DMA_Init 1
+1 -1
View File
@@ -1 +1 @@
../Core/Src/gpio.c:28:6:MX_GPIO_Init 1 ../Core/Src/gpio.c:44:6:MX_GPIO_Init 1
+8 -8
View File
@@ -1,9 +1,9 @@
../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1 ../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
../Core/Src/main.c:69:13:VectorBase_Config 1 ../Core/Src/main.c:65:13:VectorBase_Config 1
../Core/Src/main.c:80:9:ED_TraceWarning 3 ../Core/Src/main.c:76:9:ED_TraceWarning 3
../Core/Src/main.c:92:6:ED_Delay 3 ../Core/Src/main.c:88:6:ED_Delay 3
../Core/Src/main.c:111:13:StopButtonControl 8 ../Core/Src/main.c:108:6:StopButtonControl 8
../Core/Src/main.c:152:13:CAN1_MinimalReInit 3 ../Core/Src/main.c:151:13:CAN1_MinimalReInit 3
../Core/Src/main.c:170:5:main 1 ../Core/Src/main.c:169:5:main 1
../Core/Src/main.c:251:6:SystemClock_Config 4 ../Core/Src/main.c:250:6:SystemClock_Config 4
../Core/Src/main.c:311:6:Error_Handler 1 ../Core/Src/main.c:310:6:Error_Handler 1
+1 -1
View File
@@ -1 +1 @@
../Core/Src/meter.c:9:6:METER_CalculateEnergy 3 ../Core/Src/meter.c:17:6:METER_CalculateEnergy 3
+12 -11
View File
@@ -1,11 +1,12 @@
../Core/Src/psu_control.c:35:13:PSU_SwitchState 1 ../Core/Src/psu_control.c:34:13:PSU_SwitchState 1
../Core/Src/psu_control.c:40:17:PSU_StateTime 1 ../Core/Src/psu_control.c:39:17:PSU_StateTime 1
../Core/Src/psu_control.c:44:15:HAL_CAN_RxFifo1MsgPendingCallback 9 ../Core/Src/psu_control.c:43:15:HAL_CAN_RxFifo1MsgPendingCallback 9
../Core/Src/psu_control.c:118:6:PSU_CAN_FilterInit 2 ../Core/Src/psu_control.c:117:6:PSU_CAN_FilterInit 2
../Core/Src/psu_control.c:141:6:PSU_Init 1 ../Core/Src/psu_control.c:140:6:PSU_Init 1
../Core/Src/psu_control.c:159:6:PSU_Enable 3 ../Core/Src/psu_control.c:158:6:PSU_Enable 3
../Core/Src/psu_control.c:171:6:PSU_SetHVMode 2 ../Core/Src/psu_control.c:170:6:PSU_SetHVMode 2
../Core/Src/psu_control.c:178:6:PSU_SetVoltageCurrent 5 ../Core/Src/psu_control.c:177:6:PSU_SetVoltageCurrent 5
../Core/Src/psu_control.c:205:6:PSU_SendCmd 4 ../Core/Src/psu_control.c:204:6:PSU_SendCmd 4
../Core/Src/psu_control.c:240:6:PSU_ReadWrite 8 ../Core/Src/psu_control.c:240:10:max 2
../Core/Src/psu_control.c:284:6:PSU_Task 41 ../Core/Src/psu_control.c:245:6:PSU_ReadWrite 8
../Core/Src/psu_control.c:289:6:PSU_Task 41
+1 -1
View File
@@ -3,4 +3,4 @@
../Core/Src/rgb_controller.c:182:6:RGB_SetColor 1 ../Core/Src/rgb_controller.c:182:6:RGB_SetColor 1
../Core/Src/rgb_controller.c:188:6:LED_SetColor 1 ../Core/Src/rgb_controller.c:188:6:LED_SetColor 1
../Core/Src/rgb_controller.c:193:6:LED_Init 1 ../Core/Src/rgb_controller.c:193:6:LED_Init 1
../Core/Src/rgb_controller.c:201:6:LED_Task 10 ../Core/Src/rgb_controller.c:225:6:LED_Task 10
+20 -20
View File
@@ -1,20 +1,20 @@
../Core/Src/serial.c:65:22:uart3_log_hal_error 3 ../Core/Src/serial.c:70:22:uart3_log_hal_error 3
../Core/Src/serial.c:85:22:uart3_arm_rx_or_log 3 ../Core/Src/serial.c:90:22:uart3_arm_rx_or_log 3
../Core/Src/serial.c:101:15:CCS_RxEventCallback 4 ../Core/Src/serial.c:106:15:CCS_RxEventCallback 4
../Core/Src/serial.c:124:15:HAL_UART_ErrorCallback 5 ../Core/Src/serial.c:129:15:HAL_UART_ErrorCallback 5
../Core/Src/serial.c:144:6:CCS_TxCpltCallback 4 ../Core/Src/serial.c:149:6:CCS_TxCpltCallback 4
../Core/Src/serial.c:160:6:CCS_SerialLoop 62 ../Core/Src/serial.c:165:6:CCS_SerialLoop 62
../Core/Src/serial.c:360:6:CCS_Init 1 ../Core/Src/serial.c:365:6:CCS_Init 1
../Core/Src/serial.c:375:26:crc16_ibm 3 ../Core/Src/serial.c:380:26:crc16_ibm 3
../Core/Src/serial.c:390:17:CCS_BuildPacket 4 ../Core/Src/serial.c:395:17:CCS_BuildPacket 4
../Core/Src/serial.c:406:13:CCS_SendPacket 4 ../Core/Src/serial.c:411:13:CCS_SendPacket 4
../Core/Src/serial.c:423:13:CCS_SendResetReason 1 ../Core/Src/serial.c:428:13:CCS_SendResetReason 1
../Core/Src/serial.c:427:6:CCS_SendEmergencyStop 1 ../Core/Src/serial.c:432:6:CCS_SendEmergencyStop 1
../Core/Src/serial.c:431:6:CCS_SendStart 1 ../Core/Src/serial.c:436:6:CCS_SendStart 1
../Core/Src/serial.c:435:13:CCS_CalculateEnergy 2 ../Core/Src/serial.c:440:13:CCS_CalculateEnergy 2
../Core/Src/serial.c:450:13:send_state 3 ../Core/Src/serial.c:455:13:send_state 3
../Core/Src/serial.c:480:26:expected_payload_len 2 ../Core/Src/serial.c:485:26:expected_payload_len 2
../Core/Src/serial.c:496:22:apply_command 15 ../Core/Src/serial.c:501:22:apply_command 15
../Core/Src/serial.c:578:25:process_received_packet 8 ../Core/Src/serial.c:583:25:process_received_packet 8
../Core/Src/serial.c:631:13:CCS_UART3_Watchdog 4 ../Core/Src/serial.c:636:13:CCS_UART3_Watchdog 4
../Core/Src/serial.c:644:13:CCS_LogUart3Error 1 ../Core/Src/serial.c:649:13:CCS_LogUart3Error 1
+15 -15
View File
@@ -1,15 +1,15 @@
../Core/Src/serial_control.c:72:6:ReadVersion 1 ../Core/Src/serial_control.c:71:6:ReadVersion 1
../Core/Src/serial_control.c:84:6:SC_Init 1 ../Core/Src/serial_control.c:83:6:SC_Init 1
../Core/Src/serial_control.c:95:6:SC_Task 7 ../Core/Src/serial_control.c:94:6:SC_Task 7
../Core/Src/serial_control.c:123:15:HAL_UARTEx_RxEventCallback 8 ../Core/Src/serial_control.c:122:15:HAL_UARTEx_RxEventCallback 8
../Core/Src/serial_control.c:153:15:HAL_UART_TxCpltCallback 3 ../Core/Src/serial_control.c:152:15:HAL_UART_TxCpltCallback 3
../Core/Src/serial_control.c:164:26:calculate_crc32 3 ../Core/Src/serial_control.c:163:26:calculate_crc32 3
../Core/Src/serial_control.c:181:26:encode_packet 5 ../Core/Src/serial_control.c:180:26:encode_packet 5
../Core/Src/serial_control.c:214:15:SC_SendPacket 4 ../Core/Src/serial_control.c:213:15:SC_SendPacket 4
../Core/Src/serial_control.c:231:25:parse_packet 3 ../Core/Src/serial_control.c:230:25:parse_packet 3
../Core/Src/serial_control.c:264:25:process_received_packet 2 ../Core/Src/serial_control.c:263:25:process_received_packet 2
../Core/Src/serial_control.c:273:13:SC_UART2_Watchdog 5 ../Core/Src/serial_control.c:272:13:SC_UART2_Watchdog 5
../Core/Src/serial_control.c:294:13:SC_ArmUart2RxDma 4 ../Core/Src/serial_control.c:293:13:SC_ArmUart2RxDma 4
../Core/Src/serial_control.c:302:13:SC_ArmUart5RxDma 3 ../Core/Src/serial_control.c:301:13:SC_ArmUart5RxDma 3
../Core/Src/serial_control.c:311:6:SC_RecoverUartDma 3 ../Core/Src/serial_control.c:310:6:SC_RecoverUartDma 3
../Core/Src/serial_control.c:326:13:SC_LogUartError 3 ../Core/Src/serial_control.c:325:13:SC_LogUartError 3
+1 -1
View File
@@ -1,3 +1,3 @@
../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1 ../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
../Core/Src/serial_handler.c:26:6:SC_CommandHandler 19 ../Core/Src/serial_handler.c:26:6:SC_CommandHandler 19
../Core/Src/serial_handler.c:125:13:monitoring_data_callback 1 ../Core/Src/serial_handler.c:125:6:monitoring_data_callback 1
+10 -10
View File
@@ -1,10 +1,10 @@
../Core/Src/soft_rtc.c:15:10:get_Current_Time 1 ../Core/Src/soft_rtc.c:22:10:get_Current_Time 1
../Core/Src/soft_rtc.c:19:6:set_Time 1 ../Core/Src/soft_rtc.c:26:6:set_Time 1
../Core/Src/soft_rtc.c:23:9:to_bcd 1 ../Core/Src/soft_rtc.c:30:9:to_bcd 1
../Core/Src/soft_rtc.c:27:6:unix_to_bcd 1 ../Core/Src/soft_rtc.c:34:6:unix_to_bcd 1
../Core/Src/soft_rtc.c:41:6:writeTimeReg 2 ../Core/Src/soft_rtc.c:48:6:writeTimeReg 2
../Core/Src/soft_rtc.c:46:9:getTimeReg 5 ../Core/Src/soft_rtc.c:53:9:getTimeReg 5
../Core/Src/soft_rtc.c:67:17:RTC1_ReadTimeCounter 2 ../Core/Src/soft_rtc.c:87:17:RTC1_ReadTimeCounter 2
../Core/Src/soft_rtc.c:99:26:RTC1_WriteTimeCounter 3 ../Core/Src/soft_rtc.c:119:26:RTC1_WriteTimeCounter 3
../Core/Src/soft_rtc.c:131:26:RTC1_EnterInitMode 3 ../Core/Src/soft_rtc.c:151:26:RTC1_EnterInitMode 3
../Core/Src/soft_rtc.c:158:26:RTC1_ExitInitMode 3 ../Core/Src/soft_rtc.c:178:26:RTC1_ExitInitMode 3
+1 -1
View File
@@ -1 +1 @@
../Core/Src/stm32f1xx_hal_msp.c:47:6:HAL_MspInit 1 ../Core/Src/stm32f1xx_hal_msp.c:63:6:HAL_MspInit 1
+23 -23
View File
@@ -1,23 +1,23 @@
../Core/Src/stm32f1xx_it.c:69:6:NMI_Handler 1 ../Core/Src/stm32f1xx_it.c:84:6:NMI_Handler 1
../Core/Src/stm32f1xx_it.c:84:6:HardFault_Handler 1 ../Core/Src/stm32f1xx_it.c:99:6:HardFault_Handler 1
../Core/Src/stm32f1xx_it.c:99:6:MemManage_Handler 1 ../Core/Src/stm32f1xx_it.c:114:6:MemManage_Handler 1
../Core/Src/stm32f1xx_it.c:114:6:BusFault_Handler 1 ../Core/Src/stm32f1xx_it.c:129:6:BusFault_Handler 1
../Core/Src/stm32f1xx_it.c:129:6:UsageFault_Handler 1 ../Core/Src/stm32f1xx_it.c:144:6:UsageFault_Handler 1
../Core/Src/stm32f1xx_it.c:144:6:SVC_Handler 1 ../Core/Src/stm32f1xx_it.c:159:6:SVC_Handler 1
../Core/Src/stm32f1xx_it.c:157:6:DebugMon_Handler 1 ../Core/Src/stm32f1xx_it.c:172:6:DebugMon_Handler 1
../Core/Src/stm32f1xx_it.c:170:6:PendSV_Handler 1 ../Core/Src/stm32f1xx_it.c:185:6:PendSV_Handler 1
../Core/Src/stm32f1xx_it.c:183:6:SysTick_Handler 1 ../Core/Src/stm32f1xx_it.c:198:6:SysTick_Handler 1
../Core/Src/stm32f1xx_it.c:204:6:DMA1_Channel1_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:219:6:DMA1_Channel1_IRQHandler 1
../Core/Src/stm32f1xx_it.c:218:6:DMA1_Channel2_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:233:6:DMA1_Channel2_IRQHandler 1
../Core/Src/stm32f1xx_it.c:232:6:DMA1_Channel3_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:247:6:DMA1_Channel3_IRQHandler 1
../Core/Src/stm32f1xx_it.c:246:6:DMA1_Channel6_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:261:6:DMA1_Channel6_IRQHandler 1
../Core/Src/stm32f1xx_it.c:260:6:DMA1_Channel7_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:275:6:DMA1_Channel7_IRQHandler 1
../Core/Src/stm32f1xx_it.c:274:6:ADC1_2_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:289:6:ADC1_2_IRQHandler 1
../Core/Src/stm32f1xx_it.c:288:6:CAN1_RX0_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:303:6:CAN1_RX0_IRQHandler 1
../Core/Src/stm32f1xx_it.c:302:6:TIM3_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:317:6:TIM3_IRQHandler 1
../Core/Src/stm32f1xx_it.c:316:6:USART1_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:331:6:USART1_IRQHandler 1
../Core/Src/stm32f1xx_it.c:330:6:USART2_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:345:6:USART2_IRQHandler 1
../Core/Src/stm32f1xx_it.c:344:6:USART3_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:359:6:USART3_IRQHandler 1
../Core/Src/stm32f1xx_it.c:358:6:UART5_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:373:6:UART5_IRQHandler 1
../Core/Src/stm32f1xx_it.c:372:6:CAN2_TX_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:387:6:CAN2_TX_IRQHandler 1
../Core/Src/stm32f1xx_it.c:386:6:CAN2_RX1_IRQHandler 1 ../Core/Src/stm32f1xx_it.c:401:6:CAN2_RX1_IRQHandler 1
+5 -5
View File
@@ -1,5 +1,5 @@
../Core/Src/tim.c:15:6:MX_TIM3_Init 8 ../Core/Src/tim.c:31:6:MX_TIM3_Init 8
../Core/Src/tim.c:79:6:MX_TIM4_Init 8 ../Core/Src/tim.c:95:6:MX_TIM4_Init 8
../Core/Src/tim.c:141:6:HAL_TIM_Base_MspInit 3 ../Core/Src/tim.c:157:6:HAL_TIM_Base_MspInit 3
../Core/Src/tim.c:171:6:HAL_TIM_MspPostInit 3 ../Core/Src/tim.c:187:6:HAL_TIM_MspPostInit 3
../Core/Src/tim.c:219:6:HAL_TIM_Base_MspDeInit 3 ../Core/Src/tim.c:235:6:HAL_TIM_Base_MspDeInit 3
+6 -6
View File
@@ -1,6 +1,6 @@
../Core/Src/usart.c:21:6:MX_UART5_Init 2 ../Core/Src/usart.c:37:6:MX_UART5_Init 2
../Core/Src/usart.c:50:6:MX_USART1_UART_Init 2 ../Core/Src/usart.c:66:6:MX_USART1_UART_Init 2
../Core/Src/usart.c:79:6:MX_USART2_UART_Init 2 ../Core/Src/usart.c:95:6:MX_USART2_UART_Init 2
../Core/Src/usart.c:108:6:MX_USART3_UART_Init 2 ../Core/Src/usart.c:124:6:MX_USART3_UART_Init 2
../Core/Src/usart.c:136:6:HAL_UART_MspInit 9 ../Core/Src/usart.c:152:6:HAL_UART_MspInit 9
../Core/Src/usart.c:333:6:HAL_UART_MspDeInit 5 ../Core/Src/usart.c:349:6:HAL_UART_MspDeInit 5
-118
View File
@@ -1,118 +0,0 @@
################################################################################
# Automatically-generated file. Do not edit!
# Toolchain: GNU Tools for STM32 (13.3.rel1)
################################################################################
-include ../makefile.init
RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
-include Core/Startup/subdir.mk
-include Core/Src/subdir.mk
-include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(S_DEPS)),)
-include $(S_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
-include ../makefile.defs
OPTIONAL_TOOL_DEPS := \
$(wildcard ../makefile.defs) \
$(wildcard ../makefile.init) \
$(wildcard ../makefile.targets) \
BUILD_ARTIFACT_NAME := CCSModuleSW30Web
BUILD_ARTIFACT_EXTENSION := elf
BUILD_ARTIFACT_PREFIX :=
BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
# Add inputs and outputs from these tool invocations to the build variables
EXECUTABLES += \
CCSModuleSW30Web.elf \
MAP_FILES += \
CCSModuleSW30Web.map \
SIZE_OUTPUT += \
default.size.stdout \
OBJDUMP_LIST += \
CCSModuleSW30Web.list \
OBJCOPY_HEX += \
CCSModuleSW30Web.hex \
OBJCOPY_BIN += \
CCSModuleSW30Web.bin \
OBJCOPY_SREC += \
CCSModuleSW30Web.srec \
# All Target
all: main-build
# Main-build Target
main-build: CCSModuleSW30Web.elf secondary-outputs
# Tool invocations
CCSModuleSW30Web.elf CCSModuleSW30Web.map: $(OBJS) $(USER_OBJS) /Users/colorbass/STM32CubeIDE/workspace_1.12.0/CCSModuleSW30Web/STM32F107VCTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-gcc -o "CCSModuleSW30Web.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"/Users/colorbass/STM32CubeIDE/workspace_1.12.0/CCSModuleSW30Web/STM32F107VCTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="CCSModuleSW30Web.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -u _printf_float -Wl,--start-group -lc -lm -Wl,--end-group
@echo 'Finished building target: $@'
@echo ' '
default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-size $(EXECUTABLES)
@echo 'Finished building: $@'
@echo ' '
CCSModuleSW30Web.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objdump -h -S $(EXECUTABLES) > "CCSModuleSW30Web.list"
@echo 'Finished building: $@'
@echo ' '
CCSModuleSW30Web.hex: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objcopy -O ihex $(EXECUTABLES) "CCSModuleSW30Web.hex"
@echo 'Finished building: $@'
@echo ' '
CCSModuleSW30Web.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objcopy -O binary $(EXECUTABLES) "CCSModuleSW30Web.bin"
@echo 'Finished building: $@'
@echo ' '
CCSModuleSW30Web.srec: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-objcopy -O srec $(EXECUTABLES) "CCSModuleSW30Web.srec"
@echo 'Finished building: $@'
@echo ' '
# Other Targets
clean:
-$(RM) CCSModuleSW30Web.bin CCSModuleSW30Web.elf CCSModuleSW30Web.hex CCSModuleSW30Web.list CCSModuleSW30Web.map CCSModuleSW30Web.srec default.size.stdout
-@echo ' '
secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_HEX) $(OBJCOPY_BIN) $(OBJCOPY_SREC)
fail-specified-linker-script-missing:
@echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.'
@exit 2
warn-no-linker-script-specified:
@echo 'Warning: No linker script specified. Check the linker settings in the build configuration.'
.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified
-include ../makefile.targets
Executable
+9
View File
@@ -0,0 +1,9 @@
MIT License
Copyright (c) 2024 EDISON
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+3 -139
View File
@@ -1,141 +1,5 @@
# CCSModuleSW30Web # GbTModuleSW
Прошивка контроллера DC-зарядного модуля на STM32F107 (STM32CubeIDE). Программное обеспечение для блока управления зарядом Gb/T
Проект реализует управление зарядной сессией, обработку состояния EV по CP-линии, управление силовым блоком через CAN и обмен с верхним уровнем по UART.
## Архитектура прошивки Git-репозиторий: https://git.141922.ru/EDISON/GbTModuleSW30Web
Логика разделена на несколько уровней:
- Оркестрация и планировщик задач: `Core/Src/main.c`
- Состояния зарядной сессии и протокол с Everest: `Core/Src/serial.c`
- Управление силовой частью и контакторами: `Core/Src/psu_control.c`
- Обработка CP (PWM/состояние EV): `Core/Src/cp.c`
- Единая модель состояния коннектора: `Core/Src/charger_control.c`, `Core/Inc/charger_control.h`
- Локальный протокол управления/мониторинга: `Core/Src/serial_control.c`, `Core/Src/serial_handler.c`
- Низкоуровневое управление платой: `Core/Src/board.c`, `Core/Src/gpio.c`, `Core/Src/can.c`, `Core/Src/usart.c`
## Основной цикл и выполнение задач
`main()` инициализирует периферию и подсистемы (`CCS_Init`, `SC_Init`, `PSU_Init`, `CONN_Init`), после чего переходит в бесконечный цикл.
В основном цикле выполняются:
- `PSU_ReadWrite()` — цикл опроса/команд силового блока и расчёт целевых значений.
- `PSU_Task()` — state machine силовой части, включение/выключение контакторов, контроль аварий.
- `METER_CalculateEnergy()` — расчёт энергии.
- `CONN_Loop()` — консолидация ошибок и общих флагов состояния сессии.
- `LED_Write()` — применение рассчитанного состояния индикации.
Ключевой механизм: `ED_Delay()` используется как кооперативный мини-планировщик и внутри задержки вызывает:
- `CCS_SerialLoop()` — обмен с Everest и переходы состояния коннектора;
- `StopButtonControl()` — обработка кнопки STOP/FORCE UNLOCK/RESET;
- `CP_Loop()` — чтение и фильтрация состояния CP;
- `CONN_Task()` — управление индикацией/сигнализацией;
- `LED_Task()` — анимация RGB;
- `SC_Task()` — локальный UART-протокол.
Таким образом, даже во время "задержек" критичные сервисные задачи продолжают выполняться.
## Модель управления зарядной сессией
Центр логики сессии находится в `CCS_SerialLoop()` (`serial.c`).
Она работает как state machine EVSE-стороны и переводит систему между состояниями:
- неизвестное/инициализация,
- отсутствие автомобиля,
- требование авторизации,
- подключено/заряд,
- режим переподключения,
- отключено по команде или по таймауту связи.
Переходы определяются комбинацией факторов:
- текущее состояние CP (автомобиль не подключен/подключен/готов),
- команды внешней системы (`start`, `stop`, `force unlock`),
- разрешение выдачи мощности (`EnableOutput`),
- наличие ошибок в силовой части и контакторах,
- состояние обмена с Everest.
Структура `CONN` выступает как единый контейнер рабочего состояния сессии, где сводятся:
- требуемые напряжение/ток,
- разрешение на выдачу мощности,
- команда оператора (start/stop/unlock),
- текущая стадия сессии,
- ошибки коннектора/силовой части.
## CP-линия и взаимодействие с EV
`cp.c` отвечает за:
- генерацию PWM на CP-линии (`CP_SetDuty`),
- измерение уровня CP и преобразование в дискретное состояние EV,
- цифровую фильтрацию переходов состояния (`CP_FilterState`) для подавления дребезга.
Команды верхнего уровня могут менять duty CP, что влияет на допустимый ток/режим со стороны EV.
Результат фильтрации CP непосредственно используется в state machine сессии (`serial.c`).
## Силовая часть и контакторы
`psu_control.c` реализует state machine источника питания и цепи контакторов:
- инициализация и проверка готовности PSU;
- отправка уставок напряжения/тока;
- включение/выключение силовой части;
- ожидание подтверждений и контроль таймаутов;
- контроль обратной связи контактора;
- аварийный останов при несогласованности состояния.
Управление силовыми выходами выполняется через реле платы (`RELAY_AC`, `RELAY_DC`), а факт замыкания контролируется входом обратной связи контактора.
При неисправностях флаги `contactor_fault`/`psu_fault` поднимаются и транслируются в общую модель `CONN`, что блокирует дальнейшую выдачу мощности.
## Интерфейсы обмена
### UART3: канал к Everest
`serial.c` реализует пакетный обмен с CRC:
- приём команд, их валидация и применение к текущей сессии;
- отправка телеметрии/состояния с фиксированной периодикой;
- обработка ошибок UART и восстановление DMA-приёма.
Встроен watchdog канала: при потере связи сначала выдаётся предупреждение, затем выполняется защитный переход в безопасное состояние с остановкой выдачи мощности.
### UART2/UART5: локальное управление и мониторинг
`serial_control.c` и `serial_handler.c` реализуют отдельный локальный протокол:
- разбор пакетов и CRC32-проверка;
- команды чтения состояния/информации;
- команды управления (разрешение заряда, ограничение мощности, reset и т.д.);
- публикация телеметрии.
### CAN2: управление силовым источником
`psu_control.c` использует CAN2 для обмена с PSU:
- передача управляющих команд и уставок;
- запрос/получение телеметрии;
- обработка приёмных кадров в callback и обновление внутренних переменных состояния.
## Защиты и отказобезопасность
В прошивке заложены независимые защитные механизмы:
- E-STOP (короткое/долгое/очень долгое удержание): stop, force unlock, reset.
- Потеря обмена с Everest: автоматическая остановка зарядки и перевод в безопасное состояние.
- Контроль контактора: проверка соответствия команды и физической обратной связи.
- Таймауты включения/выключения PSU: переход в fault при отсутствии ожидаемого подтверждения.
- Фильтрация CP-переходов: исключение ложных переключений от помех.
## Где смотреть ключевую логику в первую очередь
Для быстрого входа в проект:
- `Core/Src/main.c` — архитектурный "скелет" и расписание вызовов.
- `Core/Src/serial.c` — главная state machine зарядной сессии.
- `Core/Src/psu_control.c` — силовая логика, контакторы, fault-handling.
- `Core/Src/cp.c` — физика CP и распознавание состояния EV.
- `Core/Src/serial_control.c` + `Core/Src/serial_handler.c` — локальный протокол управления.
+24340
View File
File diff suppressed because it is too large Load Diff
+962
View File
@@ -0,0 +1,962 @@
374.791687 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
374.792987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
374.841712 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
374.842985 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
374.891669 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
374.892988 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
374.941686 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
374.942983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
374.951677 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
374.991681 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
374.992985 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.001791 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
375.001797 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.011003 1 1ceb56f4x Rx d 8 01 21 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
375.021033 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
375.023025 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.041735 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.042982 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.091659 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.092984 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.141706 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.142981 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.191684 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.192998 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.201675 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
375.241679 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.242992 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.251799 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
375.251801 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.261001 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
375.271012 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
375.271014 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.291682 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.293003 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.341706 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.342996 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.391682 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.392983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.441684 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.442982 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.451686 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
375.491716 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.492985 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.501676 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
375.502994 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.510999 1 1ceb56f4x Rx d 8 01 1C 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
375.521017 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
375.521019 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.541705 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.542990 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.591674 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.592986 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.641689 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.643005 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.691672 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.692984 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.701658 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
375.741668 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.742987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.751827 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
375.751828 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.760997 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
375.771020 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
375.771022 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
375.791674 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.792994 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.841689 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.842980 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.891676 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.892994 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.941705 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.942987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
375.951634 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
375.991658 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
375.992986 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.001774 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
376.001775 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.010993 1 1ceb56f4x Rx d 8 01 1C 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
376.020999 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
376.021001 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.041665 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.042987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.091670 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.093025 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.141708 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.142988 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.191709 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.192994 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.201671 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
376.241676 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.242979 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.251786 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
376.251787 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.261011 1 1ceb56f4x Rx d 8 01 1C 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
376.271003 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
376.271005 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.291650 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.293019 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.341682 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.342987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.391667 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.393019 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.441646 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.442983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.451660 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
376.491736 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.492988 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.501814 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
376.501816 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.510998 1 1ceb56f4x Rx d 8 01 1C 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
376.521002 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
376.523014 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.541654 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.543016 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.591679 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.592987 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.641679 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.642986 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.691663 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.692982 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.701671 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
376.741659 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.742989 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.751736 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
376.751744 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.761018 1 1ceb56f4x Rx d 8 01 3A 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
376.770989 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
376.770990 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
376.791657 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.793019 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.841681 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.842984 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.891671 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.892987 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.941651 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.942982 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
376.951639 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
376.991651 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
376.993000 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.001797 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
377.001799 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.010999 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
377.021036 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
377.021038 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.041673 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.042983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.091663 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.092983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.141662 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.142981 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.191660 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.193007 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.201636 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
377.241635 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.242986 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.251745 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
377.251746 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.261012 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
377.271021 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
377.271025 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.291653 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.292991 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.341643 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.342983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.391671 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.392988 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.441636 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.442997 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.451647 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
377.491672 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.492986 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.501753 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
377.501755 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.511028 1 1ceb56f4x Rx d 8 01 17 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
377.521023 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
377.521025 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.541656 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.542991 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.591681 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.592986 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.641644 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.642990 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.691647 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.692989 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.701640 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
377.741636 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.742983 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.751743 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
377.751744 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.761006 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
377.771002 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
377.771004 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
377.791624 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.793012 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.841623 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.842990 1 1812f456x Rx d 8 12 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.891614 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.892984 1 1812f456x Rx d 8 08 11 92 0D 38 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.941650 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.942981 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
377.951613 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
377.991618 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
377.992988 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.001771 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
378.001773 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.011030 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
378.021016 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
378.023015 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.041626 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.042984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.091636 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.092990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.141637 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.142985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.191620 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.192982 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.201633 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
378.241614 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.242984 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.251734 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
378.251736 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.261039 1 1ceb56f4x Rx d 8 01 1C 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
378.271028 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
378.271031 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.291620 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.292992 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.341632 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.342991 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.391626 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.392988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.441628 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.442981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.451649 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
378.491647 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.492988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.501666 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
378.502994 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.511004 1 1ceb56f4x Rx d 8 01 21 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
378.521001 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
378.521003 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.541632 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.543019 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.591604 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.592983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.641632 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.642988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.691613 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.692981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.701627 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
378.741623 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.743030 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.751681 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
378.751683 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.760994 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
378.771003 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
378.771006 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
378.791626 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.793019 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.841634 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.842984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.891636 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.892982 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.941629 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.942978 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
378.951611 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
378.991652 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
378.992999 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.001717 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
379.001719 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.011002 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
379.021025 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
379.021033 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.041630 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.042994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.091608 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.092981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.141604 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.142981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.191586 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.192988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.201610 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
379.241636 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.242988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.251712 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
379.251714 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.261011 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
379.270995 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
379.270997 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.291605 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.292997 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.341643 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.342983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.391620 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.393023 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.441618 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.442981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.451618 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
379.491603 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.492982 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.501687 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
379.501689 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.511021 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
379.520995 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
379.523013 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.541603 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.542986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.591577 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.592986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.641601 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.643032 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.691594 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.692989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.701579 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
379.741625 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.742978 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.751707 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
379.751709 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.761022 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
379.771000 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
379.771003 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
379.791602 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.793010 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.841603 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.842983 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.891623 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.892986 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.941630 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.942989 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
379.951590 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
379.991598 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
379.992986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.001629 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
380.002993 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.010998 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
380.020998 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
380.021001 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.041579 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.043000 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.091583 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.093004 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.141605 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.142980 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.191594 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.192988 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.201582 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
380.241581 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.242986 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.251690 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
380.251691 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.261037 1 1ceb56f4x Rx d 8 01 21 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
380.271012 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
380.271014 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.291620 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.293021 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.341604 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.342988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.391570 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.393015 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.441620 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.442984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.451566 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
380.491611 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.492986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.501690 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
380.501691 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.511046 1 1ceb56f4x Rx d 8 01 21 11 8E 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
380.521002 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
380.521004 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.541603 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.543017 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.591586 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.592990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.641562 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.642991 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.691598 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.692994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.701590 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
380.741556 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.742983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.751697 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
380.751699 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.760992 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
380.770997 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
380.770999 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
380.791579 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.792992 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.841555 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.842988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.891603 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.892989 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.941578 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.943040 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
380.951580 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
380.991578 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
380.992993 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.001666 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
381.001667 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.011004 1 1ceb56f4x Rx d 8 01 26 11 8E 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
381.021022 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
381.023015 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.041576 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.042994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.091555 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.092989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.141582 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.142988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.191599 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.192982 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.201556 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
381.241617 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.242983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.251641 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
381.251643 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.261030 1 1ceb56f4x Rx d 8 01 21 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
381.270989 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
381.270990 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.291580 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.292987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.341567 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.342984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.391567 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.392997 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.441595 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.442988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.451576 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
381.491568 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.492988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.501598 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
381.502989 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.511034 1 1ceb56f4x Rx d 8 01 21 11 8E 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
381.520993 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
381.520995 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.541555 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.542990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.591587 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.593021 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.641579 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.643031 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.691589 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.692984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.701539 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
381.741561 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.742983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.751664 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
381.751665 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.761009 1 1ceb56f4x Rx d 8 01 30 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
381.771027 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
381.771029 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
381.791579 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.792993 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.841608 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.842985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.891553 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.892994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.941580 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.942990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
381.951560 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
381.991586 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
381.992998 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.001648 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
382.001650 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.011005 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
382.020999 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
382.021001 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.041581 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.043020 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.091567 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.092990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.141584 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.143012 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.191543 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.193028 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.201541 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
382.241546 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.242979 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.251655 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
382.251656 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.261018 1 1ceb56f4x Rx d 8 01 21 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
382.271008 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
382.271010 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.291534 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.293008 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.341580 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.342988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.391559 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.392997 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.441539 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.442982 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.451523 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
382.491565 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.492987 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.501678 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
382.501680 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.511007 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
382.520994 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
382.523024 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.541539 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.543021 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.591561 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.592984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.641556 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.642986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.691548 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.692990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.701539 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
382.741547 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.743025 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.751657 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
382.751659 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.760997 1 1ceb56f4x Rx d 8 01 12 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
382.771000 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
382.771003 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
382.791577 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.792987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.841549 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.842982 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.891544 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.893029 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.941558 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.942994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
382.951528 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
382.991519 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
382.992987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.001566 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
383.002997 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.011022 1 1ceb56f4x Rx d 8 01 26 11 8E 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
383.021021 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
383.021024 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.041574 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.042986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.091549 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.092983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.141567 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.142987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.191555 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.192984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.201570 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
383.241501 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.242994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.251630 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
383.251632 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.261023 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
383.271016 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
383.271018 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.291592 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.292994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.341552 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.342984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.391550 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.392988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.441571 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.442998 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.451524 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
383.491557 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.492986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.501655 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
383.501657 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.511006 1 1ceb56f4x Rx d 8 01 17 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
383.520997 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
383.521000 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.541546 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.543020 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.591540 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.592991 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.641527 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.642985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.691529 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.692992 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.701495 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
383.741574 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.742987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.751641 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
383.751643 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.760997 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
383.771007 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
383.771010 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
383.791556 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.792996 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.841554 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.843038 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.891501 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.893019 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.941491 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.942989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
383.951521 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
383.991529 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
383.992990 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.001657 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
384.001659 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.011027 1 1ceb56f4x Rx d 8 01 17 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
384.020995 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
384.020997 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.041500 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.043000 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.091504 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.092991 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.141507 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.143039 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.191541 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.192981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.201495 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
384.241529 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.243011 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.251636 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
384.251637 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.261007 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
384.271033 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
384.271036 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.291518 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.293038 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.341520 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.342984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.391495 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.392987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.441529 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.442987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.451508 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
384.491542 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.492998 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.501513 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
384.502987 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.511014 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
384.521024 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
384.521027 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.541529 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.543000 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.591518 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.593020 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.641520 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.642985 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.691504 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.692987 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.701507 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
384.741507 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.742999 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.751597 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
384.751598 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.761002 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
384.771011 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
384.771013 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
384.791511 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.792996 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.841515 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.842988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.891489 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.892997 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.941495 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.942984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
384.951496 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
384.991501 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
384.992990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.001640 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
385.001642 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.010999 1 1ceb56f4x Rx d 8 01 30 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
385.020997 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
385.020999 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.041477 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.042994 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.091502 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.092991 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.141514 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.142990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.191508 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.192985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.201496 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
385.241493 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.243000 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.251609 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
385.251611 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.261004 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
385.270999 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
385.271001 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.291480 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.292987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.341509 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.342991 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.391485 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.393020 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.441483 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.442997 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.451469 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
385.491495 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.492993 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.501587 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
385.501593 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.511019 1 1ceb56f4x Rx d 8 01 17 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
385.521007 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
385.521009 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.541500 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.543025 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.591501 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.593014 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.641530 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.642989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.691562 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.692988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.701470 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
385.741535 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.743035 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.751597 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
385.751598 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.760998 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
385.770997 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
385.770999 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
385.791494 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.792983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.841547 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.842981 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.891490 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.892979 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.941546 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.942983 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
385.951512 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
385.991485 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
385.992984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.001503 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
386.002999 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.011030 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
386.020995 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
386.020997 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.041501 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.042989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.091488 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.092984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.141504 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.142988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.191467 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.192988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.201435 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
386.241495 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.242991 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.251544 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
386.251546 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.261024 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
386.271004 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
386.271006 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.291525 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.293018 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.341472 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.342988 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.391490 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.392984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.441491 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.442984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.451474 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
386.491482 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.492987 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.501586 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
386.501588 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.510996 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
386.521011 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
386.521013 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.541458 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.543028 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.591450 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.592975 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.641507 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.642986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.691498 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.692999 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.701477 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
386.741476 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.743019 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.751604 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
386.751606 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.761039 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
386.771001 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
386.771003 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
386.791465 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.792988 1 1812f456x Rx d 8 08 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.841508 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.842986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.891468 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.892986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.941490 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.943033 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
386.951440 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
386.991466 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
386.992986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.001558 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
387.001560 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.010992 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
387.020996 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
387.020998 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.041455 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.042997 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.091473 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.092990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.141472 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.142988 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.191466 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.193000 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.201439 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
387.241462 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.242984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.251599 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
387.251601 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.260998 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
387.271002 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
387.271004 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.291455 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.293012 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.341491 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.343009 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.391468 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.392992 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.441471 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.442984 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.451436 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
387.491458 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.492985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.501479 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
387.503005 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.511013 1 1ceb56f4x Rx d 8 01 26 11 8E 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
387.521022 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
387.521024 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.541474 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.543006 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.591468 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.593009 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.641480 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.642990 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.691492 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.692986 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.701459 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
387.741460 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.742985 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.751580 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
387.751583 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.760991 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
387.771007 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
387.771010 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
387.791480 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.793006 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.841463 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.842993 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.891430 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.892989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.941487 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.942989 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
387.951430 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
387.991431 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
387.993003 1 1812f456x Rx d 8 12 11 92 0D 39 00 FD FF Length = 0 BitCount = 0 ID = 403895382x
388.001551 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
388.001552 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.011013 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
388.021025 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
388.021027 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.041442 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.091465 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.141440 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.191455 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.201432 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
388.241486 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.251511 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
388.251512 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.261005 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
388.271028 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
388.271030 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.291429 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.341450 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.391444 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.441443 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.451440 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
388.491430 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.501538 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
388.501540 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.511001 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
388.521003 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
388.521005 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.541430 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.591427 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.641419 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.691483 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.701435 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
388.741444 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.751527 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
388.751529 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.761014 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
388.771009 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
388.771012 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
388.791435 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.841457 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.891432 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.941442 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
388.951424 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
388.991456 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.001451 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
389.002996 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.011003 1 1ceb56f4x Rx d 8 01 26 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
389.021010 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
389.021012 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.041419 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.091438 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.141443 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.191451 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.201415 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
389.241444 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.251537 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
389.251539 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.260996 1 1ceb56f4x Rx d 8 01 2B 11 98 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
389.271001 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
389.271003 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.291416 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.341423 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.391435 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.441485 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
389.441488 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.442985 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.451011 1 1ceb56f4x Rx d 8 01 D9 12 D4 0D 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
389.453010 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
389.453011 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
389.461033 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
389.461035 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.491436 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.541443 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.591434 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.641429 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.691439 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.701547 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
389.701549 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
389.703043 1 181356f4x Rx d 7 38 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
389.703044 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.710992 1 1ceb56f4x Rx d 8 01 D9 12 CE 0E 83 F1 3E Length = 0 BitCount = 0 ID = 485185268x
389.721003 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
389.721007 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.741401 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.791394 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.841435 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.891435 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.941436 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
389.951468 1 1cec56f4x Rx d 8 10 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485250804x
389.951470 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
389.952996 1 181356f4x Rx d 7 3C 4A 00 46 00 00 D0 Length = 0 BitCount = 0 ID = 403920628x
389.952998 1 1cecf456x Rx d 8 11 02 01 FF FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.961004 1 1ceb56f4x Rx d 8 01 D4 12 50 0F 82 F1 3E Length = 0 BitCount = 0 ID = 485185268x
389.971000 1 1ceb56f4x Rx d 8 02 75 00 FF FF FF FF FF Length = 0 BitCount = 0 ID = 485185268x
389.971002 1 1cecf456x Rx d 8 13 09 00 02 FF 00 11 00 Length = 0 BitCount = 0 ID = 485291094x
389.991429 1 181056f4x Rx d 5 C0 12 B8 0B 02 Length = 0 BitCount = 0 ID = 403724020x
390.201394 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
390.451445 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
390.701420 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
390.952097 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
391.202037 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
391.452179 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
391.702096 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
391.952105 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
392.202110 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
392.452104 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
392.702103 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
392.951453 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
393.201622 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
393.451409 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
393.702121 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
393.951449 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
394.202089 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
394.452088 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
394.702061 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
394.952032 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
395.201623 1 81e56f4x Rx d 4 F0 F0 F1 FC Length = 0 BitCount = 0 ID = 136206068x
End TriggerBlock
+3559
View File
File diff suppressed because it is too large Load Diff
+320
View File
@@ -0,0 +1,320 @@
Startup (type 'help' for command list)
CONN_Initializing
CONN_Available
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
GBT_DISABLED
CONN_Preparing
CONN_Charging
GBT_S3_STARTED
GBT_S31_WAIT_BHM
GBT_S4_ISOTEST
GBT_S5_BAT_INFO
GBT_S6_BAT_STAT
EV info:
GBT_ver V1.10
Battery type: 6
Battery capacity: 1525
Battery voltage: 7090
Battery vendor:
Battery SN: 257
Battery manufacture date: 255.255.1985
Battery cycles: 255
Own auto: 255
EVIN: L6T79ZCE6RP431111
EV_SW_VER:
GBT_S7_BMS_WAIT
Battery info:
maxCV 4V
maxCC 0A
totE 108kWh
maxCV 844V
maxT 60C
SOC 94p
Volt. 530V
GBT_S8_INIT_CHARGER
GBT_S9_WAIT_BCL
GBT_S10_CHARGING
CONN_Charging
2! (2)(k
!ѡQ)
Bš&ee — +.$HQ2 -h
(k%RLGH8Ъ -ɩh, f- +.$HQ2 2! (b ƔHP5PQ)(kRLGH8Ъ -ɩh, f- +.$HQ2 2! (B ƔHP5PQ)(k%RLGHP++J8Ъ h, f- +.$HQ2 2! (B ƔHP5PQ)
Bš&ee  +2! (2)(k
!ѡ
CONN_Available
GBT_DISABLED
CONN_Preparing
CONN_Charging
GBT_S3_STARTED
GBT_S31_WAIT_BHM
GBT_S4_ISOTEST
GBT_S5_BAT_INFO
GBT_S6_BAT_STAT
EV info:
GBT_ver V1.10
Battery type: 6
Battery capacity: 1525
Battery voltage: 7090
Battery vendor:
Battery SN: 257
Battery manufacture date: 255.255.1985
Battery cycles: 255
Own auto: 255
EVIN: L6T79ZCE6RP431111
EV_SW_VER:
GBT_S7_BMS_WAIT
Battery info:
maxCV 4V
maxCC 0A
totE 108kWh
maxCV 844V
maxT 60C
SOC 98p
Volt. 390V
GBT_S8_INIT_CHARGER
GBT_S9_WAIT_BCL
GBT_S10_CHARGING
CONN_Charging
-----
GBT_DISABLED
BEM Received, force stopping...
BEM: F0 F0 F1 FC 00 00 0F FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F1 FC 00 00 3F FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F1 FC 00 00 01 FF
GBT_COMPLETE
GBT_DISABLED
CONN_Finishing
CONN_Available
-----
CONN_Charging
GBT_S3_STARTED
GBT_S31_WAIT_BHM
GBT_S4_ISOTEST
GBT_S5_BAT_INFO
GBT_S6_BAT_STAT
EV info:
GBT_ver V1.10
Battery type: 6
Battery capacity: 1525
Battery voltage: 7090
Battery vendor:
Battery SN: 257
Battery manufacture date: 255.255.1985
Battery cycles: 255
Own auto: 255
EVIN: L6T79ZCE6RP431111
EV_SW_VER:
GBT_S7_BMS_WAIT
Battery info:
maxCV 4V
maxCC 0A
totE 108kWh
maxCV 844V
maxT 60C
SOC 98p
Volt. 825V
GBT_S8_INIT_CHARGER
GBT_S9_WAIT_BCL
GBT_S10_CHARGING
CONN_Charging
CONN_Available
GBT_DISABLED
CONN_Preparing
CONN_Charging
GBT_S3_STARTED
GBT_S31_WAIT_BHM
GBT_S4_ISOTEST
GBT_S5_BAT_INFO
GBT_S6_BAT_STAT
EV info:
GBT_ver V1.10
Battery type: 6
Battery capacity: 1525
Battery voltage: 7090
Battery vendor:
Battery SN: 257
Battery manufacture date: 255.255.1985
Battery cycles: 255
Own auto: 255
EVIN: L6T79ZCE6RP431111
EV_SW_VER:
BST Received, stopping...
BST: 01 00 00 F0 00 00 0F FF
GBT_STOP
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 7F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 FF FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 00 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 01 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 01 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 03 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 03 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 07 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 07 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 0F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 0F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 1F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 1F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 7F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 7F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 00 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 00 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 01 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 01 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 03 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 03 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 07 FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 0F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 0F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 1F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 1F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 7F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 7F FF
BST Received, stopping...
BST: 01 00 00 F0 00 00 3F FF
GBT_STOP_CSD
GBT_COMPLETE
CONN_Suspended_EV
GBT_DISABLED
CONN_Finishing
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
BEM Received, force stopping...
BEM: F0 F0 F0 FD FF FF FF FF
GBT_COMPLETE
CONN_Available
GBT_DISABLED
+146
View File
@@ -0,0 +1,146 @@
---
name: gbt-to-ccs-port
overview: Перенос прошивки модуля GBT на CCS с сохранением логики силовой части и веб-интерфейса, интеграцией готового CCS-стека из проекта CS60DC_CCS_STM32 и разделением двух независимых UART-протоколов.
todos:
- id: analyze-gbt-project
content: Просмотреть проект `GbTModuleSW30Web` (main, PSU, CONN, LED, веб/диагностика) и зафиксировать все места, где используется GBT-логика (функции GBT_*, структуры, CAN2 и т.п.).
status: completed
- id: extract-ccs-modules
content: Выделить из `CS60DC_CCS_STM32` полный набор CCS-модулей (cp, serial, charger_ccs, структуры CCS_EDCAN_*) и их зависимости (EDCAN, board, adc_filter) для переноса.
status: completed
- id: wire-cp-and-uart3
content: Спланировать привязку CP (ADC1_IN4 и PWM на PA7) и перенастройку CCS-протокола на USART3 в проекте модуля, учитывая текущую конфигурацию таймеров и UART в `GbTModuleSW30Web`.
status: completed
- id: rewrite-main-loop
content: Спроектировать новое содержимое `main()` и `ED_Delay()` в `GbTModuleSW30Web`, убрав GBT-задачи и интегрировав CCS_SerialLoop, CP_Loop, EDCAN_Loop и существующие PSU/METER/CONN/LED/StopButton задачи.
status: completed
- id: clean-gbt-and-keep-can1
content: Определить, какие файлы/части кода GBT можно удалить или заглушить, при этом оставив инициализацию CAN1 и минимально необходимый код для корректной работы bootloader и EDCAN.
status: completed
- id: adapt-web-diagnostics
content: "Наметить изменения веб-интерфейса и диагностического протокола: заменить источники данных с GBT на CCS-структуры, сохранив максимально существующую функциональность."
status: in_progress
- id: define-test-plan
content: Уточнить и зафиксировать подробный тест-план для стендовой проверки новой CCS-прошивки (переходы состояний CP/EVSE, обмен по USART3, защитные сценарии и регрессия веб/диагностики).
status: pending
isProject: false
---
## Цель
Сделать новую прошивку для платы модуля, основанную на проекте `GbTModuleSW30Web`, которая:
- **полностью избавлена от GBT-логики и GBT-протоколов**,
- **использует CCS-алгоритмы и протокол** из проекта `[CS60DC_CCS_STM32](CS60DC_CCS_STM32/Core/Src/main.c)`,
- **сохраняет силовую часть и веб/диагностический функционал** существующей GBT-прошивки,
- использует **два независимых UART**: существующий (как в GBT) + новый `USART3` под CCS-протокол,
- сохраняет **инициализацию CAN1 как заглушку**, но не использует старый GBT‑CAN.
## Архитектура на целевом проекте
- **Базовый проект**: берем за основу прошивку модуля GBT — `[GbTModuleSW30Web](GbTModuleSW30Web/Core/Src/main.c)`.
- **Источник CCS-логики**: переносим state machine и протокол CCS из `[CS60DC_CCS_STM32](CS60DC_CCS_STM32/Core/Src/main.c)` и связанных файлов:
- `[Core/Src/serial.c](CS60DC_CCS_STM32/Core/Src/serial.c)` — протокол MCU↔Everest (через UART, сейчас `huart1`),
- `[Core/Src/cp.c](CS60DC_CCS_STM32/Core/Src/cp.c)` — формирование и измерение CP (PWM+ADC),
- `[Core/Src/charger_ccs.c](CS60DC_CCS_STM32/Core/Src/charger_ccs.c)` + соответствующие заголовки и типы `CCS_*` и `CCS_EDCAN_*`.
- **Распределение UART**:
- существующий UART из GBT‑прошивки **оставляем без изменений** (диагностика / веб / что используется сейчас),
- **добавляем `USART3` для CCS‑протокола**, берём настройки (baud, parity и т.п.) из `CS60DC_CCS_STM32` (там CCS сейчас сидит на `USART1`, но параметры переносим на `USART3`).
- **CAN1**:
- оставляем `MX_CAN1_Init()` и базовую инициализацию как заглушку (по требованию),
- старые GBT‑обработчики CAN и `GBT_CAN_ReInit()` удаляем или заменяем пустыми/адаптированными вызовами к EDCAN при необходимости.
- **Силовая часть, реле, измерения**:
- логика `PSU_*`, `METER_*`, `CONN_*`, `LED_*` и Stop/E‑Stop остаётся из GBT‑проекта,
- управление главным DC‑контактором остаётся как в `[GbTModuleSW30Web](GbTModuleSW30Web/Core/Src/main.c)` и связанных файлах, но команды/состояния будут приходить из CCS‑логики.
## План изменения `main.c` и ядра логики
- **Инициализация (start‑up)**:
- в `[GbTModuleSW30Web/Core/Src/main.c](GbTModuleSW30Web/Core/Src/main.c)` сохраняем логику OpenBLT/VectorBase (`VectorBase_Config()` и т.п.);
- после стандартной HAL‑инициализации (`HAL_Init`, `HAL_RCC_DeInit`, `SystemClock_Config`, `MX_GPIO_Init` и т.д.)
- оставляем инициализацию общих периферий: `GPIO`, `ADC1`, `CAN1`, `RTC`, `TIM4` (если используется для других задач), существующие UART (2/5/1) и `USART3`;
- **убираем GBT‑специфичные инициализации**: `GBT_Init()`, `GBT_SetConfig()`, `GBT_CAN_ReInit()`, прямые вызовы `charger_gbt.h`, `j1939.h` и т.п.;
- **добавляем CCS‑инициализации** по образцу из `CS60DC_CCS_STM32/Core/Src/main.c`:
- `ADC_Init()` (если в проект переносится фильтрация АЦП / `adc_filter.c`),
- `CP_Init()` и первоначальное `CP_SetDuty(100);`,
- `CCS_Init();`,
- инициализацию EDCAN/адреса: `EDCAN_Init(SW_GetAddr());` и возможный `CAN_ReInit();`, если EDCAN используется.
- **Главный цикл**:
- исходно в GBT‑прошивке основной цикл делает:
- `PSU_ReadWrite();`, `PSU_Task();`, `METER_CalculateEnergy();`, `CONN_Loop();`, `LED_Write();`, `StopButtonControl();` и несколько `ED_Delay(...)`, в которых вызываются GBT‑таски (`GBT_ChargerTask()`, `GBT_ManageLockMotor()`, `CONN_CC_ReadStateFiltered()` и т.п.);
- **заменяем содержимое `ED_Delay()` и цикла `while(1)` так, чтобы:**
- в основном цикле выполнялись:
- `CCS_SerialLoop();` (как в `[CS60DC_CCS_STM32/Core/Src/main.c](CS60DC_CCS_STM32/Core/Src/main.c)`),
- `EDCAN_Loop();` (если EDCAN используется для обмена с главным контроллером),
- `CP_Loop();` (обновление состояния CP и заполнение `CCS_EDCAN_Output.cpState`),
- существующие `PSU_*`, `METER_*`, `CONN_Loop()`, `LED_Write()`, `StopButtonControl()`;
- `ED_Delay()` больше **не опирается на GBT‑таски**, а, при необходимости, просто крутит `CCS_SerialLoop()` / `CP_Loop()` и необязательные сервисные задачи.
## Интеграция CCS‑протокола в проект модуля
- **Перенос файлов CCS**:
- добавляем в проект модуля исходники и заголовки из `CS60DC_CCS_STM32`:
- `[Core/Src/cp.c](CS60DC_CCS_STM32/Core/Src/cp.c)` + `Core/Inc/cp.h`,
- `[Core/Src/serial.c](CS60DC_CCS_STM32/Core/Src/serial.c)` + `Core/Inc/serial.h`,
- `[Core/Src/charger_ccs.c](CS60DC_CCS_STM32/Core/Src/charger_ccs.c)` + `Core/Inc/charger_ccs.h`,
- необходимые типы `CCS_*` и `CCS_EDCAN_*` (структуры состояний, входов/выходов, команд).
- подправляем include‑пути и зависимости под структуру каталогов `GbTModuleSW30Web`.
- **Привязка к `USART3`**:
- в перенесённом `serial.c` заменяем все использования `huart1` на `huart3`:
- глобальный `extern UART_HandleTypeDef huart1;``huart3;`,
- `HAL_UARTEx_ReceiveToIdle_IT(&huart1, ...)``&huart3`,
- `HAL_UART_Transmit(&huart1, ...)``&huart3`;
- обновляем `HAL_UARTEx_RxEventCallback` так, чтобы он реагировал на `huart3`;
- убеждаемся, что `MX_USART3_UART_Init()` в `GbTModuleSW30Web/Core/Src/usart.c` настроен на тот же baud/формат, что и `USART1` в `CS60DC_CCS_STM32`.
- **CP‑цепь (CP ADC + PWM на PA7)**:
- в переносимом `cp.c` уже есть логика расчёта напряжения CP по `ADC_CP_CHANNEL` и управление PWM через `TIM2`;
- на целевой плате:
- настраиваем канал ADC, соответствующий `ADC1_IN4`, как `ADC_CP_CHANNEL` в конфигурационных файлах/enum‑ах ADC;
- убеждаемся, что ножка `PA7` привязана к нужному таймеру (по CubeMX‑конфигу) и совпадает с тем, что ожидает `cp.c` (сейчас TIM2/CH1/CH2) — при необходимости в план добавим правку конфигурации таймера и каналов;
- оставляем границы состояний CP (A/B/C/D/E/F) и формулы из текущего `cp.c` без изменений, чтобы поведение соответствовало проверенной CCS‑прошивке.
- **Связка CCS ↔ силовая часть/EDCAN**:
- `CCS_SerialLoop()` управляет структурами `CCS_EDCAN_Output` и читает `CCS_EDCAN_Input`;
- в коде модуля (там, где сейчас GBT‑логика связывает CAN/силовую часть с протоколом) заменяем связь на работу с `CCS_EDCAN_*`:
- измеренные ток/напряжение из силовой части кладём в `CCS_EDCAN_Input.measuredVoltage` и `measuredCurrent`,
- команды включения/отключения питания (`PSU_ON/OFF/PREPARE`) и ошибки записываем в `CCS_EDCAN_Input.*`,
- из `CCS_EDCAN_Output` читаем:
- `enablePSU`/`requestedVoltage`/`requestedCurrent` — для управления источником питания,
- `connectorState`, `cpState`, `chargingPercentage` — для индикации, логов и веб‑интерфейса.
## Удаление GBT и чистка кода
- **Удаление GBT‑зависимостей**:
- в `GbTModuleSW30Web` находим и удаляем/отключаем:
- `#include "charger_gbt.h"`, `j1939.h`, GBT‑специфические модули блокировки/замка, если они не используются механически;
- функции `GBT_Init()`, `GBT_ChargerTask()`, `GBT_ManageLockMotor()`, `GBT_SetConfig()`, `GBT_CAN_ReInit()` и т.п.;
- оставляем общий код, не завязанный именно на GBT (питание, измерения, коннектор, индикация, веб‑сервер, логирование).
- **CAN**:
- инициализация `CAN1` (`MX_CAN1_Init()`) должна остаться, чтобы bootloader/система не сломались;
- если от GBT остался `CAN2`, его можно выключить из конфигурации, если он аппаратно не используется в CCS‑варианте;
- при необходимости добавляем простую заглушку вместо старых GBT‑обработчиков, чтобы сборка прошла без ошибок.
## Сохранение веб‑/диагностического функционала
- **Веб‑интерфейс и диагностика**:
- по вашему требованию **сохраняем весь существующий веб‑функционал `GbTModuleSW30Web`**, только:
- удаляем/переписываем поля и страницы, завязанные на GBT‑состояния/параметры,
- вместо GBT‑переменных и структур подставляем данные из `CCS_EDCAN_Output`, `CCS_State`, `CCS_EvInfo` и т.п.;
- протокол диагностики через существующий UART не меняем по формату, только отключаем GBT‑команды/состояния и, при необходимости, добавляем новые поля/команды под CCS (по согласованию).
## Тестирование и критерии приёмки
- **Юнит‑/модульные проверки на стенде**:
- запуск прошивки без подключенного EV — проверка, что станция в состоянии `Unplugged`/`EV_STATE_A_IDLE`, нет перезагрузок и ошибок;
- подключение EV/эмулятора:
- проверка переходов CP‑состояний A→B→C, корректных значений напряжения CP,
- проверка, что `CCS_ConnectorState` и `CCS_EvseState` меняются ожидаемо (Preparing, Charging, Finished и т.п.);
- проверка обмена по `USART3`:
- корректный приём/передача пакетов с CRC16,
- реакция на команды Everest (ENABLE, START/STOP, PWM_DUTY, SET_OUTPUT_VOLTAGE, EV_INFO, EVSE_STATE, KEEP_ALIVE);
- проверка защиты:
- ESTOP/StopButton — немедленное отключение выхода и отправка `CCS_SendEmergencyStop()`;
- таймаут связи с хостом (`last_host_seen`) — перевод в безопасное состояние (отключение PSU, CP duty = 100%, лог `Everest timeout`).
- **Регрессионные проверки существующей функциональности**:
- веб‑страницы открываются, основные параметры (напряжение, ток, энергии, состояния коннектора) отображаются корректно;
- сохранены привычные логи/формат сообщений (насколько возможно) для удобства отладки.