feat: Add enhanced EXI viewer with XML decode capability
- Implement complete CurrentDemandReq/CurrentDemandRes parsing (24 total fields) - Add enhanced_exi_viewer.c with detailed message analysis - Support -decode option for clean XML output (file-ready format) - Enable ISO1, ISO2, DIN codec support in build configuration - Fix C99 compatibility issues in makefiles (change -ansi to -std=c99) - Create test utilities for hex string to EXI conversion - Generate test files: test3.exi (CurrentDemandRes), test4.exi (CurrentDemandReq) Features: * Dual output modes: detailed analysis (default) vs XML (-decode) * Complete V2G message type detection and parsing * Session ID display in hex and ASCII formats * Voltage/current/power readings with proper units * All optional fields and status flags supported 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
579
.cproject
Normal file
579
.cproject
Normal file
@@ -0,0 +1,579 @@
|
|||||||
|
<?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="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="OpenV2G" 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="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">
|
||||||
|
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.186426714" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.208578740" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
|
||||||
|
<builder buildPath="${workspace_loc:/OpenV2G}/Debug" id="cdt.managedbuild.builder.gnu.cross.474380604" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.467817276" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1213164158" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.260408959" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1208420490" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">
|
||||||
|
<option id="gnu.cpp.compiler.option.optimization.level.650473997" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||||
|
<option id="gnu.cpp.compiler.option.debugging.level.2034188123" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.1511109002" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.229245493" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""../src/codec""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/din""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/iso1""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/iso2""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/xmldsig""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/appHandshake""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/transport""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/test""/>
|
||||||
|
</option>
|
||||||
|
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1880660058" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
|
||||||
|
<option id="gnu.c.compiler.option.debugging.level.890071608" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||||
|
<option id="gnu.c.compiler.option.warnings.pedantic.1983095151" name="Pedantic (-pedantic)" superClass="gnu.c.compiler.option.warnings.pedantic" value="false" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.misc.ansi.1916749690" name="Support ANSI programs (-ansi)" superClass="gnu.c.compiler.option.misc.ansi" value="true" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.warnings.toerrors.990186240" name="Warnings as errors (-Werror)" superClass="gnu.c.compiler.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.warnings.pedantic.error.145905553" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.c.compiler.option.warnings.pedantic.error" value="false" valueType="boolean"/>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1904654876" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.1907160138" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1866282924" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.521623519" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base"/>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="OpenV2G" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release">
|
||||||
|
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.544862828" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.452289502" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
|
||||||
|
<builder buildPath="${workspace_loc:/OpenV2G/Release}" id="cdt.managedbuild.builder.gnu.cross.288561722" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.586100401" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1634756901" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.934860510" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.596457747" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">
|
||||||
|
<option id="gnu.cpp.compiler.option.optimization.level.2131218410" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
|
||||||
|
<option id="gnu.cpp.compiler.option.debugging.level.1665313885" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.2107890734" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.289860304" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""../src/codec""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/din""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/iso1""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/iso2""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/xmldsig""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/appHandshake""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/transport""/>
|
||||||
|
<listOptionValue builtIn="false" value=""../src/test""/>
|
||||||
|
</option>
|
||||||
|
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.899621054" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.size" valueType="enumerated"/>
|
||||||
|
<option id="gnu.c.compiler.option.debugging.level.1251127335" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||||
|
<option id="gnu.c.compiler.option.misc.ansi.496561434" name="Support ANSI programs (-ansi)" superClass="gnu.c.compiler.option.misc.ansi" value="false" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.warnings.pedantic.289278524" name="Pedantic (-pedantic)" superClass="gnu.c.compiler.option.warnings.pedantic" value="false" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.warnings.pedantic.error.822372173" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.c.compiler.option.warnings.pedantic.error" value="false" valueType="boolean"/>
|
||||||
|
<option id="gnu.c.compiler.option.optimization.flags.1051939537" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="" valueType="string"/>
|
||||||
|
<option id="gnu.c.compiler.option.misc.other.1470884128" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0" valueType="string"/>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.898314529" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.2082341498" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">
|
||||||
|
<option id="gnu.c.link.option.other.71044722" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other"/>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.153003457" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.557104889" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base"/>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="OpenV2G.cdt.managedbuild.target.gnu.mingw.exe.1420366407" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="Debug">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/OpenV2G"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="Release">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/OpenV2G"/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
|
||||||
|
<buildTargets>
|
||||||
|
<target name="OpenV2G.exe" path="Debug" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildArguments/>
|
||||||
|
<buildTarget>OpenV2G.exe</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
</buildTargets>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907;cdt.managedbuild.config.gnu.mingw.exe.debug.181718907.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.1511109002;cdt.managedbuild.tool.gnu.c.compiler.input.1904654876">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907;cdt.managedbuild.config.gnu.mingw.exe.debug.181718907.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.113647340;cdt.managedbuild.tool.gnu.c.compiler.input.67299528">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.681614450;cdt.managedbuild.config.gnu.mingw.exe.release.681614450.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.2107890734;cdt.managedbuild.tool.gnu.c.compiler.input.898314529">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.681614450;cdt.managedbuild.config.gnu.mingw.exe.release.681614450.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.150928873;cdt.managedbuild.tool.gnu.c.compiler.input.2117635578">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.681614450;cdt.managedbuild.config.gnu.mingw.exe.release.681614450.;cdt.managedbuild.tool.gnu.c.compiler.base.1358204014;cdt.managedbuild.tool.gnu.c.compiler.input.822105819">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007;cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1257453970;cdt.managedbuild.tool.gnu.c.compiler.input.1901507773">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1091708379;cdt.managedbuild.config.gnu.mingw.exe.release.1091708379.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1844784508;cdt.managedbuild.tool.gnu.c.compiler.input.1276057383">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="makefileGenerator">
|
||||||
|
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
||||||
81
.project
Normal file
81
.project
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>OpenV2G</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>make</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||||
|
<value>./OpenV2G/Debug</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
BIN
Debug/OpenV2G.exe
Normal file
BIN
Debug/OpenV2G.exe
Normal file
Binary file not shown.
BIN
Debug/decoded_output.exi
Normal file
BIN
Debug/decoded_output.exi
Normal file
Binary file not shown.
51
Debug/makefile
Normal file
51
Debug/makefile
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
-include ../makefile.init
|
||||||
|
|
||||||
|
RM := rm -rf
|
||||||
|
|
||||||
|
# All of the sources participating in the build are defined here
|
||||||
|
-include sources.mk
|
||||||
|
-include src/xmldsig/subdir.mk
|
||||||
|
-include src/transport/subdir.mk
|
||||||
|
-include src/test/subdir.mk
|
||||||
|
-include src/iso2/subdir.mk
|
||||||
|
-include src/iso1/subdir.mk
|
||||||
|
-include src/din/subdir.mk
|
||||||
|
-include src/codec/subdir.mk
|
||||||
|
-include src/appHandshake/subdir.mk
|
||||||
|
-include subdir.mk
|
||||||
|
-include objects.mk
|
||||||
|
|
||||||
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
|
ifneq ($(strip $(C_DEPS)),)
|
||||||
|
-include $(C_DEPS)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include ../makefile.defs
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
|
||||||
|
# All Target
|
||||||
|
all: OpenV2G.exe
|
||||||
|
|
||||||
|
# Tool invocations
|
||||||
|
OpenV2G.exe: $(OBJS) $(USER_OBJS)
|
||||||
|
@echo 'Building target: $@'
|
||||||
|
@echo 'Invoking: MinGW C Linker'
|
||||||
|
gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
|
||||||
|
@echo 'Finished building target: $@'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
# Other Targets
|
||||||
|
clean:
|
||||||
|
-$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) OpenV2G.exe
|
||||||
|
-@echo ' '
|
||||||
|
|
||||||
|
.PHONY: all clean dependents
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
-include ../makefile.targets
|
||||||
8
Debug/objects.mk
Normal file
8
Debug/objects.mk
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
USER_OBJS :=
|
||||||
|
|
||||||
|
LIBS :=
|
||||||
|
|
||||||
24
Debug/sources.mk
Normal file
24
Debug/sources.mk
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
OBJ_SRCS :=
|
||||||
|
ASM_SRCS :=
|
||||||
|
C_SRCS :=
|
||||||
|
S_UPPER_SRCS :=
|
||||||
|
O_SRCS :=
|
||||||
|
EXECUTABLES :=
|
||||||
|
OBJS :=
|
||||||
|
C_DEPS :=
|
||||||
|
|
||||||
|
# Every subdirectory with source files must be described here
|
||||||
|
SUBDIRS := \
|
||||||
|
src/xmldsig \
|
||||||
|
src/transport \
|
||||||
|
src/test \
|
||||||
|
src/iso2 \
|
||||||
|
src/iso1 \
|
||||||
|
src/din \
|
||||||
|
src/codec \
|
||||||
|
src/appHandshake \
|
||||||
|
|
||||||
10
Debug/src/appHandshake/appHandEXIDatatypes.d
Normal file
10
Debug/src/appHandshake/appHandEXIDatatypes.d
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
src/appHandshake/appHandEXIDatatypes.d: \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
BIN
Debug/src/appHandshake/appHandEXIDatatypes.o
Normal file
BIN
Debug/src/appHandshake/appHandEXIDatatypes.o
Normal file
Binary file not shown.
25
Debug/src/appHandshake/appHandEXIDatatypesDecoder.d
Normal file
25
Debug/src/appHandshake/appHandEXIDatatypesDecoder.d
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
src/appHandshake/appHandEXIDatatypesDecoder.d: \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/appHandshake/appHandEXIDatatypes.h \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIHeaderDecoder.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/appHandshake/appHandEXIDatatypesDecoder.o
Normal file
BIN
Debug/src/appHandshake/appHandEXIDatatypesDecoder.o
Normal file
Binary file not shown.
22
Debug/src/appHandshake/appHandEXIDatatypesEncoder.d
Normal file
22
Debug/src/appHandshake/appHandEXIDatatypesEncoder.d
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
src/appHandshake/appHandEXIDatatypesEncoder.d: \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/appHandshake/appHandEXIDatatypes.h \
|
||||||
|
../src/codec/EncoderChannel.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/appHandshake/appHandEXIDatatypesEncoder.o
Normal file
BIN
Debug/src/appHandshake/appHandEXIDatatypesEncoder.o
Normal file
Binary file not shown.
30
Debug/src/appHandshake/subdir.mk
Normal file
30
Debug/src/appHandshake/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/appHandshake/appHandEXIDatatypes.o \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesDecoder.o \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/appHandshake/appHandEXIDatatypes.d \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesDecoder.d \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/appHandshake/%.o: ../src/appHandshake/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
11
Debug/src/codec/BitInputStream.d
Normal file
11
Debug/src/codec/BitInputStream.d
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
src/codec/BitInputStream.d: ../src/codec/BitInputStream.c \
|
||||||
|
../src/codec/BitInputStream.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/BitInputStream.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/BitInputStream.o
Normal file
BIN
Debug/src/codec/BitInputStream.o
Normal file
Binary file not shown.
11
Debug/src/codec/BitOutputStream.d
Normal file
11
Debug/src/codec/BitOutputStream.d
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
src/codec/BitOutputStream.d: ../src/codec/BitOutputStream.c \
|
||||||
|
../src/codec/BitOutputStream.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/BitOutputStream.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/BitOutputStream.o
Normal file
BIN
Debug/src/codec/BitOutputStream.o
Normal file
Binary file not shown.
8
Debug/src/codec/ByteStream.d
Normal file
8
Debug/src/codec/ByteStream.d
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
src/codec/ByteStream.d: ../src/codec/ByteStream.c ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/ByteStream.o
Normal file
BIN
Debug/src/codec/ByteStream.o
Normal file
Binary file not shown.
19
Debug/src/codec/DecoderChannel.d
Normal file
19
Debug/src/codec/DecoderChannel.d
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
src/codec/DecoderChannel.d: ../src/codec/DecoderChannel.c \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/BitInputStream.h ../src/codec/MethodsBag.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/BitInputStream.h:
|
||||||
|
|
||||||
|
../src/codec/MethodsBag.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/DecoderChannel.o
Normal file
BIN
Debug/src/codec/DecoderChannel.o
Normal file
Binary file not shown.
19
Debug/src/codec/EXIHeaderDecoder.d
Normal file
19
Debug/src/codec/EXIHeaderDecoder.d
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
src/codec/EXIHeaderDecoder.d: ../src/codec/EXIHeaderDecoder.c \
|
||||||
|
../src/codec/EXIHeaderDecoder.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/BitInputStream.h \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/BitInputStream.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/EXIHeaderDecoder.o
Normal file
BIN
Debug/src/codec/EXIHeaderDecoder.o
Normal file
Binary file not shown.
14
Debug/src/codec/EXIHeaderEncoder.d
Normal file
14
Debug/src/codec/EXIHeaderEncoder.d
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
src/codec/EXIHeaderEncoder.d: ../src/codec/EXIHeaderEncoder.c \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/BitOutputStream.h \
|
||||||
|
../src/codec/EncoderChannel.h
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/BitOutputStream.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
BIN
Debug/src/codec/EXIHeaderEncoder.o
Normal file
BIN
Debug/src/codec/EXIHeaderEncoder.o
Normal file
Binary file not shown.
19
Debug/src/codec/EncoderChannel.d
Normal file
19
Debug/src/codec/EncoderChannel.d
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
src/codec/EncoderChannel.d: ../src/codec/EncoderChannel.c \
|
||||||
|
../src/codec/EncoderChannel.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/BitOutputStream.h ../src/codec/ErrorCodes.h \
|
||||||
|
../src/codec/MethodsBag.h
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/BitOutputStream.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
|
|
||||||
|
../src/codec/MethodsBag.h:
|
||||||
BIN
Debug/src/codec/EncoderChannel.o
Normal file
BIN
Debug/src/codec/EncoderChannel.o
Normal file
Binary file not shown.
6
Debug/src/codec/MethodsBag.d
Normal file
6
Debug/src/codec/MethodsBag.d
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
src/codec/MethodsBag.d: ../src/codec/MethodsBag.c \
|
||||||
|
../src/codec/MethodsBag.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/codec/MethodsBag.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/codec/MethodsBag.o
Normal file
BIN
Debug/src/codec/MethodsBag.o
Normal file
Binary file not shown.
45
Debug/src/codec/subdir.mk
Normal file
45
Debug/src/codec/subdir.mk
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/codec/BitInputStream.c \
|
||||||
|
../src/codec/BitOutputStream.c \
|
||||||
|
../src/codec/ByteStream.c \
|
||||||
|
../src/codec/DecoderChannel.c \
|
||||||
|
../src/codec/EXIHeaderDecoder.c \
|
||||||
|
../src/codec/EXIHeaderEncoder.c \
|
||||||
|
../src/codec/EncoderChannel.c \
|
||||||
|
../src/codec/MethodsBag.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/codec/BitInputStream.o \
|
||||||
|
./src/codec/BitOutputStream.o \
|
||||||
|
./src/codec/ByteStream.o \
|
||||||
|
./src/codec/DecoderChannel.o \
|
||||||
|
./src/codec/EXIHeaderDecoder.o \
|
||||||
|
./src/codec/EXIHeaderEncoder.o \
|
||||||
|
./src/codec/EncoderChannel.o \
|
||||||
|
./src/codec/MethodsBag.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/codec/BitInputStream.d \
|
||||||
|
./src/codec/BitOutputStream.d \
|
||||||
|
./src/codec/ByteStream.d \
|
||||||
|
./src/codec/DecoderChannel.d \
|
||||||
|
./src/codec/EXIHeaderDecoder.d \
|
||||||
|
./src/codec/EXIHeaderEncoder.d \
|
||||||
|
./src/codec/EncoderChannel.d \
|
||||||
|
./src/codec/MethodsBag.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/codec/%.o: ../src/codec/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
9
Debug/src/din/dinEXIDatatypes.d
Normal file
9
Debug/src/din/dinEXIDatatypes.d
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
src/din/dinEXIDatatypes.d: ../src/din/dinEXIDatatypes.c \
|
||||||
|
../src/din/dinEXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
BIN
Debug/src/din/dinEXIDatatypes.o
Normal file
BIN
Debug/src/din/dinEXIDatatypes.o
Normal file
Binary file not shown.
24
Debug/src/din/dinEXIDatatypesDecoder.d
Normal file
24
Debug/src/din/dinEXIDatatypesDecoder.d
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
src/din/dinEXIDatatypesDecoder.d: ../src/din/dinEXIDatatypesDecoder.c \
|
||||||
|
../src/din/dinEXIDatatypesDecoder.h ../src/din/dinEXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIHeaderDecoder.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/din/dinEXIDatatypesDecoder.o
Normal file
BIN
Debug/src/din/dinEXIDatatypesDecoder.o
Normal file
Binary file not shown.
21
Debug/src/din/dinEXIDatatypesEncoder.d
Normal file
21
Debug/src/din/dinEXIDatatypesEncoder.d
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
src/din/dinEXIDatatypesEncoder.d: ../src/din/dinEXIDatatypesEncoder.c \
|
||||||
|
../src/din/dinEXIDatatypesEncoder.h ../src/din/dinEXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/EncoderChannel.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/din/dinEXIDatatypesEncoder.o
Normal file
BIN
Debug/src/din/dinEXIDatatypesEncoder.o
Normal file
Binary file not shown.
30
Debug/src/din/subdir.mk
Normal file
30
Debug/src/din/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/din/dinEXIDatatypes.c \
|
||||||
|
../src/din/dinEXIDatatypesDecoder.c \
|
||||||
|
../src/din/dinEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/din/dinEXIDatatypes.o \
|
||||||
|
./src/din/dinEXIDatatypesDecoder.o \
|
||||||
|
./src/din/dinEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/din/dinEXIDatatypes.d \
|
||||||
|
./src/din/dinEXIDatatypesDecoder.d \
|
||||||
|
./src/din/dinEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/din/%.o: ../src/din/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
9
Debug/src/iso1/iso1EXIDatatypes.d
Normal file
9
Debug/src/iso1/iso1EXIDatatypes.d
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
src/iso1/iso1EXIDatatypes.d: ../src/iso1/iso1EXIDatatypes.c \
|
||||||
|
../src/iso1/iso1EXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
BIN
Debug/src/iso1/iso1EXIDatatypes.o
Normal file
BIN
Debug/src/iso1/iso1EXIDatatypes.o
Normal file
Binary file not shown.
24
Debug/src/iso1/iso1EXIDatatypesDecoder.d
Normal file
24
Debug/src/iso1/iso1EXIDatatypesDecoder.d
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
src/iso1/iso1EXIDatatypesDecoder.d: ../src/iso1/iso1EXIDatatypesDecoder.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.h ../src/iso1/iso1EXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIHeaderDecoder.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/iso1/iso1EXIDatatypesDecoder.o
Normal file
BIN
Debug/src/iso1/iso1EXIDatatypesDecoder.o
Normal file
Binary file not shown.
21
Debug/src/iso1/iso1EXIDatatypesEncoder.d
Normal file
21
Debug/src/iso1/iso1EXIDatatypesEncoder.d
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
src/iso1/iso1EXIDatatypesEncoder.d: ../src/iso1/iso1EXIDatatypesEncoder.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.h ../src/iso1/iso1EXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/EncoderChannel.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/iso1/iso1EXIDatatypesEncoder.o
Normal file
BIN
Debug/src/iso1/iso1EXIDatatypesEncoder.o
Normal file
Binary file not shown.
30
Debug/src/iso1/subdir.mk
Normal file
30
Debug/src/iso1/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/iso1/iso1EXIDatatypes.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/iso1/iso1EXIDatatypes.o \
|
||||||
|
./src/iso1/iso1EXIDatatypesDecoder.o \
|
||||||
|
./src/iso1/iso1EXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/iso1/iso1EXIDatatypes.d \
|
||||||
|
./src/iso1/iso1EXIDatatypesDecoder.d \
|
||||||
|
./src/iso1/iso1EXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/iso1/%.o: ../src/iso1/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
9
Debug/src/iso2/iso2EXIDatatypes.d
Normal file
9
Debug/src/iso2/iso2EXIDatatypes.d
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
src/iso2/iso2EXIDatatypes.d: ../src/iso2/iso2EXIDatatypes.c \
|
||||||
|
../src/iso2/iso2EXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
BIN
Debug/src/iso2/iso2EXIDatatypes.o
Normal file
BIN
Debug/src/iso2/iso2EXIDatatypes.o
Normal file
Binary file not shown.
24
Debug/src/iso2/iso2EXIDatatypesDecoder.d
Normal file
24
Debug/src/iso2/iso2EXIDatatypesDecoder.d
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
src/iso2/iso2EXIDatatypesDecoder.d: ../src/iso2/iso2EXIDatatypesDecoder.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.h ../src/iso2/iso2EXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/DecoderChannel.h ../src/codec/EXIOptions.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIHeaderDecoder.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/iso2/iso2EXIDatatypesDecoder.o
Normal file
BIN
Debug/src/iso2/iso2EXIDatatypesDecoder.o
Normal file
Binary file not shown.
21
Debug/src/iso2/iso2EXIDatatypesEncoder.d
Normal file
21
Debug/src/iso2/iso2EXIDatatypesEncoder.d
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
src/iso2/iso2EXIDatatypesEncoder.d: ../src/iso2/iso2EXIDatatypesEncoder.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.h ../src/iso2/iso2EXIDatatypes.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/EncoderChannel.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/iso2/iso2EXIDatatypesEncoder.o
Normal file
BIN
Debug/src/iso2/iso2EXIDatatypesEncoder.o
Normal file
Binary file not shown.
30
Debug/src/iso2/subdir.mk
Normal file
30
Debug/src/iso2/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/iso2/iso2EXIDatatypes.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/iso2/iso2EXIDatatypes.o \
|
||||||
|
./src/iso2/iso2EXIDatatypesDecoder.o \
|
||||||
|
./src/iso2/iso2EXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/iso2/iso2EXIDatatypes.d \
|
||||||
|
./src/iso2/iso2EXIDatatypesDecoder.d \
|
||||||
|
./src/iso2/iso2EXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/iso2/%.o: ../src/iso2/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
3
Debug/src/test/main.d
Normal file
3
Debug/src/test/main.d
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
src/test/main.d: ../src/test/main.c ../src/test/main.h
|
||||||
|
|
||||||
|
../src/test/main.h:
|
||||||
BIN
Debug/src/test/main.o
Normal file
BIN
Debug/src/test/main.o
Normal file
Binary file not shown.
31
Debug/src/test/main_databinder.d
Normal file
31
Debug/src/test/main_databinder.d
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
src/test/main_databinder.d: ../src/test/main_databinder.c \
|
||||||
|
../src/iso1/iso1EXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/iso1/iso1EXIDatatypesEncoder.h \
|
||||||
|
../src/iso1/iso1EXIDatatypes.h ../src/iso1/iso1EXIDatatypesDecoder.h \
|
||||||
|
../src/iso2/iso2EXIDatatypes.h ../src/iso2/iso2EXIDatatypesEncoder.h \
|
||||||
|
../src/iso2/iso2EXIDatatypes.h ../src/iso2/iso2EXIDatatypesDecoder.h \
|
||||||
|
../src/codec/ByteStream.h ../src/codec/EXITypes.h
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ByteStream.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
BIN
Debug/src/test/main_databinder.o
Normal file
BIN
Debug/src/test/main_databinder.o
Normal file
Binary file not shown.
53
Debug/src/test/main_example.d
Normal file
53
Debug/src/test/main_example.d
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
src/test/main_example.d: ../src/test/main_example.c \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.h \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.h \
|
||||||
|
../src/din/dinEXIDatatypes.h ../src/din/dinEXIDatatypesEncoder.h \
|
||||||
|
../src/din/dinEXIDatatypes.h ../src/din/dinEXIDatatypesDecoder.h \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h ../src/iso1/iso1EXIDatatypes.h \
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.h ../src/iso1/iso1EXIDatatypes.h \
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.h ../src/iso2/iso2EXIDatatypes.h \
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.h ../src/iso2/iso2EXIDatatypes.h \
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.h ../src/transport/v2gtp.h
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/din/dinEXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/transport/v2gtp.h:
|
||||||
BIN
Debug/src/test/main_example.o
Normal file
BIN
Debug/src/test/main_example.o
Normal file
Binary file not shown.
30
Debug/src/test/subdir.mk
Normal file
30
Debug/src/test/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/test/main.c \
|
||||||
|
../src/test/main_databinder.c \
|
||||||
|
../src/test/main_example.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/test/main.o \
|
||||||
|
./src/test/main_databinder.o \
|
||||||
|
./src/test/main_example.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/test/main.d \
|
||||||
|
./src/test/main_databinder.d \
|
||||||
|
./src/test/main_example.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/test/%.o: ../src/test/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
24
Debug/src/transport/subdir.mk
Normal file
24
Debug/src/transport/subdir.mk
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/transport/v2gtp.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/transport/v2gtp.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/transport/v2gtp.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/transport/%.o: ../src/transport/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
3
Debug/src/transport/v2gtp.d
Normal file
3
Debug/src/transport/v2gtp.d
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
src/transport/v2gtp.d: ../src/transport/v2gtp.c ../src/transport/v2gtp.h
|
||||||
|
|
||||||
|
../src/transport/v2gtp.h:
|
||||||
BIN
Debug/src/transport/v2gtp.o
Normal file
BIN
Debug/src/transport/v2gtp.o
Normal file
Binary file not shown.
30
Debug/src/xmldsig/subdir.mk
Normal file
30
Debug/src/xmldsig/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesDecoder.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypes.o \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesDecoder.o \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypes.d \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesDecoder.d \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/xmldsig/%.o: ../src/xmldsig/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -O0 -g3 -Wall -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
9
Debug/src/xmldsig/xmldsigEXIDatatypes.d
Normal file
9
Debug/src/xmldsig/xmldsigEXIDatatypes.d
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
src/xmldsig/xmldsigEXIDatatypes.d: ../src/xmldsig/xmldsigEXIDatatypes.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
BIN
Debug/src/xmldsig/xmldsigEXIDatatypes.o
Normal file
BIN
Debug/src/xmldsig/xmldsigEXIDatatypes.o
Normal file
Binary file not shown.
23
Debug/src/xmldsig/xmldsigEXIDatatypesDecoder.d
Normal file
23
Debug/src/xmldsig/xmldsigEXIDatatypesDecoder.d
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
src/xmldsig/xmldsigEXIDatatypesDecoder.d: \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesDecoder.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesDecoder.h \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h ../src/codec/DecoderChannel.h \
|
||||||
|
../src/codec/EXIOptions.h ../src/codec/EXITypes.h \
|
||||||
|
../src/codec/EXIConfig.h ../src/codec/EXIHeaderDecoder.h \
|
||||||
|
../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesDecoder.h:
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/DecoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXIOptions.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderDecoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/xmldsig/xmldsigEXIDatatypesDecoder.o
Normal file
BIN
Debug/src/xmldsig/xmldsigEXIDatatypesDecoder.o
Normal file
Binary file not shown.
20
Debug/src/xmldsig/xmldsigEXIDatatypesEncoder.d
Normal file
20
Debug/src/xmldsig/xmldsigEXIDatatypesEncoder.d
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
src/xmldsig/xmldsigEXIDatatypesEncoder.d: \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesEncoder.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesEncoder.h \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h ../src/codec/EncoderChannel.h \
|
||||||
|
../src/codec/EXITypes.h ../src/codec/EXIConfig.h \
|
||||||
|
../src/codec/EXIHeaderEncoder.h ../src/codec/ErrorCodes.h
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesEncoder.h:
|
||||||
|
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.h:
|
||||||
|
|
||||||
|
../src/codec/EncoderChannel.h:
|
||||||
|
|
||||||
|
../src/codec/EXITypes.h:
|
||||||
|
|
||||||
|
../src/codec/EXIConfig.h:
|
||||||
|
|
||||||
|
../src/codec/EXIHeaderEncoder.h:
|
||||||
|
|
||||||
|
../src/codec/ErrorCodes.h:
|
||||||
BIN
Debug/src/xmldsig/xmldsigEXIDatatypesEncoder.o
Normal file
BIN
Debug/src/xmldsig/xmldsigEXIDatatypesEncoder.o
Normal file
Binary file not shown.
BIN
Debug/test.exi
Normal file
BIN
Debug/test.exi
Normal file
Binary file not shown.
1
Debug/test.txt
Normal file
1
Debug/test.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
8034282e23dd1022334455668660dd00000000002c06fffe80000000000000122233fffe445566fe80000000000000823428fffe2e23ddc365d121007d208c2ce1d2295018111c493a00000101fe8001000000001080980210509008c0c0c0e0c52110003200
|
||||||
165
LICENSE.txt
Normal file
165
LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
165
README.txt
Normal file
165
README.txt
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
-------------------------------------------------------------------------
|
||||||
|
OpenV2G - an open source project implementing the basic functionality of the ISO IEC 15118 vehicle to grid (V2G) communication interface
|
||||||
|
Version 0.9.5, released March 11, 2022
|
||||||
|
http://openv2g.sourceforge.net/
|
||||||
|
|
||||||
|
Please report bugs via the SourceForge bug tracking system at http://sourceforge.net/tracker/?group_id=350113.
|
||||||
|
Thank you.
|
||||||
|
|
||||||
|
Copyright (C) 2007-2022 Siemens AG
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published
|
||||||
|
by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.9.4:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* fix possible memory corruption bug
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.9.3:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Support for 15118-2-2016 (ISO2) started besides 15118-2-2013 (ISO1) and DIN
|
||||||
|
* fix eMAID fragment encoding/decoding support
|
||||||
|
* internal coding updates
|
||||||
|
* bug-fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.9.2:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* resolves XML signature interoperability issue
|
||||||
|
Note: To make use of xmldsig the following defines have to be set.
|
||||||
|
in "xmldsigEXIDatatypes.h"
|
||||||
|
#define DEPLOY_XMLDSIG_CODEC SUPPORT_YES
|
||||||
|
#define DEPLOY_XMLDSIG_CODEC_FRAGMENT SUPPORT_YES
|
||||||
|
in "v2gEXIDatatypes.h"
|
||||||
|
#define DEPLOY_ISO_CODEC_FRAGMENT SUPPORT_YES
|
||||||
|
Otherwise the code is turned off.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.9.1:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* resolves bug with name clashes w.r.t. iso and din track
|
||||||
|
* fixes issue with test code for init handshake
|
||||||
|
* Note: OpenV2G 0.9.2 is essentially just a bug fixed version of OpenV2G 0.9.1
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.9:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* includes support for DIN and hence interoperability with OpenV2G 0.7
|
||||||
|
(needs to be switched on though by #define DEPLOY_DIN_CODEC)
|
||||||
|
* fixes bugs and warnings for Visual Studio
|
||||||
|
* Note: OpenV2G 0.9.1 is a superset of previous versions
|
||||||
|
v2g...c/h files support ISO track
|
||||||
|
din...c/h files support DIN track
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.8:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* large code footprint reduction which resulted in a new API
|
||||||
|
(please take a look at the example in src/test folder)
|
||||||
|
* datatype differences w.r.t. arrays, strings, bytes, isUsed, and enum-naming
|
||||||
|
* bug-fixes
|
||||||
|
* Note: OpenV2G 0.8 and 0.9 are interoperable, meaning that one can generate
|
||||||
|
streams with one and decode with the other or vice-versa
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.7:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status)
|
||||||
|
* bug-fixes
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.7:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status)
|
||||||
|
* bug-fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.6:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 DIS status and DIN 70121)
|
||||||
|
* reduced memory usage
|
||||||
|
* EXI decoder skips schema deviations according to EXI Profile
|
||||||
|
* bug-fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.5:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes
|
||||||
|
* application handshake protocol implementation
|
||||||
|
* asynchronised communication
|
||||||
|
* reduced memory usage
|
||||||
|
* changed V2GTP byte order from little endian to big endian
|
||||||
|
* bug-fixes
|
||||||
|
* updated AC demo interaction between EV and EVSE, and
|
||||||
|
* updated DC demo interaction between EV and EVSE
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.4:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes
|
||||||
|
* V2GTP implementation (replaces the DoIP implementation)
|
||||||
|
* EXI default coder for the 15118 schema (replaces the strict mode of EXI)
|
||||||
|
* AC demo interaction between PEV and EVSE, and
|
||||||
|
* DC demo interaction between PEV and EVSE
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.3.1:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* adaption of V2G schema changes
|
||||||
|
* supporting of DC messages
|
||||||
|
* example program showing the message sequence of AC charging and
|
||||||
|
DC charging
|
||||||
|
* bug-fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.3:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Bug-fixes
|
||||||
|
* reduced memory usage
|
||||||
|
* some type changes in the EXI codec and V2G service:
|
||||||
|
** struct v2gService->struct EXIService in v2g_service.h
|
||||||
|
** size_t->uint16_t in v2g_serviceClientDataTransmitter.h and doIP.h
|
||||||
|
* renaming of some enumeration values in v2g_serviceDataTypes.h
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.2.2:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Bug-fixes
|
||||||
|
* first DoIP implementation
|
||||||
|
* V2G message error handling
|
||||||
|
* adaption of V2G schema changes
|
||||||
|
* code optimizations
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.2.1:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Bug-fixes
|
||||||
|
* adaption of V2G schema changes
|
||||||
|
* some code optimizations
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.2:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Bug-fixes
|
||||||
|
* Fixed compiler warnings
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
CHANGES from version 0.1:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
* Bug-fixes
|
||||||
|
* Service and Client added
|
||||||
51
Release/makefile
Normal file
51
Release/makefile
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
-include ../makefile.init
|
||||||
|
|
||||||
|
RM := rm -rf
|
||||||
|
|
||||||
|
# All of the sources participating in the build are defined here
|
||||||
|
-include sources.mk
|
||||||
|
-include src/xmldsig/subdir.mk
|
||||||
|
-include src/transport/subdir.mk
|
||||||
|
-include src/test/subdir.mk
|
||||||
|
-include src/iso2/subdir.mk
|
||||||
|
-include src/iso1/subdir.mk
|
||||||
|
-include src/din/subdir.mk
|
||||||
|
-include src/codec/subdir.mk
|
||||||
|
-include src/appHandshake/subdir.mk
|
||||||
|
-include subdir.mk
|
||||||
|
-include objects.mk
|
||||||
|
|
||||||
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
|
ifneq ($(strip $(C_DEPS)),)
|
||||||
|
-include $(C_DEPS)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include ../makefile.defs
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
|
||||||
|
# All Target
|
||||||
|
all: OpenV2G.exe
|
||||||
|
|
||||||
|
# Tool invocations
|
||||||
|
OpenV2G.exe: $(OBJS) $(USER_OBJS)
|
||||||
|
@echo 'Building target: $@'
|
||||||
|
@echo 'Invoking: MinGW C Linker'
|
||||||
|
gcc -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
|
||||||
|
@echo 'Finished building target: $@'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
# Other Targets
|
||||||
|
clean:
|
||||||
|
-$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) OpenV2G.exe
|
||||||
|
-@echo ' '
|
||||||
|
|
||||||
|
.PHONY: all clean dependents
|
||||||
|
.SECONDARY:
|
||||||
|
|
||||||
|
-include ../makefile.targets
|
||||||
8
Release/objects.mk
Normal file
8
Release/objects.mk
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
USER_OBJS :=
|
||||||
|
|
||||||
|
LIBS :=
|
||||||
|
|
||||||
24
Release/sources.mk
Normal file
24
Release/sources.mk
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
OBJ_SRCS :=
|
||||||
|
ASM_SRCS :=
|
||||||
|
C_SRCS :=
|
||||||
|
S_UPPER_SRCS :=
|
||||||
|
O_SRCS :=
|
||||||
|
EXECUTABLES :=
|
||||||
|
OBJS :=
|
||||||
|
C_DEPS :=
|
||||||
|
|
||||||
|
# Every subdirectory with source files must be described here
|
||||||
|
SUBDIRS := \
|
||||||
|
src/xmldsig \
|
||||||
|
src/transport \
|
||||||
|
src/test \
|
||||||
|
src/iso2 \
|
||||||
|
src/iso1 \
|
||||||
|
src/din \
|
||||||
|
src/codec \
|
||||||
|
src/appHandshake \
|
||||||
|
|
||||||
30
Release/src/appHandshake/subdir.mk
Normal file
30
Release/src/appHandshake/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/appHandshake/appHandEXIDatatypes.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesDecoder.c \
|
||||||
|
../src/appHandshake/appHandEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/appHandshake/appHandEXIDatatypes.o \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesDecoder.o \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/appHandshake/appHandEXIDatatypes.d \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesDecoder.d \
|
||||||
|
./src/appHandshake/appHandEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/appHandshake/%.o: ../src/appHandshake/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
45
Release/src/codec/subdir.mk
Normal file
45
Release/src/codec/subdir.mk
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/codec/BitInputStream.c \
|
||||||
|
../src/codec/BitOutputStream.c \
|
||||||
|
../src/codec/ByteStream.c \
|
||||||
|
../src/codec/DecoderChannel.c \
|
||||||
|
../src/codec/EXIHeaderDecoder.c \
|
||||||
|
../src/codec/EXIHeaderEncoder.c \
|
||||||
|
../src/codec/EncoderChannel.c \
|
||||||
|
../src/codec/MethodsBag.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/codec/BitInputStream.o \
|
||||||
|
./src/codec/BitOutputStream.o \
|
||||||
|
./src/codec/ByteStream.o \
|
||||||
|
./src/codec/DecoderChannel.o \
|
||||||
|
./src/codec/EXIHeaderDecoder.o \
|
||||||
|
./src/codec/EXIHeaderEncoder.o \
|
||||||
|
./src/codec/EncoderChannel.o \
|
||||||
|
./src/codec/MethodsBag.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/codec/BitInputStream.d \
|
||||||
|
./src/codec/BitOutputStream.d \
|
||||||
|
./src/codec/ByteStream.d \
|
||||||
|
./src/codec/DecoderChannel.d \
|
||||||
|
./src/codec/EXIHeaderDecoder.d \
|
||||||
|
./src/codec/EXIHeaderEncoder.d \
|
||||||
|
./src/codec/EncoderChannel.d \
|
||||||
|
./src/codec/MethodsBag.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/codec/%.o: ../src/codec/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
30
Release/src/din/subdir.mk
Normal file
30
Release/src/din/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/din/dinEXIDatatypes.c \
|
||||||
|
../src/din/dinEXIDatatypesDecoder.c \
|
||||||
|
../src/din/dinEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/din/dinEXIDatatypes.o \
|
||||||
|
./src/din/dinEXIDatatypesDecoder.o \
|
||||||
|
./src/din/dinEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/din/dinEXIDatatypes.d \
|
||||||
|
./src/din/dinEXIDatatypesDecoder.d \
|
||||||
|
./src/din/dinEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/din/%.o: ../src/din/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
30
Release/src/iso1/subdir.mk
Normal file
30
Release/src/iso1/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/iso1/iso1EXIDatatypes.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesDecoder.c \
|
||||||
|
../src/iso1/iso1EXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/iso1/iso1EXIDatatypes.o \
|
||||||
|
./src/iso1/iso1EXIDatatypesDecoder.o \
|
||||||
|
./src/iso1/iso1EXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/iso1/iso1EXIDatatypes.d \
|
||||||
|
./src/iso1/iso1EXIDatatypesDecoder.d \
|
||||||
|
./src/iso1/iso1EXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/iso1/%.o: ../src/iso1/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
30
Release/src/iso2/subdir.mk
Normal file
30
Release/src/iso2/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/iso2/iso2EXIDatatypes.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesDecoder.c \
|
||||||
|
../src/iso2/iso2EXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/iso2/iso2EXIDatatypes.o \
|
||||||
|
./src/iso2/iso2EXIDatatypesDecoder.o \
|
||||||
|
./src/iso2/iso2EXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/iso2/iso2EXIDatatypes.d \
|
||||||
|
./src/iso2/iso2EXIDatatypesDecoder.d \
|
||||||
|
./src/iso2/iso2EXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/iso2/%.o: ../src/iso2/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
30
Release/src/test/subdir.mk
Normal file
30
Release/src/test/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/test/main.c \
|
||||||
|
../src/test/main_databinder.c \
|
||||||
|
../src/test/main_example.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/test/main.o \
|
||||||
|
./src/test/main_databinder.o \
|
||||||
|
./src/test/main_example.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/test/main.d \
|
||||||
|
./src/test/main_databinder.d \
|
||||||
|
./src/test/main_example.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/test/%.o: ../src/test/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
24
Release/src/transport/subdir.mk
Normal file
24
Release/src/transport/subdir.mk
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/transport/v2gtp.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/transport/v2gtp.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/transport/v2gtp.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/transport/%.o: ../src/transport/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
30
Release/src/xmldsig/subdir.mk
Normal file
30
Release/src/xmldsig/subdir.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
################################################################################
|
||||||
|
# Automatically-generated file. Do not edit!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
|
C_SRCS += \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypes.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesDecoder.c \
|
||||||
|
../src/xmldsig/xmldsigEXIDatatypesEncoder.c
|
||||||
|
|
||||||
|
OBJS += \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypes.o \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesDecoder.o \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesEncoder.o
|
||||||
|
|
||||||
|
C_DEPS += \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypes.d \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesDecoder.d \
|
||||||
|
./src/xmldsig/xmldsigEXIDatatypesEncoder.d
|
||||||
|
|
||||||
|
|
||||||
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
src/xmldsig/%.o: ../src/xmldsig/%.c
|
||||||
|
@echo 'Building file: $<'
|
||||||
|
@echo 'Invoking: GCC C Compiler'
|
||||||
|
gcc -I"../src/codec" -I"../src/din" -I"../src/iso1" -I"../src/iso2" -I"../src/xmldsig" -I"../src/appHandshake" -I"../src/transport" -I"../src/test" -Os -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
@echo 'Finished building: $<'
|
||||||
|
@echo ' '
|
||||||
|
|
||||||
|
|
||||||
76
create_test3.c
Normal file
76
create_test3.c
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
int hex_char_to_int(char c) {
|
||||||
|
if (c >= '0' && c <= '9') return c - '0';
|
||||||
|
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
|
||||||
|
if (c >= 'a' && c <= 'f') return c - 'a' + 10;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const char* hex_string = "8098021050908C0C0C0E0C50E00000002040C40C203030C01400003103D00C0618370105088270095A5A30303030300008";
|
||||||
|
|
||||||
|
size_t hex_len = strlen(hex_string);
|
||||||
|
if (hex_len % 2 != 0) {
|
||||||
|
printf("Error: Hex string length must be even\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t binary_len = hex_len / 2;
|
||||||
|
unsigned char* binary_data = malloc(binary_len);
|
||||||
|
|
||||||
|
if (!binary_data) {
|
||||||
|
printf("Memory allocation failed\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert hex string to binary
|
||||||
|
for (size_t i = 0; i < binary_len; i++) {
|
||||||
|
int high = hex_char_to_int(hex_string[i * 2]);
|
||||||
|
int low = hex_char_to_int(hex_string[i * 2 + 1]);
|
||||||
|
|
||||||
|
if (high == -1 || low == -1) {
|
||||||
|
printf("Invalid hex character at position %zu\n", i * 2);
|
||||||
|
free(binary_data);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
binary_data[i] = (high << 4) | low;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write to file
|
||||||
|
FILE* file = fopen("test3.exi", "wb");
|
||||||
|
if (!file) {
|
||||||
|
printf("Cannot create output file\n");
|
||||||
|
free(binary_data);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t written = fwrite(binary_data, 1, binary_len, file);
|
||||||
|
fclose(file);
|
||||||
|
free(binary_data);
|
||||||
|
|
||||||
|
if (written != binary_len) {
|
||||||
|
printf("Write error\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Successfully created test3.exi with %zu bytes\n", binary_len);
|
||||||
|
|
||||||
|
// Show first few bytes for verification
|
||||||
|
printf("First 16 bytes: ");
|
||||||
|
FILE* verify = fopen("test3.exi", "rb");
|
||||||
|
if (verify) {
|
||||||
|
for (int i = 0; i < 16 && i < binary_len; i++) {
|
||||||
|
int c = fgetc(verify);
|
||||||
|
printf("%02X ", c);
|
||||||
|
}
|
||||||
|
fclose(verify);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
BIN
create_test3.exe
Normal file
BIN
create_test3.exe
Normal file
Binary file not shown.
24
create_test4.c
Normal file
24
create_test4.c
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const char* hex_string = "8098021050908C0C0C0E0C50D10032018600A01881AE0601860C806140C801030800006100001881980600";
|
||||||
|
FILE* file = fopen("test4.exi", "wb");
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
printf("Error creating test4.exi\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t len = strlen(hex_string);
|
||||||
|
for (size_t i = 0; i < len; i += 2) {
|
||||||
|
unsigned int byte;
|
||||||
|
sscanf(&hex_string[i], "%2x", &byte);
|
||||||
|
fputc(byte, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
printf("test4.exi created successfully (%zu bytes)\n", len/2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
BIN
create_test4.exe
Normal file
BIN
create_test4.exe
Normal file
Binary file not shown.
66
create_test_exi.c
Normal file
66
create_test_exi.c
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* EXI codec headers */
|
||||||
|
#include "iso1EXIDatatypes.h"
|
||||||
|
#include "iso1EXIDatatypesEncoder.h"
|
||||||
|
#include "ByteStream.h"
|
||||||
|
|
||||||
|
#define BUFFER_SIZE 1024
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
struct iso1EXIDocument exiDoc;
|
||||||
|
bitstream_t stream;
|
||||||
|
uint8_t buffer[BUFFER_SIZE];
|
||||||
|
size_t pos = 0;
|
||||||
|
int errn = 0;
|
||||||
|
|
||||||
|
/* Initialize EXI document */
|
||||||
|
init_iso1EXIDocument(&exiDoc);
|
||||||
|
|
||||||
|
/* Create a simple V2G message */
|
||||||
|
exiDoc.V2G_Message_isUsed = 1;
|
||||||
|
init_iso1MessageHeaderType(&exiDoc.V2G_Message.Header);
|
||||||
|
|
||||||
|
/* Set session ID to all zeros */
|
||||||
|
memset(exiDoc.V2G_Message.Header.SessionID.bytes, 0, 8);
|
||||||
|
exiDoc.V2G_Message.Header.SessionID.bytesLen = 8;
|
||||||
|
|
||||||
|
/* Create session setup request */
|
||||||
|
exiDoc.V2G_Message.Body.SessionSetupReq_isUsed = 1;
|
||||||
|
init_iso1SessionSetupReqType(&exiDoc.V2G_Message.Body.SessionSetupReq);
|
||||||
|
|
||||||
|
/* Set EVCC ID */
|
||||||
|
strcpy((char*)exiDoc.V2G_Message.Body.SessionSetupReq.EVCCID.bytes, "01");
|
||||||
|
exiDoc.V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen = 2;
|
||||||
|
|
||||||
|
/* Setup output stream */
|
||||||
|
stream.size = BUFFER_SIZE;
|
||||||
|
stream.data = buffer;
|
||||||
|
stream.pos = &pos;
|
||||||
|
stream.buffer = 0;
|
||||||
|
stream.capacity = 8;
|
||||||
|
|
||||||
|
/* Encode to EXI */
|
||||||
|
printf("Encoding V2G message to EXI...\n");
|
||||||
|
errn = encode_iso1ExiDocument(&stream, &exiDoc);
|
||||||
|
|
||||||
|
if (errn != 0) {
|
||||||
|
printf("Encoding failed with error: %d\n", errn);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Write to file */
|
||||||
|
FILE *fp = fopen("test_message.exi", "wb");
|
||||||
|
if (fp == NULL) {
|
||||||
|
printf("Cannot create output file\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite(buffer, 1, pos, fp);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
printf("Created test_message.exi with %zu bytes\n", pos);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
BIN
create_test_exi.exe
Normal file
BIN
create_test_exi.exe
Normal file
Binary file not shown.
15
data/sessionSetupReq.xml
Normal file
15
data/sessionSetupReq.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2016:MsgBody"
|
||||||
|
xmlns:ns2="urn:iso:15118:2:2016:MsgDataTypes"
|
||||||
|
xmlns:v2gci_h="urn:iso:15118:2:2016:MsgHeader"
|
||||||
|
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||||
|
xmlns:v2gci_d="urn:iso:15118:2:2016:MsgDef">
|
||||||
|
<v2gci_d:Header>
|
||||||
|
<v2gci_h:SessionID>0000000000000000</v2gci_h:SessionID>
|
||||||
|
</v2gci_d:Header>
|
||||||
|
<v2gci_d:Body>
|
||||||
|
<v2gci_b:SessionSetupReq>
|
||||||
|
<v2gci_b:EVCCID>01</v2gci_b:EVCCID>
|
||||||
|
</v2gci_b:SessionSetupReq>
|
||||||
|
</v2gci_d:Body>
|
||||||
|
</v2gci_d:V2G_Message>
|
||||||
BIN
data/sessionSetupReq.xml.exi
Normal file
BIN
data/sessionSetupReq.xml.exi
Normal file
Binary file not shown.
17
data/sessionSetupRes.xml
Normal file
17
data/sessionSetupRes.xml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2016:MsgBody"
|
||||||
|
xmlns:ns2="urn:iso:15118:2:2016:MsgDataTypes"
|
||||||
|
xmlns:v2gci_h="urn:iso:15118:2:2016:MsgHeader"
|
||||||
|
xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
|
||||||
|
xmlns:v2gci_d="urn:iso:15118:2:2016:MsgDef">
|
||||||
|
<v2gci_d:Header>
|
||||||
|
<v2gci_h:SessionID>0000000000000010</v2gci_h:SessionID>
|
||||||
|
</v2gci_d:Header>
|
||||||
|
<v2gci_d:Body>
|
||||||
|
<v2gci_b:SessionSetupRes>
|
||||||
|
<v2gci_b:ResponseCode>OK</v2gci_b:ResponseCode>
|
||||||
|
<v2gci_b:EVSEID>1234567</v2gci_b:EVSEID>
|
||||||
|
<v2gci_b:EVSETimeStamp>123456789</v2gci_b:EVSETimeStamp>
|
||||||
|
</v2gci_b:SessionSetupRes>
|
||||||
|
</v2gci_d:Body>
|
||||||
|
</v2gci_d:V2G_Message>
|
||||||
BIN
data/sessionSetupRes.xml.exi
Normal file
BIN
data/sessionSetupRes.xml.exi
Normal file
Binary file not shown.
627
enhanced_exi_viewer.c
Normal file
627
enhanced_exi_viewer.c
Normal file
@@ -0,0 +1,627 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* EXI codec headers */
|
||||||
|
#include "iso1EXIDatatypes.h"
|
||||||
|
#include "iso1EXIDatatypesDecoder.h"
|
||||||
|
#include "iso2EXIDatatypes.h"
|
||||||
|
#include "iso2EXIDatatypesDecoder.h"
|
||||||
|
#include "dinEXIDatatypes.h"
|
||||||
|
#include "dinEXIDatatypesDecoder.h"
|
||||||
|
#include "ByteStream.h"
|
||||||
|
|
||||||
|
#define BUFFER_SIZE 4096
|
||||||
|
|
||||||
|
void print_session_id(uint8_t *bytes, size_t len) {
|
||||||
|
printf("SessionID: ");
|
||||||
|
for(size_t i = 0; i < len; i++) {
|
||||||
|
printf("%02X", bytes[i]);
|
||||||
|
}
|
||||||
|
printf(" (");
|
||||||
|
for(size_t i = 0; i < len; i++) {
|
||||||
|
if (bytes[i] >= 32 && bytes[i] <= 126) {
|
||||||
|
printf("%c", bytes[i]);
|
||||||
|
} else {
|
||||||
|
printf(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(")\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_xml_header() {
|
||||||
|
printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||||
|
printf("<V2G_Message xmlns=\"urn:iso:15118:2:2013:MsgDef\"\n");
|
||||||
|
printf(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_xml_footer() {
|
||||||
|
printf("</V2G_Message>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_session_id_xml(uint8_t *bytes, size_t len) {
|
||||||
|
printf(" <SessionID>");
|
||||||
|
for(size_t i = 0; i < len; i++) {
|
||||||
|
printf("%02X", bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</SessionID>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso1_xml(struct iso1EXIDocument *doc) {
|
||||||
|
if (!doc->V2G_Message_isUsed) return;
|
||||||
|
|
||||||
|
print_xml_header();
|
||||||
|
|
||||||
|
// Header
|
||||||
|
printf(" <Header>\n");
|
||||||
|
print_session_id_xml(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Header.Notification_isUsed) {
|
||||||
|
printf(" <Notification>\n");
|
||||||
|
printf(" <FaultCode>%d</FaultCode>\n", doc->V2G_Message.Header.Notification.FaultCode);
|
||||||
|
printf(" <FaultMsg>%s</FaultMsg>\n", doc->V2G_Message.Header.Notification.FaultMsg.characters);
|
||||||
|
printf(" </Notification>\n");
|
||||||
|
}
|
||||||
|
printf(" </Header>\n");
|
||||||
|
|
||||||
|
// Body
|
||||||
|
printf(" <Body>\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes_isUsed) {
|
||||||
|
printf(" <CurrentDemandRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.CurrentDemandRes.ResponseCode);
|
||||||
|
printf(" <DC_EVSEStatus>\n");
|
||||||
|
printf(" <EVSENotification>%d</EVSENotification>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSENotification);
|
||||||
|
printf(" <NotificationMaxDelay>%d</NotificationMaxDelay>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.NotificationMaxDelay);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed) {
|
||||||
|
printf(" <EVSEIsolationStatus>%d</EVSEIsolationStatus>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus);
|
||||||
|
}
|
||||||
|
printf(" <EVSEStatusCode>%d</EVSEStatusCode>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEStatusCode);
|
||||||
|
printf(" </DC_EVSEStatus>\n");
|
||||||
|
printf(" <EVSEPresentVoltage>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Value);
|
||||||
|
printf(" </EVSEPresentVoltage>\n");
|
||||||
|
printf(" <EVSEPresentCurrent>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Value);
|
||||||
|
printf(" </EVSEPresentCurrent>\n");
|
||||||
|
printf(" <EVSECurrentLimitAchieved>%s</EVSECurrentLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSECurrentLimitAchieved ? "true" : "false");
|
||||||
|
printf(" <EVSEVoltageLimitAchieved>%s</EVSEVoltageLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEVoltageLimitAchieved ? "true" : "false");
|
||||||
|
printf(" <EVSEPowerLimitAchieved>%s</EVSEPowerLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPowerLimitAchieved ? "true" : "false");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumVoltageLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Value);
|
||||||
|
printf(" </EVSEMaximumVoltageLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumCurrentLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Value);
|
||||||
|
printf(" </EVSEMaximumCurrentLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumPowerLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Value);
|
||||||
|
printf(" </EVSEMaximumPowerLimit>\n");
|
||||||
|
}
|
||||||
|
printf(" <EVSEID>%.*s</EVSEID>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.characters);
|
||||||
|
printf(" <SAScheduleTupleID>%d</SAScheduleTupleID>\n", doc->V2G_Message.Body.CurrentDemandRes.SAScheduleTupleID);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo_isUsed) {
|
||||||
|
printf(" <MeterInfo>\n");
|
||||||
|
printf(" <MeterID>%.*s</MeterID>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.characters);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading_isUsed) {
|
||||||
|
printf(" <MeterReading>%llu</MeterReading>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading_isUsed) {
|
||||||
|
printf(" <SigMeterReading>");
|
||||||
|
for(int i = 0; i < doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</SigMeterReading>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus_isUsed) {
|
||||||
|
printf(" <MeterStatus>%d</MeterStatus>\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter_isUsed) {
|
||||||
|
printf(" <TMeter>%lld</TMeter>\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter);
|
||||||
|
}
|
||||||
|
printf(" </MeterInfo>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired_isUsed) {
|
||||||
|
printf(" <ReceiptRequired>%s</ReceiptRequired>\n", doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired ? "true" : "false");
|
||||||
|
}
|
||||||
|
printf(" </CurrentDemandRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CurrentDemandReq_isUsed) {
|
||||||
|
printf(" <CurrentDemandReq>\n");
|
||||||
|
printf(" <DC_EVStatus>\n");
|
||||||
|
printf(" <EVReady>%s</EVReady>\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVReady ? "true" : "false");
|
||||||
|
printf(" <EVErrorCode>%d</EVErrorCode>\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVErrorCode);
|
||||||
|
printf(" <EVRESSSOC>%d</EVRESSSOC>\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVRESSSOC);
|
||||||
|
printf(" </DC_EVStatus>\n");
|
||||||
|
printf(" <EVTargetCurrent>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Value);
|
||||||
|
printf(" </EVTargetCurrent>\n");
|
||||||
|
printf(" <EVTargetVoltage>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Value);
|
||||||
|
printf(" </EVTargetVoltage>\n");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumVoltageLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Value);
|
||||||
|
printf(" </EVMaximumVoltageLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumCurrentLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Value);
|
||||||
|
printf(" </EVMaximumCurrentLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumPowerLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Value);
|
||||||
|
printf(" </EVMaximumPowerLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.BulkChargingComplete_isUsed) {
|
||||||
|
printf(" <BulkChargingComplete>%s</BulkChargingComplete>\n", doc->V2G_Message.Body.CurrentDemandReq.BulkChargingComplete ? "true" : "false");
|
||||||
|
}
|
||||||
|
printf(" <ChargingComplete>%s</ChargingComplete>\n", doc->V2G_Message.Body.CurrentDemandReq.ChargingComplete ? "true" : "false");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC_isUsed) {
|
||||||
|
printf(" <RemainingTimeToFullSoC>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Value);
|
||||||
|
printf(" </RemainingTimeToFullSoC>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC_isUsed) {
|
||||||
|
printf(" <RemainingTimeToBulkSoC>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Value);
|
||||||
|
printf(" </RemainingTimeToBulkSoC>\n");
|
||||||
|
}
|
||||||
|
printf(" </CurrentDemandReq>\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf(" <!-- Other message types not implemented in XML mode -->\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" </Body>\n");
|
||||||
|
print_xml_footer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso1_message(struct iso1EXIDocument *doc) {
|
||||||
|
printf("=== ISO1 V2G Message ===\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message_isUsed) {
|
||||||
|
// Print Header
|
||||||
|
printf("Header:\n");
|
||||||
|
print_session_id(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Header.Notification_isUsed) {
|
||||||
|
printf(" Notification: FaultCode=%d, FaultMsg=%s\n",
|
||||||
|
doc->V2G_Message.Header.Notification.FaultCode,
|
||||||
|
doc->V2G_Message.Header.Notification.FaultMsg.characters);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\nBody:\n");
|
||||||
|
|
||||||
|
// Check all possible message types
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq_isUsed) {
|
||||||
|
printf(" Message Type: SessionSetupReq\n");
|
||||||
|
printf(" EVCCID: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
}
|
||||||
|
printf(" (");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i] >= 32 &&
|
||||||
|
doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i] <= 126) {
|
||||||
|
printf("%c", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
} else {
|
||||||
|
printf(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(")\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionSetupRes_isUsed) {
|
||||||
|
printf(" Message Type: SessionSetupRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.SessionSetupRes.ResponseCode);
|
||||||
|
printf(" EVSEID: %s\n", doc->V2G_Message.Body.SessionSetupRes.EVSEID.characters);
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp_isUsed) {
|
||||||
|
printf(" EVSETimeStamp: %ld\n", doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDiscoveryReq_isUsed) {
|
||||||
|
printf(" Message Type: ServiceDiscoveryReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDiscoveryRes_isUsed) {
|
||||||
|
printf(" Message Type: ServiceDiscoveryRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.ServiceDiscoveryRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDetailReq_isUsed) {
|
||||||
|
printf(" Message Type: ServiceDetailReq\n");
|
||||||
|
printf(" ServiceID: %d\n", doc->V2G_Message.Body.ServiceDetailReq.ServiceID);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDetailRes_isUsed) {
|
||||||
|
printf(" Message Type: ServiceDetailRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.ServiceDetailRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PaymentServiceSelectionReq_isUsed) {
|
||||||
|
printf(" Message Type: PaymentServiceSelectionReq\n");
|
||||||
|
printf(" SelectedPaymentOption: %d\n", doc->V2G_Message.Body.PaymentServiceSelectionReq.SelectedPaymentOption);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PaymentServiceSelectionRes_isUsed) {
|
||||||
|
printf(" Message Type: PaymentServiceSelectionRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.PaymentServiceSelectionRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.AuthorizationReq_isUsed) {
|
||||||
|
printf(" Message Type: AuthorizationReq\n");
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.Id_isUsed) {
|
||||||
|
printf(" ID: %s\n", doc->V2G_Message.Body.AuthorizationReq.Id.characters);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.GenChallenge_isUsed) {
|
||||||
|
printf(" GenChallenge: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.AuthorizationRes_isUsed) {
|
||||||
|
printf(" Message Type: AuthorizationRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.AuthorizationRes.ResponseCode);
|
||||||
|
printf(" EVSEProcessing: %d\n", doc->V2G_Message.Body.AuthorizationRes.EVSEProcessing);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ChargeParameterDiscoveryReq_isUsed) {
|
||||||
|
printf(" Message Type: ChargeParameterDiscoveryReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ChargeParameterDiscoveryRes_isUsed) {
|
||||||
|
printf(" Message Type: ChargeParameterDiscoveryRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.ChargeParameterDiscoveryRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CableCheckReq_isUsed) {
|
||||||
|
printf(" Message Type: CableCheckReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CableCheckRes_isUsed) {
|
||||||
|
printf(" Message Type: CableCheckRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.CableCheckRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PreChargeReq_isUsed) {
|
||||||
|
printf(" Message Type: PreChargeReq\n");
|
||||||
|
printf(" EVTargetVoltage: %d\n", doc->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Value);
|
||||||
|
printf(" EVTargetCurrent: %d\n", doc->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Value);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PreChargeRes_isUsed) {
|
||||||
|
printf(" Message Type: PreChargeRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.PreChargeRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PowerDeliveryReq_isUsed) {
|
||||||
|
printf(" Message Type: PowerDeliveryReq\n");
|
||||||
|
printf(" ChargeProgress: %d\n", doc->V2G_Message.Body.PowerDeliveryReq.ChargeProgress);
|
||||||
|
printf(" SAScheduleTupleID: %d\n", doc->V2G_Message.Body.PowerDeliveryReq.SAScheduleTupleID);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PowerDeliveryRes_isUsed) {
|
||||||
|
printf(" Message Type: PowerDeliveryRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.PowerDeliveryRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ChargingStatusReq_isUsed) {
|
||||||
|
printf(" Message Type: ChargingStatusReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ChargingStatusRes_isUsed) {
|
||||||
|
printf(" Message Type: ChargingStatusRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.ChargingStatusRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.MeteringReceiptReq_isUsed) {
|
||||||
|
printf(" Message Type: MeteringReceiptReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.MeteringReceiptRes_isUsed) {
|
||||||
|
printf(" Message Type: MeteringReceiptRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.MeteringReceiptRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionStopReq_isUsed) {
|
||||||
|
printf(" Message Type: SessionStopReq\n");
|
||||||
|
printf(" ChargingSession: %d\n", doc->V2G_Message.Body.SessionStopReq.ChargingSession);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionStopRes_isUsed) {
|
||||||
|
printf(" Message Type: SessionStopRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.SessionStopRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CurrentDemandReq_isUsed) {
|
||||||
|
printf(" Message Type: CurrentDemandReq\n");
|
||||||
|
printf(" DC_EVStatus:\n");
|
||||||
|
printf(" EVReady: %s\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVReady ? "true" : "false");
|
||||||
|
printf(" EVErrorCode: %d\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVErrorCode);
|
||||||
|
printf(" EVRESSSOC: %d%%\n", doc->V2G_Message.Body.CurrentDemandReq.DC_EVStatus.EVRESSSOC);
|
||||||
|
printf(" EVTargetCurrent: %d A (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Unit);
|
||||||
|
printf(" EVTargetVoltage: %d V (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Unit);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" EVMaximumVoltageLimit: %d V (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" EVMaximumCurrentLimit: %d A (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" EVMaximumPowerLimit: %d W (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.BulkChargingComplete_isUsed) {
|
||||||
|
printf(" BulkChargingComplete: %s\n", doc->V2G_Message.Body.CurrentDemandReq.BulkChargingComplete ? "true" : "false");
|
||||||
|
}
|
||||||
|
printf(" ChargingComplete: %s\n", doc->V2G_Message.Body.CurrentDemandReq.ChargingComplete ? "true" : "false");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC_isUsed) {
|
||||||
|
printf(" RemainingTimeToFullSoC: %d s (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToFullSoC.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC_isUsed) {
|
||||||
|
printf(" RemainingTimeToBulkSoC: %d s (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandReq.RemainingTimeToBulkSoC.Unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CurrentDemandRes_isUsed) {
|
||||||
|
printf(" Message Type: CurrentDemandRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.CurrentDemandRes.ResponseCode);
|
||||||
|
printf(" DC_EVSEStatus:\n");
|
||||||
|
printf(" EVSENotification: %d\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSENotification);
|
||||||
|
printf(" NotificationMaxDelay: %d\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.NotificationMaxDelay);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed) {
|
||||||
|
printf(" EVSEIsolationStatus: %d\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus);
|
||||||
|
}
|
||||||
|
printf(" EVSEStatusCode: %d\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEStatusCode);
|
||||||
|
printf(" EVSEPresentVoltage: %d V (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Unit);
|
||||||
|
printf(" EVSEPresentCurrent: %d A (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Unit);
|
||||||
|
printf(" EVSECurrentLimitAchieved: %s\n", doc->V2G_Message.Body.CurrentDemandRes.EVSECurrentLimitAchieved ? "true" : "false");
|
||||||
|
printf(" EVSEVoltageLimitAchieved: %s\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEVoltageLimitAchieved ? "true" : "false");
|
||||||
|
printf(" EVSEPowerLimitAchieved: %s\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPowerLimitAchieved ? "true" : "false");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" EVSEMaximumVoltageLimit: %d V (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" EVSEMaximumCurrentLimit: %d A (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Unit);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" EVSEMaximumPowerLimit: %d W (Multiplier: %d, Unit: %d)\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Value,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Multiplier,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Unit);
|
||||||
|
}
|
||||||
|
printf(" EVSEID: %.*s\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.characters);
|
||||||
|
printf(" SAScheduleTupleID: %d\n", doc->V2G_Message.Body.CurrentDemandRes.SAScheduleTupleID);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo_isUsed) {
|
||||||
|
printf(" MeterInfo:\n");
|
||||||
|
printf(" MeterID: %.*s\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.characters);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading_isUsed) {
|
||||||
|
printf(" MeterReading: %llu Wh\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading_isUsed) {
|
||||||
|
printf(" SigMeterReading: ");
|
||||||
|
for(int i = 0; i < doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus_isUsed) {
|
||||||
|
printf(" MeterStatus: %d\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter_isUsed) {
|
||||||
|
printf(" TMeter: %lld\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired_isUsed) {
|
||||||
|
printf(" ReceiptRequired: %s\n", doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired ? "true" : "false");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.WeldingDetectionReq_isUsed) {
|
||||||
|
printf(" Message Type: WeldingDetectionReq\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.WeldingDetectionRes_isUsed) {
|
||||||
|
printf(" Message Type: WeldingDetectionRes\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.WeldingDetectionRes.ResponseCode);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf(" Message Type: Unknown or unhandled message type\n");
|
||||||
|
printf(" Debug: Checking which flags are set...\n");
|
||||||
|
// Debug output to see which flags might be set
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso2_message(struct iso2EXIDocument *doc) {
|
||||||
|
printf("=== ISO2 V2G Message ===\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message_isUsed) {
|
||||||
|
printf("Header:\n");
|
||||||
|
print_session_id(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
printf("\nBody:\n");
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq_isUsed) {
|
||||||
|
printf(" Message Type: SessionSetupReq\n");
|
||||||
|
printf(" EVCCID: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
}
|
||||||
|
printf(" (");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i] >= 32 &&
|
||||||
|
doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i] <= 126) {
|
||||||
|
printf("%c", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
} else {
|
||||||
|
printf(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(")\n");
|
||||||
|
}
|
||||||
|
// Add more ISO2 message types as needed
|
||||||
|
else {
|
||||||
|
printf(" Message Type: Other ISO2 message (not fully implemented)\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
int xml_mode = 0;
|
||||||
|
char *filename = NULL;
|
||||||
|
|
||||||
|
if (argc == 2) {
|
||||||
|
filename = argv[1];
|
||||||
|
} else if (argc == 3 && strcmp(argv[1], "-decode") == 0) {
|
||||||
|
xml_mode = 1;
|
||||||
|
filename = argv[2];
|
||||||
|
} else {
|
||||||
|
printf("Usage: %s [-decode] input.exi\n", argv[0]);
|
||||||
|
printf("Enhanced EXI viewer with detailed message parsing\n");
|
||||||
|
printf(" -decode Output in XML format\n");
|
||||||
|
printf(" (default) Output detailed analysis\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t buffer[BUFFER_SIZE];
|
||||||
|
bitstream_t stream;
|
||||||
|
size_t pos = 0;
|
||||||
|
int errn = 0;
|
||||||
|
|
||||||
|
struct iso1EXIDocument iso1Doc;
|
||||||
|
struct iso2EXIDocument iso2Doc;
|
||||||
|
struct dinEXIDocument dinDoc;
|
||||||
|
|
||||||
|
// Initialize documents
|
||||||
|
init_iso1EXIDocument(&iso1Doc);
|
||||||
|
init_iso2EXIDocument(&iso2Doc);
|
||||||
|
init_dinEXIDocument(&dinDoc);
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
errn = readBytesFromFile(filename, buffer, BUFFER_SIZE, &pos);
|
||||||
|
if (errn != 0) {
|
||||||
|
printf("Error reading file: %s\n", filename);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!xml_mode) {
|
||||||
|
printf("File: %s (%zu bytes)\n", filename, pos);
|
||||||
|
printf("Raw hex data: ");
|
||||||
|
for(size_t i = 0; i < (pos > 32 ? 32 : pos); i++) {
|
||||||
|
printf("%02X ", buffer[i]);
|
||||||
|
}
|
||||||
|
if (pos > 32) printf("...");
|
||||||
|
printf("\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup stream
|
||||||
|
pos = 0; // reset position for decoding
|
||||||
|
stream.size = BUFFER_SIZE;
|
||||||
|
stream.data = buffer;
|
||||||
|
stream.pos = &pos;
|
||||||
|
stream.buffer = 0;
|
||||||
|
stream.capacity = 0;
|
||||||
|
|
||||||
|
// Try ISO1 first
|
||||||
|
pos = 0;
|
||||||
|
if (!xml_mode) printf("Trying ISO1 decoder...\n");
|
||||||
|
errn = decode_iso1ExiDocument(&stream, &iso1Doc);
|
||||||
|
if (errn == 0) {
|
||||||
|
if (!xml_mode) printf("✓ Successfully decoded as ISO1\n\n");
|
||||||
|
if (xml_mode) {
|
||||||
|
print_iso1_xml(&iso1Doc);
|
||||||
|
} else {
|
||||||
|
print_iso1_message(&iso1Doc);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
if (!xml_mode) printf("✗ ISO1 decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try ISO2
|
||||||
|
pos = 0;
|
||||||
|
if (!xml_mode) printf("Trying ISO2 decoder...\n");
|
||||||
|
errn = decode_iso2ExiDocument(&stream, &iso2Doc);
|
||||||
|
if (errn == 0) {
|
||||||
|
if (!xml_mode) printf("✓ Successfully decoded as ISO2\n\n");
|
||||||
|
print_iso2_message(&iso2Doc);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
if (!xml_mode) printf("✗ ISO2 decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try DIN
|
||||||
|
pos = 0;
|
||||||
|
if (!xml_mode) printf("Trying DIN decoder...\n");
|
||||||
|
errn = decode_dinExiDocument(&stream, &dinDoc);
|
||||||
|
if (errn == 0) {
|
||||||
|
if (!xml_mode) {
|
||||||
|
printf("✓ Successfully decoded as DIN\n\n");
|
||||||
|
printf("=== DIN V2G Message ===\n");
|
||||||
|
// Add DIN message printing as needed
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
if (!xml_mode) printf("✗ DIN decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!xml_mode) {
|
||||||
|
printf("\n❌ Could not decode EXI file with any supported codec\n");
|
||||||
|
printf("Supported formats: ISO1, ISO2, DIN\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
BIN
enhanced_exi_viewer.exe
Normal file
BIN
enhanced_exi_viewer.exe
Normal file
Binary file not shown.
297
exi_to_xml.c
Normal file
297
exi_to_xml.c
Normal file
@@ -0,0 +1,297 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* EXI codec headers */
|
||||||
|
#include "iso1EXIDatatypes.h"
|
||||||
|
#include "iso1EXIDatatypesDecoder.h"
|
||||||
|
#include "ByteStream.h"
|
||||||
|
|
||||||
|
#define BUFFER_SIZE 4096
|
||||||
|
|
||||||
|
void print_xml_header() {
|
||||||
|
printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||||
|
printf("<V2G_Message xmlns=\"urn:iso:15118:2:2013:MsgDef\"\n");
|
||||||
|
printf(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_xml_footer() {
|
||||||
|
printf("</V2G_Message>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_session_id_xml(uint8_t *bytes, size_t len) {
|
||||||
|
printf(" <SessionID>");
|
||||||
|
for(size_t i = 0; i < len; i++) {
|
||||||
|
printf("%02X", bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</SessionID>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso1_xml(struct iso1EXIDocument *doc) {
|
||||||
|
if (!doc->V2G_Message_isUsed) return;
|
||||||
|
|
||||||
|
print_xml_header();
|
||||||
|
|
||||||
|
// Header
|
||||||
|
printf(" <Header>\n");
|
||||||
|
print_session_id_xml(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Header.Notification_isUsed) {
|
||||||
|
printf(" <Notification>\n");
|
||||||
|
printf(" <FaultCode>%d</FaultCode>\n", doc->V2G_Message.Header.Notification.FaultCode);
|
||||||
|
printf(" <FaultMsg>%s</FaultMsg>\n", doc->V2G_Message.Header.Notification.FaultMsg.characters);
|
||||||
|
printf(" </Notification>\n");
|
||||||
|
}
|
||||||
|
printf(" </Header>\n");
|
||||||
|
|
||||||
|
// Body
|
||||||
|
printf(" <Body>\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq_isUsed) {
|
||||||
|
printf(" <SessionSetupReq>\n");
|
||||||
|
printf(" <EVCCID>");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</EVCCID>\n");
|
||||||
|
printf(" </SessionSetupReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionSetupRes_isUsed) {
|
||||||
|
printf(" <SessionSetupRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.SessionSetupRes.ResponseCode);
|
||||||
|
printf(" <EVSEID>%s</EVSEID>\n", doc->V2G_Message.Body.SessionSetupRes.EVSEID.characters);
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp_isUsed) {
|
||||||
|
printf(" <EVSETimeStamp>%ld</EVSETimeStamp>\n", doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp);
|
||||||
|
}
|
||||||
|
printf(" </SessionSetupRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDiscoveryReq_isUsed) {
|
||||||
|
printf(" <ServiceDiscoveryReq/>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.ServiceDiscoveryRes_isUsed) {
|
||||||
|
printf(" <ServiceDiscoveryRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.ServiceDiscoveryRes.ResponseCode);
|
||||||
|
printf(" </ServiceDiscoveryRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.AuthorizationReq_isUsed) {
|
||||||
|
printf(" <AuthorizationReq>\n");
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.Id_isUsed) {
|
||||||
|
printf(" <Id>%s</Id>\n", doc->V2G_Message.Body.AuthorizationReq.Id.characters);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.GenChallenge_isUsed) {
|
||||||
|
printf(" <GenChallenge>");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</GenChallenge>\n");
|
||||||
|
}
|
||||||
|
printf(" </AuthorizationReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.AuthorizationRes_isUsed) {
|
||||||
|
printf(" <AuthorizationRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.AuthorizationRes.ResponseCode);
|
||||||
|
printf(" <EVSEProcessing>%d</EVSEProcessing>\n", doc->V2G_Message.Body.AuthorizationRes.EVSEProcessing);
|
||||||
|
printf(" </AuthorizationRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PreChargeReq_isUsed) {
|
||||||
|
printf(" <PreChargeReq>\n");
|
||||||
|
printf(" <EVTargetVoltage>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetVoltage.Value);
|
||||||
|
printf(" </EVTargetVoltage>\n");
|
||||||
|
printf(" <EVTargetCurrent>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.PreChargeReq.EVTargetCurrent.Value);
|
||||||
|
printf(" </EVTargetCurrent>\n");
|
||||||
|
printf(" </PreChargeReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PreChargeRes_isUsed) {
|
||||||
|
printf(" <PreChargeRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.PreChargeRes.ResponseCode);
|
||||||
|
printf(" </PreChargeRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PowerDeliveryReq_isUsed) {
|
||||||
|
printf(" <PowerDeliveryReq>\n");
|
||||||
|
printf(" <ChargeProgress>%d</ChargeProgress>\n", doc->V2G_Message.Body.PowerDeliveryReq.ChargeProgress);
|
||||||
|
printf(" <SAScheduleTupleID>%d</SAScheduleTupleID>\n", doc->V2G_Message.Body.PowerDeliveryReq.SAScheduleTupleID);
|
||||||
|
printf(" </PowerDeliveryReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.PowerDeliveryRes_isUsed) {
|
||||||
|
printf(" <PowerDeliveryRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.PowerDeliveryRes.ResponseCode);
|
||||||
|
printf(" </PowerDeliveryRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CurrentDemandReq_isUsed) {
|
||||||
|
printf(" <CurrentDemandReq>\n");
|
||||||
|
printf(" <EVTargetCurrent>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetCurrent.Value);
|
||||||
|
printf(" </EVTargetCurrent>\n");
|
||||||
|
printf(" <EVTargetVoltage>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVTargetVoltage.Value);
|
||||||
|
printf(" </EVTargetVoltage>\n");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumVoltageLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumVoltageLimit.Value);
|
||||||
|
printf(" </EVMaximumVoltageLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumCurrentLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumCurrentLimit.Value);
|
||||||
|
printf(" </EVMaximumCurrentLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" <EVMaximumPowerLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandReq.EVMaximumPowerLimit.Value);
|
||||||
|
printf(" </EVMaximumPowerLimit>\n");
|
||||||
|
}
|
||||||
|
printf(" </CurrentDemandReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.CurrentDemandRes_isUsed) {
|
||||||
|
printf(" <CurrentDemandRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.CurrentDemandRes.ResponseCode);
|
||||||
|
printf(" <DC_EVSEStatus>\n");
|
||||||
|
printf(" <EVSENotification>%d</EVSENotification>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSENotification);
|
||||||
|
printf(" <NotificationMaxDelay>%d</NotificationMaxDelay>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.NotificationMaxDelay);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus_isUsed) {
|
||||||
|
printf(" <EVSEIsolationStatus>%d</EVSEIsolationStatus>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEIsolationStatus);
|
||||||
|
}
|
||||||
|
printf(" <EVSEStatusCode>%d</EVSEStatusCode>\n", doc->V2G_Message.Body.CurrentDemandRes.DC_EVSEStatus.EVSEStatusCode);
|
||||||
|
printf(" </DC_EVSEStatus>\n");
|
||||||
|
printf(" <EVSEPresentVoltage>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentVoltage.Value);
|
||||||
|
printf(" </EVSEPresentVoltage>\n");
|
||||||
|
printf(" <EVSEPresentCurrent>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPresentCurrent.Value);
|
||||||
|
printf(" </EVSEPresentCurrent>\n");
|
||||||
|
printf(" <EVSECurrentLimitAchieved>%s</EVSECurrentLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSECurrentLimitAchieved ? "true" : "false");
|
||||||
|
printf(" <EVSEVoltageLimitAchieved>%s</EVSEVoltageLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEVoltageLimitAchieved ? "true" : "false");
|
||||||
|
printf(" <EVSEPowerLimitAchieved>%s</EVSEPowerLimitAchieved>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEPowerLimitAchieved ? "true" : "false");
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumVoltageLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumVoltageLimit.Value);
|
||||||
|
printf(" </EVSEMaximumVoltageLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumCurrentLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumCurrentLimit.Value);
|
||||||
|
printf(" </EVSEMaximumCurrentLimit>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit_isUsed) {
|
||||||
|
printf(" <EVSEMaximumPowerLimit>\n");
|
||||||
|
printf(" <Multiplier>%d</Multiplier>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Multiplier);
|
||||||
|
printf(" <Unit>%d</Unit>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Unit);
|
||||||
|
printf(" <Value>%d</Value>\n", doc->V2G_Message.Body.CurrentDemandRes.EVSEMaximumPowerLimit.Value);
|
||||||
|
printf(" </EVSEMaximumPowerLimit>\n");
|
||||||
|
}
|
||||||
|
printf(" <EVSEID>%.*s</EVSEID>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.EVSEID.characters);
|
||||||
|
printf(" <SAScheduleTupleID>%d</SAScheduleTupleID>\n", doc->V2G_Message.Body.CurrentDemandRes.SAScheduleTupleID);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo_isUsed) {
|
||||||
|
printf(" <MeterInfo>\n");
|
||||||
|
printf(" <MeterID>%.*s</MeterID>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.charactersLen,
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterID.characters);
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading_isUsed) {
|
||||||
|
printf(" <MeterReading>%llu</MeterReading>\n",
|
||||||
|
doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterReading);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading_isUsed) {
|
||||||
|
printf(" <SigMeterReading>");
|
||||||
|
for(int i = 0; i < doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.SigMeterReading.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("</SigMeterReading>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus_isUsed) {
|
||||||
|
printf(" <MeterStatus>%d</MeterStatus>\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.MeterStatus);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter_isUsed) {
|
||||||
|
printf(" <TMeter>%lld</TMeter>\n", doc->V2G_Message.Body.CurrentDemandRes.MeterInfo.TMeter);
|
||||||
|
}
|
||||||
|
printf(" </MeterInfo>\n");
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired_isUsed) {
|
||||||
|
printf(" <ReceiptRequired>%s</ReceiptRequired>\n", doc->V2G_Message.Body.CurrentDemandRes.ReceiptRequired ? "true" : "false");
|
||||||
|
}
|
||||||
|
printf(" </CurrentDemandRes>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionStopReq_isUsed) {
|
||||||
|
printf(" <SessionStopReq>\n");
|
||||||
|
printf(" <ChargingSession>%d</ChargingSession>\n", doc->V2G_Message.Body.SessionStopReq.ChargingSession);
|
||||||
|
printf(" </SessionStopReq>\n");
|
||||||
|
}
|
||||||
|
else if (doc->V2G_Message.Body.SessionStopRes_isUsed) {
|
||||||
|
printf(" <SessionStopRes>\n");
|
||||||
|
printf(" <ResponseCode>%d</ResponseCode>\n", doc->V2G_Message.Body.SessionStopRes.ResponseCode);
|
||||||
|
printf(" </SessionStopRes>\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf(" <!-- Unknown message type -->\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" </Body>\n");
|
||||||
|
print_xml_footer();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
printf("Usage: %s input.exi\n", argv[0]);
|
||||||
|
printf("Converts EXI files to XML format\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t buffer[BUFFER_SIZE];
|
||||||
|
bitstream_t stream;
|
||||||
|
size_t pos = 0;
|
||||||
|
int errn = 0;
|
||||||
|
|
||||||
|
struct iso1EXIDocument iso1Doc;
|
||||||
|
init_iso1EXIDocument(&iso1Doc);
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
errn = readBytesFromFile(argv[1], buffer, BUFFER_SIZE, &pos);
|
||||||
|
if (errn != 0) {
|
||||||
|
fprintf(stderr, "Error reading file: %s\n", argv[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup stream
|
||||||
|
pos = 0; // reset position for decoding
|
||||||
|
stream.size = BUFFER_SIZE;
|
||||||
|
stream.data = buffer;
|
||||||
|
stream.pos = &pos;
|
||||||
|
stream.buffer = 0;
|
||||||
|
stream.capacity = 0;
|
||||||
|
|
||||||
|
// Try ISO1 decoder
|
||||||
|
errn = decode_iso1ExiDocument(&stream, &iso1Doc);
|
||||||
|
if (errn == 0) {
|
||||||
|
print_iso1_xml(&iso1Doc);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Error: Could not decode EXI file (error: %d)\n", errn);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
exi_to_xml.exe
Normal file
BIN
exi_to_xml.exe
Normal file
Binary file not shown.
197
exi_viewer.c
Normal file
197
exi_viewer.c
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* EXI codec headers */
|
||||||
|
#include "iso1EXIDatatypes.h"
|
||||||
|
#include "iso1EXIDatatypesDecoder.h"
|
||||||
|
#include "iso2EXIDatatypes.h"
|
||||||
|
#include "iso2EXIDatatypesDecoder.h"
|
||||||
|
#include "dinEXIDatatypes.h"
|
||||||
|
#include "dinEXIDatatypesDecoder.h"
|
||||||
|
#include "ByteStream.h"
|
||||||
|
|
||||||
|
#define BUFFER_SIZE 4096
|
||||||
|
|
||||||
|
void print_session_id(uint8_t *bytes, size_t len) {
|
||||||
|
printf("SessionID: ");
|
||||||
|
for(size_t i = 0; i < len; i++) {
|
||||||
|
printf("%02X", bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso1_message(struct iso1EXIDocument *doc) {
|
||||||
|
printf("=== ISO1 V2G Message ===\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message_isUsed) {
|
||||||
|
// Print Header
|
||||||
|
printf("Header:\n");
|
||||||
|
print_session_id(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Header.Notification_isUsed) {
|
||||||
|
printf("Notification: FaultCode=%d, FaultMsg=%s\n",
|
||||||
|
doc->V2G_Message.Header.Notification.FaultCode,
|
||||||
|
doc->V2G_Message.Header.Notification.FaultMsg.characters);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print Body
|
||||||
|
printf("Body:\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq_isUsed) {
|
||||||
|
printf(" SessionSetupReq:\n");
|
||||||
|
printf(" EVCCID: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
printf("%c", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupRes_isUsed) {
|
||||||
|
printf(" SessionSetupRes:\n");
|
||||||
|
printf(" ResponseCode: %d\n", doc->V2G_Message.Body.SessionSetupRes.ResponseCode);
|
||||||
|
printf(" EVSEID: %s\n", doc->V2G_Message.Body.SessionSetupRes.EVSEID.characters);
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp_isUsed) {
|
||||||
|
printf(" EVSETimeStamp: %ld\n", doc->V2G_Message.Body.SessionSetupRes.EVSETimeStamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.ServiceDiscoveryReq_isUsed) {
|
||||||
|
printf(" ServiceDiscoveryReq:\n");
|
||||||
|
printf(" Service discovery request detected\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq_isUsed) {
|
||||||
|
printf(" AuthorizationReq:\n");
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.Id_isUsed) {
|
||||||
|
printf(" ID: %s\n", doc->V2G_Message.Body.AuthorizationReq.Id.characters);
|
||||||
|
}
|
||||||
|
if (doc->V2G_Message.Body.AuthorizationReq.GenChallenge_isUsed) {
|
||||||
|
printf(" GenChallenge: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytesLen; i++) {
|
||||||
|
printf("%02X", doc->V2G_Message.Body.AuthorizationReq.GenChallenge.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.PowerDeliveryReq_isUsed) {
|
||||||
|
printf(" PowerDeliveryReq:\n");
|
||||||
|
printf(" ChargeProgress: %d\n", doc->V2G_Message.Body.PowerDeliveryReq.ChargeProgress);
|
||||||
|
printf(" SAScheduleTupleID: %d\n", doc->V2G_Message.Body.PowerDeliveryReq.SAScheduleTupleID);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc->V2G_Message.Body.SessionStopReq_isUsed) {
|
||||||
|
printf(" SessionStopReq:\n");
|
||||||
|
printf(" ChargingSession: %d\n", doc->V2G_Message.Body.SessionStopReq.ChargingSession);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add more message types as needed
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_iso2_message(struct iso2EXIDocument *doc) {
|
||||||
|
printf("=== ISO2 V2G Message ===\n");
|
||||||
|
|
||||||
|
if (doc->V2G_Message_isUsed) {
|
||||||
|
printf("Header:\n");
|
||||||
|
print_session_id(doc->V2G_Message.Header.SessionID.bytes,
|
||||||
|
doc->V2G_Message.Header.SessionID.bytesLen);
|
||||||
|
|
||||||
|
printf("Body:\n");
|
||||||
|
if (doc->V2G_Message.Body.SessionSetupReq_isUsed) {
|
||||||
|
printf(" SessionSetupReq:\n");
|
||||||
|
printf(" EVCCID: ");
|
||||||
|
for(size_t i = 0; i < doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytesLen; i++) {
|
||||||
|
printf("%c", doc->V2G_Message.Body.SessionSetupReq.EVCCID.bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
// Add more ISO2-specific message types as needed
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
printf("Usage: %s input.exi\n", argv[0]);
|
||||||
|
printf("This tool decodes and displays the content of EXI files\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t buffer[BUFFER_SIZE];
|
||||||
|
bitstream_t stream;
|
||||||
|
size_t pos = 0;
|
||||||
|
int errn = 0;
|
||||||
|
|
||||||
|
struct iso1EXIDocument iso1Doc;
|
||||||
|
struct iso2EXIDocument iso2Doc;
|
||||||
|
struct dinEXIDocument dinDoc;
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
errn = readBytesFromFile(argv[1], buffer, BUFFER_SIZE, &pos);
|
||||||
|
if (errn != 0) {
|
||||||
|
printf("Error reading file: %s\n", argv[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("File: %s (%zu bytes)\n", argv[1], pos);
|
||||||
|
printf("Raw hex data: ");
|
||||||
|
for(size_t i = 0; i < (pos > 32 ? 32 : pos); i++) {
|
||||||
|
printf("%02X ", buffer[i]);
|
||||||
|
}
|
||||||
|
if (pos > 32) printf("...");
|
||||||
|
printf("\n\n");
|
||||||
|
|
||||||
|
// Setup stream
|
||||||
|
pos = 0; // reset position for decoding
|
||||||
|
stream.size = BUFFER_SIZE;
|
||||||
|
stream.data = buffer;
|
||||||
|
stream.pos = &pos;
|
||||||
|
stream.buffer = 0;
|
||||||
|
stream.capacity = 0;
|
||||||
|
|
||||||
|
// Try ISO1 first
|
||||||
|
pos = 0;
|
||||||
|
printf("Trying ISO1 decoder...\n");
|
||||||
|
errn = decode_iso1ExiDocument(&stream, &iso1Doc);
|
||||||
|
if (errn == 0) {
|
||||||
|
printf("✓ Successfully decoded as ISO1\n");
|
||||||
|
print_iso1_message(&iso1Doc);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
printf("✗ ISO1 decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try ISO2
|
||||||
|
pos = 0;
|
||||||
|
printf("Trying ISO2 decoder...\n");
|
||||||
|
errn = decode_iso2ExiDocument(&stream, &iso2Doc);
|
||||||
|
if (errn == 0) {
|
||||||
|
printf("✓ Successfully decoded as ISO2\n");
|
||||||
|
print_iso2_message(&iso2Doc);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
printf("✗ ISO2 decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try DIN
|
||||||
|
pos = 0;
|
||||||
|
printf("Trying DIN decoder...\n");
|
||||||
|
errn = decode_dinExiDocument(&stream, &dinDoc);
|
||||||
|
if (errn == 0) {
|
||||||
|
printf("✓ Successfully decoded as DIN\n");
|
||||||
|
printf("=== DIN V2G Message ===\n");
|
||||||
|
// Add DIN message printing as needed
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
printf("✗ DIN decode failed (error: %d)\n", errn);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n❌ Could not decode EXI file with any supported codec\n");
|
||||||
|
printf("Supported formats: ISO1, ISO2, DIN\n");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
BIN
exi_viewer.exe
Normal file
BIN
exi_viewer.exe
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user