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