Quellcode durchsuchen

Tag release OpenV2G 0.7

sebastiankb vor 11 Jahren
Ursprung
Commit
303cdfa3fe
100 geänderte Dateien mit 9029 neuen und 8201 gelöschten Zeilen
  1. 21 43
      .cproject
  2. 1 13
      .project
  3. 2 2
      Debug/makefile
  4. 0 1
      Debug/objects.mk
  5. 1 1
      Debug/sources.mk
  6. 7 7
      Debug/src/appHandshake/subdir.mk
  7. 10 16
      Debug/src/codec/appHandCodec/subdir.mk
  8. 19 31
      Debug/src/codec/subdir.mk
  9. 4 4
      Debug/src/service/subdir.mk
  10. 4 1
      Debug/src/test/subdir.mk
  11. 1 1
      Debug/src/transport/subdir.mk
  12. 2 7
      README.txt
  13. 2 2
      Release/makefile
  14. 0 1
      Release/objects.mk
  15. 1 1
      Release/sources.mk
  16. 7 7
      Release/src/appHandshake/subdir.mk
  17. 10 16
      Release/src/codec/appHandCodec/subdir.mk
  18. 19 31
      Release/src/codec/subdir.mk
  19. 4 4
      Release/src/service/subdir.mk
  20. 4 1
      Release/src/test/subdir.mk
  21. 1 1
      Release/src/transport/subdir.mk
  22. 0 16
      data/sessionSetupReq.xml
  23. BIN
      data/sessionSetupReq.xml.exi
  24. 0 18
      data/sessionSetupRes.xml
  25. BIN
      data/sessionSetupRes.xml.exi
  26. 16 0
      data/test/sessionSetupReq.xml
  27. BIN
      data/test/sessionSetupReq.xml.exi
  28. 18 0
      data/test/sessionSetupRes.xml
  29. BIN
      data/test/sessionSetupRes.xml.exi
  30. 28 31
      src/appHandshake/appHand_DataDeserialization.c
  31. 39 48
      src/appHandshake/appHand_dataSerialization.c
  32. 34 21
      src/appHandshake/appHand_dataTypes.c
  33. 29 29
      src/appHandshake/appHand_dataTypes.h
  34. 80 87
      src/appHandshake/appHand_service.h
  35. 339 309
      src/codec/AbstractDecoderChannel.c
  36. 165 132
      src/codec/AbstractEncoderChannel.c
  37. 12 16
      src/codec/BitDecoderChannel.c
  38. 6 11
      src/codec/BitEncoderChannel.c
  39. 39 34
      src/codec/BitInputStream.c
  40. 2 5
      src/codec/BitInputStream.h
  41. 24 31
      src/codec/BitOutputStream.c
  42. 2 5
      src/codec/BitOutputStream.h
  43. 11 11
      src/codec/ByteDecoderChannel.c
  44. 21 37
      src/codec/ByteEncoderChannel.c
  45. 10 17
      src/codec/ByteStream.c
  46. 5 7
      src/codec/ByteStream.h
  47. 3 6
      src/codec/DecoderChannel.h
  48. 0 101
      src/codec/DynamicMemory.c
  49. 0 101
      src/codec/DynamicMemory.h
  50. 1861 0
      src/codec/EXICoder.c
  51. 17 21
      src/codec/EXICoder.h
  52. 0 103
      src/codec/EXIConfig.h
  53. 933 0
      src/codec/EXIDecoder.c
  54. 18 21
      src/codec/EXIDecoder.h
  55. 1010 0
      src/codec/EXIEncoder.c
  56. 20 23
      src/codec/EXIEncoder.h
  57. 14 17
      src/codec/EXIHeaderDecoder.c
  58. 2 5
      src/codec/EXIHeaderDecoder.h
  59. 2 5
      src/codec/EXIHeaderEncoder.c
  60. 2 5
      src/codec/EXIHeaderEncoder.h
  61. 13 34
      src/codec/EXIOptions.h
  62. 18 40
      src/codec/EXITypes.h
  63. 2 5
      src/codec/EncoderChannel.h
  64. 4 12
      src/codec/ErrorCodes.h
  65. 24 9
      src/codec/MethodsBag.c
  66. 6 6
      src/codec/MethodsBag.h
  67. 200 0
      src/codec/NameTableEntries.c
  68. 5 8
      src/codec/NameTableEntries.h
  69. 7 10
      src/codec/QNameDefines.h
  70. 981 0
      src/codec/QNames.c
  71. 7 10
      src/codec/QNames.h
  72. 50 24
      src/codec/StringTable.c
  73. 5 8
      src/codec/StringTable.h
  74. 0 195
      src/codec/StringValueTable.c
  75. 0 120
      src/codec/StringValueTable.h
  76. 10 38
      src/codec/UCSString.c
  77. 2 6
      src/codec/UCSString.h
  78. 468 328
      src/codec/appHandCodec/appHandEXICoder.c
  79. 8 12
      src/codec/appHandCodec/appHandEXICoder.h
  80. 483 336
      src/codec/appHandCodec/appHandEXIDecoder.c
  81. 4 7
      src/codec/appHandCodec/appHandEXIDecoder.h
  82. 697 701
      src/codec/appHandCodec/appHandEXIEncoder.c
  83. 3 6
      src/codec/appHandCodec/appHandEXIEncoder.h
  84. 2 5
      src/codec/appHandCodec/appHandNameTableEntries.c
  85. 2 5
      src/codec/appHandCodec/appHandNameTableEntries.h
  86. 3 6
      src/codec/appHandCodec/appHandQNameDefines.h
  87. 5 9
      src/codec/appHandCodec/appHandQNames.c
  88. 2 5
      src/codec/appHandCodec/appHandQNames.h
  89. 0 1325
      src/codec/v2gEXICoder.c
  90. 0 947
      src/codec/v2gEXIDecoder.c
  91. 0 331
      src/codec/v2gEXIEncoder.c
  92. 0 204
      src/codec/v2gNameTableEntries.c
  93. 0 989
      src/codec/v2gQNames.c
  94. 318 166
      src/service/v2g_dataTypes.c
  95. 248 229
      src/service/v2g_dataTypes.h
  96. 4 4
      src/service/v2g_service.h
  97. 2 2
      src/service/v2g_serviceClientDataTransmitter.h
  98. 159 374
      src/service/v2g_serviceClientStubs.c
  99. 34 36
      src/service/v2g_serviceClientStubs.h
  100. 371 185
      src/service/v2g_serviceDataSerialization.c

+ 21 - 43
.cproject

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
 	<storageModule moduleId="org.eclipse.cdt.core.settings">
 		<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"/>
-					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
 				</extensions>
 			</storageModule>
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
@@ -18,7 +18,7 @@
 					<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" superClass="cdt.managedbuild.builder.gnu.cross"/>
+							<builder buildPath="${workspace_loc:/OpenV2G/Debug}" id="org.eclipse.cdt.build.core.internal.builder.135121082" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
 							<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>
@@ -29,12 +29,12 @@
 							</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="&quot;../src/codec&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/codec/appHandCodec&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/appHandshake&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/transport&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/service&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/test&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/codec}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/appHandshake}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/codec/appHandCodec}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/transport}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/service}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/test}&quot;"/>
 								</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"/>
@@ -61,17 +61,16 @@
 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
 			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
 			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+			<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
 		</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"/>
-					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
 				</extensions>
 			</storageModule>
 			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
@@ -79,7 +78,7 @@
 					<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"/>
+							<builder buildPath="${workspace_loc:/OpenV2G/Release}" id="org.eclipse.cdt.build.core.internal.builder.360170814" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
 							<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>
@@ -90,12 +89,12 @@
 							</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="&quot;../src/codec&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/codec/appHandCodec&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/appHandshake&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/transport&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/service&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../src/test&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/codec}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/codec/appHandCodec}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/appHandshake}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/transport}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/service}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/test}&quot;"/>
 								</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.most" 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.max" valueType="enumerated"/>
@@ -121,6 +120,7 @@
 			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
 			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
 			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+			<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
 		</cconfiguration>
 	</storageModule>
 	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
@@ -624,26 +624,4 @@
 			</profile>
 		</scannerConfigBuildInfo>
 	</storageModule>
-	<storageModule moduleId="refreshScope" versionNumber="2">
-		<configuration configurationName="Release">
-			<resource resourceType="PROJECT" workspacePath="/OpenV2G"/>
-		</configuration>
-		<configuration configurationName="Debug">
-			<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"/>
 </cproject>

+ 1 - 13
.project

@@ -17,10 +17,6 @@
 					<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>
@@ -31,11 +27,7 @@
 				</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>
+					<value>${workspace_loc:/OpenV2G/Debug}</value>
 				</dictionary>
 				<dictionary>
 					<key>org.eclipse.cdt.make.core.contents</key>
@@ -53,10 +45,6 @@
 					<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>

+ 2 - 2
Debug/makefile

@@ -8,13 +8,13 @@ RM := rm -rf
 
 # All of the sources participating in the build are defined here
 -include sources.mk
+-include subdir.mk
 -include src/transport/subdir.mk
 -include src/test/subdir.mk
 -include src/service/subdir.mk
 -include src/codec/appHandCodec/subdir.mk
 -include src/codec/subdir.mk
 -include src/appHandshake/subdir.mk
--include subdir.mk
 -include objects.mk
 
 ifneq ($(MAKECMDGOALS),clean)
@@ -34,7 +34,7 @@ all: OpenV2G.exe
 OpenV2G.exe: $(OBJS) $(USER_OBJS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MinGW C Linker'
-	gcc  -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
+	gcc  -o"OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
 	@echo 'Finished building target: $@'
 	@echo ' '
 

+ 0 - 1
Debug/objects.mk

@@ -5,4 +5,3 @@
 USER_OBJS :=
 
 LIBS :=
-

+ 1 - 1
Debug/sources.mk

@@ -16,7 +16,7 @@ SUBDIRS := \
 src/transport \
 src/test \
 src/service \
-src/codec \
 src/codec/appHandCodec \
+src/codec \
 src/appHandshake \
 

+ 7 - 7
Debug/src/appHandshake/subdir.mk

@@ -4,18 +4,18 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/appHandshake/appHand_dataDeserialization.c \
-../src/appHandshake/appHand_dataSerialization.c \
+../src/appHandshake/appHand_DataDeserialization.c \
+../src/appHandshake/appHand_DataSerialization.c \
 ../src/appHandshake/appHand_dataTypes.c 
 
 OBJS += \
-./src/appHandshake/appHand_dataDeserialization.o \
-./src/appHandshake/appHand_dataSerialization.o \
+./src/appHandshake/appHand_DataDeserialization.o \
+./src/appHandshake/appHand_DataSerialization.o \
 ./src/appHandshake/appHand_dataTypes.o 
 
 C_DEPS += \
-./src/appHandshake/appHand_dataDeserialization.d \
-./src/appHandshake/appHand_dataSerialization.d \
+./src/appHandshake/appHand_DataDeserialization.d \
+./src/appHandshake/appHand_DataSerialization.d \
 ./src/appHandshake/appHand_dataTypes.d 
 
 
@@ -23,7 +23,7 @@ C_DEPS += \
 src/appHandshake/%.o: ../src/appHandshake/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 10 - 16
Debug/src/codec/appHandCodec/subdir.mk

@@ -4,32 +4,26 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/codec/appHandCodec/appHandEXICoder.c \
-../src/codec/appHandCodec/appHandEXIDecoder.c \
-../src/codec/appHandCodec/appHandEXIEncoder.c \
-../src/codec/appHandCodec/appHandNameTableEntries.c \
-../src/codec/appHandCodec/appHandQNames.c 
+../src/codec/appHandCodec/appHand_EXIDecoder.c \
+../src/codec/appHandCodec/appHand_EXIEncoder.c \
+../src/codec/appHandCodec/appHand_NameTableEntries.c 
 
 OBJS += \
-./src/codec/appHandCodec/appHandEXICoder.o \
-./src/codec/appHandCodec/appHandEXIDecoder.o \
-./src/codec/appHandCodec/appHandEXIEncoder.o \
-./src/codec/appHandCodec/appHandNameTableEntries.o \
-./src/codec/appHandCodec/appHandQNames.o 
+./src/codec/appHandCodec/appHand_EXIDecoder.o \
+./src/codec/appHandCodec/appHand_EXIEncoder.o \
+./src/codec/appHandCodec/appHand_NameTableEntries.o 
 
 C_DEPS += \
-./src/codec/appHandCodec/appHandEXICoder.d \
-./src/codec/appHandCodec/appHandEXIDecoder.d \
-./src/codec/appHandCodec/appHandEXIEncoder.d \
-./src/codec/appHandCodec/appHandNameTableEntries.d \
-./src/codec/appHandCodec/appHandQNames.d 
+./src/codec/appHandCodec/appHand_EXIDecoder.d \
+./src/codec/appHandCodec/appHand_EXIEncoder.d \
+./src/codec/appHandCodec/appHand_NameTableEntries.d 
 
 
 # Each subdirectory must supply rules for building sources it contributes
 src/codec/appHandCodec/%.o: ../src/codec/appHandCodec/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 19 - 31
Debug/src/codec/subdir.mk

@@ -13,19 +13,15 @@ C_SRCS += \
 ../src/codec/ByteDecoderChannel.c \
 ../src/codec/ByteEncoderChannel.c \
 ../src/codec/ByteStream.c \
-../src/codec/DynamicMemory.c \
+../src/codec/EXICoder.c \
+../src/codec/EXIDecoder.c \
+../src/codec/EXIEncoder.c \
 ../src/codec/EXIHeaderDecoder.c \
 ../src/codec/EXIHeaderEncoder.c \
 ../src/codec/MethodsBag.c \
-../src/codec/StringNameTable.c \
-../src/codec/StringValueTable.c \
-../src/codec/UCSString.c \
-../src/codec/main_codec.c \
-../src/codec/v2gEXICoder.c \
-../src/codec/v2gEXIDecoder.c \
-../src/codec/v2gEXIEncoder.c \
-../src/codec/v2gNameTableEntries.c \
-../src/codec/v2gQNames.c 
+../src/codec/NameTableEntries.c \
+../src/codec/StringTable.c \
+../src/codec/UCSString.c 
 
 OBJS += \
 ./src/codec/AbstractDecoderChannel.o \
@@ -37,19 +33,15 @@ OBJS += \
 ./src/codec/ByteDecoderChannel.o \
 ./src/codec/ByteEncoderChannel.o \
 ./src/codec/ByteStream.o \
-./src/codec/DynamicMemory.o \
+./src/codec/EXICoder.o \
+./src/codec/EXIDecoder.o \
+./src/codec/EXIEncoder.o \
 ./src/codec/EXIHeaderDecoder.o \
 ./src/codec/EXIHeaderEncoder.o \
 ./src/codec/MethodsBag.o \
-./src/codec/StringNameTable.o \
-./src/codec/StringValueTable.o \
-./src/codec/UCSString.o \
-./src/codec/main_codec.o \
-./src/codec/v2gEXICoder.o \
-./src/codec/v2gEXIDecoder.o \
-./src/codec/v2gEXIEncoder.o \
-./src/codec/v2gNameTableEntries.o \
-./src/codec/v2gQNames.o 
+./src/codec/NameTableEntries.o \
+./src/codec/StringTable.o \
+./src/codec/UCSString.o 
 
 C_DEPS += \
 ./src/codec/AbstractDecoderChannel.d \
@@ -61,26 +53,22 @@ C_DEPS += \
 ./src/codec/ByteDecoderChannel.d \
 ./src/codec/ByteEncoderChannel.d \
 ./src/codec/ByteStream.d \
-./src/codec/DynamicMemory.d \
+./src/codec/EXICoder.d \
+./src/codec/EXIDecoder.d \
+./src/codec/EXIEncoder.d \
 ./src/codec/EXIHeaderDecoder.d \
 ./src/codec/EXIHeaderEncoder.d \
 ./src/codec/MethodsBag.d \
-./src/codec/StringNameTable.d \
-./src/codec/StringValueTable.d \
-./src/codec/UCSString.d \
-./src/codec/main_codec.d \
-./src/codec/v2gEXICoder.d \
-./src/codec/v2gEXIDecoder.d \
-./src/codec/v2gEXIEncoder.d \
-./src/codec/v2gNameTableEntries.d \
-./src/codec/v2gQNames.d 
+./src/codec/NameTableEntries.d \
+./src/codec/StringTable.d \
+./src/codec/UCSString.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/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 4 - 4
Debug/src/service/subdir.mk

@@ -4,21 +4,21 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/service/v2g_dataTypes.c \
 ../src/service/v2g_serviceClientStubs.c \
 ../src/service/v2g_serviceDataSerialization.c \
+../src/service/v2g_serviceDataTypes.c \
 ../src/service/v2g_serviceDispatcher.c 
 
 OBJS += \
-./src/service/v2g_dataTypes.o \
 ./src/service/v2g_serviceClientStubs.o \
 ./src/service/v2g_serviceDataSerialization.o \
+./src/service/v2g_serviceDataTypes.o \
 ./src/service/v2g_serviceDispatcher.o 
 
 C_DEPS += \
-./src/service/v2g_dataTypes.d \
 ./src/service/v2g_serviceClientStubs.d \
 ./src/service/v2g_serviceDataSerialization.d \
+./src/service/v2g_serviceDataTypes.d \
 ./src/service/v2g_serviceDispatcher.d 
 
 
@@ -26,7 +26,7 @@ C_DEPS += \
 src/service/%.o: ../src/service/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 4 - 1
Debug/src/test/subdir.mk

@@ -7,6 +7,7 @@ C_SRCS += \
 ../src/test/evse_server.c \
 ../src/test/evse_serviceMethods.c \
 ../src/test/main.c \
+../src/test/main_codec.c \
 ../src/test/pev_service.c \
 ../src/test/serviceClientDataTransmitter.c 
 
@@ -14,6 +15,7 @@ OBJS += \
 ./src/test/evse_server.o \
 ./src/test/evse_serviceMethods.o \
 ./src/test/main.o \
+./src/test/main_codec.o \
 ./src/test/pev_service.o \
 ./src/test/serviceClientDataTransmitter.o 
 
@@ -21,6 +23,7 @@ C_DEPS += \
 ./src/test/evse_server.d \
 ./src/test/evse_serviceMethods.d \
 ./src/test/main.d \
+./src/test/main_codec.d \
 ./src/test/pev_service.d \
 ./src/test/serviceClientDataTransmitter.d 
 
@@ -29,7 +32,7 @@ C_DEPS += \
 src/test/%.o: ../src/test/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 1 - 1
Debug/src/transport/subdir.mk

@@ -17,7 +17,7 @@ C_DEPS += \
 src/transport/%.o: ../src/transport/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O0 -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 2 - 7
README.txt

@@ -1,13 +1,13 @@
 -------------------------------------------------------------------------
 OpenV2G - an open source project implementing the basic functionality of the ISO IEC 15118 vehicle to grid (V2G) communication interface 
-Version 0.8, released January, 2014
+Version 0.7, released July 2, 2012
 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-2014 Siemens AG
+Copyright (C) 2007-2012 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
@@ -23,11 +23,6 @@ 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.7:
--------------------------------------------------------------------------
-* adaption of V2G schema changes (reflects the ISO/IEC 15118-2 FDIS status)
-* bug-fixes
 
 -------------------------------------------------------------------------
 CHANGES from version 0.6:

+ 2 - 2
Release/makefile

@@ -8,13 +8,13 @@ RM := rm -rf
 
 # All of the sources participating in the build are defined here
 -include sources.mk
+-include subdir.mk
 -include src/transport/subdir.mk
 -include src/test/subdir.mk
 -include src/service/subdir.mk
 -include src/codec/appHandCodec/subdir.mk
 -include src/codec/subdir.mk
 -include src/appHandshake/subdir.mk
--include subdir.mk
 -include objects.mk
 
 ifneq ($(MAKECMDGOALS),clean)
@@ -34,7 +34,7 @@ all: OpenV2G.exe
 OpenV2G.exe: $(OBJS) $(USER_OBJS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MinGW C Linker'
-	gcc  -o "OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
+	gcc  -o"OpenV2G.exe" $(OBJS) $(USER_OBJS) $(LIBS)
 	@echo 'Finished building target: $@'
 	@echo ' '
 

+ 0 - 1
Release/objects.mk

@@ -5,4 +5,3 @@
 USER_OBJS :=
 
 LIBS :=
-

+ 1 - 1
Release/sources.mk

@@ -16,7 +16,7 @@ SUBDIRS := \
 src/transport \
 src/test \
 src/service \
-src/codec \
 src/codec/appHandCodec \
+src/codec \
 src/appHandshake \
 

+ 7 - 7
Release/src/appHandshake/subdir.mk

@@ -4,18 +4,18 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/appHandshake/appHand_dataDeserialization.c \
-../src/appHandshake/appHand_dataSerialization.c \
+../src/appHandshake/appHand_DataDeserialization.c \
+../src/appHandshake/appHand_DataSerialization.c \
 ../src/appHandshake/appHand_dataTypes.c 
 
 OBJS += \
-./src/appHandshake/appHand_dataDeserialization.o \
-./src/appHandshake/appHand_dataSerialization.o \
+./src/appHandshake/appHand_DataDeserialization.o \
+./src/appHandshake/appHand_DataSerialization.o \
 ./src/appHandshake/appHand_dataTypes.o 
 
 C_DEPS += \
-./src/appHandshake/appHand_dataDeserialization.d \
-./src/appHandshake/appHand_dataSerialization.d \
+./src/appHandshake/appHand_DataDeserialization.d \
+./src/appHandshake/appHand_DataSerialization.d \
 ./src/appHandshake/appHand_dataTypes.d 
 
 
@@ -23,7 +23,7 @@ C_DEPS += \
 src/appHandshake/%.o: ../src/appHandshake/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 10 - 16
Release/src/codec/appHandCodec/subdir.mk

@@ -4,32 +4,26 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/codec/appHandCodec/appHandEXICoder.c \
-../src/codec/appHandCodec/appHandEXIDecoder.c \
-../src/codec/appHandCodec/appHandEXIEncoder.c \
-../src/codec/appHandCodec/appHandNameTableEntries.c \
-../src/codec/appHandCodec/appHandQNames.c 
+../src/codec/appHandCodec/appHand_EXIDecoder.c \
+../src/codec/appHandCodec/appHand_EXIEncoder.c \
+../src/codec/appHandCodec/appHand_NameTableEntries.c 
 
 OBJS += \
-./src/codec/appHandCodec/appHandEXICoder.o \
-./src/codec/appHandCodec/appHandEXIDecoder.o \
-./src/codec/appHandCodec/appHandEXIEncoder.o \
-./src/codec/appHandCodec/appHandNameTableEntries.o \
-./src/codec/appHandCodec/appHandQNames.o 
+./src/codec/appHandCodec/appHand_EXIDecoder.o \
+./src/codec/appHandCodec/appHand_EXIEncoder.o \
+./src/codec/appHandCodec/appHand_NameTableEntries.o 
 
 C_DEPS += \
-./src/codec/appHandCodec/appHandEXICoder.d \
-./src/codec/appHandCodec/appHandEXIDecoder.d \
-./src/codec/appHandCodec/appHandEXIEncoder.d \
-./src/codec/appHandCodec/appHandNameTableEntries.d \
-./src/codec/appHandCodec/appHandQNames.d 
+./src/codec/appHandCodec/appHand_EXIDecoder.d \
+./src/codec/appHandCodec/appHand_EXIEncoder.d \
+./src/codec/appHandCodec/appHand_NameTableEntries.d 
 
 
 # Each subdirectory must supply rules for building sources it contributes
 src/codec/appHandCodec/%.o: ../src/codec/appHandCodec/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 19 - 31
Release/src/codec/subdir.mk

@@ -13,19 +13,15 @@ C_SRCS += \
 ../src/codec/ByteDecoderChannel.c \
 ../src/codec/ByteEncoderChannel.c \
 ../src/codec/ByteStream.c \
-../src/codec/DynamicMemory.c \
+../src/codec/EXICoder.c \
+../src/codec/EXIDecoder.c \
+../src/codec/EXIEncoder.c \
 ../src/codec/EXIHeaderDecoder.c \
 ../src/codec/EXIHeaderEncoder.c \
 ../src/codec/MethodsBag.c \
-../src/codec/StringNameTable.c \
-../src/codec/StringValueTable.c \
-../src/codec/UCSString.c \
-../src/codec/main_codec.c \
-../src/codec/v2gEXICoder.c \
-../src/codec/v2gEXIDecoder.c \
-../src/codec/v2gEXIEncoder.c \
-../src/codec/v2gNameTableEntries.c \
-../src/codec/v2gQNames.c 
+../src/codec/NameTableEntries.c \
+../src/codec/StringTable.c \
+../src/codec/UCSString.c 
 
 OBJS += \
 ./src/codec/AbstractDecoderChannel.o \
@@ -37,19 +33,15 @@ OBJS += \
 ./src/codec/ByteDecoderChannel.o \
 ./src/codec/ByteEncoderChannel.o \
 ./src/codec/ByteStream.o \
-./src/codec/DynamicMemory.o \
+./src/codec/EXICoder.o \
+./src/codec/EXIDecoder.o \
+./src/codec/EXIEncoder.o \
 ./src/codec/EXIHeaderDecoder.o \
 ./src/codec/EXIHeaderEncoder.o \
 ./src/codec/MethodsBag.o \
-./src/codec/StringNameTable.o \
-./src/codec/StringValueTable.o \
-./src/codec/UCSString.o \
-./src/codec/main_codec.o \
-./src/codec/v2gEXICoder.o \
-./src/codec/v2gEXIDecoder.o \
-./src/codec/v2gEXIEncoder.o \
-./src/codec/v2gNameTableEntries.o \
-./src/codec/v2gQNames.o 
+./src/codec/NameTableEntries.o \
+./src/codec/StringTable.o \
+./src/codec/UCSString.o 
 
 C_DEPS += \
 ./src/codec/AbstractDecoderChannel.d \
@@ -61,26 +53,22 @@ C_DEPS += \
 ./src/codec/ByteDecoderChannel.d \
 ./src/codec/ByteEncoderChannel.d \
 ./src/codec/ByteStream.d \
-./src/codec/DynamicMemory.d \
+./src/codec/EXICoder.d \
+./src/codec/EXIDecoder.d \
+./src/codec/EXIEncoder.d \
 ./src/codec/EXIHeaderDecoder.d \
 ./src/codec/EXIHeaderEncoder.d \
 ./src/codec/MethodsBag.d \
-./src/codec/StringNameTable.d \
-./src/codec/StringValueTable.d \
-./src/codec/UCSString.d \
-./src/codec/main_codec.d \
-./src/codec/v2gEXICoder.d \
-./src/codec/v2gEXIDecoder.d \
-./src/codec/v2gEXIEncoder.d \
-./src/codec/v2gNameTableEntries.d \
-./src/codec/v2gQNames.d 
+./src/codec/NameTableEntries.d \
+./src/codec/StringTable.d \
+./src/codec/UCSString.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/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 4 - 4
Release/src/service/subdir.mk

@@ -4,21 +4,21 @@
 
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS += \
-../src/service/v2g_dataTypes.c \
 ../src/service/v2g_serviceClientStubs.c \
 ../src/service/v2g_serviceDataSerialization.c \
+../src/service/v2g_serviceDataTypes.c \
 ../src/service/v2g_serviceDispatcher.c 
 
 OBJS += \
-./src/service/v2g_dataTypes.o \
 ./src/service/v2g_serviceClientStubs.o \
 ./src/service/v2g_serviceDataSerialization.o \
+./src/service/v2g_serviceDataTypes.o \
 ./src/service/v2g_serviceDispatcher.o 
 
 C_DEPS += \
-./src/service/v2g_dataTypes.d \
 ./src/service/v2g_serviceClientStubs.d \
 ./src/service/v2g_serviceDataSerialization.d \
+./src/service/v2g_serviceDataTypes.d \
 ./src/service/v2g_serviceDispatcher.d 
 
 
@@ -26,7 +26,7 @@ C_DEPS += \
 src/service/%.o: ../src/service/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 4 - 1
Release/src/test/subdir.mk

@@ -7,6 +7,7 @@ C_SRCS += \
 ../src/test/evse_server.c \
 ../src/test/evse_serviceMethods.c \
 ../src/test/main.c \
+../src/test/main_codec.c \
 ../src/test/pev_service.c \
 ../src/test/serviceClientDataTransmitter.c 
 
@@ -14,6 +15,7 @@ OBJS += \
 ./src/test/evse_server.o \
 ./src/test/evse_serviceMethods.o \
 ./src/test/main.o \
+./src/test/main_codec.o \
 ./src/test/pev_service.o \
 ./src/test/serviceClientDataTransmitter.o 
 
@@ -21,6 +23,7 @@ C_DEPS += \
 ./src/test/evse_server.d \
 ./src/test/evse_serviceMethods.d \
 ./src/test/main.d \
+./src/test/main_codec.d \
 ./src/test/pev_service.d \
 ./src/test/serviceClientDataTransmitter.d 
 
@@ -29,7 +32,7 @@ C_DEPS += \
 src/test/%.o: ../src/test/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 1 - 1
Release/src/transport/subdir.mk

@@ -17,7 +17,7 @@ C_DEPS += \
 src/transport/%.o: ../src/transport/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
-	gcc -I"../src/codec" -I"../src/codec/appHandCodec" -I"../src/appHandshake" -I"../src/transport" -I"../src/service" -I"../src/test" -O3 -Os -g3 -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	gcc -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\codec\appHandCodec" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\appHandshake" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\transport" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\service" -I"D:\Data\MCHN4240\workspace_c\OpenV2G\trunk\src\test" -O3 -Os -pedantic -pedantic-errors -Wall -c -fmessage-length=0 -ansi -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 

+ 0 - 16
data/sessionSetupReq.xml

@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<v2gci_d:V2G_Message xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
- xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
- xmlns:v2gci_d="urn:iso:15118:2:2013:MsgDef"
- xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
- xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <v2gci_d:Header>
-        <v2gci_h:SessionID>00</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


+ 0 - 18
data/sessionSetupRes.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<v2gci_d:V2G_Message xmlns:v2gci_h="urn:iso:15118:2:2013:MsgHeader"
- xmlns:v2gci_b="urn:iso:15118:2:2013:MsgBody"
- xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
- xmlns:v2gci_t="urn:iso:15118:2:2013:MsgDataTypes"
- xmlns:v2gci_d="urn:iso:15118:2:2013:MsgDef"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <v2gci_d:Header>
-        <v2gci_h:SessionID>010203040506</v2gci_h:SessionID>
-    </v2gci_d:Header>
-    <v2gci_d:Body>
-        <v2gci_b:SessionSetupRes>
-            <v2gci_b:ResponseCode>OK</v2gci_b:ResponseCode>
-            <v2gci_b:EVSEID>ABC01234</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


+ 16 - 0
data/test/sessionSetupReq.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2010:MsgBody"
+ xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:v2gci_d="urn:iso:15118:2:2010:MsgDef"
+ xmlns:v2gci_t="urn:iso:15118:2:2010:MsgDataTypes"
+ xmlns:v2gci_h="urn:iso:15118:2:2010:MsgHeader"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <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/test/sessionSetupReq.xml.exi


+ 18 - 0
data/test/sessionSetupRes.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<v2gci_d:V2G_Message xmlns:v2gci_b="urn:iso:15118:2:2010:MsgBody"
+ xmlns:xmlsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:v2gci_d="urn:iso:15118:2:2010:MsgDef"
+ xmlns:v2gci_t="urn:iso:15118:2:2010:MsgDataTypes"
+ xmlns:v2gci_h="urn:iso:15118:2:2010:MsgHeader"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <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>01</v2gci_b:EVSEID>
+            <v2gci_b:DateTimeNow>123456789</v2gci_b:DateTimeNow>
+        </v2gci_b:SessionSetupRes>
+    </v2gci_d:Body>
+</v2gci_d:V2G_Message>

BIN
data/test/sessionSetupRes.xml.exi


+ 28 - 31
src/appHandshake/appHand_dataDeserialization.c → src/appHandshake/appHand_DataDeserialization.c

@@ -1,25 +1,27 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -31,16 +33,14 @@
  #include "appHand_dataTypes.h"
  #include "EXITypes.h"
  #include "appHandEXIDecoder.h"
+ #include "appHandEXIEncoder.h"
+ #include "StringTable.h"
  #include "appHandQNameDefines.h"
- #include "StringValueTable.h"
- #include "StringNameTable.h"
  #include <string.h>
  
 uint16_t numberOfLocalStringsDecode[EXI_appHandMAX_NUMBER_OF_QNAMES];
  
-
-
-
+ 
  static int _setUnsignedInt32Value(exi_integer_t* iv, uint32_t* int32) {
 	int errn = 0;
 	switch(iv->type) {
@@ -78,7 +78,6 @@ uint16_t numberOfLocalStringsDecode[EXI_appHandMAX_NUMBER_OF_QNAMES];
 	return errn;
 }
  
- 
 
  /**
  * Deserialize an element or attribute value of the EXI stream and assign it to the
@@ -238,7 +237,7 @@ int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16
 {
  	exi_name_table_runtime_t runtimeTableDecode;
  	uint32_t inPos;
-	exi_value_table_t stringTableDecode = { 0, EXI_appHandMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode};
+ 	exi_string_table_t stringTableDecode = { 0, EXI_appHandMAX_NUMBER_OF_QNAMES, numberOfLocalStringsDecode};
  	int noEndOfDocument = 1; /* true */
 	int returnCode=0;
 	
@@ -251,7 +250,6 @@ int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16
 	service->inStream.buffer=0;
 	service->inStream.capacity=0;
 
-	init_EXIDocumentType_appHand(exiDoc);
 
 	service->exiMsg=*exiDoc;
 
@@ -305,19 +303,20 @@ int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16
 			}
 
 		} while (noEndOfDocument);
-		
-		*exiDoc = service->exiMsg;
 
 	return 0;
 }
  
-  
  
+ 
+ 
+
 /** 
  * \brief   Initialize the appHand deserializer
  * \param	service  struct EXIDatabinder* Basic databinder structure
  * \param	service_bytes   bytes_t Reserved byte structure buffer 
  * \param	service_string   string_ucs_t* Reserved string structure buffer 
+ * \param	transportHeaderOffset   uint16_t Offset of the used transport header (E.g., V2GTP needs 8 bytes)
  * \return  0 = 0K; -1 = ERROR */
 int init_appHandDeserializer(struct EXIDatabinder* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint16_t transportHeaderOffset)
 {
@@ -337,5 +336,3 @@ int init_appHandDeserializer(struct EXIDatabinder* service, exi_bytes_t service_
 
 	return 0;
 }
-
-  

+ 39 - 48
src/appHandshake/appHand_dataSerialization.c

@@ -1,25 +1,25 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -30,19 +30,16 @@
 #include "appHand_service.h"
 #include "appHand_dataTypes.h"
 #include "EXITypes.h"
-#include "StringNameTable.h"
+#include "StringTable.h"
 #include "appHandEXIEncoder.h"
 #include "appHandQNameDefines.h"
 #include <string.h>
-
- uint16_t numberOfLocalStringsEncode[EXI_appHandMAX_NUMBER_OF_QNAMES];
- 
- 
- 
  
+ uint16_t numberOfLocalStringsEncode[EXI_appHandMAX_NUMBER_OF_QNAMES];
  
  
 
+
 static int serialize_AppProtocolType(struct AppProtocolType* type, struct EXIDatabinder* service)
 {
 		
@@ -178,7 +175,7 @@ static int serialize_AppProtocolType(struct AppProtocolType* type, struct EXIDat
 }
 
 
-static int serialize_SupportedAppProtocolReq(struct SupportedAppProtocolReq* type, struct EXIDatabinder* service)
+static int serialize_AnonType_supportedAppProtocolReq(struct AnonType_supportedAppProtocolReq* type, struct EXIDatabinder* service)
 {
 
 			size_t i_loop;
@@ -211,7 +208,7 @@ static int serialize_SupportedAppProtocolReq(struct SupportedAppProtocolReq* typ
 }
 
 
-static int serialize_SupportedAppProtocolRes(struct SupportedAppProtocolRes* type, struct EXIDatabinder* service)
+static int serialize_AnonType_supportedAppProtocolRes(struct AnonType_supportedAppProtocolRes* type, struct EXIDatabinder* service)
 {
 		
 
@@ -287,7 +284,7 @@ static int serialize_EXIDocumentType_appHand(struct EXIDocumentType_appHand* typ
 			}
 						
 			/* encode children of supportedAppProtocolReq */
-			if(serialize_SupportedAppProtocolReq( type->supportedAppProtocolReq,service))
+			if(serialize_AnonType_supportedAppProtocolReq( (type->supportedAppProtocolReq),service))
 			{
 				return -1;
 			}
@@ -311,7 +308,7 @@ static int serialize_EXIDocumentType_appHand(struct EXIDocumentType_appHand* typ
 			}
 						
 			/* encode children of supportedAppProtocolRes */
-			if(serialize_SupportedAppProtocolRes( type->supportedAppProtocolRes,service))
+			if(serialize_AnonType_supportedAppProtocolRes( (type->supportedAppProtocolRes),service))
 			{
 				return -1;
 			}
@@ -364,12 +361,10 @@ static int serialize_message(struct EXIDatabinder* service)
 
  
  
-int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, uint16_t* payloadLength, struct EXIDocumentType_appHand* exiDoc)
+int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, size_t* payloadLength, struct EXIDocumentType_appHand* exiDoc)
 {
  	exi_name_table_runtime_t runtimeTableEncode;
-
- 	int16_t lerr = 0; /* local error */
- 	exi_value_table_t stringTableEncode = { 0, EXI_appHandMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode};
+	exi_string_table_t stringTableEncode = { 0, EXI_appHandMAX_NUMBER_OF_QNAMES, numberOfLocalStringsEncode};
 
  	uint32_t outPos =service->transportHeaderOffset;
  
@@ -381,25 +376,21 @@ int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, uint16_
  
   	service->exiMsg = *exiDoc;
  
-		/* init encoder (write header, set initial state) */
-		exiInitNameTableRuntime(&runtimeTableEncode);
-
-		if(exiappHandInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode))
-		{
-			lerr = -1;
-		}
+	/* init encoder (write header, set initial state) */
+	exiInitNameTableRuntime(&runtimeTableEncode);
+	exiappHandInitEncoder(&(service->outStream), &(service->stateEncode), runtimeTableEncode,stringTableEncode);
  
- 		/* serialze message*/
- 		if(serialize_message(service))
- 		{
-	 		lerr = -1;
- 		}
 
- 		outPos -= service->transportHeaderOffset;
- 		*payloadLength = outPos;
+	if(serialize_message(service))
+	{
+		return -1;
+	}
+
+	outPos -= service->transportHeaderOffset;
+	*payloadLength = outPos;
 
 
- 	return lerr;
+ 	return 0;
  }
  
 /* Initialize serializer */
@@ -418,7 +409,7 @@ int init_appHandSerializer(struct EXIDatabinder* service, exi_bytes_t service_by
 
 	 service->transportHeaderOffset=transportHeaderOffset;
 
+
 	return 0;
 }
- 
  

+ 34 - 21
src/appHandshake/appHand_dataTypes.c

@@ -1,25 +1,25 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -37,19 +37,32 @@ static  void init_protocolNamespaceType(struct protocolNamespaceType* type)
 
 }
 
- void init_SupportedAppProtocolReq(struct SupportedAppProtocolReq* type)
+static  void init_AppProtocolType(struct AppProtocolType* type)
+{	
+	init_protocolNamespaceType(&(type->ProtocolNamespace));				
+
+}
+
+void init_AnonType_supportedAppProtocolReq(struct AnonType_supportedAppProtocolReq* type)
 {
+	int i_loop;
 		
+	for(i_loop=0; i_loop<20;i_loop++)
+	{
+		init_AppProtocolType(&(type->AppProtocol[i_loop]));
+	}
+	
 	type->arraylen.AppProtocol=0;
 
 }
 
- void init_SupportedAppProtocolRes(struct SupportedAppProtocolRes* type)
+void init_AnonType_supportedAppProtocolRes(struct AnonType_supportedAppProtocolRes* type)
 {			
 	type->isused.SchemaID=0;
 
 }
- void init_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type)
+
+void init_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type)
 {		
 	type->isused.supportedAppProtocolReq=0;		
 	type->isused.supportedAppProtocolRes=0;

+ 29 - 29
src/appHandshake/appHand_dataTypes.h

@@ -1,25 +1,25 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -36,7 +36,6 @@ extern "C" {
 #define APPHANDDATATYPES_H
 
 #include "EXITypes.h"
-#include "string.h"
 
 
 	
@@ -77,17 +76,17 @@ struct AppProtocolType
 
 };
 
-struct arraylen_SupportedAppProtocolReq
+struct arraylen_AnonType_supportedAppProtocolReq
 {
 	size_t AppProtocol;
 
 
 };
 
-struct SupportedAppProtocolReq
+struct AnonType_supportedAppProtocolReq
 {
 	struct AppProtocolType AppProtocol[20];
-	struct arraylen_SupportedAppProtocolReq arraylen;
+	struct arraylen_AnonType_supportedAppProtocolReq arraylen;
 
 };
 
@@ -99,32 +98,33 @@ struct selection_EXIDocumentType_appHand
 
 };
 
-struct selection_SupportedAppProtocolRes
+struct selection_AnonType_supportedAppProtocolRes
 {
 	unsigned int SchemaID:1;
 
 
 };
 
-struct SupportedAppProtocolRes
+struct AnonType_supportedAppProtocolRes
 {
 	enum responseCodeType_appHand ResponseCode;
 	uint8_t SchemaID;
-	struct selection_SupportedAppProtocolRes isused;
+	struct selection_AnonType_supportedAppProtocolRes isused;
 
 };
 
 struct EXIDocumentType_appHand
 {
-	struct SupportedAppProtocolReq* supportedAppProtocolReq;
-	struct SupportedAppProtocolRes* supportedAppProtocolRes;
+	struct AnonType_supportedAppProtocolReq* supportedAppProtocolReq;
+	struct AnonType_supportedAppProtocolRes* supportedAppProtocolRes;
 	struct selection_EXIDocumentType_appHand isused;
 
 };
 
+
 void init_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type);
-void init_SupportedAppProtocolRes(struct SupportedAppProtocolRes* type);
-void init_SupportedAppProtocolReq(struct SupportedAppProtocolReq* type);
+void init_AnonType_supportedAppProtocolRes(struct AnonType_supportedAppProtocolRes* type);
+void init_AnonType_supportedAppProtocolReq(struct AnonType_supportedAppProtocolReq* type);
 
 #endif
 

+ 80 - 87
src/appHandshake/appHand_service.h

@@ -1,94 +1,87 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+/*
+ * Copyright (C) 2007-2010 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
- * <p>Code generated by EXISeGen</p>
- *
  ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef EXI_DATABINDER_H_
-#define EXI_DATABINDER_H_
-
-#include "appHand_dataTypes.h"
-
-struct uniqueIDPath2
-{
-	int id[10];
-	size_t pos;
-};
-
-
-struct EXIDatabinder
-{
-	/* in-/ out-stream */
-	bitstream_t inStream;
-	bitstream_t outStream;
-
-	/* EXI */
-	exi_state_t stateDecode;
-	exi_state_t stateEncode;
-	exi_event_t event;
-	uint16_t qnameID;
-	exi_value_t val;
-
-	/* v2g message data structure */
-	struct EXIDocumentType_appHand exiMsg;
-
-	/* unique id for ambiguous elements */
-	struct uniqueIDPath2 idPath;
-
-	/* error code */
-	uint8_t errorCode;
-
-	/* offset for transported header data */
-	uint16_t transportHeaderOffset;
-};
-
-int init_appHandSerializer(struct EXIDatabinder* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, size_t max_outStream_size, uint16_t transportHeaderOffset);
-int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, uint16_t* outPos, struct EXIDocumentType_appHand* exiDoc);
-int init_appHandDeserializer(struct EXIDatabinder* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, uint16_t transportHeaderOffset);
-int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16_t sizeInStream, struct EXIDocumentType_appHand* exiDoc);
-void init_EXIDocumentType_appHand(struct EXIDocumentType_appHand* type);
-
-
-/* define error codes */
-#define EXI_NON_VALID_MESSAGE 0x01
-#define EXI_SERIALIZATION_FAILED 0x02
-#define EXI_DESERIALIZATION_FAILED 0x03
-#define EXI_DATATYPE_FAILED 0x04
-#define EXI_VALUE_RANGE_FAILED 0x05
-#define EXI_SERVICE_CALL_FAILED 0x06
-
-#define EXI_UNKNOWN_ERROR 0xFF
-
-#endif /* EXI_DATABINDER_H_ */
-
-#ifdef __cplusplus
-}
-#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXI_DATABINDER_H_
+#define EXI_DATABINDER_H_
+
+#include "appHand_dataTypes.h"
+
+struct uniqueIDPath2
+{
+	int id[10];
+	size_t pos;
+};
+
+
+struct EXIDatabinder
+{
+	/* in-/ out-stream */
+	bitstream_t inStream;
+	bitstream_t outStream;
+
+	/* EXI */
+	exi_state_t stateDecode;
+	exi_state_t stateEncode;
+	exi_event_t event;
+	exi_value_t val;
+	uint16_t qnameID;
+
+	/* main message data structure */
+	struct EXIDocumentType_appHand exiMsg;
+
+	/* unique id for ambiguous elements */
+	struct uniqueIDPath2 idPath;
+
+	uint16_t transportHeaderOffset;
+
+	/* error code */
+	uint8_t errorCode;
+};
+
+int serialize_appHand(struct EXIDatabinder* service, uint8_t* outStream, size_t* payloadLength, struct EXIDocumentType_appHand* exiDoc);
+int deserialize_appHand(struct EXIDatabinder* service, uint8_t* inStream, uint16_t sizeInStream, struct EXIDocumentType_appHand* exiDoc);
+int init_appHandSerializer(struct EXIDatabinder* service, exi_bytes_t service_bytes, exi_string_ucs_t service_string, size_t max_outStream_size, uint16_t transportHeaderOffset);
+int init_appHandDeserializer(struct EXIDatabinder* service, exi_bytes_t bytes, exi_string_ucs_t string, uint16_t transportHeaderOffset);
+
+
+
+/* define error codes */
+#define EXI_NON_VALID_MESSAGE 0x01
+#define EXI_SERIALIZATION_FAILED 0x02
+#define EXI_DESERIALIZATION_FAILED 0x03
+#define EXI_DATATYPE_FAILED 0x04
+#define EXI_VALUE_RANGE_FAILED 0x05
+
+#define EXI_UNKNOWN_ERROR 0xFF
+
+#endif /* EXI_DATABINDER_H_ */
+
+#ifdef __cplusplus
+}
+#endif

+ 339 - 309
src/codec/AbstractDecoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,31 +19,23 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "DecoderChannel.h"
-
-#include "EXIConfig.h"
-#include "EXIOptions.h"
+#include "CoderChannel.h"
 #include "BitInputStream.h"
+#include "EXIOptions.h"
 #include "EXITypes.h"
 #include "MethodsBag.h"
-#include "v2gEXICoder.h"
+#include "EXICoder.h"
 #include "ErrorCodes.h"
 
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-#include "DynamicMemory.h"
-#include "StringValueTable.h"
-#endif /* DYNAMIC_ALLOCATION */
 
 #ifndef ABSTRACT_DECODER_CHANNEL_C
 #define ABSTRACT_DECODER_CHANNEL_C
@@ -59,107 +51,107 @@ static uint8_t maskedOctets[MAX_OCTETS_FOR_UNSIGNED_INTEGER_64];
 
 static int _decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv, int negative) {
 	int errn = 0;
-	int i = 0;
+	int i, k;
 	uint8_t b;
-	int k;
 
-	do {
+	for (i = 0; i < MAX_OCTETS_FOR_UNSIGNED_INTEGER_64; i++) {
 		/* Read the next octet */
 		errn = decode(stream, &b);
-		if (errn == 0) {
-			if(i < MAX_OCTETS_FOR_UNSIGNED_INTEGER_64) {
-				/* the 7 least significant bits hold the actual value */
-				maskedOctets[i++] = (b & 127);
-			} else {
-				errn = EXI_UNSUPPORTED_INTEGER_VALUE;
-			}
-		}
-	} while( errn == 0 && b >= 128 ); /* no more octets ? */
+		/* If the most significant bit of the octet was 1,
+		   another octet is going to come */
+		if (b < 128) {
+			/* no more octets */
 
-	if ( errn == 0 ) {
-		/* For negative values, the Unsigned Integer holds the
-		 * magnitude of the value minus 1 */
+			/* For negative values, the Unsigned Integer holds the
+			 * magnitude of the value minus 1 */
 
-		switch(i) {
-		case 1: /* 7 bits */
-			if (negative) {
-				iv->val.int8 =  (int8_t)(-( b + 1));
-				iv->type = EXI_INTEGER_8;
-			} else {
-				iv->val.uint8 = b;
-				iv->type = EXI_UNSIGNED_INTEGER_8;
-			}
-			break;
-		case 2: /* 14 bits */
-			iv->val.uint16 = 0;
-			for (k = i-1; k >= 0 ; k--) {
-				iv->val.uint16  = (uint16_t)((iv->val.uint16 << 7) | maskedOctets[k]);
-			}
-			if (negative) {
-				iv->val.int16 = (int16_t)( -( iv->val.uint16 + 1 ));
-				iv->type = EXI_INTEGER_16;
-			} else {
-				iv->type = EXI_UNSIGNED_INTEGER_16;
-			}
-			break;
-		case 3: /* 21 bits */
-		case 4: /* 28 bits */
-			iv->val.uint32 = 0;
-			for (k = i-1; k >= 0 ; k--) {
-				iv->val.uint32 = (iv->val.uint32 << 7) | maskedOctets[k];
-			}
-			if (negative) {
-				iv->val.int32 = (int32_t)(-( iv->val.uint32 + 1));
-				if (iv->val.int32 <= INT16_MAX && iv->val.int32 >= INT16_MIN ) {
-					iv->type = EXI_INTEGER_16;
+			switch(i) {
+			case 0: /* 7 bits */
+				if (negative) {
+					iv->val.int8 =  - ( b + 1);
+					iv->type = EXI_INTEGER_8;
 				} else {
-					iv->type = EXI_INTEGER_32;
+					iv->val.uint8 = b;
+					iv->type = EXI_UNSIGNED_INTEGER_8;
 				}
-			} else {
-				if (iv->val.uint32 <= UINT16_MAX) {
-					iv->type = EXI_UNSIGNED_INTEGER_16;
+				return 0;
+			case 1: /* 14 bits */
+				maskedOctets[i] = b;
+				iv->val.uint16 = 0;
+				for (k = i; k >= 0 ; k--) {
+					iv->val.uint16  = (iv->val.uint16 << 7) | maskedOctets[k];
+				}
+				if (negative) {
+					iv->val.int16 = - ( iv->val.uint16 + 1 );
+					iv->type = EXI_INTEGER_16;
 				} else {
-					iv->type = EXI_UNSIGNED_INTEGER_32;
+					iv->type = EXI_UNSIGNED_INTEGER_16;
 				}
-			}
-			break;
-		case 5: /* 35 bits */
-		case 6: /* 42 bits */
-		case 7: /* 49 bits */
-		case 8: /* 56 bits */
-		case 9: /* 63 bits */
-		case 10: /* 70 bits */
-			iv->val.uint64 = 0;
-			for (k = i-1; k >= 0 ; k--) {
-				iv->val.uint64  = (iv->val.uint64 << 7) | maskedOctets[k];
-			}
-			if (negative) {
-				if (i > 9) {
-					/* too large */
-					return EXI_UNSUPPORTED_INTEGER_VALUE;
+				return 0;
+			case 2: /* 21 bits */
+			case 3: /* 28 bits */
+				maskedOctets[i] = b;
+				iv->val.uint32 = 0;
+				for (k = i; k >= 0 ; k--) {
+					iv->val.uint32 = (iv->val.uint32 << 7) | maskedOctets[k];
 				}
-				iv->val.int64 = (int64_t)(-( iv->val.uint64 + 1));
-				if (iv->val.int64 <= INT32_MAX && iv->val.int64 >= INT32_MIN ) {
-					iv->type = EXI_INTEGER_32;
+				if (negative) {
+					iv->val.int32 = (-1) * ( iv->val.uint32 + 1 );
+					if (iv->val.int32 <= INT16_MAX && iv->val.int32 >= INT16_MIN ) {
+						iv->type = EXI_INTEGER_16;
+					} else {
+						iv->type = EXI_INTEGER_32;
+					}
 				} else {
-					iv->type = EXI_INTEGER_64;
+					if (iv->val.uint32 <= UINT16_MAX) {
+						iv->type = EXI_UNSIGNED_INTEGER_16;
+					} else {
+						iv->type = EXI_UNSIGNED_INTEGER_32;
+					}
 				}
-			} else {
-				if (iv->val.uint64 <= UINT32_MAX) {
-					iv->type = EXI_UNSIGNED_INTEGER_32;
-					/* iv->val.uint32 = iv->val.uint64;*/
+				return 0;
+			case 4: /* 35 bits */
+			case 5: /* 42 bits */
+			case 6: /* 49 bits */
+			case 7: /* 56 bits */
+			case 8: /* 63 bits */
+			case 9: /* 70 bits */
+				maskedOctets[i] = b;
+				iv->val.uint64 = 0;
+				for (k = i; k >= 0 ; k--) {
+					iv->val.uint64  = (iv->val.uint64 << 7) | maskedOctets[k];
+				}
+				if (negative) {
+					if (i > 8) {
+						/* too large */
+						return EXI_UNSUPPORTED_INTEGER_VALUE;
+					}
+					iv->val.int64 = (-1) * ( iv->val.uint64 + 1 );
+					if (iv->val.int64 <= INT32_MAX && iv->val.int64 >= INT32_MIN ) {
+						iv->type = EXI_INTEGER_32;
+					} else {
+						iv->type = EXI_INTEGER_64;
+					}
 				} else {
-					iv->type = EXI_UNSIGNED_INTEGER_64;
+					if (iv->val.uint64 <= UINT32_MAX) {
+						iv->type = EXI_UNSIGNED_INTEGER_32;
+						/* iv->val.uint32 = iv->val.uint64;*/
+					} else {
+						iv->type = EXI_UNSIGNED_INTEGER_64;
+					}
 				}
+				return 0;
+			default:
+				return EXI_UNSUPPORTED_INTEGER_VALUE;
 			}
-			break;
-		default:
-			errn = EXI_UNSUPPORTED_INTEGER_VALUE;
-			break;
+		} else {
+			/* the 7 least significant bits hold the actual value */
+			maskedOctets[i] = (b & 127);
 		}
 	}
 
-	return errn;
+
+	return EXI_UNSUPPORTED_INTEGER_VALUE;
 }
 
 int decodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) {
@@ -179,11 +171,11 @@ int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16) {
 		 * least significant
 		 * bits of the octet by the current multiplier and add the result to
 		 * the current value */
-		*uint16 = (uint16_t)(*uint16 + ((b & 127) << mShift));
+		*uint16 += (b & 127) << mShift;
 		/* 3. Multiply the multiplier by 128 */
 		mShift += 7;
 		/* 4. If the most significant bit of the octet was 1, go back to step 1 */
-	} while (errn == 0 && (b >> 7) == 1);
+	} while (errn >= 0 && (b >> 7) == 1);
 
 	return errn;
 }
@@ -202,11 +194,11 @@ int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32) {
 		 * least significant
 		 * bits of the octet by the current multiplier and add the result to
 		 * the current value */
-		*uint32 += (uint32_t)((b & 127) << mShift);
+		*uint32 += (b & 127) << mShift;
 		/* 3. Multiply the multiplier by 128 */
 		mShift += 7;
 		/* 4. If the most significant bit of the octet was 1, go back to step 1 */
-	} while (errn == 0 && (b >> 7) == 1);
+	} while (errn >= 0 && (b >> 7) == 1);
 
 	return errn;
 }
@@ -227,7 +219,7 @@ int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) {
 		errn = decode(stream, &b);
 		*uint64 += ((uint64_t) (b & 127)) << mShift;
 		mShift += 7;
-	} while (errn == 0 && (b >> 7) == 1);
+	} while (errn >= 0 && (b >> 7) == 1);
 
 	return errn;
 }
@@ -236,11 +228,11 @@ int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) {
 int decodeInteger(bitstream_t* stream, exi_integer_t* iv) {
 	int b;
 	int errn = decodeBoolean(stream, &b);
-	if (errn == 0) {
-		errn = _decodeUnsignedInteger(stream, iv, b);
+	if (errn < 0) {
+		return errn;
 	}
 
-	return errn;
+	return _decodeUnsignedInteger(stream, iv, b);
 }
 
 
@@ -255,17 +247,19 @@ int decodeInteger16(bitstream_t* stream, int16_t* int16) {
 	uint16_t uint16;
 	int errn = decodeBoolean(stream, &b);
 
-	if (errn == 0) {
-		if (b) {
-			/* For negative values, the Unsigned Integer holds the
-			 * magnitude of the value minus 1 */
-			errn = decodeUnsignedInteger16(stream, &uint16);
-			*int16 = (int16_t)(-(uint16 + 1));
-		} else {
-			/* positive */
-			errn = decodeUnsignedInteger16(stream, &uint16);
-			*int16 = (int16_t)(uint16);
-		}
+	if (errn < 0) {
+		return errn;
+	}
+
+	if (b) {
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		errn = decodeUnsignedInteger16(stream, &uint16);
+		*int16 = -(uint16 + 1);
+	} else {
+		/* positive */
+		errn = decodeUnsignedInteger16(stream, &uint16);
+		*int16 = (int16_t)(uint16);
 	}
 
 	return errn;
@@ -282,17 +276,19 @@ int decodeInteger32(bitstream_t* stream, int32_t* int32) {
 	uint32_t uint32;
 	int errn = decodeBoolean(stream, &b);
 
-	if (errn == 0) {
-		if (b) {
-			/* For negative values, the Unsigned Integer holds the
-			 * magnitude of the value minus 1 */
-			errn = decodeUnsignedInteger32(stream, &uint32);
-			*int32 = (int32_t)(-(uint32 + 1));
-		} else {
-			/* positive */
-			errn = decodeUnsignedInteger32(stream, &uint32);
-			*int32 = (int32_t)(uint32);
-		}
+	if (errn < 0) {
+		return errn;
+	}
+
+	if (b) {
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		errn = decodeUnsignedInteger32(stream, &uint32);
+		*int32 = (-1) * (uint32 + 1);
+	} else {
+		/* positive */
+		errn = decodeUnsignedInteger32(stream, &uint32);
+		*int32 = (int32_t)(uint32);
 	}
 
 	return errn;
@@ -309,17 +305,19 @@ int decodeInteger64(bitstream_t* stream, int64_t* int64) {
 	uint64_t uint64;
 	int errn = decodeBoolean(stream, &b);
 
-	if (errn == 0) {
-		if (b) {
-			/* For negative values, the Unsigned Integer holds the
-			 * magnitude of the value minus 1 */
-			errn = decodeUnsignedInteger64(stream, &uint64);
-			*int64 = (int64_t)(-(uint64 + 1));
-		} else {
-			/* positive */
-			errn = decodeUnsignedInteger64(stream, &uint64);
-			*int64 = (int64_t)(uint64);
-		}
+	if (errn < 0) {
+		return errn;
+	}
+
+	if (b) {
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		errn = decodeUnsignedInteger64(stream, &uint64);
+		*int64 = (-1) * (uint64 + 1);
+	} else {
+		/* positive */
+		errn = decodeUnsignedInteger64(stream, &uint64);
+		*int64 = (int64_t)(uint64);
 	}
 
 	return errn;
@@ -333,10 +331,10 @@ int decodeInteger64(bitstream_t* stream, int64_t* int64) {
  */
 int decodeFloat(bitstream_t* stream, exi_float_me_t* f) {
 	int errn = decodeInteger64(stream, &f->mantissa);
-	if (errn == 0) {
-		errn = decodeInteger16(stream, &f->exponent);
+	if (errn < 0) {
+		return errn;
 	}
-	return errn;
+	return decodeInteger16(stream, &f->exponent);
 }
 
 /**
@@ -349,12 +347,14 @@ int decodeFloat(bitstream_t* stream, exi_float_me_t* f) {
  */
 int decodeDecimal(bitstream_t* stream, exi_decimal_t* d) {
 	int errn = decodeBoolean(stream, &d->negative);
-	if (errn == 0) {
-		errn = decodeUnsignedInteger(stream, &d->integral);
-		if (errn == 0) {
-			errn = decodeUnsignedInteger(stream, &d->reverseFraction);
-		}
+	if (errn < 0) {
+		return errn;
 	}
+	errn = decodeUnsignedInteger(stream, &d->integral);
+	if (errn < 0) {
+		return errn;
+	}
+	errn = decodeUnsignedInteger(stream, &d->reverseFraction);
 
 	return errn;
 }
@@ -363,26 +363,13 @@ int decodeDecimal(bitstream_t* stream, exi_decimal_t* d) {
  * Decode a sequence of characters for a given length.
  */
 int decodeStringOnly(bitstream_t* stream, uint16_t len, exi_string_ucs_t* s) {
-	int errn = 0;
+	int errn;
 	if (len > s->size) {
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-		errn = EXI_ERROR_OUT_OF_STRING_BUFFER;
-#endif /* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-		if(s->size > 0) {
-			errn = exiFreeDynamicStringMemory(s);
-			if(errn) {
-				return errn;
-			}
-		}
-		errn = exiAllocateDynamicStringMemory(s, s->len);
-#endif /* DYNAMIC_ALLOCATION */
-	}
-	if(errn == 0) {
-		errn = decodeCharacters(stream, len, s->codepoints);
-		s->len = len;
+		/* not enough space */
+		return EXI_ERROR_OUT_OF_STRING_BUFFER;
 	}
-
+	errn = decodeCharacters(stream, len, s->codepoints);
+	s->len = len;
 	return errn;
 }
 
@@ -391,24 +378,42 @@ int decodeStringOnly(bitstream_t* stream, uint16_t len, exi_string_ucs_t* s) {
  */
 int decodeString(bitstream_t* stream, exi_string_ucs_t* s) {
 	int errn = decodeUnsignedInteger16(stream, &s->len);
-	if (errn == 0) {
-		errn = decodeStringOnly(stream, s->len, s);
+	if (errn < 0) {
+		return errn;
 	}
-	return errn;
+	return decodeStringOnly(stream, s->len, s);
 }
 
+/*
+int decodeStringASCII(bitstream_t* stream, exi_string_ascii_t* s) {
+	uint16_t slen;
+	int errn = decodeUnsignedInteger16(stream, &slen);
+	if (errn < 0) {
+		return errn;
+	}
+	if (s->size < slen) {
+		return EXI_ERROR_OUT_OF_ASCII_BUFFER;
+	}
+
+	return decodeCharactersASCII(stream, slen, s->chars);
+}
+*/
+
+
+
 static int _readStringValueLocalHit(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, uint32_t* localID) {
 	int errn;
 	uint16_t codingLength;
 
-	if( state->stringTable.sizeLocalStrings > qnameID ) {
-		errn = exiGetCodingLength(state->stringTable.numberOfLocalStrings[qnameID], &codingLength);
-		if(errn == 0) {
-			errn = decodeNBitUnsignedInteger(stream, codingLength, localID);
-		}
-	} else {
-		errn = EXI_ERROR_OUT_OF_BOUNDS;
+	if(!(state->stringTable.sizeLocalStrings > qnameID)) {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+
+	errn = exiGetCodingLength(state->stringTable.numberOfLocalStrings[qnameID], &codingLength);
+	if(errn) {
+		return errn;
 	}
+	errn = decodeNBitUnsignedInteger(stream, codingLength, localID);
 
 	return errn;
 }
@@ -419,9 +424,10 @@ static int _readStringValueGlobalHit(bitstream_t* stream, exi_state_t* state, ui
 	uint16_t codingLength;
 
 	errn = exiGetCodingLength(state->stringTable.numberOfGlobalStrings, &codingLength);
-	if(errn == 0) {
-		errn = decodeNBitUnsignedInteger(stream, codingLength, globalID);
+	if(errn) {
+		return errn;
 	}
+	errn = decodeNBitUnsignedInteger(stream, codingLength, globalID);
 
 	return errn;
 }
@@ -429,46 +435,49 @@ static int _readStringValueGlobalHit(bitstream_t* stream, exi_state_t* state, ui
 int decodeStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID, exi_string_value_t* s) {
 	uint16_t L;
 	int errn = decodeUnsignedInteger16(stream, &L);
-	if (errn == 0) {
-		switch (L) {
-		case 0:
-			/* local value partition */
-			s->type = EXI_STRING_VALUE_LOCAL_HIT;
-			errn = _readStringValueLocalHit(stream, state, qnameID, &s->localID);
-			break;
-		case 1:
-			/* found in global value partition */
-			s->type = EXI_STRING_VALUE_GLOBAL_HIT;
-			errn = _readStringValueGlobalHit(stream, state, &s->globalID);
-			break;
-		default:
-			/* not found in global value (and local value) partition
-			 * ==> string literal is encoded as a String with the length
-			 * incremented by two */
-			s->type = EXI_STRING_VALUE_MISS;
-			s->miss.len = L = (uint16_t)(L - 2);
-			errn = decodeStringOnly(stream, L, &(s->miss));
-			if(errn == 0) {
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
-				/* If length L is greater than zero the string S is added */
-				if(L > 0) {
-					/* After encoding the string value, it is added to both the
-					 * associated "local" value string table partition and the global
-					 * value string table partition */
-#if EXI_OPTION_VALUE_MAX_LENGTH < 0
-				errn = exi_v2g_AddStringValue(state, &(s->miss), qnameID);
-# else /* EXI_v2gVALUE_MAX_LENGTH < 0  */
-					if (L <= EXI_OPTION_VALUE_MAX_LENGTH) {
-						errn = exi_v2g_AddStringValue(state, &(s->miss), qnameID);
-					}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH < 0  */
-				}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
+	if (errn < 0) {
+		return errn;
+	}
+
+	switch (L) {
+	case 0:
+		/* local value partition */
+		s->type = EXI_STRING_VALUE_LOCAL_HIT;
+		errn = _readStringValueLocalHit(stream, state, qnameID, &s->localID);
+		break;
+	case 1:
+		/* found in global value partition */
+		s->type = EXI_STRING_VALUE_GLOBAL_HIT;
+		errn = _readStringValueGlobalHit(stream, state, &s->globalID);
+		break;
+	default:
+		/* not found in global value (and local value) partition
+		 * ==> string literal is encoded as a String with the length
+		 * incremented by two */
+		s->type = EXI_STRING_VALUE_MISS;
+		s->miss.len = L = L - 2;
+		errn = decodeStringOnly(stream, L, &(s->miss));
+		if(errn) {
+			return errn;
+		}
+#if EXI_VALUE_PARTITION_CAPACITY != 0
+#if EXI_VALUE_MAX_LENGTH != 0
+		/* If length L is greater than zero the string S is added */
+		if(L > 0) {
+			/* After encoding the string value, it is added to both the
+			 * associated "local" value string table partition and the global
+			 * value string table partition */
+#if EXI_VALUE_MAX_LENGTH < 0
+			errn = exi__IncrementStringValueCount(state, qnameID);
+# else /* EXI_VALUE_MAX_LENGTH < 0  */
+			if (L <= EXI_VALUE_MAX_LENGTH) {
+				errn = exi__IncrementStringValueCount(state, qnameID);
 			}
-			break;
+#endif /* EXI_VALUE_MAX_LENGTH < 0  */
 		}
+#endif /* EXI_VALUE_MAX_LENGTH != 0 */
+#endif /* EXI_VALUE_PARTITION_CAPACITY != 0 */
+		break;
 	}
 
 	return errn;
@@ -479,63 +488,58 @@ int decodeRCSStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qname
 	uint32_t cp;
 	uint16_t L;
 	int errn = decodeUnsignedInteger16(stream, &L);
-	if (errn == 0) {
-		switch (L) {
-		case 0:
-			/* local value partition */
-			s->type = EXI_STRING_VALUE_LOCAL_HIT;
-			errn = _readStringValueLocalHit(stream, state, qnameID, &s->localID);
-			break;
-		case 1:
-			/* found in global value partition */
-			s->type = EXI_STRING_VALUE_GLOBAL_HIT;
-			errn = _readStringValueGlobalHit(stream, state, &s->globalID);
-			break;
-		default:
-			/* not found in global value (and local value) partition
-			 * ==> string literal is encoded as a String with the length
-			 * incremented by two */
-			s->type = EXI_STRING_VALUE_MISS;
-			s->miss.len = L = (uint16_t)(L - 2);
-
-			if (L > s->miss.size) {
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-				errn = EXI_ERROR_OUT_OF_STRING_BUFFER;
-#endif /* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-				if(s->miss.size > 0) {
-					errn = exiFreeDynamicStringMemory(&(s->miss));
-				}
-				if(errn == 0) {
-					errn = exiAllocateDynamicStringMemory(&(s->miss), L);
-				}
-#endif /* DYNAMIC_ALLOCATION */
+	if (errn < 0) {
+		return errn;
+	}
+
+	switch (L) {
+	case 0:
+		/* local value partition */
+		s->type = EXI_STRING_VALUE_LOCAL_HIT;
+		errn = _readStringValueLocalHit(stream, state, qnameID, &s->localID);
+		break;
+	case 1:
+		/* found in global value partition */
+		s->type = EXI_STRING_VALUE_GLOBAL_HIT;
+		errn = _readStringValueGlobalHit(stream, state, &s->globalID);
+		break;
+	default:
+		/* not found in global value (and local value) partition
+		 * ==> string literal is encoded as a String with the length
+		 * incremented by two */
+		s->type = EXI_STRING_VALUE_MISS;
+		s->miss.len = L = L - 2;
+
+		if (L > s->miss.size) {
+			/* not enough space */
+			return EXI_ERROR_OUT_OF_STRING_BUFFER;
+		}
+
+		for (i = 0; i < L && errn >= 0; i++) {
+			errn = decodeNBitUnsignedInteger(stream, rcs->codingLength, &cp);
+			if (errn) {
+				return errn;
 			}
-			if(errn == 0) {
-				for (i = 0; i < L && errn >= 0; i++) {
-					errn = decodeNBitUnsignedInteger(stream, rcs->codingLength, &cp);
-					s->miss.codepoints[i] = rcs->codepoints[cp];
-				}
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
-				/* If length L is greater than zero the string S is added */
-				if(errn == 0 && L > 0) {
-					/* After encoding the string value, it is added to both the
-					 * associated "local" value string table partition and the global
-					 * value string table partition */
-#if EXI_OPTION_VALUE_MAX_LENGTH < 0
-					errn = exi_v2g_AddStringValue(state, &(s->miss), qnameID);
-# else /* EXI_OPTION_VALUE_MAX_LENGTH < 0  */
-					if (L <= EXI_OPTION_VALUE_MAX_LENGTH) {
-						errn = exi_v2g_AddStringValue(state, &(s->miss), qnameID);
-					}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH < 0  */
-				}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
+			s->miss.codepoints[i] = rcs->codepoints[cp];
+		}
+#if EXI_VALUE_PARTITION_CAPACITY != 0
+#if EXI_VALUE_MAX_LENGTH != 0
+		/* If length L is greater than zero the string S is added */
+		if(L > 0) {
+			/* After encoding the string value, it is added to both the
+			 * associated "local" value string table partition and the global
+			 * value string table partition */
+#if EXI_VALUE_MAX_LENGTH < 0
+			errn = exi__IncrementStringValueCount(state, qnameID);
+# else /* EXI_VALUE_MAX_LENGTH < 0  */
+			if (L <= EXI_VALUE_MAX_LENGTH) {
+				errn = exi__IncrementStringValueCount(state, qnameID);
 			}
-			break;
+#endif /* EXI_VALUE_MAX_LENGTH < 0  */
 		}
+#endif /* EXI_VALUE_MAX_LENGTH != 0 */
+#endif /* EXI_VALUE_PARTITION_CAPACITY != 0 */
+		break;
 	}
 
 	return errn;
@@ -549,12 +553,36 @@ int decodeRCSStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qname
 int decodeCharacters(bitstream_t* stream, uint16_t len, uint32_t* chars) {
 	unsigned int i;
 	int errn = 0;
-	for (i = 0; i < len && errn == 0; i++) {
+	for (i = 0; i < len && errn >= 0; i++) {
 		errn = decodeUnsignedInteger32(stream, &chars[i]);
+		if (errn < 0) {
+			return errn;
+		}
+	}
+
+	return errn;
+}
+
+/*
+int decodeCharactersASCII(bitstream_t* stream, uint16_t len, char* chars) {
+	unsigned int i;
+	uint32_t c;
+	int errn = 0;
+	for (i = 0; i < len && errn >= 0; i++) {
+		errn = decodeUnsignedInteger32(stream, &c);
+		if (errn < 0) {
+			return errn;
+		}
+		if (c > 127) {
+			return EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS;
+		}
+		chars[i] = c;
 	}
+	chars[i] = '\0';
 
 	return errn;
 }
+*/
 
 
 /**
@@ -564,23 +592,20 @@ int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes) {
 	unsigned int i;
 	uint8_t b;
 	int errn = decodeUnsignedInteger16(stream, &bytes->len);
-	if (errn == 0) {
-		if (bytes->len > bytes->size) {
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-			errn = EXI_ERROR_OUT_OF_BYTE_BUFFER;
-#endif /* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-			errn = exiFreeDynamicBinaryMemory(bytes);
-			if(errn == 0) {
-				errn = exiAllocateDynamicBinaryMemory(bytes, bytes->len);
-			}
-#endif /* DYNAMIC_ALLOCATION */
-		}
+	if (errn < 0) {
+		return errn;
+	}
+	if (bytes->len > bytes->size) {
+		/* not enough space */
+		return EXI_ERROR_OUT_OF_BYTE_BUFFER;
+	}
 
-		for (i = 0; i < bytes->len && errn == 0; i++) {
-			errn = decode(stream, &b);
-			bytes->data[i] = (uint8_t)b;
+	for (i = 0; i < bytes->len && errn >= 0; i++) {
+		errn = decode(stream, &b);
+		if (errn < 0) {
+			return errn;
 		}
+		bytes->data[i] = (uint8_t)b;
 	}
 
 	return errn;
@@ -591,7 +616,7 @@ int decodeBinary(bitstream_t* stream, exi_bytes_t* bytes) {
  * components of the Date-Time.
  */
 int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t* datetime) {
-	int errn = 0;
+	int errn;
 
 	datetime->type = type;
 
@@ -606,39 +631,44 @@ int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t
 	switch (type) {
 	case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */
 		errn = decodeInteger32(stream, &datetime->year);
-		if (errn == 0) {
-			datetime->year += DATETIME_YEAR_OFFSET;
+		if (errn < 0) {
+			return errn;
 		}
+		datetime->year += DATETIME_YEAR_OFFSET;
 		break;
 	case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */
 	case EXI_DATETIME_DATE:
 		errn = decodeInteger32(stream, &datetime->year);
-		if (errn == 0) {
-			datetime->year += DATETIME_YEAR_OFFSET;
-			errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
+		if (errn < 0) {
+			return errn;
 		}
+		datetime->year += DATETIME_YEAR_OFFSET;
+		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
 		break;
 	case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */
 		/* e.g. "0001-01-01T00:00:00.111+00:33"  */
 		errn = decodeInteger32(stream, &datetime->year);
-		if (errn == 0) {
-			datetime->year += DATETIME_YEAR_OFFSET;
-			errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
-			if (errn != 0) {
-				break;
-			}
+		if (errn < 0) {
+			return errn;
+		}
+		datetime->year += DATETIME_YEAR_OFFSET;
+		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
+		if (errn < 0) {
+			return errn;
 		}
 		/* no break */
 	case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */
 		/* e.g. "12:34:56.135"  */
 		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME, &datetime->time);
-		if (errn == 0) {
-			errn = decodeBoolean(stream, &datetime->presenceFractionalSecs);
-			if (errn == 0) {
-				if (datetime->presenceFractionalSecs) {
-					errn = decodeUnsignedInteger32(stream, &datetime->fractionalSecs);
-				}
-			}
+		if (errn < 0) {
+			return errn;
+		}
+		errn = decodeBoolean(stream, &datetime->presenceFractionalSecs);
+		if (errn < 0) {
+			return errn;
+		}
+		if (datetime->presenceFractionalSecs) {
+			errn = decodeUnsignedInteger32(stream, &datetime->fractionalSecs);
 		}
 		break;
 	case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */
@@ -650,16 +680,16 @@ int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, exi_datetime_t
 		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay );
 		break;
 	default:
-		errn = EXI_UNSUPPORTED_DATETIME_TYPE;
-		break;
+		return -1;
 	}
 
-	if(errn == 0) {
-		errn = decodeBoolean(stream, &datetime->presenceTimezone );
-		if (errn == 0 && datetime->presenceTimezone) {
-			errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE, &datetime->timezone);
-			datetime->timezone -= DATETIME_TIMEZONE_OFFSET_IN_MINUTES;
-		}
+	errn = decodeBoolean(stream, &datetime->presenceTimezone );
+	if (errn < 0) {
+		return errn;
+	}
+	if (datetime->presenceTimezone) {
+		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE, &datetime->timezone);
+		datetime->timezone -= DATETIME_TIMEZONE_OFFSET_IN_MINUTES;
 	}
 
 	return errn;

+ 165 - 132
src/codec/AbstractEncoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,24 +19,22 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "EncoderChannel.h"
-#include "EXIOptions.h"
+#include "CoderChannel.h"
 #include "BitOutputStream.h"
+#include "EXIOptions.h"
 #include "EXITypes.h"
 #include "ErrorCodes.h"
 #include "MethodsBag.h"
-#include "v2gEXICoder.h"
+#include "EXICoder.h"
 
 #ifndef ABSTRACT_ENCODER_CHANNEL_C
 #define ABSTRACT_ENCODER_CHANNEL_C
@@ -62,25 +60,25 @@ int encodeUnsignedInteger(bitstream_t* stream, exi_integer_t* iv) {
 		if (iv->val.int8 < 0) {
 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
 		}
-		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int8));
+		errn = encodeUnsignedInteger32(stream, iv->val.int8);
 		break;
 	case EXI_INTEGER_16:
 		if (iv->val.int16 < 0) {
 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
 		}
-		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int16));
+		errn = encodeUnsignedInteger32(stream, iv->val.int16);
 		break;
 	case EXI_INTEGER_32:
 		if (iv->val.int32 < 0) {
 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
 		}
-		errn = encodeUnsignedInteger32(stream, (uint32_t)(iv->val.int32));
+		errn = encodeUnsignedInteger32(stream, iv->val.int32);
 		break;
 	case EXI_INTEGER_64:
 		if (iv->val.int64 < 0) {
 			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
 		}
-		errn = encodeUnsignedInteger64(stream, (uint64_t)(iv->val.int64));
+		errn = encodeUnsignedInteger64(stream, iv->val.int64);
 		break;
 	default:
 		errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE;
@@ -108,28 +106,28 @@ int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) {
 		case 5:
 			errn = encode(stream, (uint8_t) (128 | n));
 			n = n >> 7;
-			if (errn != 0) {
+			if (errn < 0) {
 				break;
 			}
 			/* no break */
 		case 4:
 			errn = encode(stream, (uint8_t) (128 | n));
 			n = n >> 7;
-			if (errn != 0) {
+			if (errn < 0) {
 				break;
 			}
 			/* no break */
 		case 3:
 			errn = encode(stream, (uint8_t) (128 | n));
 			n = n >> 7;
-			if (errn != 0) {
+			if (errn < 0) {
 				break;
 			}
 			/* no break */
 		case 2:
 			errn = encode(stream, (uint8_t) (128 | n));
 			n = n >> 7;
-			if (errn != 0) {
+			if (errn < 0) {
 				break;
 			}
 			/* no break */
@@ -154,17 +152,16 @@ int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) {
 	uint8_t lastEncode = (uint8_t) n;
 	n >>= 7;
 
-	while (n != 0 && errn == 0) {
+	while (n != 0) {
 		errn = encode(stream, lastEncode | 128);
+		if (errn < 0) {
+			return errn;
+		}
 		lastEncode = (uint8_t) n;
 		n >>= 7;
 	}
 
-	if (errn == 0) {
-		errn = encode(stream, lastEncode);
-	}
-
-	return errn;
+	return encode(stream, lastEncode);
 }
 
 int encodeInteger(bitstream_t* stream, exi_integer_t* iv) {
@@ -181,7 +178,7 @@ int encodeInteger(bitstream_t* stream, exi_integer_t* iv) {
 		errn = encodeInteger64(stream, iv->val.uint32);
 		break;
 	case EXI_UNSIGNED_INTEGER_64:
-		errn = encodeInteger64(stream, (int64_t)(iv->val.uint64));
+		errn = encodeInteger64(stream, iv->val.uint64);
 		break;
 		/* (Signed) Integer */
 	case EXI_INTEGER_8:
@@ -221,10 +218,10 @@ int encodeInteger32(bitstream_t* stream, int32_t n) {
 	} else {
 		errn = encodeBoolean(stream, 0);
 	}
-	if (errn == 0) {
-		errn = encodeUnsignedInteger32(stream, (uint32_t)n);
+	if (errn < 0) {
+		return errn;
 	}
-	return errn;
+	return encodeUnsignedInteger32(stream, n);
 }
 
 /**
@@ -244,10 +241,10 @@ int encodeInteger64(bitstream_t* stream, int64_t n) {
 	} else {
 		errn = encodeBoolean(stream, 0);
 	}
-	if (errn == 0) {
-		errn = encodeUnsignedInteger64(stream, (uint64_t)n);
+	if (errn < 0) {
+		return errn;
 	}
-	return errn;
+	return encodeUnsignedInteger64(stream, n);
 }
 
 /**
@@ -258,7 +255,7 @@ int encodeInteger64(bitstream_t* stream, int64_t n) {
  */
 int encodeFloat(bitstream_t* stream, exi_float_me_t* f) {
 	int errn = encodeInteger64(stream, f->mantissa);
-	if (errn == 0) {
+	if (errn >= 0) {
 		errn = encodeInteger32(stream, f->exponent);
 	}
 	return errn;
@@ -275,21 +272,34 @@ int encodeFloat(bitstream_t* stream, exi_float_me_t* f) {
 int encodeDecimal(bitstream_t* stream, exi_decimal_t* d) {
 	/* sign, integral, reverse fractional */
 	int errn = encodeBoolean(stream, d->negative);
-	if (errn == 0) {
-		errn = encodeUnsignedInteger(stream, &d->integral);
-		if (errn == 0) {
-			errn = encodeUnsignedInteger(stream, &d->reverseFraction);
-		}
+	if (errn < 0) {
+		return errn;
 	}
+	errn = encodeUnsignedInteger(stream, &d->integral);
+	if (errn < 0) {
+		return errn;
+	}
+	errn = encodeUnsignedInteger(stream, &d->reverseFraction);
+
 	return errn;
 }
 
 /**
  * Encode a length prefixed sequence of characters.
  */
+/*int encodeASCII(bitstream_t* stream, const char* ascii) {
+ int errn;
+ uint32_t slen = (uint32_t) strlen(ascii);
+ errn = encodeUnsignedInteger32(stream, slen);
+ if (errn >= 0) {
+ errn = encodeASCIICharacters(stream, ascii, slen);
+ }
+ return errn;
+ }*/
+
 int encodeString(bitstream_t* stream, exi_string_ucs_t* string) {
 	int errn = encodeUnsignedInteger32(stream, string->len);
-	if (errn == 0) {
+	if (errn >= 0) {
 		errn = encodeUCSCharacters(stream, string->codepoints, string->len);
 	}
 	return errn;
@@ -300,16 +310,17 @@ static int _writeStringValueLocalHit(bitstream_t* stream, exi_state_t* state,
 	int errn;
 	uint16_t codingLength;
 
-	if(state->stringTable.sizeLocalStrings > qnameID) {
-		errn = exiGetCodingLength(state->stringTable.numberOfLocalStrings[qnameID],
-				&codingLength);
-		if (errn == 0) {
-			errn = encodeNBitUnsignedInteger(stream, codingLength, localID);
-		}
-	} else {
-		errn = EXI_ERROR_OUT_OF_BOUNDS;
+	if(!(state->stringTable.sizeLocalStrings > qnameID)) {
+		return EXI_ERROR_OUT_OF_BOUNDS;
 	}
 
+	errn = exiGetCodingLength(state->stringTable.numberOfLocalStrings[qnameID],
+			&codingLength);
+	if (errn) {
+		return errn;
+	}
+	errn = encodeNBitUnsignedInteger(stream, codingLength, localID);
+
 	return errn;
 }
 
@@ -319,9 +330,10 @@ static int _writeStringValueGlobalHit(bitstream_t* stream, exi_state_t* state,
 	uint16_t codingLength;
 
 	errn = exiGetCodingLength(state->stringTable.numberOfGlobalStrings, &codingLength);
-	if (errn == 0) {
-		errn = encodeNBitUnsignedInteger(stream, codingLength, globalID);
+	if (errn) {
+		return errn;
 	}
+	errn = encodeNBitUnsignedInteger(stream, codingLength, globalID);
 
 	return errn;
 }
@@ -333,44 +345,44 @@ int encodeStringValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID,
 	switch (string->type) {
 	case EXI_STRING_VALUE_LOCAL_HIT:
 		errn = encodeUnsignedInteger32(stream, 0);
-		if (errn == 0) {
-			errn = _writeStringValueLocalHit(stream, state, qnameID,
-					string->localID);
+		if (errn) {
+			return errn;
 		}
+		errn = _writeStringValueLocalHit(stream, state, qnameID,
+				string->localID);
 		break;
 	case EXI_STRING_VALUE_GLOBAL_HIT:
 		errn = encodeUnsignedInteger32(stream, 1);
-		if (errn == 0) {
-			errn = _writeStringValueGlobalHit(stream, state, string->globalID);
+		if (errn) {
+			return errn;
 		}
+		errn = _writeStringValueGlobalHit(stream, state, string->globalID);
 		break;
 	case EXI_STRING_VALUE_MISS:
 		/* encode string as string table miss */
-		errn = encodeUnsignedInteger32(stream, (uint32_t)(string->miss.len + 2));
-		if (errn == 0) {
+		errn = encodeUnsignedInteger32(stream, string->miss.len + 2);
+		if (errn >= 0) {
 			errn = encodeUCSCharacters(stream, string->miss.codepoints,
 					string->miss.len);
-			if (errn == 0) {
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
-				/* If length L is greater than zero the string S is added */
-				if (string->miss.len > 0) {
-					/* After encoding the string value, it is added to both the
-					 * associated "local" value string table partition and the global
-					 * value string table partition */
-#if EXI_OPTION_VALUE_MAX_LENGTH < 0
-			errn = exi_v2g_AddStringValue(state, &(string->miss), qnameID);
-# else /* EXI_OPTION_VALUE_MAX_LENGTH < 0  */
-					if (string->miss.len <= EXI_OPTION_VALUE_MAX_LENGTH) {
-						errn = exi_v2g_AddStringValue(state, &(string->miss),
-								qnameID);
-					}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH < 0  */
-				}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
+		}
+#if EXI_VALUE_PARTITION_CAPACITY != 0
+#if EXI_VALUE_MAX_LENGTH != 0
+		/* If length L is greater than zero the string S is added */
+		if (string->miss.len > 0) {
+			/* After encoding the string value, it is added to both the
+			 * associated "local" value string table partition and the global
+			 * value string table partition */
+#if EXI_VALUE_MAX_LENGTH < 0
+			errn = exi__IncrementStringValueCount(state, qnameID);
+# else /* EXI_VALUE_MAX_LENGTH < 0  */
+			if (string->miss.len <= EXI_VALUE_MAX_LENGTH) {
+				errn = exi__IncrementStringValueCount(state,
+						qnameID);
 			}
+#endif /* EXI_VALUE_MAX_LENGTH < 0  */
 		}
+#endif /* EXI_VALUE_MAX_LENGTH != 0 */
+#endif /* EXI_VALUE_PARTITION_CAPACITY != 0 */
 		break;
 	default:
 		errn = EXI_UNSUPPORTED_STRING_VALUE_TYPE;
@@ -389,49 +401,56 @@ int encodeRCSStringValue(bitstream_t* stream, exi_state_t* state,
 	switch (string->type) {
 	case EXI_STRING_VALUE_LOCAL_HIT:
 		errn = encodeUnsignedInteger32(stream, 0);
-		if (errn == 0) {
-			errn = _writeStringValueLocalHit(stream, state, qnameID,
-					string->localID);
+		if (errn) {
+			return errn;
 		}
+		errn = _writeStringValueLocalHit(stream, state, qnameID,
+				string->localID);
 		break;
 	case EXI_STRING_VALUE_GLOBAL_HIT:
 		errn = encodeUnsignedInteger32(stream, 1);
-		if (errn == 0) {
-			errn = _writeStringValueGlobalHit(stream, state, string->globalID);
+		if (errn) {
+			return errn;
 		}
+		errn = _writeStringValueGlobalHit(stream, state, string->globalID);
 		break;
 	case EXI_STRING_VALUE_MISS:
 		/* encode string as string table miss */
-		errn = encodeUnsignedInteger32(stream, (uint32_t)(string->miss.len + 2));
-		if (errn == 0) {
-			for (i = 0; i < string->miss.len && errn == 0; i++) {
-				for (k = 0; k < rcs->size && errn == 0; k++) {
-					if (rcs->codepoints[k] == string->miss.codepoints[i]) {
-						errn = encodeNBitUnsignedInteger(stream, rcs->codingLength,
-								k);
-						break; /* break inner for loop */
+		errn = encodeUnsignedInteger32(stream, string->miss.len + 2);
+		if (errn) {
+			return errn;
+		}
+
+		for (i = 0; i < string->miss.len; i++) {
+			for (k = 0; k < rcs->size; k++) {
+				if (rcs->codepoints[k] == string->miss.codepoints[i]) {
+					errn = encodeNBitUnsignedInteger(stream, rcs->codingLength,
+							k);
+					if (errn) {
+						return errn;
 					}
+					break; /* break inner for loop */
 				}
 			}
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
-			/* If length L is greater than zero the string S is added */
-			if (errn == 0 && string->miss.len > 0) {
-				/* After encoding the string value, it is added to both the
-				 * associated "local" value string table partition and the global
-				 * value string table partition */
-#if EXI_OPTION_VALUE_MAX_LENGTH < 0
-				errn = exi_v2g_AddStringValue(state, &(string->miss), qnameID);
-#else /* EXI_OPTION_VALUE_MAX_LENGTH < 0 */
-				if (string->miss.len <= EXI_OPTION_VALUE_MAX_LENGTH) {
-					errn = exi_v2g_AddStringValue(state, &(string->miss),
-							qnameID);
-				}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH < 0 */
+		}
+#if EXI_VALUE_PARTITION_CAPACITY != 0
+#if EXI_VALUE_MAX_LENGTH != 0
+		/* If length L is greater than zero the string S is added */
+		if (string->miss.len > 0) {
+			/* After encoding the string value, it is added to both the
+			 * associated "local" value string table partition and the global
+			 * value string table partition */
+#if EXI_VALUE_MAX_LENGTH < 0
+			errn = exi__IncrementStringValueCount(state, qnameID);
+#else /* EXI_VALUE_MAX_LENGTH < 0 */
+			if (string->miss.len <= EXI_VALUE_MAX_LENGTH) {
+				errn = exi__IncrementStringValueCount(state,
+						qnameID);
 			}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
+#endif /* EXI_VALUE_MAX_LENGTH < 0 */
 		}
+#endif /* EXI_VALUE_MAX_LENGTH != 0 */
+#endif /* EXI_VALUE_PARTITION_CAPACITY != 0 */
 		break;
 	default:
 		errn = EXI_UNSUPPORTED_STRING_VALUE_TYPE;
@@ -449,12 +468,21 @@ int encodeRCSStringValue(bitstream_t* stream, exi_state_t* state,
 int encodeUCSCharacters(bitstream_t* stream, uint32_t* chars, uint16_t len) {
 	unsigned int i;
 	int errn = 0;
-	for (i = 0; i < len && errn == 0; i++) {
+	for (i = 0; i < len && errn >= 0; i++) {
 		errn = encodeUnsignedInteger32(stream, chars[i]);
 	}
 	return errn;
 }
 
+/*int encodeASCIICharacters(bitstream_t* stream, const char* chars, uint16_t len) {
+ unsigned int i;
+ int errn = 0;
+ for (i = 0; i < len && errn >= 0; i++) {
+ errn = encode(stream, chars[i]);
+ }
+ return errn;
+ }*/
+
 /**
  * Encode a binary value as a length-prefixed sequence of octets.
  */
@@ -462,7 +490,7 @@ int encodeBinary(bitstream_t* stream, exi_bytes_t* bytes) {
 	unsigned int i;
 	int errn = encodeUnsignedInteger32(stream, bytes->len);
 
-	for (i = 0; i < bytes->len && errn == 0; i++) {
+	for (i = 0; i < bytes->len && errn >= 0; i++) {
 		errn = encode(stream, bytes->data[i]);
 	}
 	return errn;
@@ -481,33 +509,37 @@ int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime) {
 	case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */
 	case EXI_DATETIME_DATE: /* Year, MonthDay, [TimeZone] */
 		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
-		if (errn == 0) {
-			errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
-					datetime->monthDay);
+		if (errn < 0) {
+			return errn;
 		}
+		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
+				datetime->monthDay);
 		break;
 	case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */
 		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
-		if (errn == 0) {
-			errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
-					datetime->monthDay);
-			if (errn != 0) {
-				break;
-			}
+		if (errn < 0) {
+			return errn;
+		}
+		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY,
+				datetime->monthDay);
+		if (errn < 0) {
+			return errn;
 		}
 		/* no break */
 	case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */
 		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME,
 				datetime->time);
-		if (errn == 0) {
-			if (datetime->presenceFractionalSecs) {
-				errn = encodeBoolean(stream, 1);
-				if (errn == 0) {
-					errn = encodeUnsignedInteger32(stream, datetime->fractionalSecs);
-				}
-			} else {
-				errn = encodeBoolean(stream, 0);
+		if (errn < 0) {
+			return errn;
+		}
+		if (datetime->presenceFractionalSecs) {
+			encodeBoolean(stream, 1);
+			if (errn < 0) {
+				return errn;
 			}
+			encodeUnsignedInteger32(stream, datetime->fractionalSecs);
+		} else {
+			encodeBoolean(stream, 0);
 		}
 		break;
 	case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */
@@ -517,20 +549,21 @@ int encodeDateTime(bitstream_t* stream, exi_datetime_t* datetime) {
 				datetime->monthDay);
 		break;
 	default:
-		errn = EXI_UNSUPPORTED_DATETIME_TYPE;
-		break;
+		return EXI_UNSUPPORTED_DATETIME_TYPE;
 	}
-	if (errn == 0) {
-		/* [TimeZone] */
-		if (datetime->presenceTimezone) {
-			errn = encodeBoolean(stream, 1);
-			if (errn == 0) {
-				errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE,
-						datetime->timezone + DATETIME_TIMEZONE_OFFSET_IN_MINUTES);
-			}
-		} else {
-			errn = encodeBoolean(stream, 0);
+	if (errn < 0) {
+		return errn;
+	}
+	/* [TimeZone] */
+	if (datetime->presenceTimezone) {
+		errn = encodeBoolean(stream, 1);
+		if (errn < 0) {
+			return errn;
 		}
+		encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE,
+				datetime->timezone + DATETIME_TIMEZONE_OFFSET_IN_MINUTES);
+	} else {
+		encodeBoolean(stream, 0);
 	}
 
 	return errn;

+ 12 - 16
src/codec/BitDecoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -39,19 +36,19 @@
 #define BIT_DECODER_CHANNEL_C
 
 
-#if EXI_OPTION_ALIGNMENT == BIT_PACKED
+#if EXI_ALIGNMENT == BIT_PACKED
 
 int decode(bitstream_t* stream, uint8_t* b) {
 	uint32_t bb;
 	int errn =  readBits(stream, 8, &bb);
-	if (errn == 0) {
-		if (bb > 256) {
-			errn = EXI_ERROR_UNEXPECTED_BYTE_VALUE;
-		} else {
-			*b = (uint8_t)bb;
-		}
+	if (errn < 0) {
+		return errn;
+	}
+	if (bb > 256) {
+		return EXI_ERROR_UNEXPECTED_BYTE_VALUE;
+	} else {
+		*b = (uint8_t)bb;
 	}
-
 	return errn;
 }
 
@@ -63,13 +60,12 @@ int decodeBoolean(bitstream_t* stream, int* b) {
 }
 
 int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32) {
-	int errn = 0;
 	if (nbits == 0) {
 		*uint32 = 0;
+		return 0;
 	} else {
-		errn= readBits(stream, nbits, uint32);
+		return readBits(stream, nbits, uint32);
 	}
-	return errn;
 }
 
 #endif

+ 6 - 11
src/codec/BitEncoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,27 +19,23 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "EncoderChannel.h"
-
-#include "EXIOptions.h"
+#include "CoderChannel.h"
 #include "BitOutputStream.h"
 #include "EXITypes.h"
 
 #ifndef BIT_ENCODER_CHANNEL_C
 #define BIT_ENCODER_CHANNEL_C
 
-#if EXI_OPTION_ALIGNMENT == BIT_PACKED
+#if EXI_ALIGNMENT == BIT_PACKED
 
 
 int encode(bitstream_t* stream, uint8_t b) {
@@ -61,11 +57,10 @@ int encodeBoolean(bitstream_t* stream, int b) {
  * b starting with the most significant, i.e. from left to right.
  */
 int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val)  {
-	int errn = 0;
 	if (nbits > 0) {
-		errn = writeBits(stream, nbits, val);
+		return writeBits(stream, nbits, val);
 	}
-	return errn;
+	return 0;
 }
 
 /**

+ 39 - 34
src/codec/BitInputStream.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,19 +19,15 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "BitInputStream.h"
-#include "EXIConfig.h"
 #include "EXITypes.h"
 #include "ErrorCodes.h"
 
@@ -56,10 +52,9 @@ static int readBuffer(bitstream_t* stream)
 		stream->buffer = (uint8_t)(getc(stream->file));
 		/* EOF cannot be used, 0xFF valid value */
 		if ( feof(stream->file) || ferror(stream->file) ) {
-			errn = EXI_ERROR_INPUT_STREAM_EOF;
-		} else {
-			stream->capacity = BITS_IN_BYTE;
+			return EXI_ERROR_INPUT_STREAM_EOF;
 		}
+		stream->capacity = BITS_IN_BYTE;
 #endif
 	}
 	return errn;
@@ -68,36 +63,46 @@ static int readBuffer(bitstream_t* stream)
 int readBits(bitstream_t* stream, uint16_t num_bits, uint32_t* b)
 {
 	int errn = readBuffer(stream);
-	if (errn == 0) {
-		/* read the bits in one step */
-		if(num_bits <= stream->capacity) {
-			stream->capacity = (uint8_t)(stream->capacity - num_bits);
-			*b = (uint32_t)((stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits)));
-		} else {
-			/* read bits as much as possible */
-			*b = (uint32_t)(stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity)));
-			num_bits = (uint16_t)(num_bits - stream->capacity);
-			stream->capacity = 0;
+	if (errn < 0) {
+		return errn;
+	}
 
-			/* read whole bytes */
-			while(errn == 0 && num_bits >= 8)
-			{
-				errn = readBuffer(stream);
-				*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
-				num_bits = (uint16_t)(num_bits - BITS_IN_BYTE);
-				stream->capacity = 0;
+	/* read the bits in one step */
+	if(num_bits <= stream->capacity)
+	{
+		stream->capacity -= (uint8_t)num_bits;
+		*b = (stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits));
+	}
+	else
+	{
+		/* read bits as much as possible */
+		*b = stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity));
+		num_bits -= stream->capacity;
+		stream->capacity = 0;
+
+		/* read whole bytes */
+		while(num_bits >= 8)
+		{
+			errn = readBuffer(stream);
+			if (errn < 0) {
+				return errn;
 			}
+			*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
+			num_bits -= BITS_IN_BYTE;
+			stream->capacity = 0;
+		}
 
-			/* read the spare bits in the buffer */
-			if(errn == 0 && num_bits > 0)
-			{
-				errn = readBuffer(stream);
-				if (errn == 0) {
-					*b = ( (*b) << num_bits) | (uint8_t)(stream->buffer  >> (BITS_IN_BYTE - num_bits)) ;
-					stream->capacity = (uint8_t)(BITS_IN_BYTE - num_bits);
-				}
+		/* read the spare bits in the buffer */
+		if(num_bits>0)
+		{
+			errn = readBuffer(stream);
+			if (errn < 0) {
+				return errn;
 			}
+			*b = ((*b) << num_bits) | (stream->buffer >> (BITS_IN_BYTE - num_bits));
+			stream->capacity = (uint8_t)(BITS_IN_BYTE - num_bits);
 		}
+		
 	}
 
 	return errn;

+ 2 - 5
src/codec/BitInputStream.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 24 - 31
src/codec/BitOutputStream.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,19 +19,15 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "BitOutputStream.h"
-#include "EXIConfig.h"
 #include "EXITypes.h"
 #include "ErrorCodes.h"
 
@@ -39,24 +35,23 @@
 #define BIT_OUTPUT_STREAM_C
 
 int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t val) {
-	int errn = 0;
 	/*  is there enough space in the buffer */
 	if (nbits <= stream->capacity) {
 		/* all bits fit into the current buffer */
-		stream->buffer = (uint8_t)(stream->buffer << (nbits)) | (uint8_t)(val & (uint32_t)(0xff >> (uint32_t)(BITS_IN_BYTE - nbits)));
-		stream->capacity = (uint8_t)(stream->capacity - nbits);
+		stream->buffer = (stream->buffer << (nbits)) | (val & (0xff
+				>> (BITS_IN_BYTE - nbits)));
+		stream->capacity -= (uint8_t)nbits;
 		/* if the buffer is full write byte */
 		if (stream->capacity == 0) {
 #if EXI_STREAM == BYTE_ARRAY
 			if ((*stream->pos) >= stream->size) {
-				errn = EXI_ERROR_OUTPUT_STREAM_EOF;
-			} else {
-				stream->data[(*stream->pos)++] = stream->buffer;
+				return EXI_ERROR_OUTPUT_STREAM_EOF;
 			}
+			stream->data[(*stream->pos)++] = stream->buffer;
 #endif
 #if EXI_STREAM == FILE_STREAM
 			if ( putc(stream->buffer, stream->file) == EOF ) {
-				errn = EXI_ERROR_OUTPUT_STREAM_EOF;
+				return EXI_ERROR_OUTPUT_STREAM_EOF;
 			}
 #endif
 			stream->capacity = BITS_IN_BYTE;
@@ -65,37 +60,36 @@ int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t val) {
 	} else {
 		/* the buffer is not enough
 		 * fill the buffer */
-		stream->buffer = (uint8_t)(stream->buffer << stream->capacity) |
-				( (uint8_t)(val >> (nbits - stream->capacity)) & (uint8_t)(0xff >> (BITS_IN_BYTE - stream->capacity)) );
+		stream->buffer = (stream->buffer << stream->capacity) | ((val >> (nbits
+				- stream->capacity)) & (0xff >> (BITS_IN_BYTE
+				- stream->capacity)));
 
-		nbits = (uint16_t)(nbits - stream->capacity);
+		nbits -= stream->capacity;
 #if EXI_STREAM == BYTE_ARRAY
 		if ((*stream->pos) >= stream->size) {
-			errn = EXI_ERROR_OUTPUT_STREAM_EOF;
-		} else {
-			stream->data[(*stream->pos)++] = stream->buffer;
+			return EXI_ERROR_OUTPUT_STREAM_EOF;
 		}
+		stream->data[(*stream->pos)++] = stream->buffer;
 #endif
 #if EXI_STREAM == FILE_STREAM
 		if ( putc(stream->buffer, stream->file) == EOF ) {
-			errn = EXI_ERROR_OUTPUT_STREAM_EOF;
+			return EXI_ERROR_OUTPUT_STREAM_EOF;
 		}
 #endif
 		stream->buffer = 0;
 
 		/* write whole bytes */
-		while (errn == 0 && nbits >= BITS_IN_BYTE) {
-			nbits = (uint16_t)(nbits - BITS_IN_BYTE);
+		while (nbits >= BITS_IN_BYTE) {
+			nbits -= BITS_IN_BYTE;
 #if EXI_STREAM == BYTE_ARRAY
 			if ((*stream->pos) >= stream->size) {
-				errn = EXI_ERROR_OUTPUT_STREAM_EOF;
-			} else {
-				stream->data[(*stream->pos)++] = (val >> (nbits));
+				return EXI_ERROR_OUTPUT_STREAM_EOF;
 			}
+			stream->data[(*stream->pos)++] = (val >> (nbits));
 #endif
 #if EXI_STREAM == FILE_STREAM
-			if ( putc((int)(val >> (nbits)), stream->file) == EOF ) {
-				errn = EXI_ERROR_OUTPUT_STREAM_EOF;
+			if ( putc((val >> (nbits)), stream->file) == EOF ) {
+				return EXI_ERROR_OUTPUT_STREAM_EOF;
 			}
 #endif
 		}
@@ -105,20 +99,19 @@ int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t val) {
 		stream->capacity = (uint8_t)(BITS_IN_BYTE - (nbits));
 	}
 
-	return errn;
+	return 0;
 }
 
 /**
  * Flush output
  */
 int flush(bitstream_t* stream) {
-	int errn = 0;
 	if (stream->capacity == BITS_IN_BYTE) {
 		/* nothing to do, no bits in buffer */
+		return 0;
 	} else {
-		errn = writeBits(stream, stream->capacity, 0);
+		return writeBits(stream, stream->capacity, 0);
 	}
-	return errn;
 }
 
 #endif

+ 2 - 5
src/codec/BitOutputStream.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 11 - 11
src/codec/ByteDecoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,19 +19,16 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "DecoderChannel.h"
-#include "EXIOptions.h"
+#include "CoderChannel.h"
 #include "BitInputStream.h"
 #include "EXITypes.h"
 #include "ErrorCodes.h"
@@ -40,7 +37,7 @@
 #define BYTE_DECODER_CHANNEL_C
 
 
-#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
+#if EXI_ALIGNMENT == BYTE_ALIGNMENT
 
 int decode(bitstream_t* stream, uint8_t* b) {
 	int errn = 0;
@@ -55,7 +52,7 @@ int decode(bitstream_t* stream, uint8_t* b) {
 	*b = (uint8_t)(getc(stream->file));
 	/* EOF cannot be used, 0xFF valid value */
 	if ( feof(stream->file) || ferror(stream->file) ) {
-		errn = EXI_ERROR_INPUT_STREAM_EOF;
+		return EXI_ERROR_INPUT_STREAM_EOF;
 	}
 #endif /* EXI_STREAM == FILE_STREAM */
 
@@ -79,10 +76,13 @@ int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uin
 	int errn = 0;
 	*uint32 = 0;
 
-	while (errn == 0 && bitsRead < nbits) {
+	while (bitsRead < nbits) {
 		errn = decode(stream, &b);
-		*uint32 = *uint32 + (uint32_t)(b << bitsRead);
-		bitsRead = (uint16_t)(bitsRead + 8);
+		if (errn != 0) {
+			return errn;
+		}
+		*uint32 += (b << bitsRead);
+		bitsRead += 8;
 	}
 
 	return errn;

+ 21 - 37
src/codec/ByteEncoderChannel.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,20 +19,16 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include "EncoderChannel.h"
-
-#include "EXIOptions.h"
+#include "CoderChannel.h"
 #include "BitOutputStream.h"
 #include "EXITypes.h"
 #include "MethodsBag.h"
@@ -41,24 +37,25 @@
 #ifndef BYTE_ENCODER_CHANNEL_C
 #define BYTE_ENCODER_CHANNEL_C
 
-#if EXI_OPTION_ALIGNMENT == BYTE_ALIGNMENT
+#if EXI_ALIGNMENT == BYTE_ALIGNMENT
 
 
 int encode(bitstream_t* stream, uint8_t b) {
-	int errn = 0;
 #if EXI_STREAM == BYTE_ARRAY
 	if ( (*stream->pos) < stream->size ) {
 		stream->data[(*stream->pos)++] = b;
+		return 0;
 	} else {
-		errn = EXI_ERROR_OUTPUT_STREAM_EOF;
+		return EXI_ERROR_OUTPUT_STREAM_EOF;
 	}
 #endif /* EXI_STREAM == BYTE_ARRAY */
 #if EXI_STREAM == FILE_STREAM
 	if ( putc(b, stream->file) == EOF ) {
-		errn = EXI_ERROR_OUTPUT_STREAM_EOF;
+		return EXI_ERROR_OUTPUT_STREAM_EOF;
+	} else {
+		return 0;
 	}
 #endif /* EXI_STREAM == FILE_STREAM */
-	return errn;
 }
 
 /**
@@ -76,44 +73,31 @@ int encodeBoolean(bitstream_t* stream, int b) {
  * b starting with the most significant, i.e. from left to right.
  */
 int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val)  {
-	int errn = 0;
 	if (nbits > 0) {
 		if (nbits < 9) {
 			/* 1 byte */
-			errn = encode(stream, val & 0xff);
+			encode(stream, val & 0xff);
 		} else if (nbits < 17) {
 			/* 2 bytes */
-			errn = encode(stream, val & 0x00ff);
-			if(errn == 0) {
-				errn = encode(stream, (uint8_t)((val & 0xff00) >> 8));
-			}
+			encode(stream, val & 0x00ff);
+			encode(stream, (val & 0xff00) >> 8);
 		} else if (nbits < 25) {
 			/* 3 bytes */
-			errn = encode(stream, val & 0x0000ff);
-			if(errn == 0) {
-				errn = encode(stream, (uint8_t)((val & 0x00ff00) >> 8));
-				if(errn == 0) {
-					errn = encode(stream, (uint8_t)((val & 0xff0000) >> 16));
-				}
-			}
+			encode(stream, val & 0x0000ff);
+			encode(stream, (val & 0x00ff00) >> 8);
+			encode(stream, (uint8_t)((val & 0xff0000) >> 16));
 		} else if (nbits < 33) {
 			/* 4 bytes */
-			errn = encode(stream, val & 0x000000ff);
-			if(errn == 0) {
-				errn = encode(stream, (uint8_t)((val & 0x0000ff00) >> 8));
-				if(errn == 0) {
-					errn = encode(stream, (uint8_t)((val & 0x00ff0000) >> 16));
-					if(errn == 0) {
-						errn = encode(stream, (uint8_t)((val & 0xff000000) >> 24));
-					}
-				}
-			}
+			encode(stream, val & 0x000000ff);
+			encode(stream, (val & 0x0000ff00) >> 8);
+			encode(stream, (uint8_t)((val & 0x00ff0000) >> 16));
+			encode(stream, (uint8_t)((val & 0xff000000) >> 24));
 		} else {
 			/* TODO Currently not more than 4 Bytes allowed for NBitUnsignedInteger */
-			errn = EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH;
+			return EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH;
 		}
 	}
-	return errn;
+	return 0;
 }
 
 

+ 10 - 17
src/codec/ByteStream.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,36 +31,32 @@
 /* warning C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. */
 #define _CRT_SECURE_NO_DEPRECATE
 
-#include <stdio.h>
-
 #include "EXITypes.h"
 #include "ErrorCodes.h"
 
 #ifndef BYTE_STREAM_C
 #define BYTE_STREAM_C
 
-int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t* pos) {
+int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t pos) {
 	FILE* f;
 	int character;
-	int errn = 0;
 
 	f = fopen(filename, "rb");
 
 	if (f == NULL) {
-		errn = EXI_ERROR_INPUT_FILE_HANDLE;
+		return EXI_ERROR_INPUT_FILE_HANDLE;
 	} else {
 		/* read bytes */
-		while (errn == 0 && (character = getc(f)) != EOF) {
-			if (*pos >= size) {
-				errn = EXI_ERROR_OUT_OF_BYTE_BUFFER;
-			} else {
-				data[(*pos)++] = (uint8_t) character;
+		while ((character = getc(f)) != EOF) {
+			if (pos >= size) {
+				return EXI_ERROR_OUT_OF_BYTE_BUFFER;
 			}
+			data[pos++] = (uint8_t) character;
 		}
 		fclose(f);
 	}
 
-	return errn;
+	return pos;
 }
 
 int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename) {
@@ -85,5 +78,5 @@ int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename) {
 }
 
 
-#endif /* BYTE_STREAM_C */
+#endif
 

+ 5 - 7
src/codec/ByteStream.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -67,9 +64,10 @@ int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename);
  * \return                  	Error-Code <> 0
  *
  */
-int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t* pos);
+int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t pos);
+
+#endif
 
-#endif /* BYTE_STREAM_H */
 
 #ifdef __cplusplus
 }

+ 3 - 6
src/codec/DecoderChannel.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -40,8 +37,8 @@ extern "C" {
  *
  */
 
-#include "EXIOptions.h"
 #include "EXITypes.h"
+#include "CoderChannel.h"
 
 #ifndef DECODER_CHANNEL_H
 #define DECODER_CHANNEL_H

+ 0 - 101
src/codec/DynamicMemory.c

@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#include "DynamicMemory.h"
-
-#include <string.h>
-
-#include "EXIConfig.h"
-#include "EXITypes.h"
-#include "ErrorCodes.h"
-
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-#include <stdlib.h>
-
-#ifndef DYNAMIC_MEMORY_C
-#define DYNAMIC_MEMORY_C
-
-
-int exiAllocateDynamicStringMemory(exi_string_ucs_t* s, uint16_t length) {
-	int errn = 0;
-	/* allocate dynamic memory */
-	s->size = length; /* length << 1; */ /* length * 2 */
-	s->codepoints = (uint32_t*) malloc(s->size * sizeof(uint32_t));
-
-	if(NULL == s->codepoints) {
-		s->size = 0;
-		errn = EXI_ERROR_OUT_OF_STRING_BUFFER;
-	}
-
-	return errn;
-}
-
-int exiAllocateDynamicBinaryMemory(exi_bytes_t* b, uint16_t length) {
-	int errn = 0;
-	/* allocate dynamic memory */
-	b->size = length; /* length << 1; */ /* length * 2 */
-	b->data = (uint8_t*) malloc(b->size * sizeof(uint8_t));
-
-	if(NULL == b->data) {
-		b->size = 0;
-		errn = EXI_ERROR_OUT_OF_BYTE_BUFFER;
-	}
-
-	return errn;
-}
-
-
-
-int exiFreeDynamicStringMemory(exi_string_ucs_t* s) {
-	/* free previous allocated memory, if any */
-	if(s->size != 0) {
-		s->size = 0;
-		free(s->codepoints);
-	}
-
-	return 0;
-}
-
-int exiFreeDynamicBinaryMemory(exi_bytes_t* b) {
-	/* free previous allocated memory, if any */
-	if(b->size != 0) {
-		b->size = 0;
-		free(b->data);
-	}
-
-	return 0;
-}
-
-
-#endif
-
-#endif /* DYNAMIC_ALLOCATION */

+ 0 - 101
src/codec/DynamicMemory.h

@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXIConfig.h"
-#include "EXITypes.h"
-
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-
-/**
- * \file 	DynamicMemory.h
- * \brief 	Utilities to allocate and free EXI datatypes memory
- *
- */
-
-#ifndef DYNAMIC_MEMORY_H
-#define DYNAMIC_MEMORY_H
-
-/**
- * \brief 		Allocates memory for at least the length of the string
- *
- * \param       s				UCS String to allocate memory for
- * \param       length			Length
- * \return                  	Error-Code <> 0
- *
- */
-int exiAllocateDynamicStringMemory(exi_string_ucs_t* s, uint16_t length);
-
-
-/**
- * \brief 		Allocates memory for at least the length of the string
- *
- * \param       b				Binary to allocate memory for
- * \param      	length			Length
- * \return                  	Error-Code <> 0
- *
- */
-int exiAllocateDynamicBinaryMemory(exi_bytes_t* b, uint16_t length);
-
-
-/**
- * \brief 		Free String Memory (if any)
- *
- * \param       s				UCS String
- * \return                  	Error-Code <> 0
- *
- */
-int exiFreeDynamicStringMemory(exi_string_ucs_t* s);
-
-
-/**
- * \brief 		Free Binary Memory (if any)
- *
- * \param       s				UCS String
- * \return                  	Error-Code <> 0
- *
- */
-int exiFreeDynamicBinaryMemory(exi_bytes_t* b);
-
-
-
-#endif
-
-#endif /* DYNAMIC_ALLOCATION */
-
-
-#ifdef __cplusplus
-}
-#endif

Datei-Diff unterdrückt, da er zu groß ist
+ 1861 - 0
src/codec/EXICoder.c


+ 17 - 21
src/codec/v2gEXICoder.h → src/codec/EXICoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,37 +31,36 @@
 extern "C" {
 #endif
 
-#ifndef EXI_v2g_CODER_H
-#define EXI_v2g_CODER_H
+#ifndef EXI__CODER_H
+#define EXI__CODER_H
 
 #include "EXITypes.h"
 
 #define DOCUMENT 0
-#define DOC_CONTENT 1
-#define DOC_END 22
+#define DOC_CONTENT 126
+#define DOC_END 127
+#define UR_TYPE_GRAMMAR_0 227
+#define UR_TYPE_GRAMMAR_1 228
 
 
 /* increments global and local string count */
-/* in case of dynamic memory string is collected */
-int exi_v2g_AddStringValue(exi_state_t* state, exi_string_ucs_t* sv, uint16_t qnameID);
-
-int exi_v2g_PushStack(exi_state_t* state, int16_t newState, uint16_t qnameID);
+int exi__IncrementStringValueCount(exi_state_t* state, uint16_t qnameID);
 
-int exi_v2g_PopStack(exi_state_t* state);
+int exi__PushStack(exi_state_t* state, int16_t newState, uint16_t qnameID);
 
-int exi_v2g_HandleXsiNilTrue(exi_state_t* state);
+int exi__PopStack(exi_state_t* state);
 
-int exi_v2g_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType);
+int exi__HandleXsiNilTrue(exi_state_t* state);
 
-int exi_v2g_RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID);
+int exi__HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType);
 
-int exi_v2g_LearnAttribute(exi_state_t* state, uint16_t uriID, uint16_t localID);
+int exi__RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID);
 
-int exi_v2g_LearnEndElement(exi_state_t* state);
+int exi__LearnAttribute(exi_state_t* state, uint16_t qnameID, uint16_t uriID, uint16_t localID);
 
-int exi_v2g_IsStartContent(int16_t ruleID);
+int exi__IsStartContent(int16_t ruleID);
 
-int exi_v2g_MoveToElementContentRule(exi_state_t* state);
+int exi__MoveToElementContentRule(exi_state_t* state);
 
 #endif
 

+ 0 - 103
src/codec/EXIConfig.h

@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-/**
- * \file 	EXIConfig.h
- * \brief 	EXI Configurations for the EXI Codec
- *
- */
-
-#ifndef EXI_CONFIG_H
-#define EXI_CONFIG_H
-
-
-
-
-
-
-
-/** EXI stream - Option Byte Array */
-#define BYTE_ARRAY 1
-/** EXI stream - Option File */
-#define FILE_STREAM 2
-/** \brief 	EXI stream
- *
- * 			Byte array or file
- * */
-#define EXI_STREAM BYTE_ARRAY
-
-
-
-
-
-/** Memory allocation - static */
-#define STATIC_ALLOCATION 1
-/** Memory allocation - dynamic */
-#define DYNAMIC_ALLOCATION  2
-/** */
-/** \brief 	Memory allocation mode
- *
- * 			static or dynamic memory allocation
- * */
-#define MEMORY_ALLOCATION STATIC_ALLOCATION
-
-
-
-
-
-/** Maximum number of cascading elements, XML tree depth */
-#define EXI_ELEMENT_STACK_SIZE 24
-
-
-
-
-
-
-
-
-
-
-
-
-
-#endif /* EXI_CONFIG_H */
-
-
-#ifdef __cplusplus
-}
-#endif

Datei-Diff unterdrückt, da er zu groß ist
+ 933 - 0
src/codec/EXIDecoder.c


+ 18 - 21
src/codec/v2gEXIDecoder.h → src/codec/EXIDecoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,8 +31,8 @@
 extern "C" {
 #endif
 
-#ifndef EXI_v2g_DECODER_H
-#define EXI_v2g_DECODER_H
+#ifndef EXI__DECODER_H
+#define EXI__DECODER_H
 
 /**
 * \file 	EXIDecoder.h
@@ -57,8 +54,8 @@ extern "C" {
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gInitDecoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable);
+int exiInitDecoder(bitstream_t* stream, exi_state_t* state,
+		exi_name_table_runtime_t runtimeTable, exi_string_table_t stringTable);
 
 
 /**
@@ -70,7 +67,7 @@ int exiv2gInitDecoder(bitstream_t* stream, exi_state_t* state,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gGetLastQName(exi_qname_t** qname);
+int exiGetLastQName(exi_qname_t** qname);
 
 
 /**
@@ -84,7 +81,7 @@ int exiv2gGetLastQName(exi_qname_t** qname);
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeNextEvent(bitstream_t* stream,
+int exiDecodeNextEvent(bitstream_t* stream,
 		exi_state_t* state, exi_event_t* nextEvent);
 
 
@@ -96,7 +93,7 @@ int exiv2gDecodeNextEvent(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeStartDocument(bitstream_t* stream,
+int exiDecodeStartDocument(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
@@ -107,11 +104,11 @@ int exiv2gDecodeStartDocument(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeEndDocument(bitstream_t* stream,
+int exiDecodeEndDocument(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
- * \brief 		Decodes StartElement (SE) event
+ * \brief 		Decodes StartElemnt (SE) event
  *
  * 				Note: The first time a qnameID is larger than schema-informed NUMBER_OF_QNAMES it is possible to retrieve the qname by calling GetLastQName(...).
  * 				It is up to the caller to track qnames.
@@ -123,7 +120,7 @@ int exiv2gDecodeEndDocument(bitstream_t* stream,
  *
  */
 int
-exiv2gDecodeStartElement(bitstream_t* stream,
+exiDecodeStartElement(bitstream_t* stream,
 		exi_state_t* state, uint16_t* qnameID);
 
 
@@ -136,7 +133,7 @@ exiv2gDecodeStartElement(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeEndElement(bitstream_t* stream,
+int exiDecodeEndElement(bitstream_t* stream,
 		exi_state_t* state, uint16_t* qnameID);
 
 
@@ -151,7 +148,7 @@ int exiv2gDecodeEndElement(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeCharacters(bitstream_t* stream,
+int exiDecodeCharacters(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 
@@ -167,7 +164,7 @@ int exiv2gDecodeCharacters(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeAttribute(bitstream_t* stream,
+int exiDecodeAttribute(bitstream_t* stream,
 		exi_state_t* state, uint16_t* qnameID, exi_value_t* val);
 
 
@@ -182,7 +179,7 @@ int exiv2gDecodeAttribute(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeAttributeXsiNil(bitstream_t* stream,
+int exiDecodeAttributeXsiNil(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 
@@ -197,7 +194,7 @@ int exiv2gDecodeAttributeXsiNil(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeAttributeXsiType(bitstream_t* stream,
+int exiDecodeAttributeXsiType(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 
@@ -214,7 +211,7 @@ int exiv2gDecodeAttributeXsiType(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID,
+int exiDecodeListValue(bitstream_t* stream, exi_state_t* state, uint16_t qnameID,
 		exi_value_t* val, exi_list_t lt);
 
 #endif

Datei-Diff unterdrückt, da er zu groß ist
+ 1010 - 0
src/codec/EXIEncoder.c


+ 20 - 23
src/codec/v2gEXIEncoder.h → src/codec/EXIEncoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,8 +31,8 @@
 extern "C" {
 #endif
 
-#ifndef EXI_v2g_ENCODER_H
-#define EXI_v2g_ENCODER_H
+#ifndef EXI__ENCODER_H
+#define EXI__ENCODER_H
 
 /**
 * \file 	EXIEncoder.h
@@ -44,7 +41,7 @@ extern "C" {
 */
 
 #include "EXITypes.h"
-#include "v2gEXIEncoder.h"
+#include "EXIEncoder.h"
 
 /**
  * \brief 	Initialize EXI encoder
@@ -58,8 +55,8 @@ extern "C" {
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gInitEncoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable);
+int exiInitEncoder(bitstream_t* stream, exi_state_t* state,
+		exi_name_table_runtime_t runtimeTable, exi_string_table_t stringTable);
 
 /**
  * \brief  	Reports the beginning of a set of XML events
@@ -71,7 +68,7 @@ int exiv2gInitEncoder(bitstream_t* stream, exi_state_t* state,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeStartDocument(bitstream_t* stream,
+int exiEncodeStartDocument(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
@@ -84,7 +81,7 @@ int exiv2gEncodeStartDocument(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeEndDocument(bitstream_t* stream,
+int exiEncodeEndDocument(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
@@ -101,7 +98,7 @@ int exiv2gEncodeEndDocument(bitstream_t* stream,
  *
  */
 int
-exiv2gEncodeStartElement(bitstream_t* stream,
+exiEncodeStartElement(bitstream_t* stream,
 		exi_state_t* state, uint16_t qnameID);
 
 /**
@@ -117,7 +114,7 @@ exiv2gEncodeStartElement(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeStartElementNS(bitstream_t* stream,
+int exiEncodeStartElementNS(bitstream_t* stream,
 		exi_state_t* state, uint16_t namespaceUriID,
 		exi_string_ucs_t* localName);
 
@@ -134,7 +131,7 @@ int exiv2gEncodeStartElementNS(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeStartElementGeneric(bitstream_t* stream,
+int exiEncodeStartElementGeneric(bitstream_t* stream,
 		exi_state_t* state, exi_string_ucs_t* namespaceUri,
 		exi_string_ucs_t* localName);
 
@@ -148,7 +145,7 @@ int exiv2gEncodeStartElementGeneric(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeEndElement(bitstream_t* stream,
+int exiEncodeEndElement(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
@@ -163,7 +160,7 @@ int exiv2gEncodeEndElement(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeCharacters(bitstream_t* stream,
+int exiEncodeCharacters(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 /**
@@ -179,7 +176,7 @@ int exiv2gEncodeCharacters(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeAttribute(bitstream_t* stream,
+int exiEncodeAttribute(bitstream_t* stream,
 		exi_state_t* state, uint16_t qnameID, exi_value_t* val);
 
 
@@ -199,7 +196,7 @@ int exiv2gEncodeAttribute(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeAttributeNS(bitstream_t* stream,
+int exiEncodeAttributeNS(bitstream_t* stream,
 		exi_state_t* state, uint16_t namespaceUriID,
 		exi_string_ucs_t* localName, exi_value_t* val);
 
@@ -216,7 +213,7 @@ int exiv2gEncodeAttributeNS(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeAttributeGeneric(bitstream_t* stream,
+int exiEncodeAttributeGeneric(bitstream_t* stream,
 		exi_state_t* state, exi_string_ucs_t* namespaceUri,
 		exi_string_ucs_t* localName, exi_value_t* val);
 
@@ -233,7 +230,7 @@ int exiv2gEncodeAttributeGeneric(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeAttributeXsiNil(bitstream_t* stream,
+int exiEncodeAttributeXsiNil(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 /**
@@ -247,7 +244,7 @@ int exiv2gEncodeAttributeXsiNil(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeAttributeXsiType(bitstream_t* stream,
+int exiEncodeAttributeXsiType(bitstream_t* stream,
 		exi_state_t* state, exi_value_t* val);
 
 /**
@@ -263,7 +260,7 @@ int exiv2gEncodeAttributeXsiType(bitstream_t* stream,
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gEncodeListValue(bitstream_t* stream,
+int exiEncodeListValue(bitstream_t* stream,
 		exi_state_t* state, uint16_t qnameID, exi_value_t* val, exi_list_t lt);
 
 #endif

+ 14 - 17
src/codec/EXIHeaderDecoder.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -41,19 +38,19 @@
 int readEXIHeader(bitstream_t* stream) {
 	uint32_t header = 0;
 	int errn = readBits(stream, 8, &header);
-	if (errn == 0) {
-		if(header == '$') {
-			/*	we do not support "EXI Cookie" */
-			errn = EXI_UNSUPPORTED_HEADER_COOKIE;
-		} else if ( header & 0x20 ) {
-			/* we do not support "Presence Bit for EXI Options" */
-			errn = EXI_UNSUPPORTED_HEADER_OPTIONS;
-		} else {
-			/* Yes, a *simple* header */
-			errn = 0;
-		}
+	if (errn < 0) {
+		return errn;
+	}
+	if(header == '$') {
+		/*	we do not support "EXI Cookie" */
+		errn = EXI_UNSUPPORTED_HEADER_COOKIE;
+	} else if ( header & 0x20 ) {
+		/* we do not support "Presence Bit for EXI Options" */
+		errn = EXI_UNSUPPORTED_HEADER_OPTIONS;
+	} else {
+		/* Yes, a *simple* header */
+		errn = 0;
 	}
-
 	return errn;
 }
 

+ 2 - 5
src/codec/EXIHeaderDecoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 2 - 5
src/codec/EXIHeaderEncoder.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 2 - 5
src/codec/EXIHeaderEncoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 13 - 34
src/codec/EXIOptions.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,62 +31,44 @@
 extern "C" {
 #endif
 
-
-
 /**
  * \file 	EXIOptions.h
- * \brief 	EXI Options for the EXI Codec
+ * \brief 	EXI Options
  *
  */
 
-#ifndef EXI_OPTIONS_H
-#define EXI_OPTIONS_H
+#ifndef EXI__OPTIONS_H
+#define EXI__OPTIONS_H
 
 
-/** EXI alignment - Option bit-packed */
-#define BIT_PACKED 1
-/** EXI alignment - Option byte-packed */
-#define BYTE_ALIGNMENT  2
-/** EXI alignment */
 /**
- * \brief 		EXI Option 'alignment'
- *
- *				The alignment option is used to control the alignment of event codes and content items.
- *				Default Value: bit-packed
- */
-#define EXI_OPTION_ALIGNMENT BIT_PACKED
-
-
-
-/**
- * \brief 		EXI Option 'strict'
+ * \brief 		Option 'strict'
  *
  *				Strict interpretation of schemas is used to achieve better compactness.
  *				Default Value: false
  */
-#define EXI_OPTION_STRICT 0
+#define EXI_STRICT 0
 
 
 /**
- * \brief 		EXI Option 'valueMaxLength'
+ * \brief 		Option 'valueMaxLength'
  *
  *				Specifies the maximum string length of value content items to be
  *				considered for addition to the string table.
  *				Default Value: unbounded (-1)
  */
-#define EXI_OPTION_VALUE_MAX_LENGTH -1
+#define EXI_VALUE_MAX_LENGTH -1
 
 
 /**
- * \brief 		EXI Option 'valuePartitionCapacity'
+ * \brief 		Option 'valuePartitionCapacity'
  *
  *				Specifies the total capacity of value partitions in a string table.
- *				Default Value: unbounded (-1)
+ *				 Default Value: unbounded (-1)
  */
-#define EXI_OPTION_VALUE_PARTITION_CAPACITY 0
-
-#endif /* EXI_OPTIONS_H */
+#define EXI_VALUE_PARTITION_CAPACITY 0
 
+#endif
 
 #ifdef __cplusplus
 }

+ 18 - 40
src/codec/EXITypes.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -41,10 +38,7 @@ extern "C" {
  */
 
 #include <stdint.h>
-#include "EXIConfig.h"
-#if EXI_STREAM == FILE_STREAM
 #include <stdio.h>
-#endif
 
 #ifndef EXI_TYPES_H
 #define EXI_TYPES_H
@@ -68,6 +62,19 @@ extern "C" {
 /** Maximum integer value for uint */
 #define UINT_MAX_VALUE 65535
 
+/** EXI stream - Option Byte Array */
+#define BYTE_ARRAY 1
+/** EXI stream - Option File */
+#define FILE_STREAM 2
+#define EXI_STREAM BYTE_ARRAY
+/** \brief 	EXI stream
+ *
+ * 			Byte array or file
+ * */
+/* #define EXI_STREAM FILE_STREAM */
+
+/** Maximum number of cascading elements, XML tree depth */
+#define EXI_ELEMENT_STACK_SIZE 24
 
 /** EXI Float exponent special values */
 #define FLOAT_EXPONENT_SPECIAL_VALUES -16384
@@ -403,11 +410,6 @@ typedef struct {
 
 /*TODO Doxygen Documentation */
 
-
-
-
-
-
 /* ==================================== */
 /* URI and LocalName Entries */
 typedef struct exiNameTablePrepopulated {
@@ -466,29 +468,7 @@ typedef struct {
 } exi_runtime_element_t;
 
 /* Note: We do have twice as many runtime grammars (StartTagContent and ElementContent)*/
-#define MAX_NUMBER_OF_RUNTIME_ELEMENTS 80
-
-
-
-/* ==================================== */
-/* Value string table */
-typedef struct exiValueStringTableEntry {
-	/** Qualified name ID */
-	uint16_t qnameID;
-	/** Local Value ID */
-	uint16_t localValueID;
-	/** String */
-	exi_string_ucs_t str;
-} exi_value_string_table_entry_t;
-
-typedef struct exiValueStringTable {
-	/** maximum number of global string table entry size */
-	uint16_t size;
-	/** string table entry array container */
-	exi_value_string_table_entry_t* strs;
-	/** current number of string table entries (len <= size) */
-	uint16_t len;
-} exi_value_string_table_t;
+#define MAX_NUMBER_OF_RUNTIME_ELEMENTS 30
 
 typedef struct {
 	/** number of global strings */
@@ -497,9 +477,7 @@ typedef struct {
 	uint16_t sizeLocalStrings;
 	/** number of local strings container */
 	uint16_t* numberOfLocalStrings;
-	/** string values */
-	exi_value_string_table_t* valueStringTable;
-} exi_value_table_t;
+} exi_string_table_t;
 
 typedef struct {
 	/** stack of grammar states */
@@ -521,7 +499,7 @@ typedef struct {
 	uint16_t nextQNameID;
 
 	/** string table entries */
-	exi_value_table_t stringTable;
+	exi_string_table_t stringTable;
 
 	/** runtime built-in element grammars - numbers */
 	uint16_t numberOfRuntimeGrammars;

+ 2 - 5
src/codec/EncoderChannel.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 4 - 12
src/codec/ErrorCodes.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -15,16 +15,14 @@
  * 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/>.
  */
+
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -50,7 +48,7 @@ extern "C" {
 
 #define EXI_ERROR_OUT_OF_BOUNDS -100
 #define EXI_ERROR_OUT_OF_STRING_BUFFER -101
-/*#define EXI_ERROR_OUT_OF_ASCII_BUFFER -102 */
+#define EXI_ERROR_OUT_OF_ASCII_BUFFER -102
 #define EXI_ERROR_OUT_OF_BYTE_BUFFER -103
 #define EXI_ERROR_OUT_OF_GRAMMAR_STACK -104
 #define EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK -105
@@ -93,12 +91,6 @@ extern "C" {
 
 #define EXI_UNSUPPORTED_GRAMMAR_LEARNING_CH -150
 
-/* string values */
-#define EXI_ERROR_STRINGVALUES_NOT_SUPPORTED -160
-#define EXI_ERROR_STRINGVALUES_OUT_OF_ENTRIES -161
-#define EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY 162
-#define EXI_ERROR_STRINGVALUES_OUT_OF_BOUND 163
-
 #define EXI_ERROR_UNEXPECTED_BYTE_VALUE -200
 
 

+ 24 - 9
src/codec/MethodsBag.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -39,50 +36,68 @@
 static const uint16_t smallLengths[] = { 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4,
 		4, 4, 4 };
 
-int exiGetCodingLength(uint16_t characteristics, uint16_t* codingLength) {
+int exiGetCodingLength(uint32_t characteristics, uint16_t* codingLength) {
 	/* Note: we could use range expressions in switch statements but those are non-standard */
 	/* e.g., case 1 ... 5: */
-	int errn = 0;
+
 	if (characteristics < 17) {
 		*codingLength = smallLengths[characteristics];
+		return 0;
 	} else if (characteristics < 33) {
 		/* 17 .. 32 */
 		*codingLength = 5;
+		return 0;
 	} else if (characteristics < 65) {
 		/* 33 .. 64 */
 		*codingLength = 6;
+		return 0;
 	} else if (characteristics < 129) {
 		/* 65 .. 128 */
 		*codingLength = 7;
+		return 0;
 	} else if (characteristics < 257) {
 		/* 129 .. 256 */
 		*codingLength = 8;
+		return 0;
 	} else if (characteristics < 513) {
 		/* 257 .. 512 */
 		*codingLength = 9;
+		return 0;
 	} else if (characteristics < 1025) {
 		/* 513 .. 1024 */
 		*codingLength = 10;
+		return 0;
 	} else if (characteristics < 2049) {
 		/* 1025 .. 2048 */
 		*codingLength = 11;
+		return 0;
 	} else if (characteristics < 4097) {
 		/* 2049 .. 4096 */
 		*codingLength = 12;
+		return 0;
 	} else if (characteristics < 8193) {
 		/* 4097 .. 8192 */
 		*codingLength = 13;
+		return 0;
 	} else if (characteristics < 16385) {
 		/* 8193 .. 16384 */
 		*codingLength = 14;
+		return 0;
 	} else if (characteristics < 32769) {
 		/* 16385 .. 32768 */
 		*codingLength = 15;
-	} else {
+		return 0;
+	} else if (characteristics < 65537) {
 		/* 32769 .. 65536 */
 		*codingLength = 16;
+		return 0;
+	} else {
+		/*
+		return (int) Math.ceil(Math.log((double) (characteristics))
+				/ Math.log(2.0)); */
+		return EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
 	}
-	return errn;
+
 }
 
 

+ 6 - 6
src/codec/MethodsBag.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -40,7 +37,10 @@
 */
 
 
+#include <stdio.h>
 #include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
 
 
 /**
@@ -51,7 +51,7 @@
  * \return                  	Error-Code <> 0
  *
  */
-int exiGetCodingLength(uint16_t characteristics, uint16_t* codingLength);
+int exiGetCodingLength(uint32_t characteristics, uint16_t* codingLength);
 
 
 /**

+ 200 - 0
src/codec/NameTableEntries.c

@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2007-2012 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.
+ * 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/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.7
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer.com</p>
+ ********************************************************************/
+
+
+
+#ifndef EXI__NAME_TABLE_ENTRIES_C
+#define EXI__NAME_TABLE_ENTRIES_C
+
+#include "NameTableEntries.h"
+
+
+
+/* ==================================== */
+/* String Table Population */
+
+/* localName entries for URI '', id = 0 */
+/* 
+  "Algorithm",  "Encoding",  "Id",  "MimeType",  "Name",
+  "Target",  "Type",  "URI",  "ValueType"
+ */
+
+/* localName entries for URI 'http://www.w3.org/XML/1998/namespace', id = 1 */
+/* 
+  "base",  "id",  "lang",  "space"
+ */
+
+/* localName entries for URI 'http://www.w3.org/2001/XMLSchema-instance', id = 2 */
+/* 
+  "nil",  "type"
+ */
+
+/* localName entries for URI 'http://www.w3.org/2001/XMLSchema', id = 3 */
+/* 
+  "ENTITIES",  "ENTITY",  "ID",  "IDREF",  "IDREFS",
+  "NCName",  "NMTOKEN",  "NMTOKENS",  "NOTATION",  "Name",
+  "QName",  "anySimpleType",  "anyType",  "anyURI",  "base64Binary",
+  "boolean",  "byte",  "date",  "dateTime",  "decimal",
+  "double",  "duration",  "float",  "gDay",  "gMonth",
+  "gMonthDay",  "gYear",  "gYearMonth",  "hexBinary",  "int",
+  "integer",  "language",  "long",  "negativeInteger",  "nonNegativeInteger",
+  "nonPositiveInteger",  "normalizedString",  "positiveInteger",  "short",  "string",
+  "time",  "token",  "unsignedByte",  "unsignedInt",  "unsignedLong",
+  "unsignedShort"
+ */
+
+/* localName entries for URI 'http://www.w3.org/2000/09/xmldsig#', id = 4 */
+/* 
+  "CanonicalizationMethod",  "CanonicalizationMethodType",  "CryptoBinary",  "DSAKeyValue",  "DSAKeyValueType",
+  "DigestMethod",  "DigestMethodType",  "DigestValue",  "DigestValueType",  "Exponent",
+  "G",  "HMACOutputLength",  "HMACOutputLengthType",  "J",  "KeyInfo",
+  "KeyInfoType",  "KeyName",  "KeyValue",  "KeyValueType",  "Manifest",
+  "ManifestType",  "MgmtData",  "Modulus",  "Object",  "ObjectType",
+  "P",  "PGPData",  "PGPDataType",  "PGPKeyID",  "PGPKeyPacket",
+  "PgenCounter",  "Q",  "RSAKeyValue",  "RSAKeyValueType",  "Reference",
+  "ReferenceType",  "RetrievalMethod",  "RetrievalMethodType",  "SPKIData",  "SPKIDataType",
+  "SPKISexp",  "Seed",  "Signature",  "SignatureMethod",  "SignatureMethodType",
+  "SignatureProperties",  "SignaturePropertiesType",  "SignatureProperty",  "SignaturePropertyType",  "SignatureType",
+  "SignatureValue",  "SignatureValueType",  "SignedInfo",  "SignedInfoType",  "Transform",
+  "TransformType",  "Transforms",  "TransformsType",  "X509CRL",  "X509Certificate",
+  "X509Data",  "X509DataType",  "X509IssuerName",  "X509IssuerSerial",  "X509IssuerSerialType",
+  "X509SKI",  "X509SerialNumber",  "X509SubjectName",  "XPath",  "Y"
+
+ */
+
+/* localName entries for URI 'urn:iso:15118:2:2010:MsgBody', id = 5 */
+/* 
+  "AC_EVSEStatus",  "BulkChargingComplete",  "CableCheckReq",  "CableCheckReqType",  "CableCheckRes",
+  "CableCheckResType",  "CertificateInstallationReq",  "CertificateInstallationReqType",  "CertificateInstallationRes",  "CertificateInstallationResType",
+  "CertificateUpdateReq",  "CertificateUpdateReqType",  "CertificateUpdateRes",  "CertificateUpdateResType",  "ChargeParameterDiscoveryReq",
+  "ChargeParameterDiscoveryReqType",  "ChargeParameterDiscoveryRes",  "ChargeParameterDiscoveryResType",  "ChargeService",  "ChargingComplete",
+  "ChargingProfile",  "ChargingStatusReq",  "ChargingStatusReqType",  "ChargingStatusRes",  "ChargingStatusResType",
+  "ContractAuthenticationReq",  "ContractAuthenticationReqType",  "ContractAuthenticationRes",  "ContractAuthenticationResType",  "ContractID",
+  "ContractSignatureCertChain",  "ContractSignatureEncryptedPrivateKey",  "CurrentDemandReq",  "CurrentDemandReqType",  "CurrentDemandRes",
+  "CurrentDemandResType",  "DC_EVSEStatus",  "DC_EVStatus",  "DHParams",  "DateTimeNow",
+  "EVCCID",  "EVMaximumCurrentLimit",  "EVMaximumPowerLimit",  "EVMaximumVoltageLimit",  "EVRequestedEnergyTransferType",
+  "EVSECurrentLimitAchieved",  "EVSEID",  "EVSEMaxCurrent",  "EVSEMaximumCurrentLimit",  "EVSEMaximumPowerLimit",
+  "EVSEMaximumVoltageLimit",  "EVSEPowerLimitAchieved",  "EVSEPresentCurrent",  "EVSEPresentVoltage",  "EVSEProcessing",
+  "EVSEVoltageLimitAchieved",  "EVTargetCurrent",  "EVTargetVoltage",  "GenChallenge",  "ListOfRootCertificateIDs",
+  "MeterInfo",  "MeteringReceiptReq",  "MeteringReceiptReqType",  "MeteringReceiptRes",  "MeteringReceiptResType",
+  "OEMProvisioningCert",  "PaymentDetailsReq",  "PaymentDetailsReqType",  "PaymentDetailsRes",  "PaymentDetailsResType",
+  "PaymentOptions",  "PowerDeliveryReq",  "PowerDeliveryReqType",  "PowerDeliveryRes",  "PowerDeliveryResType",
+  "PreChargeReq",  "PreChargeReqType",  "PreChargeRes",  "PreChargeResType",  "ReadyToChargeState",
+  "ReceiptRequired",  "RemainingTimeToBulkSoC",  "RemainingTimeToFullSoC",  "ResponseCode",  "RetryCounter",
+  "SAScheduleTupleID",  "SelectedPaymentOption",  "SelectedServiceList",  "ServiceCategory",  "ServiceDetailReq",
+  "ServiceDetailReqType",  "ServiceDetailRes",  "ServiceDetailResType",  "ServiceDiscoveryReq",  "ServiceDiscoveryReqType",
+  "ServiceDiscoveryRes",  "ServiceDiscoveryResType",  "ServiceID",  "ServiceList",  "ServiceParameterList",
+  "ServicePaymentSelectionReq",  "ServicePaymentSelectionReqType",  "ServicePaymentSelectionRes",  "ServicePaymentSelectionResType",  "ServiceScope",
+  "SessionID",  "SessionSetupReq",  "SessionSetupReqType",  "SessionSetupRes",  "SessionSetupResType",
+  "SessionStopReq",  "SessionStopRes",  "SessionStopResType",  "SessionStopType",  "WeldingDetectionReq",
+  "WeldingDetectionReqType",  "WeldingDetectionRes",  "WeldingDetectionResType"
+ */
+
+/* localName entries for URI 'urn:iso:15118:2:2010:MsgDataTypes', id = 6 */
+/* 
+  "AC_EVChargeParameter",  "AC_EVChargeParameterType",  "AC_EVSEChargeParameter",  "AC_EVSEChargeParameterType",  "AC_EVSEStatus",
+  "AC_EVSEStatusType",  "BulkChargingComplete",  "BulkSOC",  "Certificate",  "CertificateChainType",
+  "ChargingComplete",  "ChargingProfileEntryMaxPower",  "ChargingProfileEntryStart",  "ChargingProfileType",  "ConsumptionCost",
+  "ConsumptionCostType",  "Cost",  "CostType",  "DC_EVChargeParameter",  "DC_EVChargeParameterType",
+  "DC_EVErrorCodeType",  "DC_EVPowerDeliveryParameter",  "DC_EVPowerDeliveryParameterType",  "DC_EVSEChargeParameter",  "DC_EVSEChargeParameterType",
+  "DC_EVSEStatus",  "DC_EVSEStatusCodeType",  "DC_EVSEStatusType",  "DC_EVStatus",  "DC_EVStatusType",
+  "DepartureTime",  "EAmount",  "EPriceLevel",  "EVCabinConditioning",  "EVChargeParameter",
+  "EVChargeParameterType",  "EVEnergyCapacity",  "EVEnergyRequest",  "EVErrorCode",  "EVMaxCurrent",
+  "EVMaxVoltage",  "EVMaximumCurrentLimit",  "EVMaximumPowerLimit",  "EVMaximumVoltageLimit",  "EVMinCurrent",
+  "EVPowerDeliveryParameter",  "EVPowerDeliveryParameterType",  "EVRESSConditioning",  "EVRESSSOC",  "EVReady",
+  "EVRequestedEnergyTransferType",  "EVSEChargeParameter",  "EVSEChargeParameterType",  "EVSECurrentRegulationTolerance",  "EVSEEnergyToBeDelivered",
+  "EVSEIsolationStatus",  "EVSEMaxCurrent",  "EVSEMaxVoltage",  "EVSEMaximumCurrentLimit",  "EVSEMaximumPowerLimit",
+  "EVSEMaximumVoltageLimit",  "EVSEMinCurrent",  "EVSEMinimumCurrentLimit",  "EVSEMinimumVoltageLimit",  "EVSENotification",
+  "EVSENotificationType",  "EVSEPeakCurrentRipple",  "EVSEProcessingType",  "EVSEStatus",  "EVSEStatusCode",
+  "EVSEStatusType",  "EVSESupportedEnergyTransferType",  "EVStatus",  "EVStatusType",  "EnergyTransferType",
+  "Entry",  "EntryType",  "FaultCode",  "FaultMsg",  "FreeService",
+  "FullSOC",  "IntervalType",  "ListOfRootCertificateIDsType",  "MeterID",  "MeterInfoType",
+  "MeterReading",  "MeterStatus",  "Multiplier",  "NotificationMaxDelay",  "NotificationType",
+  "NumEPriceLevels",  "PMax",  "PMaxSchedule",  "PMaxScheduleEntry",  "PMaxScheduleEntryType",
+  "PMaxScheduleID",  "PMaxScheduleType",  "PMaxType",  "Parameter",  "ParameterSet",
+  "ParameterSetID",  "ParameterSetType",  "ParameterType",  "PaymentOption",  "PaymentOptionsType",
+  "PhysicalValueType",  "PowerSwitchClosed",  "ProfileEntry",  "ProfileEntryType",  "RCD",
+  "RelativeTimeInterval",  "RelativeTimeIntervalType",  "RootCertificateID",  "SAIDType",  "SAScheduleList",
+  "SAScheduleListType",  "SAScheduleTuple",  "SAScheduleTupleID",  "SAScheduleTupleType",  "SASchedules",
+  "SASchedulesType",  "SalesTariff",  "SalesTariffDescription",  "SalesTariffEntry",  "SalesTariffEntryType",
+  "SalesTariffID",  "SalesTariffType",  "SelectedService",  "SelectedServiceListType",  "SelectedServiceType",
+  "Service",  "ServiceCategory",  "ServiceCharge",  "ServiceChargeType",  "ServiceID",
+  "ServiceName",  "ServiceParameterListType",  "ServiceScope",  "ServiceTag",  "ServiceTagListType",
+  "ServiceTagType",  "ServiceType",  "SigMeterReading",  "SubCertificates",  "SubCertificatesType",
+  "TMeter",  "TimeInterval",  "Unit",  "Value",  "amount",
+  "amountMultiplier",  "boolValue",  "byteValue",  "certificateType",  "contractIDType",
+  "costKind",  "costKindType",  "dHParamsType",  "duration",  "evccIDType",
+  "evseIDType",  "faultCodeType",  "faultMsgType",  "genChallengeType",  "intValue",
+  "isolationLevelType",  "meterIDType",  "meterStatusType",  "paymentOptionType",  "percentValueType",
+  "physicalValue",  "privateKeyType",  "responseCodeType",  "rootCertificateIDType",  "serviceCategoryType",
+  "serviceIDType",  "serviceNameType",  "serviceScopeType",  "sessionIDType",  "shortValue",
+  "sigMeterReadingType",  "start",  "startValue",  "stringValue",  "tariffDescriptionType",
+  "unitMultiplierType",  "unitSymbolType",  "valueType"
+ */
+
+/* localName entries for URI 'urn:iso:15118:2:2010:MsgDef', id = 7 */
+/* 
+  "Body",  "BodyBaseType",  "BodyElement",  "BodyType",  "Header",
+  "V2G_Message"
+ */
+
+/* localName entries for URI 'urn:iso:15118:2:2010:MsgHeader', id = 8 */
+/* 
+  "MessageHeaderType",  "Notification",  "SessionID"
+ */
+
+
+/* number of local-name entries per URI */
+static uint16_t localNames[9] = {
+	/* '' */
+	9,
+	/* 'http://www.w3.org/XML/1998/namespace' */
+	4,
+	/* 'http://www.w3.org/2001/XMLSchema-instance' */
+	2,
+	/* 'http://www.w3.org/2001/XMLSchema' */
+	46,
+	/* 'http://www.w3.org/2000/09/xmldsig#' */
+	70,
+	/* 'urn:iso:15118:2:2010:MsgBody' */
+	118,
+	/* 'urn:iso:15118:2:2010:MsgDataTypes' */
+	188,
+	/* 'urn:iso:15118:2:2010:MsgDef' */
+	6,
+	/* 'urn:iso:15118:2:2010:MsgHeader' */
+	3
+};
+
+
+exi_name_table_prepopulated_t exiNameTablePrepopulated = { 9, localNames };
+
+
+
+
+#endif
+

+ 5 - 8
src/codec/v2gNameTableEntries.h → src/codec/NameTableEntries.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,26 +19,23 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
-#ifndef EXI_v2g_NAME_TABLE_ENTRIES_H
-#define EXI_v2g_NAME_TABLE_ENTRIES_H
+#ifndef EXI__NAME_TABLE_ENTRIES_H
+#define EXI__NAME_TABLE_ENTRIES_H
 
 #include "EXITypes.h"
 
 /* ==================================== */
 /* String Table Population */
 
-extern exi_name_table_prepopulated_t exiv2gNameTablePrepopulated;
+extern exi_name_table_prepopulated_t exiNameTablePrepopulated;
 
 #endif
 

+ 7 - 10
src/codec/v2gQNameDefines.h → src/codec/QNameDefines.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -34,17 +31,17 @@
 extern "C" {
 #endif
 
-#ifndef EXI_v2g_QNAME_DEFINES_H
-#define EXI_v2g_QNAME_DEFINES_H
+#ifndef EXI__QNAME_DEFINES_H
+#define EXI__QNAME_DEFINES_H
 
 /** Number of pre-populated qnames */
-#define EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES 448
+#define EXI_NUMBER_OF_PREPOPULATED_QNAMES 446
 
 /** Number of runtime qnames */
-#define EXI_v2gMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES 100
+#define EXI_MAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES 100
 
 /** Number of overall qnames (pre-populated from schema and runtime qnames) */
-#define EXI_v2gMAX_NUMBER_OF_QNAMES (EXI_v2gNUMBER_OF_PREPOPULATED_QNAMES + EXI_v2gMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES)
+#define EXI_MAX_NUMBER_OF_QNAMES (EXI_NUMBER_OF_PREPOPULATED_QNAMES + EXI_MAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES)
 
 
 #endif

+ 981 - 0
src/codec/QNames.c

@@ -0,0 +1,981 @@
+/*
+ * Copyright (C) 2007-2012 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.
+ * 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/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.7
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Code generated by EXIdizer.com</p>
+ ********************************************************************/
+
+
+
+#ifndef EXI__QNAMES_C
+#define EXI__QNAMES_C
+
+#include "EXITypes.h"
+#include "ErrorCodes.h"
+#include "QNameDefines.h"
+
+/* qname is a composition of namespaceURI(ID) and localPart(ID) */
+static exi_eqname_t qnames[EXI_MAX_NUMBER_OF_QNAMES] = {
+	/* qnameID == 0: Algorithm */
+	{0, 0},
+	/* qnameID == 1: Encoding */
+	{0, 1},
+	/* qnameID == 2: Id */
+	{0, 2},
+	/* qnameID == 3: MimeType */
+	{0, 3},
+	/* qnameID == 4: Name */
+	{0, 4},
+	/* qnameID == 5: Target */
+	{0, 5},
+	/* qnameID == 6: Type */
+	{0, 6},
+	/* qnameID == 7: URI */
+	{0, 7},
+	/* qnameID == 8: ValueType */
+	{0, 8},
+	/* qnameID == 9: {http://www.w3.org/XML/1998/namespace}base */
+	{1, 0},
+	/* qnameID == 10: {http://www.w3.org/XML/1998/namespace}id */
+	{1, 1},
+	/* qnameID == 11: {http://www.w3.org/XML/1998/namespace}lang */
+	{1, 2},
+	/* qnameID == 12: {http://www.w3.org/XML/1998/namespace}space */
+	{1, 3},
+	/* qnameID == 13: {http://www.w3.org/2001/XMLSchema-instance}nil */
+	{2, 0},
+	/* qnameID == 14: {http://www.w3.org/2001/XMLSchema-instance}type */
+	{2, 1},
+	/* qnameID == 15: {http://www.w3.org/2001/XMLSchema}ENTITIES */
+	{3, 0},
+	/* qnameID == 16: {http://www.w3.org/2001/XMLSchema}ENTITY */
+	{3, 1},
+	/* qnameID == 17: {http://www.w3.org/2001/XMLSchema}ID */
+	{3, 2},
+	/* qnameID == 18: {http://www.w3.org/2001/XMLSchema}IDREF */
+	{3, 3},
+	/* qnameID == 19: {http://www.w3.org/2001/XMLSchema}IDREFS */
+	{3, 4},
+	/* qnameID == 20: {http://www.w3.org/2001/XMLSchema}NCName */
+	{3, 5},
+	/* qnameID == 21: {http://www.w3.org/2001/XMLSchema}NMTOKEN */
+	{3, 6},
+	/* qnameID == 22: {http://www.w3.org/2001/XMLSchema}NMTOKENS */
+	{3, 7},
+	/* qnameID == 23: {http://www.w3.org/2001/XMLSchema}NOTATION */
+	{3, 8},
+	/* qnameID == 24: {http://www.w3.org/2001/XMLSchema}Name */
+	{3, 9},
+	/* qnameID == 25: {http://www.w3.org/2001/XMLSchema}QName */
+	{3, 10},
+	/* qnameID == 26: {http://www.w3.org/2001/XMLSchema}anySimpleType */
+	{3, 11},
+	/* qnameID == 27: {http://www.w3.org/2001/XMLSchema}anyType */
+	{3, 12},
+	/* qnameID == 28: {http://www.w3.org/2001/XMLSchema}anyURI */
+	{3, 13},
+	/* qnameID == 29: {http://www.w3.org/2001/XMLSchema}base64Binary */
+	{3, 14},
+	/* qnameID == 30: {http://www.w3.org/2001/XMLSchema}boolean */
+	{3, 15},
+	/* qnameID == 31: {http://www.w3.org/2001/XMLSchema}byte */
+	{3, 16},
+	/* qnameID == 32: {http://www.w3.org/2001/XMLSchema}date */
+	{3, 17},
+	/* qnameID == 33: {http://www.w3.org/2001/XMLSchema}dateTime */
+	{3, 18},
+	/* qnameID == 34: {http://www.w3.org/2001/XMLSchema}decimal */
+	{3, 19},
+	/* qnameID == 35: {http://www.w3.org/2001/XMLSchema}double */
+	{3, 20},
+	/* qnameID == 36: {http://www.w3.org/2001/XMLSchema}duration */
+	{3, 21},
+	/* qnameID == 37: {http://www.w3.org/2001/XMLSchema}float */
+	{3, 22},
+	/* qnameID == 38: {http://www.w3.org/2001/XMLSchema}gDay */
+	{3, 23},
+	/* qnameID == 39: {http://www.w3.org/2001/XMLSchema}gMonth */
+	{3, 24},
+	/* qnameID == 40: {http://www.w3.org/2001/XMLSchema}gMonthDay */
+	{3, 25},
+	/* qnameID == 41: {http://www.w3.org/2001/XMLSchema}gYear */
+	{3, 26},
+	/* qnameID == 42: {http://www.w3.org/2001/XMLSchema}gYearMonth */
+	{3, 27},
+	/* qnameID == 43: {http://www.w3.org/2001/XMLSchema}hexBinary */
+	{3, 28},
+	/* qnameID == 44: {http://www.w3.org/2001/XMLSchema}int */
+	{3, 29},
+	/* qnameID == 45: {http://www.w3.org/2001/XMLSchema}integer */
+	{3, 30},
+	/* qnameID == 46: {http://www.w3.org/2001/XMLSchema}language */
+	{3, 31},
+	/* qnameID == 47: {http://www.w3.org/2001/XMLSchema}long */
+	{3, 32},
+	/* qnameID == 48: {http://www.w3.org/2001/XMLSchema}negativeInteger */
+	{3, 33},
+	/* qnameID == 49: {http://www.w3.org/2001/XMLSchema}nonNegativeInteger */
+	{3, 34},
+	/* qnameID == 50: {http://www.w3.org/2001/XMLSchema}nonPositiveInteger */
+	{3, 35},
+	/* qnameID == 51: {http://www.w3.org/2001/XMLSchema}normalizedString */
+	{3, 36},
+	/* qnameID == 52: {http://www.w3.org/2001/XMLSchema}positiveInteger */
+	{3, 37},
+	/* qnameID == 53: {http://www.w3.org/2001/XMLSchema}short */
+	{3, 38},
+	/* qnameID == 54: {http://www.w3.org/2001/XMLSchema}string */
+	{3, 39},
+	/* qnameID == 55: {http://www.w3.org/2001/XMLSchema}time */
+	{3, 40},
+	/* qnameID == 56: {http://www.w3.org/2001/XMLSchema}token */
+	{3, 41},
+	/* qnameID == 57: {http://www.w3.org/2001/XMLSchema}unsignedByte */
+	{3, 42},
+	/* qnameID == 58: {http://www.w3.org/2001/XMLSchema}unsignedInt */
+	{3, 43},
+	/* qnameID == 59: {http://www.w3.org/2001/XMLSchema}unsignedLong */
+	{3, 44},
+	/* qnameID == 60: {http://www.w3.org/2001/XMLSchema}unsignedShort */
+	{3, 45},
+	/* qnameID == 61: {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod */
+	{4, 0},
+	/* qnameID == 62: {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethodType */
+	{4, 1},
+	/* qnameID == 63: {http://www.w3.org/2000/09/xmldsig#}CryptoBinary */
+	{4, 2},
+	/* qnameID == 64: {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue */
+	{4, 3},
+	/* qnameID == 65: {http://www.w3.org/2000/09/xmldsig#}DSAKeyValueType */
+	{4, 4},
+	/* qnameID == 66: {http://www.w3.org/2000/09/xmldsig#}DigestMethod */
+	{4, 5},
+	/* qnameID == 67: {http://www.w3.org/2000/09/xmldsig#}DigestMethodType */
+	{4, 6},
+	/* qnameID == 68: {http://www.w3.org/2000/09/xmldsig#}DigestValue */
+	{4, 7},
+	/* qnameID == 69: {http://www.w3.org/2000/09/xmldsig#}DigestValueType */
+	{4, 8},
+	/* qnameID == 70: {http://www.w3.org/2000/09/xmldsig#}Exponent */
+	{4, 9},
+	/* qnameID == 71: {http://www.w3.org/2000/09/xmldsig#}G */
+	{4, 10},
+	/* qnameID == 72: {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength */
+	{4, 11},
+	/* qnameID == 73: {http://www.w3.org/2000/09/xmldsig#}HMACOutputLengthType */
+	{4, 12},
+	/* qnameID == 74: {http://www.w3.org/2000/09/xmldsig#}J */
+	{4, 13},
+	/* qnameID == 75: {http://www.w3.org/2000/09/xmldsig#}KeyInfo */
+	{4, 14},
+	/* qnameID == 76: {http://www.w3.org/2000/09/xmldsig#}KeyInfoType */
+	{4, 15},
+	/* qnameID == 77: {http://www.w3.org/2000/09/xmldsig#}KeyName */
+	{4, 16},
+	/* qnameID == 78: {http://www.w3.org/2000/09/xmldsig#}KeyValue */
+	{4, 17},
+	/* qnameID == 79: {http://www.w3.org/2000/09/xmldsig#}KeyValueType */
+	{4, 18},
+	/* qnameID == 80: {http://www.w3.org/2000/09/xmldsig#}Manifest */
+	{4, 19},
+	/* qnameID == 81: {http://www.w3.org/2000/09/xmldsig#}ManifestType */
+	{4, 20},
+	/* qnameID == 82: {http://www.w3.org/2000/09/xmldsig#}MgmtData */
+	{4, 21},
+	/* qnameID == 83: {http://www.w3.org/2000/09/xmldsig#}Modulus */
+	{4, 22},
+	/* qnameID == 84: {http://www.w3.org/2000/09/xmldsig#}Object */
+	{4, 23},
+	/* qnameID == 85: {http://www.w3.org/2000/09/xmldsig#}ObjectType */
+	{4, 24},
+	/* qnameID == 86: {http://www.w3.org/2000/09/xmldsig#}P */
+	{4, 25},
+	/* qnameID == 87: {http://www.w3.org/2000/09/xmldsig#}PGPData */
+	{4, 26},
+	/* qnameID == 88: {http://www.w3.org/2000/09/xmldsig#}PGPDataType */
+	{4, 27},
+	/* qnameID == 89: {http://www.w3.org/2000/09/xmldsig#}PGPKeyID */
+	{4, 28},
+	/* qnameID == 90: {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket */
+	{4, 29},
+	/* qnameID == 91: {http://www.w3.org/2000/09/xmldsig#}PgenCounter */
+	{4, 30},
+	/* qnameID == 92: {http://www.w3.org/2000/09/xmldsig#}Q */
+	{4, 31},
+	/* qnameID == 93: {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue */
+	{4, 32},
+	/* qnameID == 94: {http://www.w3.org/2000/09/xmldsig#}RSAKeyValueType */
+	{4, 33},
+	/* qnameID == 95: {http://www.w3.org/2000/09/xmldsig#}Reference */
+	{4, 34},
+	/* qnameID == 96: {http://www.w3.org/2000/09/xmldsig#}ReferenceType */
+	{4, 35},
+	/* qnameID == 97: {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod */
+	{4, 36},
+	/* qnameID == 98: {http://www.w3.org/2000/09/xmldsig#}RetrievalMethodType */
+	{4, 37},
+	/* qnameID == 99: {http://www.w3.org/2000/09/xmldsig#}SPKIData */
+	{4, 38},
+	/* qnameID == 100: {http://www.w3.org/2000/09/xmldsig#}SPKIDataType */
+	{4, 39},
+	/* qnameID == 101: {http://www.w3.org/2000/09/xmldsig#}SPKISexp */
+	{4, 40},
+	/* qnameID == 102: {http://www.w3.org/2000/09/xmldsig#}Seed */
+	{4, 41},
+	/* qnameID == 103: {http://www.w3.org/2000/09/xmldsig#}Signature */
+	{4, 42},
+	/* qnameID == 104: {http://www.w3.org/2000/09/xmldsig#}SignatureMethod */
+	{4, 43},
+	/* qnameID == 105: {http://www.w3.org/2000/09/xmldsig#}SignatureMethodType */
+	{4, 44},
+	/* qnameID == 106: {http://www.w3.org/2000/09/xmldsig#}SignatureProperties */
+	{4, 45},
+	/* qnameID == 107: {http://www.w3.org/2000/09/xmldsig#}SignaturePropertiesType */
+	{4, 46},
+	/* qnameID == 108: {http://www.w3.org/2000/09/xmldsig#}SignatureProperty */
+	{4, 47},
+	/* qnameID == 109: {http://www.w3.org/2000/09/xmldsig#}SignaturePropertyType */
+	{4, 48},
+	/* qnameID == 110: {http://www.w3.org/2000/09/xmldsig#}SignatureType */
+	{4, 49},
+	/* qnameID == 111: {http://www.w3.org/2000/09/xmldsig#}SignatureValue */
+	{4, 50},
+	/* qnameID == 112: {http://www.w3.org/2000/09/xmldsig#}SignatureValueType */
+	{4, 51},
+	/* qnameID == 113: {http://www.w3.org/2000/09/xmldsig#}SignedInfo */
+	{4, 52},
+	/* qnameID == 114: {http://www.w3.org/2000/09/xmldsig#}SignedInfoType */
+	{4, 53},
+	/* qnameID == 115: {http://www.w3.org/2000/09/xmldsig#}Transform */
+	{4, 54},
+	/* qnameID == 116: {http://www.w3.org/2000/09/xmldsig#}TransformType */
+	{4, 55},
+	/* qnameID == 117: {http://www.w3.org/2000/09/xmldsig#}Transforms */
+	{4, 56},
+	/* qnameID == 118: {http://www.w3.org/2000/09/xmldsig#}TransformsType */
+	{4, 57},
+	/* qnameID == 119: {http://www.w3.org/2000/09/xmldsig#}X509CRL */
+	{4, 58},
+	/* qnameID == 120: {http://www.w3.org/2000/09/xmldsig#}X509Certificate */
+	{4, 59},
+	/* qnameID == 121: {http://www.w3.org/2000/09/xmldsig#}X509Data */
+	{4, 60},
+	/* qnameID == 122: {http://www.w3.org/2000/09/xmldsig#}X509DataType */
+	{4, 61},
+	/* qnameID == 123: {http://www.w3.org/2000/09/xmldsig#}X509IssuerName */
+	{4, 62},
+	/* qnameID == 124: {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial */
+	{4, 63},
+	/* qnameID == 125: {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType */
+	{4, 64},
+	/* qnameID == 126: {http://www.w3.org/2000/09/xmldsig#}X509SKI */
+	{4, 65},
+	/* qnameID == 127: {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber */
+	{4, 66},
+	/* qnameID == 128: {http://www.w3.org/2000/09/xmldsig#}X509SubjectName */
+	{4, 67},
+	/* qnameID == 129: {http://www.w3.org/2000/09/xmldsig#}XPath */
+	{4, 68},
+	/* qnameID == 130: {http://www.w3.org/2000/09/xmldsig#}Y */
+	{4, 69},
+	/* qnameID == 131: {urn:iso:15118:2:2010:MsgBody}AC_EVSEStatus */
+	{5, 0},
+	/* qnameID == 132: {urn:iso:15118:2:2010:MsgBody}BulkChargingComplete */
+	{5, 1},
+	/* qnameID == 133: {urn:iso:15118:2:2010:MsgBody}CableCheckReq */
+	{5, 2},
+	/* qnameID == 134: {urn:iso:15118:2:2010:MsgBody}CableCheckReqType */
+	{5, 3},
+	/* qnameID == 135: {urn:iso:15118:2:2010:MsgBody}CableCheckRes */
+	{5, 4},
+	/* qnameID == 136: {urn:iso:15118:2:2010:MsgBody}CableCheckResType */
+	{5, 5},
+	/* qnameID == 137: {urn:iso:15118:2:2010:MsgBody}CertificateInstallationReq */
+	{5, 6},
+	/* qnameID == 138: {urn:iso:15118:2:2010:MsgBody}CertificateInstallationReqType */
+	{5, 7},
+	/* qnameID == 139: {urn:iso:15118:2:2010:MsgBody}CertificateInstallationRes */
+	{5, 8},
+	/* qnameID == 140: {urn:iso:15118:2:2010:MsgBody}CertificateInstallationResType */
+	{5, 9},
+	/* qnameID == 141: {urn:iso:15118:2:2010:MsgBody}CertificateUpdateReq */
+	{5, 10},
+	/* qnameID == 142: {urn:iso:15118:2:2010:MsgBody}CertificateUpdateReqType */
+	{5, 11},
+	/* qnameID == 143: {urn:iso:15118:2:2010:MsgBody}CertificateUpdateRes */
+	{5, 12},
+	/* qnameID == 144: {urn:iso:15118:2:2010:MsgBody}CertificateUpdateResType */
+	{5, 13},
+	/* qnameID == 145: {urn:iso:15118:2:2010:MsgBody}ChargeParameterDiscoveryReq */
+	{5, 14},
+	/* qnameID == 146: {urn:iso:15118:2:2010:MsgBody}ChargeParameterDiscoveryReqType */
+	{5, 15},
+	/* qnameID == 147: {urn:iso:15118:2:2010:MsgBody}ChargeParameterDiscoveryRes */
+	{5, 16},
+	/* qnameID == 148: {urn:iso:15118:2:2010:MsgBody}ChargeParameterDiscoveryResType */
+	{5, 17},
+	/* qnameID == 149: {urn:iso:15118:2:2010:MsgBody}ChargeService */
+	{5, 18},
+	/* qnameID == 150: {urn:iso:15118:2:2010:MsgBody}ChargingComplete */
+	{5, 19},
+	/* qnameID == 151: {urn:iso:15118:2:2010:MsgBody}ChargingProfile */
+	{5, 20},
+	/* qnameID == 152: {urn:iso:15118:2:2010:MsgBody}ChargingStatusReq */
+	{5, 21},
+	/* qnameID == 153: {urn:iso:15118:2:2010:MsgBody}ChargingStatusReqType */
+	{5, 22},
+	/* qnameID == 154: {urn:iso:15118:2:2010:MsgBody}ChargingStatusRes */
+	{5, 23},
+	/* qnameID == 155: {urn:iso:15118:2:2010:MsgBody}ChargingStatusResType */
+	{5, 24},
+	/* qnameID == 156: {urn:iso:15118:2:2010:MsgBody}ContractAuthenticationReq */
+	{5, 25},
+	/* qnameID == 157: {urn:iso:15118:2:2010:MsgBody}ContractAuthenticationReqType */
+	{5, 26},
+	/* qnameID == 158: {urn:iso:15118:2:2010:MsgBody}ContractAuthenticationRes */
+	{5, 27},
+	/* qnameID == 159: {urn:iso:15118:2:2010:MsgBody}ContractAuthenticationResType */
+	{5, 28},
+	/* qnameID == 160: {urn:iso:15118:2:2010:MsgBody}ContractID */
+	{5, 29},
+	/* qnameID == 161: {urn:iso:15118:2:2010:MsgBody}ContractSignatureCertChain */
+	{5, 30},
+	/* qnameID == 162: {urn:iso:15118:2:2010:MsgBody}ContractSignatureEncryptedPrivateKey */
+	{5, 31},
+	/* qnameID == 163: {urn:iso:15118:2:2010:MsgBody}CurrentDemandReq */
+	{5, 32},
+	/* qnameID == 164: {urn:iso:15118:2:2010:MsgBody}CurrentDemandReqType */
+	{5, 33},
+	/* qnameID == 165: {urn:iso:15118:2:2010:MsgBody}CurrentDemandRes */
+	{5, 34},
+	/* qnameID == 166: {urn:iso:15118:2:2010:MsgBody}CurrentDemandResType */
+	{5, 35},
+	/* qnameID == 167: {urn:iso:15118:2:2010:MsgBody}DC_EVSEStatus */
+	{5, 36},
+	/* qnameID == 168: {urn:iso:15118:2:2010:MsgBody}DC_EVStatus */
+	{5, 37},
+	/* qnameID == 169: {urn:iso:15118:2:2010:MsgBody}DHParams */
+	{5, 38},
+	/* qnameID == 170: {urn:iso:15118:2:2010:MsgBody}DateTimeNow */
+	{5, 39},
+	/* qnameID == 171: {urn:iso:15118:2:2010:MsgBody}EVCCID */
+	{5, 40},
+	/* qnameID == 172: {urn:iso:15118:2:2010:MsgBody}EVMaximumCurrentLimit */
+	{5, 41},
+	/* qnameID == 173: {urn:iso:15118:2:2010:MsgBody}EVMaximumPowerLimit */
+	{5, 42},
+	/* qnameID == 174: {urn:iso:15118:2:2010:MsgBody}EVMaximumVoltageLimit */
+	{5, 43},
+	/* qnameID == 175: {urn:iso:15118:2:2010:MsgBody}EVRequestedEnergyTransferType */
+	{5, 44},
+	/* qnameID == 176: {urn:iso:15118:2:2010:MsgBody}EVSECurrentLimitAchieved */
+	{5, 45},
+	/* qnameID == 177: {urn:iso:15118:2:2010:MsgBody}EVSEID */
+	{5, 46},
+	/* qnameID == 178: {urn:iso:15118:2:2010:MsgBody}EVSEMaxCurrent */
+	{5, 47},
+	/* qnameID == 179: {urn:iso:15118:2:2010:MsgBody}EVSEMaximumCurrentLimit */
+	{5, 48},
+	/* qnameID == 180: {urn:iso:15118:2:2010:MsgBody}EVSEMaximumPowerLimit */
+	{5, 49},
+	/* qnameID == 181: {urn:iso:15118:2:2010:MsgBody}EVSEMaximumVoltageLimit */
+	{5, 50},
+	/* qnameID == 182: {urn:iso:15118:2:2010:MsgBody}EVSEPowerLimitAchieved */
+	{5, 51},
+	/* qnameID == 183: {urn:iso:15118:2:2010:MsgBody}EVSEPresentCurrent */
+	{5, 52},
+	/* qnameID == 184: {urn:iso:15118:2:2010:MsgBody}EVSEPresentVoltage */
+	{5, 53},
+	/* qnameID == 185: {urn:iso:15118:2:2010:MsgBody}EVSEProcessing */
+	{5, 54},
+	/* qnameID == 186: {urn:iso:15118:2:2010:MsgBody}EVSEVoltageLimitAchieved */
+	{5, 55},
+	/* qnameID == 187: {urn:iso:15118:2:2010:MsgBody}EVTargetCurrent */
+	{5, 56},
+	/* qnameID == 188: {urn:iso:15118:2:2010:MsgBody}EVTargetVoltage */
+	{5, 57},
+	/* qnameID == 189: {urn:iso:15118:2:2010:MsgBody}GenChallenge */
+	{5, 58},
+	/* qnameID == 190: {urn:iso:15118:2:2010:MsgBody}ListOfRootCertificateIDs */
+	{5, 59},
+	/* qnameID == 191: {urn:iso:15118:2:2010:MsgBody}MeterInfo */
+	{5, 60},
+	/* qnameID == 192: {urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq */
+	{5, 61},
+	/* qnameID == 193: {urn:iso:15118:2:2010:MsgBody}MeteringReceiptReqType */
+	{5, 62},
+	/* qnameID == 194: {urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes */
+	{5, 63},
+	/* qnameID == 195: {urn:iso:15118:2:2010:MsgBody}MeteringReceiptResType */
+	{5, 64},
+	/* qnameID == 196: {urn:iso:15118:2:2010:MsgBody}OEMProvisioningCert */
+	{5, 65},
+	/* qnameID == 197: {urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq */
+	{5, 66},
+	/* qnameID == 198: {urn:iso:15118:2:2010:MsgBody}PaymentDetailsReqType */
+	{5, 67},
+	/* qnameID == 199: {urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes */
+	{5, 68},
+	/* qnameID == 200: {urn:iso:15118:2:2010:MsgBody}PaymentDetailsResType */
+	{5, 69},
+	/* qnameID == 201: {urn:iso:15118:2:2010:MsgBody}PaymentOptions */
+	{5, 70},
+	/* qnameID == 202: {urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq */
+	{5, 71},
+	/* qnameID == 203: {urn:iso:15118:2:2010:MsgBody}PowerDeliveryReqType */
+	{5, 72},
+	/* qnameID == 204: {urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes */
+	{5, 73},
+	/* qnameID == 205: {urn:iso:15118:2:2010:MsgBody}PowerDeliveryResType */
+	{5, 74},
+	/* qnameID == 206: {urn:iso:15118:2:2010:MsgBody}PreChargeReq */
+	{5, 75},
+	/* qnameID == 207: {urn:iso:15118:2:2010:MsgBody}PreChargeReqType */
+	{5, 76},
+	/* qnameID == 208: {urn:iso:15118:2:2010:MsgBody}PreChargeRes */
+	{5, 77},
+	/* qnameID == 209: {urn:iso:15118:2:2010:MsgBody}PreChargeResType */
+	{5, 78},
+	/* qnameID == 210: {urn:iso:15118:2:2010:MsgBody}ReadyToChargeState */
+	{5, 79},
+	/* qnameID == 211: {urn:iso:15118:2:2010:MsgBody}ReceiptRequired */
+	{5, 80},
+	/* qnameID == 212: {urn:iso:15118:2:2010:MsgBody}RemainingTimeToBulkSoC */
+	{5, 81},
+	/* qnameID == 213: {urn:iso:15118:2:2010:MsgBody}RemainingTimeToFullSoC */
+	{5, 82},
+	/* qnameID == 214: {urn:iso:15118:2:2010:MsgBody}ResponseCode */
+	{5, 83},
+	/* qnameID == 215: {urn:iso:15118:2:2010:MsgBody}RetryCounter */
+	{5, 84},
+	/* qnameID == 216: {urn:iso:15118:2:2010:MsgBody}SAScheduleTupleID */
+	{5, 85},
+	/* qnameID == 217: {urn:iso:15118:2:2010:MsgBody}SelectedPaymentOption */
+	{5, 86},
+	/* qnameID == 218: {urn:iso:15118:2:2010:MsgBody}SelectedServiceList */
+	{5, 87},
+	/* qnameID == 219: {urn:iso:15118:2:2010:MsgBody}ServiceCategory */
+	{5, 88},
+	/* qnameID == 220: {urn:iso:15118:2:2010:MsgBody}ServiceDetailReq */
+	{5, 89},
+	/* qnameID == 221: {urn:iso:15118:2:2010:MsgBody}ServiceDetailReqType */
+	{5, 90},
+	/* qnameID == 222: {urn:iso:15118:2:2010:MsgBody}ServiceDetailRes */
+	{5, 91},
+	/* qnameID == 223: {urn:iso:15118:2:2010:MsgBody}ServiceDetailResType */
+	{5, 92},
+	/* qnameID == 224: {urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq */
+	{5, 93},
+	/* qnameID == 225: {urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReqType */
+	{5, 94},
+	/* qnameID == 226: {urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes */
+	{5, 95},
+	/* qnameID == 227: {urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryResType */
+	{5, 96},
+	/* qnameID == 228: {urn:iso:15118:2:2010:MsgBody}ServiceID */
+	{5, 97},
+	/* qnameID == 229: {urn:iso:15118:2:2010:MsgBody}ServiceList */
+	{5, 98},
+	/* qnameID == 230: {urn:iso:15118:2:2010:MsgBody}ServiceParameterList */
+	{5, 99},
+	/* qnameID == 231: {urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq */
+	{5, 100},
+	/* qnameID == 232: {urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReqType */
+	{5, 101},
+	/* qnameID == 233: {urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes */
+	{5, 102},
+	/* qnameID == 234: {urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionResType */
+	{5, 103},
+	/* qnameID == 235: {urn:iso:15118:2:2010:MsgBody}ServiceScope */
+	{5, 104},
+	/* qnameID == 236: {urn:iso:15118:2:2010:MsgBody}SessionID */
+	{5, 105},
+	/* qnameID == 237: {urn:iso:15118:2:2010:MsgBody}SessionSetupReq */
+	{5, 106},
+	/* qnameID == 238: {urn:iso:15118:2:2010:MsgBody}SessionSetupReqType */
+	{5, 107},
+	/* qnameID == 239: {urn:iso:15118:2:2010:MsgBody}SessionSetupRes */
+	{5, 108},
+	/* qnameID == 240: {urn:iso:15118:2:2010:MsgBody}SessionSetupResType */
+	{5, 109},
+	/* qnameID == 241: {urn:iso:15118:2:2010:MsgBody}SessionStopReq */
+	{5, 110},
+	/* qnameID == 242: {urn:iso:15118:2:2010:MsgBody}SessionStopRes */
+	{5, 111},
+	/* qnameID == 243: {urn:iso:15118:2:2010:MsgBody}SessionStopResType */
+	{5, 112},
+	/* qnameID == 244: {urn:iso:15118:2:2010:MsgBody}SessionStopType */
+	{5, 113},
+	/* qnameID == 245: {urn:iso:15118:2:2010:MsgBody}WeldingDetectionReq */
+	{5, 114},
+	/* qnameID == 246: {urn:iso:15118:2:2010:MsgBody}WeldingDetectionReqType */
+	{5, 115},
+	/* qnameID == 247: {urn:iso:15118:2:2010:MsgBody}WeldingDetectionRes */
+	{5, 116},
+	/* qnameID == 248: {urn:iso:15118:2:2010:MsgBody}WeldingDetectionResType */
+	{5, 117},
+	/* qnameID == 249: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVChargeParameter */
+	{6, 0},
+	/* qnameID == 250: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVChargeParameterType */
+	{6, 1},
+	/* qnameID == 251: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVSEChargeParameter */
+	{6, 2},
+	/* qnameID == 252: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVSEChargeParameterType */
+	{6, 3},
+	/* qnameID == 253: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVSEStatus */
+	{6, 4},
+	/* qnameID == 254: {urn:iso:15118:2:2010:MsgDataTypes}AC_EVSEStatusType */
+	{6, 5},
+	/* qnameID == 255: {urn:iso:15118:2:2010:MsgDataTypes}BulkChargingComplete */
+	{6, 6},
+	/* qnameID == 256: {urn:iso:15118:2:2010:MsgDataTypes}BulkSOC */
+	{6, 7},
+	/* qnameID == 257: {urn:iso:15118:2:2010:MsgDataTypes}Certificate */
+	{6, 8},
+	/* qnameID == 258: {urn:iso:15118:2:2010:MsgDataTypes}CertificateChainType */
+	{6, 9},
+	/* qnameID == 259: {urn:iso:15118:2:2010:MsgDataTypes}ChargingComplete */
+	{6, 10},
+	/* qnameID == 260: {urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower */
+	{6, 11},
+	/* qnameID == 261: {urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart */
+	{6, 12},
+	/* qnameID == 262: {urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileType */
+	{6, 13},
+	/* qnameID == 263: {urn:iso:15118:2:2010:MsgDataTypes}ConsumptionCost */
+	{6, 14},
+	/* qnameID == 264: {urn:iso:15118:2:2010:MsgDataTypes}ConsumptionCostType */
+	{6, 15},
+	/* qnameID == 265: {urn:iso:15118:2:2010:MsgDataTypes}Cost */
+	{6, 16},
+	/* qnameID == 266: {urn:iso:15118:2:2010:MsgDataTypes}CostType */
+	{6, 17},
+	/* qnameID == 267: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVChargeParameter */
+	{6, 18},
+	/* qnameID == 268: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVChargeParameterType */
+	{6, 19},
+	/* qnameID == 269: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVErrorCodeType */
+	{6, 20},
+	/* qnameID == 270: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVPowerDeliveryParameter */
+	{6, 21},
+	/* qnameID == 271: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVPowerDeliveryParameterType */
+	{6, 22},
+	/* qnameID == 272: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVSEChargeParameter */
+	{6, 23},
+	/* qnameID == 273: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVSEChargeParameterType */
+	{6, 24},
+	/* qnameID == 274: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVSEStatus */
+	{6, 25},
+	/* qnameID == 275: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVSEStatusCodeType */
+	{6, 26},
+	/* qnameID == 276: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVSEStatusType */
+	{6, 27},
+	/* qnameID == 277: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVStatus */
+	{6, 28},
+	/* qnameID == 278: {urn:iso:15118:2:2010:MsgDataTypes}DC_EVStatusType */
+	{6, 29},
+	/* qnameID == 279: {urn:iso:15118:2:2010:MsgDataTypes}DepartureTime */
+	{6, 30},
+	/* qnameID == 280: {urn:iso:15118:2:2010:MsgDataTypes}EAmount */
+	{6, 31},
+	/* qnameID == 281: {urn:iso:15118:2:2010:MsgDataTypes}EPriceLevel */
+	{6, 32},
+	/* qnameID == 282: {urn:iso:15118:2:2010:MsgDataTypes}EVCabinConditioning */
+	{6, 33},
+	/* qnameID == 283: {urn:iso:15118:2:2010:MsgDataTypes}EVChargeParameter */
+	{6, 34},
+	/* qnameID == 284: {urn:iso:15118:2:2010:MsgDataTypes}EVChargeParameterType */
+	{6, 35},
+	/* qnameID == 285: {urn:iso:15118:2:2010:MsgDataTypes}EVEnergyCapacity */
+	{6, 36},
+	/* qnameID == 286: {urn:iso:15118:2:2010:MsgDataTypes}EVEnergyRequest */
+	{6, 37},
+	/* qnameID == 287: {urn:iso:15118:2:2010:MsgDataTypes}EVErrorCode */
+	{6, 38},
+	/* qnameID == 288: {urn:iso:15118:2:2010:MsgDataTypes}EVMaxCurrent */
+	{6, 39},
+	/* qnameID == 289: {urn:iso:15118:2:2010:MsgDataTypes}EVMaxVoltage */
+	{6, 40},
+	/* qnameID == 290: {urn:iso:15118:2:2010:MsgDataTypes}EVMaximumCurrentLimit */
+	{6, 41},
+	/* qnameID == 291: {urn:iso:15118:2:2010:MsgDataTypes}EVMaximumPowerLimit */
+	{6, 42},
+	/* qnameID == 292: {urn:iso:15118:2:2010:MsgDataTypes}EVMaximumVoltageLimit */
+	{6, 43},
+	/* qnameID == 293: {urn:iso:15118:2:2010:MsgDataTypes}EVMinCurrent */
+	{6, 44},
+	/* qnameID == 294: {urn:iso:15118:2:2010:MsgDataTypes}EVPowerDeliveryParameter */
+	{6, 45},
+	/* qnameID == 295: {urn:iso:15118:2:2010:MsgDataTypes}EVPowerDeliveryParameterType */
+	{6, 46},
+	/* qnameID == 296: {urn:iso:15118:2:2010:MsgDataTypes}EVRESSConditioning */
+	{6, 47},
+	/* qnameID == 297: {urn:iso:15118:2:2010:MsgDataTypes}EVRESSSOC */
+	{6, 48},
+	/* qnameID == 298: {urn:iso:15118:2:2010:MsgDataTypes}EVReady */
+	{6, 49},
+	/* qnameID == 299: {urn:iso:15118:2:2010:MsgDataTypes}EVRequestedEnergyTransferType */
+	{6, 50},
+	/* qnameID == 300: {urn:iso:15118:2:2010:MsgDataTypes}EVSEChargeParameter */
+	{6, 51},
+	/* qnameID == 301: {urn:iso:15118:2:2010:MsgDataTypes}EVSEChargeParameterType */
+	{6, 52},
+	/* qnameID == 302: {urn:iso:15118:2:2010:MsgDataTypes}EVSECurrentRegulationTolerance */
+	{6, 53},
+	/* qnameID == 303: {urn:iso:15118:2:2010:MsgDataTypes}EVSEEnergyToBeDelivered */
+	{6, 54},
+	/* qnameID == 304: {urn:iso:15118:2:2010:MsgDataTypes}EVSEIsolationStatus */
+	{6, 55},
+	/* qnameID == 305: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMaxCurrent */
+	{6, 56},
+	/* qnameID == 306: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMaxVoltage */
+	{6, 57},
+	/* qnameID == 307: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMaximumCurrentLimit */
+	{6, 58},
+	/* qnameID == 308: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMaximumPowerLimit */
+	{6, 59},
+	/* qnameID == 309: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMaximumVoltageLimit */
+	{6, 60},
+	/* qnameID == 310: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMinCurrent */
+	{6, 61},
+	/* qnameID == 311: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMinimumCurrentLimit */
+	{6, 62},
+	/* qnameID == 312: {urn:iso:15118:2:2010:MsgDataTypes}EVSEMinimumVoltageLimit */
+	{6, 63},
+	/* qnameID == 313: {urn:iso:15118:2:2010:MsgDataTypes}EVSENotification */
+	{6, 64},
+	/* qnameID == 314: {urn:iso:15118:2:2010:MsgDataTypes}EVSENotificationType */
+	{6, 65},
+	/* qnameID == 315: {urn:iso:15118:2:2010:MsgDataTypes}EVSEPeakCurrentRipple */
+	{6, 66},
+	/* qnameID == 316: {urn:iso:15118:2:2010:MsgDataTypes}EVSEProcessingType */
+	{6, 67},
+	/* qnameID == 317: {urn:iso:15118:2:2010:MsgDataTypes}EVSEStatus */
+	{6, 68},
+	/* qnameID == 318: {urn:iso:15118:2:2010:MsgDataTypes}EVSEStatusCode */
+	{6, 69},
+	/* qnameID == 319: {urn:iso:15118:2:2010:MsgDataTypes}EVSEStatusType */
+	{6, 70},
+	/* qnameID == 320: {urn:iso:15118:2:2010:MsgDataTypes}EVSESupportedEnergyTransferType */
+	{6, 71},
+	/* qnameID == 321: {urn:iso:15118:2:2010:MsgDataTypes}EVStatus */
+	{6, 72},
+	/* qnameID == 322: {urn:iso:15118:2:2010:MsgDataTypes}EVStatusType */
+	{6, 73},
+	/* qnameID == 323: {urn:iso:15118:2:2010:MsgDataTypes}EnergyTransferType */
+	{6, 74},
+	/* qnameID == 324: {urn:iso:15118:2:2010:MsgDataTypes}Entry */
+	{6, 75},
+	/* qnameID == 325: {urn:iso:15118:2:2010:MsgDataTypes}EntryType */
+	{6, 76},
+	/* qnameID == 326: {urn:iso:15118:2:2010:MsgDataTypes}FaultCode */
+	{6, 77},
+	/* qnameID == 327: {urn:iso:15118:2:2010:MsgDataTypes}FaultMsg */
+	{6, 78},
+	/* qnameID == 328: {urn:iso:15118:2:2010:MsgDataTypes}FreeService */
+	{6, 79},
+	/* qnameID == 329: {urn:iso:15118:2:2010:MsgDataTypes}FullSOC */
+	{6, 80},
+	/* qnameID == 330: {urn:iso:15118:2:2010:MsgDataTypes}IntervalType */
+	{6, 81},
+	/* qnameID == 331: {urn:iso:15118:2:2010:MsgDataTypes}ListOfRootCertificateIDsType */
+	{6, 82},
+	/* qnameID == 332: {urn:iso:15118:2:2010:MsgDataTypes}MeterID */
+	{6, 83},
+	/* qnameID == 333: {urn:iso:15118:2:2010:MsgDataTypes}MeterInfoType */
+	{6, 84},
+	/* qnameID == 334: {urn:iso:15118:2:2010:MsgDataTypes}MeterReading */
+	{6, 85},
+	/* qnameID == 335: {urn:iso:15118:2:2010:MsgDataTypes}MeterStatus */
+	{6, 86},
+	/* qnameID == 336: {urn:iso:15118:2:2010:MsgDataTypes}Multiplier */
+	{6, 87},
+	/* qnameID == 337: {urn:iso:15118:2:2010:MsgDataTypes}NotificationMaxDelay */
+	{6, 88},
+	/* qnameID == 338: {urn:iso:15118:2:2010:MsgDataTypes}NotificationType */
+	{6, 89},
+	/* qnameID == 339: {urn:iso:15118:2:2010:MsgDataTypes}NumEPriceLevels */
+	{6, 90},
+	/* qnameID == 340: {urn:iso:15118:2:2010:MsgDataTypes}PMax */
+	{6, 91},
+	/* qnameID == 341: {urn:iso:15118:2:2010:MsgDataTypes}PMaxSchedule */
+	{6, 92},
+	/* qnameID == 342: {urn:iso:15118:2:2010:MsgDataTypes}PMaxScheduleEntry */
+	{6, 93},
+	/* qnameID == 343: {urn:iso:15118:2:2010:MsgDataTypes}PMaxScheduleEntryType */
+	{6, 94},
+	/* qnameID == 344: {urn:iso:15118:2:2010:MsgDataTypes}PMaxScheduleID */
+	{6, 95},
+	/* qnameID == 345: {urn:iso:15118:2:2010:MsgDataTypes}PMaxScheduleType */
+	{6, 96},
+	/* qnameID == 346: {urn:iso:15118:2:2010:MsgDataTypes}PMaxType */
+	{6, 97},
+	/* qnameID == 347: {urn:iso:15118:2:2010:MsgDataTypes}Parameter */
+	{6, 98},
+	/* qnameID == 348: {urn:iso:15118:2:2010:MsgDataTypes}ParameterSet */
+	{6, 99},
+	/* qnameID == 349: {urn:iso:15118:2:2010:MsgDataTypes}ParameterSetID */
+	{6, 100},
+	/* qnameID == 350: {urn:iso:15118:2:2010:MsgDataTypes}ParameterSetType */
+	{6, 101},
+	/* qnameID == 351: {urn:iso:15118:2:2010:MsgDataTypes}ParameterType */
+	{6, 102},
+	/* qnameID == 352: {urn:iso:15118:2:2010:MsgDataTypes}PaymentOption */
+	{6, 103},
+	/* qnameID == 353: {urn:iso:15118:2:2010:MsgDataTypes}PaymentOptionsType */
+	{6, 104},
+	/* qnameID == 354: {urn:iso:15118:2:2010:MsgDataTypes}PhysicalValueType */
+	{6, 105},
+	/* qnameID == 355: {urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed */
+	{6, 106},
+	/* qnameID == 356: {urn:iso:15118:2:2010:MsgDataTypes}ProfileEntry */
+	{6, 107},
+	/* qnameID == 357: {urn:iso:15118:2:2010:MsgDataTypes}ProfileEntryType */
+	{6, 108},
+	/* qnameID == 358: {urn:iso:15118:2:2010:MsgDataTypes}RCD */
+	{6, 109},
+	/* qnameID == 359: {urn:iso:15118:2:2010:MsgDataTypes}RelativeTimeInterval */
+	{6, 110},
+	/* qnameID == 360: {urn:iso:15118:2:2010:MsgDataTypes}RelativeTimeIntervalType */
+	{6, 111},
+	/* qnameID == 361: {urn:iso:15118:2:2010:MsgDataTypes}RootCertificateID */
+	{6, 112},
+	/* qnameID == 362: {urn:iso:15118:2:2010:MsgDataTypes}SAIDType */
+	{6, 113},
+	/* qnameID == 363: {urn:iso:15118:2:2010:MsgDataTypes}SAScheduleList */
+	{6, 114},
+	/* qnameID == 364: {urn:iso:15118:2:2010:MsgDataTypes}SAScheduleListType */
+	{6, 115},
+	/* qnameID == 365: {urn:iso:15118:2:2010:MsgDataTypes}SAScheduleTuple */
+	{6, 116},
+	/* qnameID == 366: {urn:iso:15118:2:2010:MsgDataTypes}SAScheduleTupleID */
+	{6, 117},
+	/* qnameID == 367: {urn:iso:15118:2:2010:MsgDataTypes}SAScheduleTupleType */
+	{6, 118},
+	/* qnameID == 368: {urn:iso:15118:2:2010:MsgDataTypes}SASchedules */
+	{6, 119},
+	/* qnameID == 369: {urn:iso:15118:2:2010:MsgDataTypes}SASchedulesType */
+	{6, 120},
+	/* qnameID == 370: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariff */
+	{6, 121},
+	/* qnameID == 371: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariffDescription */
+	{6, 122},
+	/* qnameID == 372: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariffEntry */
+	{6, 123},
+	/* qnameID == 373: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariffEntryType */
+	{6, 124},
+	/* qnameID == 374: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariffID */
+	{6, 125},
+	/* qnameID == 375: {urn:iso:15118:2:2010:MsgDataTypes}SalesTariffType */
+	{6, 126},
+	/* qnameID == 376: {urn:iso:15118:2:2010:MsgDataTypes}SelectedService */
+	{6, 127},
+	/* qnameID == 377: {urn:iso:15118:2:2010:MsgDataTypes}SelectedServiceListType */
+	{6, 128},
+	/* qnameID == 378: {urn:iso:15118:2:2010:MsgDataTypes}SelectedServiceType */
+	{6, 129},
+	/* qnameID == 379: {urn:iso:15118:2:2010:MsgDataTypes}Service */
+	{6, 130},
+	/* qnameID == 380: {urn:iso:15118:2:2010:MsgDataTypes}ServiceCategory */
+	{6, 131},
+	/* qnameID == 381: {urn:iso:15118:2:2010:MsgDataTypes}ServiceCharge */
+	{6, 132},
+	/* qnameID == 382: {urn:iso:15118:2:2010:MsgDataTypes}ServiceChargeType */
+	{6, 133},
+	/* qnameID == 383: {urn:iso:15118:2:2010:MsgDataTypes}ServiceID */
+	{6, 134},
+	/* qnameID == 384: {urn:iso:15118:2:2010:MsgDataTypes}ServiceName */
+	{6, 135},
+	/* qnameID == 385: {urn:iso:15118:2:2010:MsgDataTypes}ServiceParameterListType */
+	{6, 136},
+	/* qnameID == 386: {urn:iso:15118:2:2010:MsgDataTypes}ServiceScope */
+	{6, 137},
+	/* qnameID == 387: {urn:iso:15118:2:2010:MsgDataTypes}ServiceTag */
+	{6, 138},
+	/* qnameID == 388: {urn:iso:15118:2:2010:MsgDataTypes}ServiceTagListType */
+	{6, 139},
+	/* qnameID == 389: {urn:iso:15118:2:2010:MsgDataTypes}ServiceTagType */
+	{6, 140},
+	/* qnameID == 390: {urn:iso:15118:2:2010:MsgDataTypes}ServiceType */
+	{6, 141},
+	/* qnameID == 391: {urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading */
+	{6, 142},
+	/* qnameID == 392: {urn:iso:15118:2:2010:MsgDataTypes}SubCertificates */
+	{6, 143},
+	/* qnameID == 393: {urn:iso:15118:2:2010:MsgDataTypes}SubCertificatesType */
+	{6, 144},
+	/* qnameID == 394: {urn:iso:15118:2:2010:MsgDataTypes}TMeter */
+	{6, 145},
+	/* qnameID == 395: {urn:iso:15118:2:2010:MsgDataTypes}TimeInterval */
+	{6, 146},
+	/* qnameID == 396: {urn:iso:15118:2:2010:MsgDataTypes}Unit */
+	{6, 147},
+	/* qnameID == 397: {urn:iso:15118:2:2010:MsgDataTypes}Value */
+	{6, 148},
+	/* qnameID == 398: {urn:iso:15118:2:2010:MsgDataTypes}amount */
+	{6, 149},
+	/* qnameID == 399: {urn:iso:15118:2:2010:MsgDataTypes}amountMultiplier */
+	{6, 150},
+	/* qnameID == 400: {urn:iso:15118:2:2010:MsgDataTypes}boolValue */
+	{6, 151},
+	/* qnameID == 401: {urn:iso:15118:2:2010:MsgDataTypes}byteValue */
+	{6, 152},
+	/* qnameID == 402: {urn:iso:15118:2:2010:MsgDataTypes}certificateType */
+	{6, 153},
+	/* qnameID == 403: {urn:iso:15118:2:2010:MsgDataTypes}contractIDType */
+	{6, 154},
+	/* qnameID == 404: {urn:iso:15118:2:2010:MsgDataTypes}costKind */
+	{6, 155},
+	/* qnameID == 405: {urn:iso:15118:2:2010:MsgDataTypes}costKindType */
+	{6, 156},
+	/* qnameID == 406: {urn:iso:15118:2:2010:MsgDataTypes}dHParamsType */
+	{6, 157},
+	/* qnameID == 407: {urn:iso:15118:2:2010:MsgDataTypes}duration */
+	{6, 158},
+	/* qnameID == 408: {urn:iso:15118:2:2010:MsgDataTypes}evccIDType */
+	{6, 159},
+	/* qnameID == 409: {urn:iso:15118:2:2010:MsgDataTypes}evseIDType */
+	{6, 160},
+	/* qnameID == 410: {urn:iso:15118:2:2010:MsgDataTypes}faultCodeType */
+	{6, 161},
+	/* qnameID == 411: {urn:iso:15118:2:2010:MsgDataTypes}faultMsgType */
+	{6, 162},
+	/* qnameID == 412: {urn:iso:15118:2:2010:MsgDataTypes}genChallengeType */
+	{6, 163},
+	/* qnameID == 413: {urn:iso:15118:2:2010:MsgDataTypes}intValue */
+	{6, 164},
+	/* qnameID == 414: {urn:iso:15118:2:2010:MsgDataTypes}isolationLevelType */
+	{6, 165},
+	/* qnameID == 415: {urn:iso:15118:2:2010:MsgDataTypes}meterIDType */
+	{6, 166},
+	/* qnameID == 416: {urn:iso:15118:2:2010:MsgDataTypes}meterStatusType */
+	{6, 167},
+	/* qnameID == 417: {urn:iso:15118:2:2010:MsgDataTypes}paymentOptionType */
+	{6, 168},
+	/* qnameID == 418: {urn:iso:15118:2:2010:MsgDataTypes}percentValueType */
+	{6, 169},
+	/* qnameID == 419: {urn:iso:15118:2:2010:MsgDataTypes}physicalValue */
+	{6, 170},
+	/* qnameID == 420: {urn:iso:15118:2:2010:MsgDataTypes}privateKeyType */
+	{6, 171},
+	/* qnameID == 421: {urn:iso:15118:2:2010:MsgDataTypes}responseCodeType */
+	{6, 172},
+	/* qnameID == 422: {urn:iso:15118:2:2010:MsgDataTypes}rootCertificateIDType */
+	{6, 173},
+	/* qnameID == 423: {urn:iso:15118:2:2010:MsgDataTypes}serviceCategoryType */
+	{6, 174},
+	/* qnameID == 424: {urn:iso:15118:2:2010:MsgDataTypes}serviceIDType */
+	{6, 175},
+	/* qnameID == 425: {urn:iso:15118:2:2010:MsgDataTypes}serviceNameType */
+	{6, 176},
+	/* qnameID == 426: {urn:iso:15118:2:2010:MsgDataTypes}serviceScopeType */
+	{6, 177},
+	/* qnameID == 427: {urn:iso:15118:2:2010:MsgDataTypes}sessionIDType */
+	{6, 178},
+	/* qnameID == 428: {urn:iso:15118:2:2010:MsgDataTypes}shortValue */
+	{6, 179},
+	/* qnameID == 429: {urn:iso:15118:2:2010:MsgDataTypes}sigMeterReadingType */
+	{6, 180},
+	/* qnameID == 430: {urn:iso:15118:2:2010:MsgDataTypes}start */
+	{6, 181},
+	/* qnameID == 431: {urn:iso:15118:2:2010:MsgDataTypes}startValue */
+	{6, 182},
+	/* qnameID == 432: {urn:iso:15118:2:2010:MsgDataTypes}stringValue */
+	{6, 183},
+	/* qnameID == 433: {urn:iso:15118:2:2010:MsgDataTypes}tariffDescriptionType */
+	{6, 184},
+	/* qnameID == 434: {urn:iso:15118:2:2010:MsgDataTypes}unitMultiplierType */
+	{6, 185},
+	/* qnameID == 435: {urn:iso:15118:2:2010:MsgDataTypes}unitSymbolType */
+	{6, 186},
+	/* qnameID == 436: {urn:iso:15118:2:2010:MsgDataTypes}valueType */
+	{6, 187},
+	/* qnameID == 437: {urn:iso:15118:2:2010:MsgDef}Body */
+	{7, 0},
+	/* qnameID == 438: {urn:iso:15118:2:2010:MsgDef}BodyBaseType */
+	{7, 1},
+	/* qnameID == 439: {urn:iso:15118:2:2010:MsgDef}BodyElement */
+	{7, 2},
+	/* qnameID == 440: {urn:iso:15118:2:2010:MsgDef}BodyType */
+	{7, 3},
+	/* qnameID == 441: {urn:iso:15118:2:2010:MsgDef}Header */
+	{7, 4},
+	/* qnameID == 442: {urn:iso:15118:2:2010:MsgDef}V2G_Message */
+	{7, 5},
+	/* qnameID == 443: {urn:iso:15118:2:2010:MsgHeader}MessageHeaderType */
+	{8, 0},
+	/* qnameID == 444: {urn:iso:15118:2:2010:MsgHeader}Notification */
+	{8, 1},
+	/* qnameID == 445: {urn:iso:15118:2:2010:MsgHeader}SessionID */
+	{8, 2}
+
+};
+
+
+int exiGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart) {
+	int errn = 0;
+	/* EXI_NUMBER_OF_QNAMES */
+	if (qnameID < state->nextQNameID) {
+		*namespaceURI = qnames[qnameID].namespaceURI;
+		*localPart = qnames[qnameID].localPart;
+	} else {
+		errn = EXI_ERROR_OUT_OF_BOUNDS;
+	}
+	return errn;
+}
+
+
+int exiGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID) {
+	uint16_t i;
+	/* TODO Do something more efficient than just walk over the entire list */
+	/* EXI_NUMBER_OF_QNAMES */
+	for(i=0; i<state->nextQNameID; i++) {
+		if(qnames[i].localPart == localPart && qnames[i].namespaceURI == namespaceURI) {
+			*qnameID = i;
+			return 0;
+		}
+	}
+
+	return EXI_ERROR_OUT_OF_BOUNDS;
+}
+
+
+int exiAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart) {
+	int errn = 0;
+	if(state->nextQNameID < (EXI_MAX_NUMBER_OF_QNAMES -1)) {
+		/* store IDs */
+		qnames[state->nextQNameID].namespaceURI = namespaceURI;
+		qnames[state->nextQNameID].localPart = localPart;
+		/* increment counter */
+		*qnameID = state->nextQNameID++;
+	} else {
+		errn = EXI_ERROR_OUT_OF_BOUNDS;
+	}
+
+
+	return errn;
+}
+
+
+#endif
+

+ 7 - 10
src/codec/v2gQNames.h → src/codec/QNames.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,19 +19,16 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
-#ifndef EXI_v2g_QNAMES_H
-#define EXI_v2g_QNAMES_H
+#ifndef EXI__QNAMES_H
+#define EXI__QNAMES_H
 
 #include "EXITypes.h"
 
@@ -45,7 +42,7 @@
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart);
+int exiGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart);
 
 
 /**
@@ -58,7 +55,7 @@ int exiv2gGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID);
+int exiGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID);
 
 
 /**
@@ -71,7 +68,7 @@ int exiv2gGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPa
  * \return                  	Error-Code <> 0
  *
  */
-int exiv2gAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart);
+int exiAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart);
 
 #endif
 

+ 50 - 24
src/codec/StringNameTable.c → src/codec/StringTable.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,24 +19,21 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
-#ifndef STRING_NAME_TABLE_C
-#define STRING_NAME_TABLE_C
+#ifndef STRING_TABLE_C
+#define STRING_TABLE_C
 
 #include <string.h>
 
-#include "StringNameTable.h"
-#include "v2gNameTableEntries.h"
+#include "StringTable.h"
+#include "NameTableEntries.h"
 #include "ErrorCodes.h"
 
 
@@ -54,19 +51,18 @@ int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_tab
 
 int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable,
 		uint16_t uriID, uint16_t* localNameLength) {
-	int errn = 0;
 	*localNameLength = 0;
 	/* 1. pre-populated entries*/
 	if (uriID < prepopulatedTable->len) {
-		(*localNameLength) = (uint16_t)(*localNameLength + prepopulatedTable->localNames[uriID]);
+		(*localNameLength) += prepopulatedTable->localNames[uriID];
 	} else {
 		/* range check */
 		if (uriID >= ( prepopulatedTable->len + runtimeTable->addedUriEntries )) {
-			errn = EXI_ERROR_OUT_OF_BOUNDS;
+			return EXI_ERROR_OUT_OF_BOUNDS;
 		}
 	}
 	/* 2. runtime entries */
-	if (errn == 0 && runtimeTable->addedLocalNameEntries > 0 ) {
+	if (runtimeTable->addedLocalNameEntries > 0 ) {
 		int i;
 		for(i=0; i<(runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries); i++) {
 			if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME &&
@@ -76,7 +72,7 @@ int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_na
 		}
 	}
 
-	return errn;
+	return 0;
 }
 
 
@@ -95,23 +91,53 @@ int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable) {
 }
 
 int exiAddUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable) {
-	uint16_t index = (uint16_t)(runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries);
-	runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_URI;
-	runtimeTable->namePartitionsEntries[index].entry.uriPartition.uriID = (uint16_t)(prepopulatedTable->len + runtimeTable->addedUriEntries);
-	runtimeTable->addedUriEntries++;
-	return 0;
+/*		, char* uri) { */
+	/*if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES
+			|| runtimeTable->addedUriEntries
+					< (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max(
+							runtimeTable->addedLocalNameEntries,
+							EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES))) {*/
+
+		uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries;
+		/*int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;*/
+		runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_URI;
+		/* strcpy(runtimeTable->characters+charsIndex, uri); */
+		/*runtimeTable->namePartitionsEntries[index].entry.uriPartition.uri = runtimeTable->characters+charsIndex;*/
+		runtimeTable->namePartitionsEntries[index].entry.uriPartition.uriID = prepopulatedTable->len + runtimeTable->addedUriEntries;
+		runtimeTable->addedUriEntries++;
+		/* runtimeTable->numberOfUsedCharacters += strlen(uri); */
+		return 0;
+	/*} else {
+		return -1;
+	}*/
 }
 
 int exiAddLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t* localNameID) {
-	uint16_t index = (uint16_t)(runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries);
-	int errn = exiGetLocalNameSize(prepopulatedTable, runtimeTable, uriID, localNameID);
-	if (errn == 0) {
+		/* ,char* localName) { */
+	/*if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES
+			|| runtimeTable->addedLocalNameEntries
+					< (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max(
+							runtimeTable->addedUriEntries,
+							EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES))) {*/
+		uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries;
+		/*int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;*/
+		/*uint16_t localNameID;*/
+		int errn = exiGetLocalNameSize(prepopulatedTable, runtimeTable, uriID, localNameID);
+		if (errn < 0) {
+			return errn;
+		}
+
 		runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_LOCALNAME;
+		/*strcpy(runtimeTable->characters+charsIndex, localName);*/
+		/*runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localName = runtimeTable->characters+charsIndex;*/
 		runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localNameID = *localNameID;
 		runtimeTable->namePartitionsEntries[index].entry.localNamePartition.uriID = uriID;
 		runtimeTable->addedLocalNameEntries++;
-	}
-	return errn;
+		/*runtimeTable->numberOfUsedCharacters += strlen(localName);*/
+		return errn;
+	/*} else {
+		return -1;
+	}*/
 }
 
 #endif

+ 5 - 8
src/codec/StringNameTable.h → src/codec/StringTable.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -35,13 +32,13 @@ extern "C" {
 #endif
 
 /**
- * \file 	StringNameTable.h
+ * \file 	StringTable.h
  * \brief 	String table count implementation
  *
  */
 
-#ifndef STRING_NAME_TABLE_H
-#define STRING_NAME_TABLE_H
+#ifndef STRING_TABLE_H
+#define STRING_TABLE_H
 
 #include "EXITypes.h"
 

+ 0 - 195
src/codec/StringValueTable.c

@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifndef STRING_VALUE_TABLE_C
-#define STRING_VALUE_TABLE_C
-
-#include <string.h>
-
-#include "StringValueTable.h"
-
-#include "EXIConfig.h"
-#include "ErrorCodes.h"
-#include "EXIOptions.h"
-
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-#include "DynamicMemory.h"
-#include <stdlib.h>
-#endif /* DYNAMIC_ALLOCATION */
-
-#define STRING_TABLE_INIT_VALUE_ENTRY_SIZE 16
-
-int exiInitValueStrings(exi_value_table_t* valueTable) {
-	/* int i; */
-	int errn = 0;
-
-	valueTable->numberOfGlobalStrings = 0;
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
-	for(i=0; i<(valueTable->sizeLocalStrings); i++) {
-		valueTable->numberOfLocalStrings[i] = 0;
-	}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
-
-	valueTable->valueStringTable->len = 0;
-
-	return errn;
-}
-
-
-int exiAddStringValue(exi_value_table_t* valueTable,
-		exi_string_ucs_t* sv, uint16_t qnameID) {
-	int currLen;
-	int errn;
-
-
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-	exi_value_string_table_entry_t* oldStrs;
-	int i;
-#endif /* DYNAMIC_ALLOCATION */
-
-	errn = 0;
-	currLen = valueTable->valueStringTable->len;
-
-	if( valueTable->valueStringTable->size == currLen ) {
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-		/* no memory left to handle this string */
-		errn = EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY;
-#endif/* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-		/* expand entries */
-		if (valueTable->valueStringTable->size == 0) {
-			valueTable->valueStringTable->size  = STRING_TABLE_INIT_VALUE_ENTRY_SIZE;
-		} else {
-			valueTable->valueStringTable->size = (uint16_t)(currLen << 1); /* length * 2 */
-		}
-
-		/* old data */
-		oldStrs = valueTable->valueStringTable->strs;
-		valueTable->valueStringTable->strs = (exi_value_string_table_entry_t*) malloc(valueTable->valueStringTable->size * sizeof(exi_value_string_table_entry_t));
-
-		if(currLen > 0) {
-			/* copy old data */
-			for(i=0; i<currLen; i++) {
-				valueTable->valueStringTable->strs[i].localValueID =  oldStrs[i].localValueID;
-				valueTable->valueStringTable->strs[i].qnameID =  oldStrs[i].qnameID;
-				valueTable->valueStringTable->strs[i].str.size = oldStrs[i].str.size;
-				valueTable->valueStringTable->strs[i].str.len =  oldStrs[i].str.len;
-				valueTable->valueStringTable->strs[i].str.codepoints =  oldStrs[i].str.codepoints;
-			}
-			/*free old data */
-			free(oldStrs);
-		}
-#endif /* DYNAMIC_ALLOCATION */
-	}
-
-	if (errn == 0) {
-		valueTable->valueStringTable->strs[currLen].qnameID = qnameID;
-		valueTable->valueStringTable->strs[currLen].localValueID = valueTable->numberOfLocalStrings[qnameID];
-
-
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-		/* make sure the str length fits into existing buffer */
-		if ( sv->len > valueTable->valueStringTable->strs[currLen].str.size ) {
-			errn = EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY;
-		}
-		/* set new length */
-		valueTable->valueStringTable->strs[currLen].str.len = sv->len;
-#endif/* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-		/* allocate codepoints memory */
-		errn = exiAllocateDynamicStringMemory(&valueTable->valueStringTable->strs[currLen].str, sv->len);
-		valueTable->valueStringTable->strs[currLen].str.len = sv->len;
-#endif /* DYNAMIC_ALLOCATION */
-
-		if(errn == 0) {
-			/* copy codepoints */
-			if ( memcpy(valueTable->valueStringTable->strs[currLen].str.codepoints, sv->codepoints, sv->len*sizeof(uint32_t)) == NULL ) {
-				errn = EXI_ERROR_STRINGVALUES_OUT_OF_MEMORY;
-			}
-
-			valueTable->valueStringTable->len++;
-		}
-	}
-
-
-	return errn;
-}
-
-
-int exiGetNumberOfLocalStringValueEntries(exi_value_table_t* valueTable,
-		uint16_t qnameID, uint16_t* numberOfEntries) {
-	/* TODO number of local entries and next id must not match, e.g, if string-table is restricted in number of entries */
-	int i;
-	int errn = 0;
-	*numberOfEntries = 0;
-	for(i=0; i<valueTable->valueStringTable->len; i++) {
-		if( valueTable->valueStringTable->strs[i].qnameID == qnameID ) {
-			(*numberOfEntries)++;
-		}
-	}
-
-	return errn;
-}
-
-int exiGetGlobalStringValue(exi_value_table_t* valueTable,
-		uint16_t globalID, exi_string_ucs_t* sv) {
-	int errn = 0;
-
-	if( valueTable->valueStringTable->len > globalID) {
-		*sv = valueTable->valueStringTable->strs[globalID].str;
-	} else {
-		errn = EXI_ERROR_STRINGVALUES_OUT_OF_BOUND;
-	}
-	return errn;
-}
-
-int exiGetLocalStringValue(exi_value_table_t* valueTable,
-		uint16_t qnameID, uint16_t localID, exi_string_ucs_t* sv) {
-	int i;
-	int errn = EXI_ERROR_STRINGVALUES_OUT_OF_BOUND;
-
-	/* walk over all entries. Note that if number of entries is restricted the local ID may be larger than the number of global entries */
-	for(i=0; i<valueTable->valueStringTable->len && errn != 0; i++) {
-		if( valueTable->valueStringTable->strs[i].qnameID == qnameID && valueTable->valueStringTable->strs[i].localValueID == localID  ) {
-			*sv = valueTable->valueStringTable->strs[i].str;
-			errn = 0;
-		}
-	}
-
-	return errn;
-}
-
-
-#endif
-

+ 0 - 120
src/codec/StringValueTable.h

@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file 	StringValueTable.h
- * \brief 	Value string table implementation
- *
- */
-
-#ifndef STRING_VALUE_TABLE_H
-#define STRING_VALUE_TABLE_H
-
-#include "EXITypes.h"
-
-
-/**
- * \brief  		Init value string tables & partitions
- *
- * 				Resets string value entries
- *
- * \param       valueTable			Value Table
- * \return                  		Error-Code <> 0
- *
- */
-int exiInitValueStrings(exi_value_table_t* valueTable);
-
-
-/**
- * \brief  		Add string value
- *
- * \param       valueTable			Value Table
- * \param       sv					String value to add
- * \param       qnameID				Qualified Name ID
- * \return                  		Error-Code <> 0
- *
- */
-int exiAddStringValue(exi_value_table_t* valueTable,
-		exi_string_ucs_t* sv, uint16_t qnameID);
-
-
-/**
- * \brief  		Get number of local string values
- *
- * \param       valueTable			Value Table
- * \param       qnameID				Qualified Name ID
- * \param       numberOfEntries		Number of local entries for given qname ID
- * \return                  		Error-Code <> 0
- *
- */
-int exiGetNumberOfLocalStringValueEntries(exi_value_table_t* valueTable,
-		uint16_t qnameID, uint16_t* numberOfEntries);
-
-
-/**
- * \brief  		Get global string value hit
- *
- * \param       valueTable			Value Table
- * \param       globalID			Global Value ID
- * \param       sv					Returned Global String value
- * \return                  		Error-Code <> 0
- *
- */
-int exiGetGlobalStringValue(exi_value_table_t* valueTable,
-		uint16_t globalID, exi_string_ucs_t* sv);
-
-
-/**
- * \brief  		Get local string value hit
- *
- * \param       valueTable			Value Table
- * \param       qnameID				Qualified Name ID
- * \param       localID				Local Value ID
- * \param       sv					Returned Local String value
- * \return                  		Error-Code <> 0
- *
- */
-int exiGetLocalStringValue(exi_value_table_t* valueTable,
-		uint16_t qnameID, uint16_t localID, exi_string_ucs_t* sv);
-
-
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

+ 10 - 38
src/codec/UCSString.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,76 +19,48 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
 
 #include <string.h>
 
-#include "UCSString.h"
-
-#include "EXIConfig.h"
 #include "DecoderChannel.h"
 #include "BitInputStream.h"
 #include "EXITypes.h"
 #include "ErrorCodes.h"
 
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-#include "DynamicMemory.h"
-#endif /* DYNAMIC_ALLOCATION */
-
 #ifndef UCS_STRING_C
 #define UCS_STRING_C
 
-
 int toUCSString(char* chars, exi_string_ucs_t* s) {
-	int errn = 0;
 	unsigned int i;
 	s->len = (uint16_t)strlen(chars);
 
-	if (s->len > s->size) {
-#if MEMORY_ALLOCATION == STATIC_ALLOCATION
-		errn = EXI_ERROR_OUT_OF_STRING_BUFFER;
-#endif /* STATIC_ALLOCATION */
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-		errn = exiFreeDynamicStringMemory(s);
-		if(errn == 0) {
-			errn = exiAllocateDynamicStringMemory(s, s->len);
-		}
-
-#endif /* DYNAMIC_ALLOCATION */
-	}
-	if(errn == 0) {
+	if (s->len <= s->size) {
 		for(i=0; i<s->len; i++) {
-			s->codepoints[i] = (uint32_t)chars[i];
+			s->codepoints[i] = chars[i];
 		}
+		return 0;
+	} else {
+		return EXI_ERROR_OUT_OF_STRING_BUFFER;
 	}
-
-	return errn;
 }
 
 /* Note A: fails if string contains non ASCII characters */
 /* Note B: causes harm if char array is not sufficiently long */
 int toASCIIString(exi_string_ucs_t* string, char* outASCII) {
-	int errn = 0;
 	unsigned int i;
-	for(i=0; i<string->len && errn == 0; i++) {
-		if( string->codepoints[i] < 128 ) {
-			outASCII[i] = (char)string->codepoints[i];
-		} else {
-			errn = -1;
-		}
+	for(i=0; i<string->len; i++) {
+		outASCII[i] = (char)string->codepoints[i];
 	}
 	outASCII[string->len] = '\0';
 
-	return errn;
+	return 0;
 }
 
 #endif

+ 2 - 6
src/codec/UCSString.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -60,7 +57,6 @@ int toUCSString(char* chars, exi_string_ucs_t* s);
  * \brief 		Converts String to ASCII characters
  *
  * 				Note: fails if string contains non ASCII characters.
- * 				Note: Make also sure that the char array is large enough.
  *
  * \param       string			UCS String
  * \param       string	   		Input String

+ 468 - 328
src/codec/appHandCodec/appHandEXICoder.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -35,46 +32,38 @@
 
 #include "appHandEXICoder.h"
 
-#include "EXIConfig.h"
 #include "EXITypes.h"
 #include "EXIOptions.h"
 #include "BitInputStream.h"
 #include "DecoderChannel.h"
 #include "ErrorCodes.h"
 
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-#include "StringValueTable.h"
-#endif /* DYNAMIC_ALLOCATION */
-
 
 #ifndef __GNUC__
 #pragma warning( disable : 4100 ) /* warning unreferenced parameter 'qnameID' */
 #endif /* __GNUC__ */
-int exi_appHand_AddStringValue(exi_state_t* state, exi_string_ucs_t* sv, uint16_t qnameID) {
+int exi_appHand_IncrementStringValueCount(exi_state_t* state, uint16_t qnameID) {
 	int errn = 0;
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY != 0
-#if EXI_OPTION_VALUE_MAX_LENGTH != 0
+#if EXI_appHandVALUE_PARTITION_CAPACITY != 0
+#if EXI_appHandVALUE_MAX_LENGTH != 0
 	/* increment global string count */
-#if EXI_OPTION_VALUE_PARTITION_CAPACITY < 0
+#if EXI_appHandVALUE_PARTITION_CAPACITY < 0
 	state->stringTable.numberOfGlobalStrings++;
-#else /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */
-	if (state->stringTable.numberOfGlobalStrings < EXI_OPTION_VALUE_PARTITION_CAPACITY) {
+#else /* EXI_appHandVALUE_PARTITION_CAPACITY < 0 */
+	if (state->stringTable.numberOfGlobalStrings < EXI_appHandVALUE_PARTITION_CAPACITY) {
 		state->stringTable.numberOfGlobalStrings++;
 	}
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY < 0 */
+#endif /* EXI_appHandVALUE_PARTITION_CAPACITY < 0 */
 	/* increment local string count */
 	if (qnameID < state->stringTable.sizeLocalStrings) {
-#if MEMORY_ALLOCATION == DYNAMIC_ALLOCATION
-		errn = exiAddStringValue(&(state->stringTable), sv, qnameID);
-#endif /* DYNAMIC_ALLOCATION */
 		state->stringTable.numberOfLocalStrings[qnameID]++;
 		/* printf("\tSV %d:  lv=%d  and gv=%d \n", qnameID, state->numberOfLocalStrings[qnameID], state->numberOfGlobalStrings);*/
 	} else {
 		/* currently we do support a set of qnames only */
 		errn = EXI_ERROR_OUT_OF_QNAMES;
 	}
-#endif /* EXI_OPTION_VALUE_MAX_LENGTH != 0 */
-#endif /* EXI_OPTION_VALUE_PARTITION_CAPACITY != 0 */
+#endif /* EXI_appHandVALUE_MAX_LENGTH != 0 */
+#endif /* EXI_appHandVALUE_PARTITION_CAPACITY != 0 */
 
 	return errn;
 }
@@ -84,27 +73,32 @@ int exi_appHand_AddStringValue(exi_state_t* state, exi_string_ucs_t* sv, uint16_
 
 
 int exi_appHand_PushStack(exi_state_t* state, int16_t newState, uint16_t qnameID) {
-	int errn = 0;
 	/* eqname_t* eqn*/
 	if ((state->stackIndex + 1) < EXI_ELEMENT_STACK_SIZE) {
 		state->grammarStack[++state->stackIndex] = newState;
 		/* qname */
 		state->elementStack[state->stackIndex] = qnameID;
+
+		/*if (eqn == NULL) {
+			// generic SE, UCD profile
+		} else {
+			// copy IDs
+			state->elementStack[state->stackIndex].localPart = eqn->localPart;
+			state->elementStack[state->stackIndex].namespaceURI = eqn->namespaceURI;
+		}*/
+		return 0;
 	} else {
-		errn = EXI_ERROR_OUT_OF_GRAMMAR_STACK;
+		return EXI_ERROR_OUT_OF_GRAMMAR_STACK;
 	}
-
-	return errn;
 }
 
 int exi_appHand_PopStack(exi_state_t* state) {
-	int errn = 0;
 	if (state->stackIndex >= 1) {
 		state->stackIndex--;
+		return 0;
 	} else {
-		errn = EXI_ERROR_OUT_OF_BOUNDS;
+		return EXI_ERROR_OUT_OF_BOUNDS;
 	}
-	return errn;
 }
 
 int exi_appHand_HandleXsiNilTrue(exi_state_t* state) {
@@ -133,187 +127,187 @@ int exi_appHand_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType) {
 		switch(xsiType->localPart) {
 		case 0:
 			/* {3}0,ENTITIES */
-			state->grammarStack[state->stackIndex] = 47;
+			state->grammarStack[state->stackIndex] = 144;
 			break;
 		case 1:
 			/* {3}1,ENTITY */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 10;
 			break;
 		case 2:
 			/* {3}2,ID */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 141;
 			break;
 		case 3:
 			/* {3}3,IDREF */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 79;
 			break;
 		case 4:
 			/* {3}4,IDREFS */
-			state->grammarStack[state->stackIndex] = 47;
+			state->grammarStack[state->stackIndex] = 29;
 			break;
 		case 5:
 			/* {3}5,NCName */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 98;
 			break;
 		case 6:
 			/* {3}6,NMTOKEN */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 36;
 			break;
 		case 7:
 			/* {3}7,NMTOKENS */
-			state->grammarStack[state->stackIndex] = 47;
+			state->grammarStack[state->stackIndex] = 25;
 			break;
 		case 8:
 			/* {3}8,NOTATION */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 78;
 			break;
 		case 9:
 			/* {3}9,Name */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 101;
 			break;
 		case 10:
 			/* {3}10,QName */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 106;
 			break;
 		case 11:
 			/* {3}11,anySimpleType */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 48;
 			break;
 		case 12:
 			/* {3}12,anyType */
-			state->grammarStack[state->stackIndex] = 49;
+			state->grammarStack[state->stackIndex] = 50;
 			break;
 		case 13:
 			/* {3}13,anyURI */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 142;
 			break;
 		case 14:
 			/* {3}14,base64Binary */
-			state->grammarStack[state->stackIndex] = 51;
+			state->grammarStack[state->stackIndex] = 111;
 			break;
 		case 15:
 			/* {3}15,boolean */
-			state->grammarStack[state->stackIndex] = 53;
+			state->grammarStack[state->stackIndex] = 80;
 			break;
 		case 16:
 			/* {3}16,byte */
-			state->grammarStack[state->stackIndex] = 55;
+			state->grammarStack[state->stackIndex] = 134;
 			break;
 		case 17:
 			/* {3}17,date */
-			state->grammarStack[state->stackIndex] = 57;
+			state->grammarStack[state->stackIndex] = 133;
 			break;
 		case 18:
 			/* {3}18,dateTime */
-			state->grammarStack[state->stackIndex] = 59;
+			state->grammarStack[state->stackIndex] = 104;
 			break;
 		case 19:
 			/* {3}19,decimal */
-			state->grammarStack[state->stackIndex] = 61;
+			state->grammarStack[state->stackIndex] = 53;
 			break;
 		case 20:
 			/* {3}20,double */
-			state->grammarStack[state->stackIndex] = 63;
+			state->grammarStack[state->stackIndex] = 11;
 			break;
 		case 21:
 			/* {3}21,duration */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 55;
 			break;
 		case 22:
 			/* {3}22,float */
-			state->grammarStack[state->stackIndex] = 63;
+			state->grammarStack[state->stackIndex] = 130;
 			break;
 		case 23:
 			/* {3}23,gDay */
-			state->grammarStack[state->stackIndex] = 65;
+			state->grammarStack[state->stackIndex] = 135;
 			break;
 		case 24:
 			/* {3}24,gMonth */
-			state->grammarStack[state->stackIndex] = 67;
+			state->grammarStack[state->stackIndex] = 64;
 			break;
 		case 25:
 			/* {3}25,gMonthDay */
-			state->grammarStack[state->stackIndex] = 69;
+			state->grammarStack[state->stackIndex] = 100;
 			break;
 		case 26:
 			/* {3}26,gYear */
-			state->grammarStack[state->stackIndex] = 71;
+			state->grammarStack[state->stackIndex] = 99;
 			break;
 		case 27:
 			/* {3}27,gYearMonth */
-			state->grammarStack[state->stackIndex] = 73;
+			state->grammarStack[state->stackIndex] = 74;
 			break;
 		case 28:
 			/* {3}28,hexBinary */
-			state->grammarStack[state->stackIndex] = 75;
+			state->grammarStack[state->stackIndex] = 132;
 			break;
 		case 29:
 			/* {3}29,int */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 76;
 			break;
 		case 30:
 			/* {3}30,integer */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 138;
 			break;
 		case 31:
 			/* {3}31,language */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 20;
 			break;
 		case 32:
 			/* {3}32,long */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 93;
 			break;
 		case 33:
 			/* {3}33,negativeInteger */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 89;
 			break;
 		case 34:
 			/* {3}34,nonNegativeInteger */
-			state->grammarStack[state->stackIndex] = 79;
+			state->grammarStack[state->stackIndex] = 57;
 			break;
 		case 35:
 			/* {3}35,nonPositiveInteger */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 69;
 			break;
 		case 36:
 			/* {3}36,normalizedString */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 86;
 			break;
 		case 37:
 			/* {3}37,positiveInteger */
-			state->grammarStack[state->stackIndex] = 79;
+			state->grammarStack[state->stackIndex] = 49;
 			break;
 		case 38:
 			/* {3}38,short */
-			state->grammarStack[state->stackIndex] = 77;
+			state->grammarStack[state->stackIndex] = 68;
 			break;
 		case 39:
 			/* {3}39,string */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 24;
 			break;
 		case 40:
 			/* {3}40,time */
-			state->grammarStack[state->stackIndex] = 80;
+			state->grammarStack[state->stackIndex] = 112;
 			break;
 		case 41:
 			/* {3}41,token */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 143;
 			break;
 		case 42:
 			/* {3}42,unsignedByte */
-			state->grammarStack[state->stackIndex] = 13;
+			state->grammarStack[state->stackIndex] = 122;
 			break;
 		case 43:
 			/* {3}43,unsignedInt */
-			state->grammarStack[state->stackIndex] = 79;
+			state->grammarStack[state->stackIndex] = 102;
 			break;
 		case 44:
 			/* {3}44,unsignedLong */
-			state->grammarStack[state->stackIndex] = 79;
+			state->grammarStack[state->stackIndex] = 21;
 			break;
 		case 45:
 			/* {3}45,unsignedShort */
-			state->grammarStack[state->stackIndex] = 79;
+			state->grammarStack[state->stackIndex] = 7;
 			break;
 		}
 		break;
@@ -321,27 +315,27 @@ int exi_appHand_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType) {
 		switch(xsiType->localPart) {
 		case 0:
 			/* {4}0,AppProtocolType */
-			state->grammarStack[state->stackIndex] = 3;
+			state->grammarStack[state->stackIndex] = 5;
 			break;
 		case 1:
 			/* {4}1,idType */
-			state->grammarStack[state->stackIndex] = 13;
+			state->grammarStack[state->stackIndex] = 45;
 			break;
 		case 2:
 			/* {4}2,priorityType */
-			state->grammarStack[state->stackIndex] = 16;
+			state->grammarStack[state->stackIndex] = 43;
 			break;
 		case 3:
 			/* {4}3,protocolNameType */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 58;
 			break;
 		case 4:
 			/* {4}4,protocolNamespaceType */
-			state->grammarStack[state->stackIndex] = 4;
+			state->grammarStack[state->stackIndex] = 18;
 			break;
 		case 5:
 			/* {4}5,responseCodeType */
-			state->grammarStack[state->stackIndex] = 41;
+			state->grammarStack[state->stackIndex] = 44;
 			break;
 		}
 		break;
@@ -354,68 +348,61 @@ int exi_appHand_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType) {
 
 int exi_appHand_RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID) {
 	int errn = EXI_ERROR_OUT_OF_RUNTIME_GRAMMAR_STACK;
-	int i;
-	int found = 1;
+	int16_t i;
 
 	/* schema-informed global element --> Stack ID */
 	switch(qnameID) {
 	case 65:
-		errn = exi_appHand_PushStack(state, 2, 65);
-		break;
+		return exi_appHand_PushStack(state, 15, 65);
 	case 66:
-		errn = exi_appHand_PushStack(state, 40, 66);
-		break;
+		return exi_appHand_PushStack(state, 16, 66);
 
-	default:
-		found = 0;
-		break;
 	}
 
-	if (!found) {
-		/* retrieve existing grammar for qname if any available */
-		for(i=0; i<state->numberOfRuntimeGrammars && !found; i+=2) {
-			if( state->runtimeGrammars[i].qnameID == qnameID ) {
-				/* runtime grammar exists already */
 
-				/* push element stack */
-				errn = exi_appHand_PushStack(state, (int16_t)((i+1) * (-1)), qnameID);
-				found = 1;
-			}
-		}
-
-		/* create new runtime grammars if possible and not found already */
-		if(!found && (state->numberOfRuntimeGrammars + 2) < (MAX_NUMBER_OF_RUNTIME_ELEMENTS * 2) ) {
-			/* StartTagContent StackIds: -1, -3, -5, ... */
-			state->runtimeGrammars[state->numberOfRuntimeGrammars].qnameID = qnameID;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars].numberOfProductions = 0;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars].hasXsiType = 0;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars].hasEE = 0;
-			/* ElementContent StackIds: -2, -4, -6, ... */
-			state->runtimeGrammars[state->numberOfRuntimeGrammars+1].qnameID = qnameID;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars+1].numberOfProductions = 1;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars+1].hasXsiType = 0;
-			state->runtimeGrammars[state->numberOfRuntimeGrammars+1].hasEE = 1;
+	/* retrieve existing grammar for qname if any available */
+	for(i=0; i<state->numberOfRuntimeGrammars; i+=2) {
+		if( state->runtimeGrammars[i].qnameID == qnameID ) {
+			/* runtime grammar exists already */
 
 			/* push element stack */
-			errn = exi_appHand_PushStack(state, (int16_t)((state->numberOfRuntimeGrammars+1) * (-1)), qnameID);
-
-			state->numberOfRuntimeGrammars = (uint16_t)(state->numberOfRuntimeGrammars + 2);
+			errn = exi_appHand_PushStack(state, ((i+1) * (-1)), qnameID);
+			return errn;
 		}
 	}
 
+	/* create new runtime grammars if possible */
+	if((state->numberOfRuntimeGrammars + 2) < (MAX_NUMBER_OF_RUNTIME_ELEMENTS * 2) ) {
+		/* StartTagContent StackIds: -1, -3, -5, ... */
+		state->runtimeGrammars[state->numberOfRuntimeGrammars].qnameID = qnameID;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars].numberOfProductions = 0;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars].hasXsiType = 0;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars].hasEE = 0;
+		/* ElementContent StackIds: -2, -4, -6, ... */
+		state->runtimeGrammars[state->numberOfRuntimeGrammars+1].qnameID = qnameID;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars+1].numberOfProductions = 1;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars+1].hasXsiType = 0;
+		state->runtimeGrammars[state->numberOfRuntimeGrammars+1].hasEE = 1;
+
+		/* push element stack */
+		errn = exi_appHand_PushStack(state, ((state->numberOfRuntimeGrammars+1) * (-1)), qnameID);
+
+		state->numberOfRuntimeGrammars+=2;
+	}
+
 	return errn;
 }
 
 #ifndef __GNUC__
 #pragma warning( disable : 4100 ) /* warning unreferenced parameter 'qnameID' */
 #endif /* __GNUC__ */
-int exi_appHand_LearnAttribute(exi_state_t* state, uint16_t uriID, uint16_t localID) {
+int exi_appHand_LearnAttribute(exi_state_t* state, uint16_t qnameID, uint16_t uriID, uint16_t localID) {
 	int errn = 0;
 	int16_t currentID = state->grammarStack[state->stackIndex];
 	int16_t runtimeID;
 
 	if (currentID < 0) {
-		runtimeID = (int16_t)((currentID+1)*(-1));
+		runtimeID = (currentID+1)*(-1);
 
 		if (uriID == 2 && localID == 1 ) {
 			/* xsi:type: learned just once */
@@ -438,31 +425,6 @@ int exi_appHand_LearnAttribute(exi_state_t* state, uint16_t uriID, uint16_t loca
 #pragma warning( default : 4100 ) /* warning unreferenced parameter 'qnameID' */
 #endif /* __GNUC__ */
 
-int exi_appHand_LearnEndElement(exi_state_t* state) {
-	int errn = 0;
-	int16_t currentID = state->grammarStack[state->stackIndex];
-	int16_t runtimeID;
-
-	if (currentID < 0) {
-		if( exi_appHand_IsStartContent(currentID) ) {
-			/* check whether EE with an event code of length 1 does not exist in the current element grammar already */
-			runtimeID = (int16_t)((currentID+1)*(-1));
-
-			if(!state->runtimeGrammars[runtimeID].hasEE) {
-				/* hasXsiType stores production position PLUS 1 (one) */
-				state->runtimeGrammars[runtimeID].hasEE = ++state->runtimeGrammars[runtimeID].numberOfProductions;
-			}
-		} else {
-			/* ElementContent disposes already of an EE event */
-		}
-	} else {
-		/* schema-informed grammar do no evolve */
-	}
-
-	return errn;
-}
-
-
 /*
  * RUNTIME RULES
  * each rule has 2 ids and counts backwards from -1, -2, ...
@@ -472,249 +434,427 @@ int exi_appHand_LearnEndElement(exi_state_t* state) {
  */
 
 int exi_appHand_IsStartContent(int16_t ruleID) {
-	/* Note: only for built-in element grammars */
 	return (ruleID % 2 != 0);
 }
 
 int exi_appHand_MoveToElementContentRule(exi_state_t* state) {
-	int errn = 0;
 	int16_t currentID = state->grammarStack[state->stackIndex];
-	int found = 1;
-
-
 	switch (currentID) {
-	case 65:
+	case 100:
 		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 66;
-		break;
-	case 41:
-		/* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */
-		state->grammarStack[state->stackIndex] = 42;
-		break;
-	case 40:
-		/* FirstStartTag[START_ELEMENT(ResponseCode)] --> Element[START_ELEMENT(ResponseCode)] */
-		state->grammarStack[state->stackIndex] = 44;
-		break;
-	case 4:
+		state->grammarStack[state->stackIndex] = 139;
+		return 0;
+	case 143:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 40;
+		return 0;
+	case 86:
 		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
-		state->grammarStack[state->stackIndex] = 7;
-		break;
-	case 77:
-		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
-		state->grammarStack[state->stackIndex] = 78;
-		break;
-	case 2:
-		/* FirstStartTag[START_ELEMENT(AppProtocol)] --> Element[START_ELEMENT(AppProtocol)] */
 		state->grammarStack[state->stackIndex] = 38;
-		break;
-	case 75:
+		return 0;
+	case 134:
+		/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 56;
+		return 0;
+	case 24:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 118;
+		return 0;
+	case 132:
 		/* FirstStartTag[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */
-		state->grammarStack[state->stackIndex] = 76;
-		break;
-	case 0:
-		/* Document[START_DOCUMENT] --> Document[START_DOCUMENT] */
-	case 1:
-		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] --> DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */
+		state->grammarStack[state->stackIndex] = 28;
+		return 0;
+	case 98:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 131;
+		return 0;
+	case 133:
+		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		state->grammarStack[state->stackIndex] = 121;
+		return 0;
+	case 89:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 107;
+		return 0;
+	case 78:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 137;
+		return 0;
+	case 101:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 70;
+		return 0;
+	case 50:
+		/* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		state->grammarStack[state->stackIndex] = 51;
+		return 0;
+	case 142:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 12;
+		return 0;
 	case 5:
-		/* Element[END_ELEMENT] --> Element[END_ELEMENT] */
-	case 6:
-		/* Element[] --> Element[] */
+		/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] --> Element[START_ELEMENT(ProtocolNamespace)] */
+		state->grammarStack[state->stackIndex] = 30;
+		return 0;
+	case 104:
+		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		state->grammarStack[state->stackIndex] = 88;
+		return 0;
 	case 7:
-		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 119;
+		return 0;
+	case 16:
+		/* FirstStartTag[START_ELEMENT(ResponseCode)] --> Element[START_ELEMENT(ResponseCode)] */
+		state->grammarStack[state->stackIndex] = 117;
+		return 0;
+	case 53:
+		/* FirstStartTag[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */
+		state->grammarStack[state->stackIndex] = 116;
+		return 0;
+	case 106:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 67;
+		return 0;
+	case 44:
+		/* FirstStartTag[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */
+		state->grammarStack[state->stackIndex] = 71;
+		return 0;
+	case 93:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 47;
+		return 0;
+	case 135:
+		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		state->grammarStack[state->stackIndex] = 63;
+		return 0;
+	case 64:
+		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		state->grammarStack[state->stackIndex] = 82;
+		return 0;
+	case 29:
+		/* FirstStartTag[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
+		state->grammarStack[state->stackIndex] = 140;
+		return 0;
+	case 1:
+		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+	case 3:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
 	case 8:
-		/* Element[START_ELEMENT(VersionNumberMajor)] --> Element[START_ELEMENT(VersionNumberMajor)] */
-	case 10:
-		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
-	case 11:
-		/* Element[START_ELEMENT(VersionNumberMinor)] --> Element[START_ELEMENT(VersionNumberMinor)] */
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
 	case 12:
-		/* Element[START_ELEMENT(SchemaID)] --> Element[START_ELEMENT(SchemaID)] */
-	case 14:
-		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-	case 15:
-		/* Element[START_ELEMENT(Priority)] --> Element[START_ELEMENT(Priority)] */
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 13:
+		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] --> DocContent[START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC] */
 	case 17:
-		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-	case 18:
-		/* Element[START_ELEMENT(ProtocolNamespace)] --> Element[START_ELEMENT(ProtocolNamespace)] */
+		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
 	case 19:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 20:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 21:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 22:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 23:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 24:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 25:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+	case 2:
+		/* Element[END_ELEMENT] --> Element[END_ELEMENT] */
 	case 26:
 		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 27:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 0:
+		/* Document[START_DOCUMENT] --> Document[START_DOCUMENT] */
 	case 28:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 29:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		/* Element[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */
 	case 30:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 31:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		/* Element[START_ELEMENT(ProtocolNamespace)] --> Element[START_ELEMENT(ProtocolNamespace)] */
 	case 32:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
 	case 33:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 34:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 35:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 36:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		/* Element[START_ELEMENT(VersionNumberMinor)] --> Element[START_ELEMENT(VersionNumberMinor)] */
 	case 37:
-		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
-	case 38:
-		/* Element[START_ELEMENT(AppProtocol)] --> Element[START_ELEMENT(AppProtocol)] */
+		/* Element[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */
 	case 39:
-		/* DocEnd[END_DOCUMENT] --> DocEnd[END_DOCUMENT] */
+		/* Element[END_ELEMENT] --> Element[END_ELEMENT] */
+	case 38:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 40:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 41:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
 	case 42:
-		/* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */
-	case 43:
-		/* Element[START_ELEMENT(SchemaID), END_ELEMENT] --> Element[START_ELEMENT(SchemaID), END_ELEMENT] */
-	case 44:
-		/* Element[START_ELEMENT(ResponseCode)] --> Element[START_ELEMENT(ResponseCode)] */
-	case 45:
-		/* Fragment[START_DOCUMENT] --> Fragment[START_DOCUMENT] */
-	case 46:
 		/* FragmentContent[START_ELEMENT(AppProtocol), START_ELEMENT(Priority), START_ELEMENT(ProtocolNamespace), START_ELEMENT(ResponseCode), START_ELEMENT(SchemaID), START_ELEMENT(VersionNumberMajor), START_ELEMENT(VersionNumberMinor), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC, END_DOCUMENT] --> FragmentContent[START_ELEMENT(AppProtocol), START_ELEMENT(Priority), START_ELEMENT(ProtocolNamespace), START_ELEMENT(ResponseCode), START_ELEMENT(SchemaID), START_ELEMENT(VersionNumberMajor), START_ELEMENT(VersionNumberMinor), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolReq), START_ELEMENT({urn:iso:15118:2:2010:AppProtocol}supportedAppProtocolRes), START_ELEMENT_GENERIC, END_DOCUMENT] */
-	case 48:
-		/* Element[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
-	case 50:
-		/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+	case 47:
+		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
 	case 52:
 		/* Element[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */
 	case 54:
-		/* Element[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
 	case 56:
 		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-	case 58:
-		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 59:
+		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
 	case 60:
-		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 31:
+		/* Element[START_ELEMENT(VersionNumberMajor)] --> Element[START_ELEMENT(VersionNumberMajor)] */
 	case 62:
-		/* Element[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */
-	case 64:
 		/* Element[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */
-	case 66:
-		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-	case 68:
+	case 63:
 		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 65:
+		/* Element[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
+	case 67:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
 	case 70:
-		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 71:
+		/* Element[CHARACTERS[ENUMERATION]] --> Element[CHARACTERS[ENUMERATION]] */
 	case 72:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 75:
+		/* Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+	case 23:
+		/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+	case 77:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 81:
+		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 82:
 		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-	case 74:
+	case 83:
+		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+	case 84:
 		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-	case 76:
-		/* Element[CHARACTERS[BINARY_HEX]] --> Element[CHARACTERS[BINARY_HEX]] */
-	case 78:
+	case 85:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 87:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 88:
+		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 34:
+		/* Element[START_ELEMENT(SchemaID)] --> Element[START_ELEMENT(SchemaID)] */
+	case 9:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 91:
 		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
-	case 81:
+	case 94:
+		/* Element[START_ELEMENT(AppProtocol)] --> Element[START_ELEMENT(AppProtocol)] */
+	case 95:
+		/* Element[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
+	case 96:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 97:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 6:
+		/* Element[] --> Element[] */
+	case 103:
+		/* Element[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */
+	case 105:
+		/* Fragment[START_DOCUMENT] --> Fragment[START_DOCUMENT] */
+	case 107:
+		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+	case 109:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 108:
+		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 92:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 114:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 115:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 116:
+		/* Element[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */
+	case 117:
+		/* Element[START_ELEMENT(ResponseCode)] --> Element[START_ELEMENT(ResponseCode)] */
+	case 118:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 119:
+		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 120:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 121:
 		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		break;
+	case 124:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 123:
+		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 27:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 126:
+		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 90:
+		/* Element[START_ELEMENT(Priority)] --> Element[START_ELEMENT(Priority)] */
 	case 51:
-		/* FirstStartTag[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */
-		state->grammarStack[state->stackIndex] = 52;
-		break;
+		/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+	case 128:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 66:
+		/* Element[START_ELEMENT(SchemaID), END_ELEMENT] --> Element[START_ELEMENT(SchemaID), END_ELEMENT] */
+	case 131:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 110:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 61:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 127:
+		/* Element[END_ELEMENT] --> Element[END_ELEMENT] */
+	case 14:
+		/* DocEnd[END_DOCUMENT] --> DocEnd[END_DOCUMENT] */
+	case 136:
+		/* Element[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+	case 113:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 4:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 137:
+		/* Element[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+	case 125:
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+	case 140:
+		/* Element[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
+	case 139:
+		/* Element[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+	case 145:
+		/* Element[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 129:
+		/* Element[END_ELEMENT] --> Element[END_ELEMENT] */
 	case 73:
-		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 74;
-		break;
-	case 80:
-		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 81;
-		break;
-	case 9:
-		/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+		/* Element[START_ELEMENT(AppProtocol), END_ELEMENT] --> Element[START_ELEMENT(AppProtocol), END_ELEMENT] */
+		return 0;
+	case 68:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 136;
+		return 0;
 	case 79:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 54;
+		return 0;
+	case 43:
+		/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 19;
+		return 0;
+	case 49:
 		/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
-		state->grammarStack[state->stackIndex] = 10;
-		break;
-	case 67:
-		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 68;
-		break;
-	case 47:
+		state->grammarStack[state->stackIndex] = 59;
+		return 0;
+	case 111:
+		/* FirstStartTag[CHARACTERS[BINARY_BASE64]] --> Element[CHARACTERS[BINARY_BASE64]] */
+		state->grammarStack[state->stackIndex] = 52;
+		return 0;
+	case 11:
+		/* FirstStartTag[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */
+		state->grammarStack[state->stackIndex] = 62;
+		return 0;
+	case 21:
+		/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 108;
+		return 0;
+	case 25:
 		/* FirstStartTag[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
-		state->grammarStack[state->stackIndex] = 48;
-		break;
-	case 13:
+		state->grammarStack[state->stackIndex] = 95;
+		return 0;
+	case 112:
+		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
+		state->grammarStack[state->stackIndex] = 126;
+		return 0;
+	case 57:
+		/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 145;
+		return 0;
+	case 22:
+		/* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		state->grammarStack[state->stackIndex] = 23;
+		return 0;
+	case 45:
 		/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-		state->grammarStack[state->stackIndex] = 14;
-		break;
-	case 63:
-		/* FirstStartTag[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */
-		state->grammarStack[state->stackIndex] = 64;
-		break;
-	case 3:
-		/* FirstStartTag[START_ELEMENT(ProtocolNamespace)] --> Element[START_ELEMENT(ProtocolNamespace)] */
-		state->grammarStack[state->stackIndex] = 18;
-		break;
-	case 53:
-		/* FirstStartTag[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */
-		state->grammarStack[state->stackIndex] = 54;
-		break;
-	case 16:
+		state->grammarStack[state->stackIndex] = 75;
+		return 0;
+	case 15:
+		/* FirstStartTag[START_ELEMENT(AppProtocol)] --> Element[START_ELEMENT(AppProtocol)] */
+		state->grammarStack[state->stackIndex] = 94;
+		return 0;
+	case 76:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 83;
+		return 0;
+	case 138:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 91;
+		return 0;
+	case 122:
 		/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-		state->grammarStack[state->stackIndex] = 17;
-		break;
-	case 59:
-		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 60;
-		break;
+		state->grammarStack[state->stackIndex] = 1;
+		return 0;
+	case 48:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 96;
+		return 0;
+	case 80:
+		/* FirstStartTag[CHARACTERS[BOOLEAN]] --> Element[CHARACTERS[BOOLEAN]] */
+		state->grammarStack[state->stackIndex] = 37;
+		return 0;
 	case 55:
-		/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] --> Element[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
-		state->grammarStack[state->stackIndex] = 56;
-		break;
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 41;
+		return 0;
+	case 10:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 87;
+		return 0;
+	case 20:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 32;
+		return 0;
+	case 36:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 120;
+		return 0;
+	case 130:
+		/* FirstStartTag[CHARACTERS[FLOAT]] --> Element[CHARACTERS[FLOAT]] */
+		state->grammarStack[state->stackIndex] = 103;
+		return 0;
+	case 141:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 114;
+		return 0;
+	case 144:
+		/* FirstStartTag[CHARACTERS[LIST]] --> Element[CHARACTERS[LIST]] */
+		state->grammarStack[state->stackIndex] = 65;
+		return 0;
+	case 58:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 85;
+		return 0;
 	case 69:
+		/* FirstStartTag[CHARACTERS[INTEGER]] --> Element[CHARACTERS[INTEGER]] */
+		state->grammarStack[state->stackIndex] = 17;
+		return 0;
+	case 46:
+		/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 35:
+		/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+	case 102:
+		/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] --> Element[CHARACTERS[UNSIGNED_INTEGER]] */
+		state->grammarStack[state->stackIndex] = 81;
+		return 0;
+	case 74:
 		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 70;
-		break;
-	case 61:
-		/* FirstStartTag[CHARACTERS[DECIMAL]] --> Element[CHARACTERS[DECIMAL]] */
-		state->grammarStack[state->stackIndex] = 62;
-		break;
-	case 49:
-		/* FirstStartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] --> Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
-		state->grammarStack[state->stackIndex] = 50;
-		break;
-	case 57:
-		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 58;
-		break;
-	case 71:
+		state->grammarStack[state->stackIndex] = 123;
+		return 0;
+	case 99:
 		/* FirstStartTag[CHARACTERS[DATETIME]] --> Element[CHARACTERS[DATETIME]] */
-		state->grammarStack[state->stackIndex] = 72;
-		break;
+		state->grammarStack[state->stackIndex] = 84;
+		return 0;
+	case 18:
+		/* FirstStartTag[CHARACTERS[STRING]] --> Element[CHARACTERS[STRING]] */
+		state->grammarStack[state->stackIndex] = 77;
+		return 0;
 
-	default:
-		found = 0;
-		break;
 	}
 
-	if(!found) {
-		if (currentID < 0) {
-			if(exi_appHand_IsStartContent(currentID)) {
-				state->grammarStack[state->stackIndex] = (int16_t)(currentID - 1);
-			}
-		} else {
-			errn = EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE;
+	if (currentID < 0) {
+		if( exi_appHand_IsStartContent(currentID) ) {
+			state->grammarStack[state->stackIndex] = currentID - 1;
 		}
+	} else {
+		return EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE;
 	}
 
-	return errn;
+	return 0;
 }
 
 

+ 8 - 12
src/codec/appHandCodec/appHandEXICoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -40,13 +37,14 @@ extern "C" {
 #include "EXITypes.h"
 
 #define DOCUMENT 0
-#define DOC_CONTENT 1
-#define DOC_END 39
+#define DOC_CONTENT 13
+#define DOC_END 14
+#define UR_TYPE_GRAMMAR_0 22
+#define UR_TYPE_GRAMMAR_1 23
 
 
 /* increments global and local string count */
-/* in case of dynamic memory string is collected */
-int exi_appHand_AddStringValue(exi_state_t* state, exi_string_ucs_t* sv, uint16_t qnameID);
+int exi_appHand_IncrementStringValueCount(exi_state_t* state, uint16_t qnameID);
 
 int exi_appHand_PushStack(exi_state_t* state, int16_t newState, uint16_t qnameID);
 
@@ -58,9 +56,7 @@ int exi_appHand_HandleXsiType(exi_state_t* state, exi_eqname_t* xsiType);
 
 int exi_appHand_RetrieveAndPushGlobalGrammar(exi_state_t* state, uint16_t qnameID);
 
-int exi_appHand_LearnAttribute(exi_state_t* state, uint16_t uriID, uint16_t localID);
-
-int exi_appHand_LearnEndElement(exi_state_t* state);
+int exi_appHand_LearnAttribute(exi_state_t* state, uint16_t qnameID, uint16_t uriID, uint16_t localID);
 
 int exi_appHand_IsStartContent(int16_t ruleID);
 

Datei-Diff unterdrückt, da er zu groß ist
+ 483 - 336
src/codec/appHandCodec/appHandEXIDecoder.c


+ 4 - 7
src/codec/appHandCodec/appHandEXIDecoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -58,7 +55,7 @@ extern "C" {
  *
  */
 int exiappHandInitDecoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable);
+		exi_name_table_runtime_t runtimeTable, exi_string_table_t stringTable);
 
 
 /**
@@ -111,7 +108,7 @@ int exiappHandDecodeEndDocument(bitstream_t* stream,
 		exi_state_t* state);
 
 /**
- * \brief 		Decodes StartElement (SE) event
+ * \brief 		Decodes StartElemnt (SE) event
  *
  * 				Note: The first time a qnameID is larger than schema-informed NUMBER_OF_QNAMES it is possible to retrieve the qname by calling GetLastQName(...).
  * 				It is up to the caller to track qnames.

Datei-Diff unterdrückt, da er zu groß ist
+ 697 - 701
src/codec/appHandCodec/appHandEXIEncoder.c


+ 3 - 6
src/codec/appHandCodec/appHandEXIEncoder.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -59,7 +56,7 @@ extern "C" {
  *
  */
 int exiappHandInitEncoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable, exi_value_table_t stringTable);
+		exi_name_table_runtime_t runtimeTable, exi_string_table_t stringTable);
 
 /**
  * \brief  	Reports the beginning of a set of XML events

+ 2 - 5
src/codec/appHandCodec/appHandNameTableEntries.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 2 - 5
src/codec/appHandCodec/appHandNameTableEntries.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 

+ 3 - 6
src/codec/appHandCodec/appHandQNameDefines.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -41,7 +38,7 @@ extern "C" {
 #define EXI_appHandNUMBER_OF_PREPOPULATED_QNAMES 67
 
 /** Number of runtime qnames */
-#define EXI_appHandMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES 100
+#define EXI_appHandMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES 10
 
 /** Number of overall qnames (pre-populated from schema and runtime qnames) */
 #define EXI_appHandMAX_NUMBER_OF_QNAMES (EXI_appHandNUMBER_OF_PREPOPULATED_QNAMES + EXI_appHandMAX_NUMBER_OF_SUPPORTED_RUNTIMES_QNAMES)

+ 5 - 9
src/codec/appHandCodec/appHandQNames.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 
@@ -192,17 +189,16 @@ int exiappHandGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespac
 
 int exiappHandGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID) {
 	uint16_t i;
-	int errn = EXI_ERROR_OUT_OF_BOUNDS;
 	/* TODO Do something more efficient than just walk over the entire list */
 	/* EXI_appHandNUMBER_OF_QNAMES */
-	for(i=0; i<state->nextQNameID && errn != 0; i++) {
+	for(i=0; i<state->nextQNameID; i++) {
 		if(qnames[i].localPart == localPart && qnames[i].namespaceURI == namespaceURI) {
 			*qnameID = i;
-			errn = 0;
+			return 0;
 		}
 	}
 
-	return errn;
+	return EXI_ERROR_OUT_OF_BOUNDS;
 }
 
 

+ 2 - 5
src/codec/appHandCodec/appHandQNames.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2013 Siemens AG
+ * Copyright (C) 2007-2012 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
@@ -19,13 +19,10 @@
 /*******************************************************************
  *
  * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/appHandshake/V2G_CI_AppProtocol.xsd</p>
- *
- *
  ********************************************************************/
 
 

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1325
src/codec/v2gEXICoder.c


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 947
src/codec/v2gEXIDecoder.c


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 331
src/codec/v2gEXIEncoder.c


+ 0 - 204
src/codec/v2gNameTableEntries.c

@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifndef EXI_v2g_NAME_TABLE_ENTRIES_C
-#define EXI_v2g_NAME_TABLE_ENTRIES_C
-
-#include "v2gNameTableEntries.h"
-
-
-
-/* ==================================== */
-/* String Table Population */
-
-/* localName entries for URI '', id = 0 */
-/* 
-  "Algorithm",  "Encoding",  "Id",  "MimeType",  "Target",
-  "Type",  "URI"
- */
-
-/* localName entries for URI 'http://www.w3.org/XML/1998/namespace', id = 1 */
-/* 
-  "base",  "id",  "lang",  "space"
- */
-
-/* localName entries for URI 'http://www.w3.org/2001/XMLSchema-instance', id = 2 */
-/* 
-  "nil",  "type"
- */
-
-/* localName entries for URI 'http://www.w3.org/2001/XMLSchema', id = 3 */
-/* 
-  "ENTITIES",  "ENTITY",  "ID",  "IDREF",  "IDREFS",
-  "NCName",  "NMTOKEN",  "NMTOKENS",  "NOTATION",  "Name",
-  "QName",  "anySimpleType",  "anyType",  "anyURI",  "base64Binary",
-  "boolean",  "byte",  "date",  "dateTime",  "decimal",
-  "double",  "duration",  "float",  "gDay",  "gMonth",
-  "gMonthDay",  "gYear",  "gYearMonth",  "hexBinary",  "int",
-  "integer",  "language",  "long",  "negativeInteger",  "nonNegativeInteger",
-  "nonPositiveInteger",  "normalizedString",  "positiveInteger",  "short",  "string",
-  "time",  "token",  "unsignedByte",  "unsignedInt",  "unsignedLong",
-  "unsignedShort"
- */
-
-/* localName entries for URI 'http://www.w3.org/2000/09/xmldsig#', id = 4 */
-/* 
-  "CanonicalizationMethod",  "CanonicalizationMethodType",  "CryptoBinary",  "DSAKeyValue",  "DSAKeyValueType",
-  "DigestMethod",  "DigestMethodType",  "DigestValue",  "DigestValueType",  "Exponent",
-  "G",  "HMACOutputLength",  "HMACOutputLengthType",  "J",  "KeyInfo",
-  "KeyInfoType",  "KeyName",  "KeyValue",  "KeyValueType",  "Manifest",
-  "ManifestType",  "MgmtData",  "Modulus",  "Object",  "ObjectType",
-  "P",  "PGPData",  "PGPDataType",  "PGPKeyID",  "PGPKeyPacket",
-  "PgenCounter",  "Q",  "RSAKeyValue",  "RSAKeyValueType",  "Reference",
-  "ReferenceType",  "RetrievalMethod",  "RetrievalMethodType",  "SPKIData",  "SPKIDataType",
-  "SPKISexp",  "Seed",  "Signature",  "SignatureMethod",  "SignatureMethodType",
-  "SignatureProperties",  "SignaturePropertiesType",  "SignatureProperty",  "SignaturePropertyType",  "SignatureType",
-  "SignatureValue",  "SignatureValueType",  "SignedInfo",  "SignedInfoType",  "Transform",
-  "TransformType",  "Transforms",  "TransformsType",  "X509CRL",  "X509Certificate",
-  "X509Data",  "X509DataType",  "X509IssuerName",  "X509IssuerSerial",  "X509IssuerSerialType",
-  "X509SKI",  "X509SerialNumber",  "X509SubjectName",  "XPath",  "Y"
-
- */
-
-/* localName entries for URI 'urn:iso:15118:2:2013:MsgBody', id = 5 */
-/* 
-  "AC_EVSEStatus",  "AuthorizationReq",  "AuthorizationReqType",  "AuthorizationRes",  "AuthorizationResType",
-  "BodyBaseType",  "BodyElement",  "BodyType",  "BulkChargingComplete",  "CableCheckReq",
-  "CableCheckReqType",  "CableCheckRes",  "CableCheckResType",  "CertificateInstallationReq",  "CertificateInstallationReqType",
-  "CertificateInstallationRes",  "CertificateInstallationResType",  "CertificateUpdateReq",  "CertificateUpdateReqType",  "CertificateUpdateRes",
-  "CertificateUpdateResType",  "ChargeParameterDiscoveryReq",  "ChargeParameterDiscoveryReqType",  "ChargeParameterDiscoveryRes",  "ChargeParameterDiscoveryResType",
-  "ChargeProgress",  "ChargeService",  "ChargingComplete",  "ChargingProfile",  "ChargingSession",
-  "ChargingStatusReq",  "ChargingStatusReqType",  "ChargingStatusRes",  "ChargingStatusResType",  "ContractSignatureCertChain",
-  "ContractSignatureEncryptedPrivateKey",  "CurrentDemandReq",  "CurrentDemandReqType",  "CurrentDemandRes",  "CurrentDemandResType",
-  "DC_EVSEStatus",  "DC_EVStatus",  "DHpublickey",  "EVCCID",  "EVMaximumCurrentLimit",
-  "EVMaximumPowerLimit",  "EVMaximumVoltageLimit",  "EVSECurrentLimitAchieved",  "EVSEID",  "EVSEMaxCurrent",
-  "EVSEMaximumCurrentLimit",  "EVSEMaximumPowerLimit",  "EVSEMaximumVoltageLimit",  "EVSEPowerLimitAchieved",  "EVSEPresentCurrent",
-  "EVSEPresentVoltage",  "EVSEProcessing",  "EVSETimeStamp",  "EVSEVoltageLimitAchieved",  "EVTargetCurrent",
-  "EVTargetVoltage",  "GenChallenge",  "Id",  "ListOfRootCertificateIDs",  "MaxEntriesSAScheduleTuple",
-  "MeterInfo",  "MeteringReceiptReq",  "MeteringReceiptReqType",  "MeteringReceiptRes",  "MeteringReceiptResType",
-  "OEMProvisioningCert",  "PaymentDetailsReq",  "PaymentDetailsReqType",  "PaymentDetailsRes",  "PaymentDetailsResType",
-  "PaymentOptionList",  "PaymentServiceSelectionReq",  "PaymentServiceSelectionReqType",  "PaymentServiceSelectionRes",  "PaymentServiceSelectionResType",
-  "PowerDeliveryReq",  "PowerDeliveryReqType",  "PowerDeliveryRes",  "PowerDeliveryResType",  "PreChargeReq",
-  "PreChargeReqType",  "PreChargeRes",  "PreChargeResType",  "ReceiptRequired",  "RemainingTimeToBulkSoC",
-  "RemainingTimeToFullSoC",  "RequestedEnergyTransferMode",  "ResponseCode",  "RetryCounter",  "SAProvisioningCertificateChain",
-  "SAScheduleTupleID",  "SelectedPaymentOption",  "SelectedServiceList",  "ServiceCategory",  "ServiceDetailReq",
-  "ServiceDetailReqType",  "ServiceDetailRes",  "ServiceDetailResType",  "ServiceDiscoveryReq",  "ServiceDiscoveryReqType",
-  "ServiceDiscoveryRes",  "ServiceDiscoveryResType",  "ServiceID",  "ServiceList",  "ServiceParameterList",
-  "ServiceScope",  "SessionID",  "SessionSetupReq",  "SessionSetupReqType",  "SessionSetupRes",
-  "SessionSetupResType",  "SessionStopReq",  "SessionStopReqType",  "SessionStopRes",  "SessionStopResType",
-  "WeldingDetectionReq",  "WeldingDetectionReqType",  "WeldingDetectionRes",  "WeldingDetectionResType",  "eMAID"
-
- */
-
-/* localName entries for URI 'urn:iso:15118:2:2013:MsgDataTypes', id = 6 */
-/* 
-  "AC_EVChargeParameter",  "AC_EVChargeParameterType",  "AC_EVSEChargeParameter",  "AC_EVSEChargeParameterType",  "AC_EVSEStatus",
-  "AC_EVSEStatusType",  "BulkChargingComplete",  "BulkSOC",  "Certificate",  "CertificateChainType",
-  "ChargeServiceType",  "ChargingComplete",  "ChargingProfileEntryMaxNumberOfPhasesInUse",  "ChargingProfileEntryMaxPower",  "ChargingProfileEntryStart",
-  "ChargingProfileType",  "ConsumptionCost",  "ConsumptionCostType",  "ContractSignatureEncryptedPrivateKeyType",  "Cost",
-  "CostType",  "DC_EVChargeParameter",  "DC_EVChargeParameterType",  "DC_EVErrorCodeType",  "DC_EVPowerDeliveryParameter",
-  "DC_EVPowerDeliveryParameterType",  "DC_EVSEChargeParameter",  "DC_EVSEChargeParameterType",  "DC_EVSEStatus",  "DC_EVSEStatusCodeType",
-  "DC_EVSEStatusType",  "DC_EVStatus",  "DC_EVStatusType",  "DepartureTime",  "DiffieHellmanPublickeyType",
-  "EAmount",  "EMAIDType",  "EPriceLevel",  "EVChargeParameter",  "EVChargeParameterType",
-  "EVEnergyCapacity",  "EVEnergyRequest",  "EVErrorCode",  "EVMaxCurrent",  "EVMaxVoltage",
-  "EVMaximumCurrentLimit",  "EVMaximumPowerLimit",  "EVMaximumVoltageLimit",  "EVMinCurrent",  "EVPowerDeliveryParameter",
-  "EVPowerDeliveryParameterType",  "EVRESSSOC",  "EVReady",  "EVSEChargeParameter",  "EVSEChargeParameterType",
-  "EVSECurrentRegulationTolerance",  "EVSEEnergyToBeDelivered",  "EVSEIsolationStatus",  "EVSEMaxCurrent",  "EVSEMaximumCurrentLimit",
-  "EVSEMaximumPowerLimit",  "EVSEMaximumVoltageLimit",  "EVSEMinimumCurrentLimit",  "EVSEMinimumVoltageLimit",  "EVSENominalVoltage",
-  "EVSENotification",  "EVSENotificationType",  "EVSEPeakCurrentRipple",  "EVSEProcessingType",  "EVSEStatus",
-  "EVSEStatusCode",  "EVSEStatusType",  "EVStatus",  "EVStatusType",  "EnergyTransferMode",
-  "EnergyTransferModeType",  "Entry",  "EntryType",  "FaultCode",  "FaultMsg",
-  "FreeService",  "FullSOC",  "Id",  "IntervalType",  "ListOfRootCertificateIDsType",
-  "MeterID",  "MeterInfoType",  "MeterReading",  "MeterStatus",  "Multiplier",
-  "Name",  "NotificationMaxDelay",  "NotificationType",  "NumEPriceLevels",  "PMax",
-  "PMaxSchedule",  "PMaxScheduleEntry",  "PMaxScheduleEntryType",  "PMaxScheduleType",  "Parameter",
-  "ParameterSet",  "ParameterSetID",  "ParameterSetType",  "ParameterType",  "PaymentOption",
-  "PaymentOptionListType",  "PhysicalValueType",  "ProfileEntry",  "ProfileEntryType",  "RCD",
-  "RelativeTimeInterval",  "RelativeTimeIntervalType",  "RootCertificateID",  "SAIDType",  "SAScheduleList",
-  "SAScheduleListType",  "SAScheduleTuple",  "SAScheduleTupleID",  "SAScheduleTupleType",  "SASchedules",
-  "SASchedulesType",  "SalesTariff",  "SalesTariffDescription",  "SalesTariffEntry",  "SalesTariffEntryType",
-  "SalesTariffID",  "SalesTariffType",  "SelectedService",  "SelectedServiceListType",  "SelectedServiceType",
-  "Service",  "ServiceCategory",  "ServiceID",  "ServiceListType",  "ServiceName",
-  "ServiceParameterListType",  "ServiceScope",  "ServiceType",  "SigMeterReading",  "SubCertificates",
-  "SubCertificatesType",  "SupportedEnergyTransferMode",  "SupportedEnergyTransferModeType",  "TMeter",  "TimeInterval",
-  "Unit",  "Value",  "amount",  "amountMultiplier",  "boolValue",
-  "byteValue",  "certificateType",  "chargeProgressType",  "chargingSessionType",  "costKind",
-  "costKindType",  "dHpublickeyType",  "duration",  "eMAIDType",  "evccIDType",
-  "evseIDType",  "faultCodeType",  "faultMsgType",  "genChallengeType",  "intValue",
-  "isolationLevelType",  "maxNumPhasesType",  "meterIDType",  "meterStatusType",  "paymentOptionType",
-  "percentValueType",  "physicalValue",  "privateKeyType",  "responseCodeType",  "serviceCategoryType",
-  "serviceIDType",  "serviceNameType",  "serviceScopeType",  "sessionIDType",  "shortValue",
-  "sigMeterReadingType",  "start",  "startValue",  "stringValue",  "tariffDescriptionType",
-  "unitMultiplierType",  "unitSymbolType",  "valueType"
- */
-
-/* localName entries for URI 'urn:iso:15118:2:2013:MsgDef', id = 7 */
-/* 
-  "Body",  "Header",  "V2G_Message"
- */
-
-/* localName entries for URI 'urn:iso:15118:2:2013:MsgHeader', id = 8 */
-/* 
-  "MessageHeaderType",  "Notification",  "SessionID"
- */
-
-
-/* number of local-name entries per URI */
-static uint16_t localNames[9] = {
-	/* '' */
-	7,
-	/* 'http://www.w3.org/XML/1998/namespace' */
-	4,
-	/* 'http://www.w3.org/2001/XMLSchema-instance' */
-	2,
-	/* 'http://www.w3.org/2001/XMLSchema' */
-	46,
-	/* 'http://www.w3.org/2000/09/xmldsig#' */
-	70,
-	/* 'urn:iso:15118:2:2013:MsgBody' */
-	125,
-	/* 'urn:iso:15118:2:2013:MsgDataTypes' */
-	188,
-	/* 'urn:iso:15118:2:2013:MsgDef' */
-	3,
-	/* 'urn:iso:15118:2:2013:MsgHeader' */
-	3
-};
-
-
-exi_name_table_prepopulated_t exiv2gNameTablePrepopulated = { 9, localNames };
-
-
-
-
-#endif
-

+ 0 - 989
src/codec/v2gQNames.c

@@ -1,989 +0,0 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.8 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer.com</p>
- * <p>Schema: input/test_v2g/V2G_CI_MsgDef.xsd</p>
- *
- *
- ********************************************************************/
-
-
-
-#ifndef EXI_v2g_QNAMES_C
-#define EXI_v2g_QNAMES_C
-
-#include "EXITypes.h"
-#include "ErrorCodes.h"
-#include "v2gQNameDefines.h"
-
-/* qname is a composition of namespaceURI(ID) and localPart(ID) */
-static exi_eqname_t qnames[EXI_v2gMAX_NUMBER_OF_QNAMES] = {
-	/* qnameID == 0: Algorithm */
-	{0, 0},
-	/* qnameID == 1: Encoding */
-	{0, 1},
-	/* qnameID == 2: Id */
-	{0, 2},
-	/* qnameID == 3: MimeType */
-	{0, 3},
-	/* qnameID == 4: Target */
-	{0, 4},
-	/* qnameID == 5: Type */
-	{0, 5},
-	/* qnameID == 6: URI */
-	{0, 6},
-	/* qnameID == 7: {http://www.w3.org/XML/1998/namespace}base */
-	{1, 0},
-	/* qnameID == 8: {http://www.w3.org/XML/1998/namespace}id */
-	{1, 1},
-	/* qnameID == 9: {http://www.w3.org/XML/1998/namespace}lang */
-	{1, 2},
-	/* qnameID == 10: {http://www.w3.org/XML/1998/namespace}space */
-	{1, 3},
-	/* qnameID == 11: {http://www.w3.org/2001/XMLSchema-instance}nil */
-	{2, 0},
-	/* qnameID == 12: {http://www.w3.org/2001/XMLSchema-instance}type */
-	{2, 1},
-	/* qnameID == 13: {http://www.w3.org/2001/XMLSchema}ENTITIES */
-	{3, 0},
-	/* qnameID == 14: {http://www.w3.org/2001/XMLSchema}ENTITY */
-	{3, 1},
-	/* qnameID == 15: {http://www.w3.org/2001/XMLSchema}ID */
-	{3, 2},
-	/* qnameID == 16: {http://www.w3.org/2001/XMLSchema}IDREF */
-	{3, 3},
-	/* qnameID == 17: {http://www.w3.org/2001/XMLSchema}IDREFS */
-	{3, 4},
-	/* qnameID == 18: {http://www.w3.org/2001/XMLSchema}NCName */
-	{3, 5},
-	/* qnameID == 19: {http://www.w3.org/2001/XMLSchema}NMTOKEN */
-	{3, 6},
-	/* qnameID == 20: {http://www.w3.org/2001/XMLSchema}NMTOKENS */
-	{3, 7},
-	/* qnameID == 21: {http://www.w3.org/2001/XMLSchema}NOTATION */
-	{3, 8},
-	/* qnameID == 22: {http://www.w3.org/2001/XMLSchema}Name */
-	{3, 9},
-	/* qnameID == 23: {http://www.w3.org/2001/XMLSchema}QName */
-	{3, 10},
-	/* qnameID == 24: {http://www.w3.org/2001/XMLSchema}anySimpleType */
-	{3, 11},
-	/* qnameID == 25: {http://www.w3.org/2001/XMLSchema}anyType */
-	{3, 12},
-	/* qnameID == 26: {http://www.w3.org/2001/XMLSchema}anyURI */
-	{3, 13},
-	/* qnameID == 27: {http://www.w3.org/2001/XMLSchema}base64Binary */
-	{3, 14},
-	/* qnameID == 28: {http://www.w3.org/2001/XMLSchema}boolean */
-	{3, 15},
-	/* qnameID == 29: {http://www.w3.org/2001/XMLSchema}byte */
-	{3, 16},
-	/* qnameID == 30: {http://www.w3.org/2001/XMLSchema}date */
-	{3, 17},
-	/* qnameID == 31: {http://www.w3.org/2001/XMLSchema}dateTime */
-	{3, 18},
-	/* qnameID == 32: {http://www.w3.org/2001/XMLSchema}decimal */
-	{3, 19},
-	/* qnameID == 33: {http://www.w3.org/2001/XMLSchema}double */
-	{3, 20},
-	/* qnameID == 34: {http://www.w3.org/2001/XMLSchema}duration */
-	{3, 21},
-	/* qnameID == 35: {http://www.w3.org/2001/XMLSchema}float */
-	{3, 22},
-	/* qnameID == 36: {http://www.w3.org/2001/XMLSchema}gDay */
-	{3, 23},
-	/* qnameID == 37: {http://www.w3.org/2001/XMLSchema}gMonth */
-	{3, 24},
-	/* qnameID == 38: {http://www.w3.org/2001/XMLSchema}gMonthDay */
-	{3, 25},
-	/* qnameID == 39: {http://www.w3.org/2001/XMLSchema}gYear */
-	{3, 26},
-	/* qnameID == 40: {http://www.w3.org/2001/XMLSchema}gYearMonth */
-	{3, 27},
-	/* qnameID == 41: {http://www.w3.org/2001/XMLSchema}hexBinary */
-	{3, 28},
-	/* qnameID == 42: {http://www.w3.org/2001/XMLSchema}int */
-	{3, 29},
-	/* qnameID == 43: {http://www.w3.org/2001/XMLSchema}integer */
-	{3, 30},
-	/* qnameID == 44: {http://www.w3.org/2001/XMLSchema}language */
-	{3, 31},
-	/* qnameID == 45: {http://www.w3.org/2001/XMLSchema}long */
-	{3, 32},
-	/* qnameID == 46: {http://www.w3.org/2001/XMLSchema}negativeInteger */
-	{3, 33},
-	/* qnameID == 47: {http://www.w3.org/2001/XMLSchema}nonNegativeInteger */
-	{3, 34},
-	/* qnameID == 48: {http://www.w3.org/2001/XMLSchema}nonPositiveInteger */
-	{3, 35},
-	/* qnameID == 49: {http://www.w3.org/2001/XMLSchema}normalizedString */
-	{3, 36},
-	/* qnameID == 50: {http://www.w3.org/2001/XMLSchema}positiveInteger */
-	{3, 37},
-	/* qnameID == 51: {http://www.w3.org/2001/XMLSchema}short */
-	{3, 38},
-	/* qnameID == 52: {http://www.w3.org/2001/XMLSchema}string */
-	{3, 39},
-	/* qnameID == 53: {http://www.w3.org/2001/XMLSchema}time */
-	{3, 40},
-	/* qnameID == 54: {http://www.w3.org/2001/XMLSchema}token */
-	{3, 41},
-	/* qnameID == 55: {http://www.w3.org/2001/XMLSchema}unsignedByte */
-	{3, 42},
-	/* qnameID == 56: {http://www.w3.org/2001/XMLSchema}unsignedInt */
-	{3, 43},
-	/* qnameID == 57: {http://www.w3.org/2001/XMLSchema}unsignedLong */
-	{3, 44},
-	/* qnameID == 58: {http://www.w3.org/2001/XMLSchema}unsignedShort */
-	{3, 45},
-	/* qnameID == 59: {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod */
-	{4, 0},
-	/* qnameID == 60: {http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethodType */
-	{4, 1},
-	/* qnameID == 61: {http://www.w3.org/2000/09/xmldsig#}CryptoBinary */
-	{4, 2},
-	/* qnameID == 62: {http://www.w3.org/2000/09/xmldsig#}DSAKeyValue */
-	{4, 3},
-	/* qnameID == 63: {http://www.w3.org/2000/09/xmldsig#}DSAKeyValueType */
-	{4, 4},
-	/* qnameID == 64: {http://www.w3.org/2000/09/xmldsig#}DigestMethod */
-	{4, 5},
-	/* qnameID == 65: {http://www.w3.org/2000/09/xmldsig#}DigestMethodType */
-	{4, 6},
-	/* qnameID == 66: {http://www.w3.org/2000/09/xmldsig#}DigestValue */
-	{4, 7},
-	/* qnameID == 67: {http://www.w3.org/2000/09/xmldsig#}DigestValueType */
-	{4, 8},
-	/* qnameID == 68: {http://www.w3.org/2000/09/xmldsig#}Exponent */
-	{4, 9},
-	/* qnameID == 69: {http://www.w3.org/2000/09/xmldsig#}G */
-	{4, 10},
-	/* qnameID == 70: {http://www.w3.org/2000/09/xmldsig#}HMACOutputLength */
-	{4, 11},
-	/* qnameID == 71: {http://www.w3.org/2000/09/xmldsig#}HMACOutputLengthType */
-	{4, 12},
-	/* qnameID == 72: {http://www.w3.org/2000/09/xmldsig#}J */
-	{4, 13},
-	/* qnameID == 73: {http://www.w3.org/2000/09/xmldsig#}KeyInfo */
-	{4, 14},
-	/* qnameID == 74: {http://www.w3.org/2000/09/xmldsig#}KeyInfoType */
-	{4, 15},
-	/* qnameID == 75: {http://www.w3.org/2000/09/xmldsig#}KeyName */
-	{4, 16},
-	/* qnameID == 76: {http://www.w3.org/2000/09/xmldsig#}KeyValue */
-	{4, 17},
-	/* qnameID == 77: {http://www.w3.org/2000/09/xmldsig#}KeyValueType */
-	{4, 18},
-	/* qnameID == 78: {http://www.w3.org/2000/09/xmldsig#}Manifest */
-	{4, 19},
-	/* qnameID == 79: {http://www.w3.org/2000/09/xmldsig#}ManifestType */
-	{4, 20},
-	/* qnameID == 80: {http://www.w3.org/2000/09/xmldsig#}MgmtData */
-	{4, 21},
-	/* qnameID == 81: {http://www.w3.org/2000/09/xmldsig#}Modulus */
-	{4, 22},
-	/* qnameID == 82: {http://www.w3.org/2000/09/xmldsig#}Object */
-	{4, 23},
-	/* qnameID == 83: {http://www.w3.org/2000/09/xmldsig#}ObjectType */
-	{4, 24},
-	/* qnameID == 84: {http://www.w3.org/2000/09/xmldsig#}P */
-	{4, 25},
-	/* qnameID == 85: {http://www.w3.org/2000/09/xmldsig#}PGPData */
-	{4, 26},
-	/* qnameID == 86: {http://www.w3.org/2000/09/xmldsig#}PGPDataType */
-	{4, 27},
-	/* qnameID == 87: {http://www.w3.org/2000/09/xmldsig#}PGPKeyID */
-	{4, 28},
-	/* qnameID == 88: {http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket */
-	{4, 29},
-	/* qnameID == 89: {http://www.w3.org/2000/09/xmldsig#}PgenCounter */
-	{4, 30},
-	/* qnameID == 90: {http://www.w3.org/2000/09/xmldsig#}Q */
-	{4, 31},
-	/* qnameID == 91: {http://www.w3.org/2000/09/xmldsig#}RSAKeyValue */
-	{4, 32},
-	/* qnameID == 92: {http://www.w3.org/2000/09/xmldsig#}RSAKeyValueType */
-	{4, 33},
-	/* qnameID == 93: {http://www.w3.org/2000/09/xmldsig#}Reference */
-	{4, 34},
-	/* qnameID == 94: {http://www.w3.org/2000/09/xmldsig#}ReferenceType */
-	{4, 35},
-	/* qnameID == 95: {http://www.w3.org/2000/09/xmldsig#}RetrievalMethod */
-	{4, 36},
-	/* qnameID == 96: {http://www.w3.org/2000/09/xmldsig#}RetrievalMethodType */
-	{4, 37},
-	/* qnameID == 97: {http://www.w3.org/2000/09/xmldsig#}SPKIData */
-	{4, 38},
-	/* qnameID == 98: {http://www.w3.org/2000/09/xmldsig#}SPKIDataType */
-	{4, 39},
-	/* qnameID == 99: {http://www.w3.org/2000/09/xmldsig#}SPKISexp */
-	{4, 40},
-	/* qnameID == 100: {http://www.w3.org/2000/09/xmldsig#}Seed */
-	{4, 41},
-	/* qnameID == 101: {http://www.w3.org/2000/09/xmldsig#}Signature */
-	{4, 42},
-	/* qnameID == 102: {http://www.w3.org/2000/09/xmldsig#}SignatureMethod */
-	{4, 43},
-	/* qnameID == 103: {http://www.w3.org/2000/09/xmldsig#}SignatureMethodType */
-	{4, 44},
-	/* qnameID == 104: {http://www.w3.org/2000/09/xmldsig#}SignatureProperties */
-	{4, 45},
-	/* qnameID == 105: {http://www.w3.org/2000/09/xmldsig#}SignaturePropertiesType */
-	{4, 46},
-	/* qnameID == 106: {http://www.w3.org/2000/09/xmldsig#}SignatureProperty */
-	{4, 47},
-	/* qnameID == 107: {http://www.w3.org/2000/09/xmldsig#}SignaturePropertyType */
-	{4, 48},
-	/* qnameID == 108: {http://www.w3.org/2000/09/xmldsig#}SignatureType */
-	{4, 49},
-	/* qnameID == 109: {http://www.w3.org/2000/09/xmldsig#}SignatureValue */
-	{4, 50},
-	/* qnameID == 110: {http://www.w3.org/2000/09/xmldsig#}SignatureValueType */
-	{4, 51},
-	/* qnameID == 111: {http://www.w3.org/2000/09/xmldsig#}SignedInfo */
-	{4, 52},
-	/* qnameID == 112: {http://www.w3.org/2000/09/xmldsig#}SignedInfoType */
-	{4, 53},
-	/* qnameID == 113: {http://www.w3.org/2000/09/xmldsig#}Transform */
-	{4, 54},
-	/* qnameID == 114: {http://www.w3.org/2000/09/xmldsig#}TransformType */
-	{4, 55},
-	/* qnameID == 115: {http://www.w3.org/2000/09/xmldsig#}Transforms */
-	{4, 56},
-	/* qnameID == 116: {http://www.w3.org/2000/09/xmldsig#}TransformsType */
-	{4, 57},
-	/* qnameID == 117: {http://www.w3.org/2000/09/xmldsig#}X509CRL */
-	{4, 58},
-	/* qnameID == 118: {http://www.w3.org/2000/09/xmldsig#}X509Certificate */
-	{4, 59},
-	/* qnameID == 119: {http://www.w3.org/2000/09/xmldsig#}X509Data */
-	{4, 60},
-	/* qnameID == 120: {http://www.w3.org/2000/09/xmldsig#}X509DataType */
-	{4, 61},
-	/* qnameID == 121: {http://www.w3.org/2000/09/xmldsig#}X509IssuerName */
-	{4, 62},
-	/* qnameID == 122: {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial */
-	{4, 63},
-	/* qnameID == 123: {http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType */
-	{4, 64},
-	/* qnameID == 124: {http://www.w3.org/2000/09/xmldsig#}X509SKI */
-	{4, 65},
-	/* qnameID == 125: {http://www.w3.org/2000/09/xmldsig#}X509SerialNumber */
-	{4, 66},
-	/* qnameID == 126: {http://www.w3.org/2000/09/xmldsig#}X509SubjectName */
-	{4, 67},
-	/* qnameID == 127: {http://www.w3.org/2000/09/xmldsig#}XPath */
-	{4, 68},
-	/* qnameID == 128: {http://www.w3.org/2000/09/xmldsig#}Y */
-	{4, 69},
-	/* qnameID == 129: {urn:iso:15118:2:2013:MsgBody}AC_EVSEStatus */
-	{5, 0},
-	/* qnameID == 130: {urn:iso:15118:2:2013:MsgBody}AuthorizationReq */
-	{5, 1},
-	/* qnameID == 131: {urn:iso:15118:2:2013:MsgBody}AuthorizationReqType */
-	{5, 2},
-	/* qnameID == 132: {urn:iso:15118:2:2013:MsgBody}AuthorizationRes */
-	{5, 3},
-	/* qnameID == 133: {urn:iso:15118:2:2013:MsgBody}AuthorizationResType */
-	{5, 4},
-	/* qnameID == 134: {urn:iso:15118:2:2013:MsgBody}BodyBaseType */
-	{5, 5},
-	/* qnameID == 135: {urn:iso:15118:2:2013:MsgBody}BodyElement */
-	{5, 6},
-	/* qnameID == 136: {urn:iso:15118:2:2013:MsgBody}BodyType */
-	{5, 7},
-	/* qnameID == 137: {urn:iso:15118:2:2013:MsgBody}BulkChargingComplete */
-	{5, 8},
-	/* qnameID == 138: {urn:iso:15118:2:2013:MsgBody}CableCheckReq */
-	{5, 9},
-	/* qnameID == 139: {urn:iso:15118:2:2013:MsgBody}CableCheckReqType */
-	{5, 10},
-	/* qnameID == 140: {urn:iso:15118:2:2013:MsgBody}CableCheckRes */
-	{5, 11},
-	/* qnameID == 141: {urn:iso:15118:2:2013:MsgBody}CableCheckResType */
-	{5, 12},
-	/* qnameID == 142: {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReq */
-	{5, 13},
-	/* qnameID == 143: {urn:iso:15118:2:2013:MsgBody}CertificateInstallationReqType */
-	{5, 14},
-	/* qnameID == 144: {urn:iso:15118:2:2013:MsgBody}CertificateInstallationRes */
-	{5, 15},
-	/* qnameID == 145: {urn:iso:15118:2:2013:MsgBody}CertificateInstallationResType */
-	{5, 16},
-	/* qnameID == 146: {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReq */
-	{5, 17},
-	/* qnameID == 147: {urn:iso:15118:2:2013:MsgBody}CertificateUpdateReqType */
-	{5, 18},
-	/* qnameID == 148: {urn:iso:15118:2:2013:MsgBody}CertificateUpdateRes */
-	{5, 19},
-	/* qnameID == 149: {urn:iso:15118:2:2013:MsgBody}CertificateUpdateResType */
-	{5, 20},
-	/* qnameID == 150: {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReq */
-	{5, 21},
-	/* qnameID == 151: {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryReqType */
-	{5, 22},
-	/* qnameID == 152: {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryRes */
-	{5, 23},
-	/* qnameID == 153: {urn:iso:15118:2:2013:MsgBody}ChargeParameterDiscoveryResType */
-	{5, 24},
-	/* qnameID == 154: {urn:iso:15118:2:2013:MsgBody}ChargeProgress */
-	{5, 25},
-	/* qnameID == 155: {urn:iso:15118:2:2013:MsgBody}ChargeService */
-	{5, 26},
-	/* qnameID == 156: {urn:iso:15118:2:2013:MsgBody}ChargingComplete */
-	{5, 27},
-	/* qnameID == 157: {urn:iso:15118:2:2013:MsgBody}ChargingProfile */
-	{5, 28},
-	/* qnameID == 158: {urn:iso:15118:2:2013:MsgBody}ChargingSession */
-	{5, 29},
-	/* qnameID == 159: {urn:iso:15118:2:2013:MsgBody}ChargingStatusReq */
-	{5, 30},
-	/* qnameID == 160: {urn:iso:15118:2:2013:MsgBody}ChargingStatusReqType */
-	{5, 31},
-	/* qnameID == 161: {urn:iso:15118:2:2013:MsgBody}ChargingStatusRes */
-	{5, 32},
-	/* qnameID == 162: {urn:iso:15118:2:2013:MsgBody}ChargingStatusResType */
-	{5, 33},
-	/* qnameID == 163: {urn:iso:15118:2:2013:MsgBody}ContractSignatureCertChain */
-	{5, 34},
-	/* qnameID == 164: {urn:iso:15118:2:2013:MsgBody}ContractSignatureEncryptedPrivateKey */
-	{5, 35},
-	/* qnameID == 165: {urn:iso:15118:2:2013:MsgBody}CurrentDemandReq */
-	{5, 36},
-	/* qnameID == 166: {urn:iso:15118:2:2013:MsgBody}CurrentDemandReqType */
-	{5, 37},
-	/* qnameID == 167: {urn:iso:15118:2:2013:MsgBody}CurrentDemandRes */
-	{5, 38},
-	/* qnameID == 168: {urn:iso:15118:2:2013:MsgBody}CurrentDemandResType */
-	{5, 39},
-	/* qnameID == 169: {urn:iso:15118:2:2013:MsgBody}DC_EVSEStatus */
-	{5, 40},
-	/* qnameID == 170: {urn:iso:15118:2:2013:MsgBody}DC_EVStatus */
-	{5, 41},
-	/* qnameID == 171: {urn:iso:15118:2:2013:MsgBody}DHpublickey */
-	{5, 42},
-	/* qnameID == 172: {urn:iso:15118:2:2013:MsgBody}EVCCID */
-	{5, 43},
-	/* qnameID == 173: {urn:iso:15118:2:2013:MsgBody}EVMaximumCurrentLimit */
-	{5, 44},
-	/* qnameID == 174: {urn:iso:15118:2:2013:MsgBody}EVMaximumPowerLimit */
-	{5, 45},
-	/* qnameID == 175: {urn:iso:15118:2:2013:MsgBody}EVMaximumVoltageLimit */
-	{5, 46},
-	/* qnameID == 176: {urn:iso:15118:2:2013:MsgBody}EVSECurrentLimitAchieved */
-	{5, 47},
-	/* qnameID == 177: {urn:iso:15118:2:2013:MsgBody}EVSEID */
-	{5, 48},
-	/* qnameID == 178: {urn:iso:15118:2:2013:MsgBody}EVSEMaxCurrent */
-	{5, 49},
-	/* qnameID == 179: {urn:iso:15118:2:2013:MsgBody}EVSEMaximumCurrentLimit */
-	{5, 50},
-	/* qnameID == 180: {urn:iso:15118:2:2013:MsgBody}EVSEMaximumPowerLimit */
-	{5, 51},
-	/* qnameID == 181: {urn:iso:15118:2:2013:MsgBody}EVSEMaximumVoltageLimit */
-	{5, 52},
-	/* qnameID == 182: {urn:iso:15118:2:2013:MsgBody}EVSEPowerLimitAchieved */
-	{5, 53},
-	/* qnameID == 183: {urn:iso:15118:2:2013:MsgBody}EVSEPresentCurrent */
-	{5, 54},
-	/* qnameID == 184: {urn:iso:15118:2:2013:MsgBody}EVSEPresentVoltage */
-	{5, 55},
-	/* qnameID == 185: {urn:iso:15118:2:2013:MsgBody}EVSEProcessing */
-	{5, 56},
-	/* qnameID == 186: {urn:iso:15118:2:2013:MsgBody}EVSETimeStamp */
-	{5, 57},
-	/* qnameID == 187: {urn:iso:15118:2:2013:MsgBody}EVSEVoltageLimitAchieved */
-	{5, 58},
-	/* qnameID == 188: {urn:iso:15118:2:2013:MsgBody}EVTargetCurrent */
-	{5, 59},
-	/* qnameID == 189: {urn:iso:15118:2:2013:MsgBody}EVTargetVoltage */
-	{5, 60},
-	/* qnameID == 190: {urn:iso:15118:2:2013:MsgBody}GenChallenge */
-	{5, 61},
-	/* qnameID == 191: {urn:iso:15118:2:2013:MsgBody}Id */
-	{5, 62},
-	/* qnameID == 192: {urn:iso:15118:2:2013:MsgBody}ListOfRootCertificateIDs */
-	{5, 63},
-	/* qnameID == 193: {urn:iso:15118:2:2013:MsgBody}MaxEntriesSAScheduleTuple */
-	{5, 64},
-	/* qnameID == 194: {urn:iso:15118:2:2013:MsgBody}MeterInfo */
-	{5, 65},
-	/* qnameID == 195: {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReq */
-	{5, 66},
-	/* qnameID == 196: {urn:iso:15118:2:2013:MsgBody}MeteringReceiptReqType */
-	{5, 67},
-	/* qnameID == 197: {urn:iso:15118:2:2013:MsgBody}MeteringReceiptRes */
-	{5, 68},
-	/* qnameID == 198: {urn:iso:15118:2:2013:MsgBody}MeteringReceiptResType */
-	{5, 69},
-	/* qnameID == 199: {urn:iso:15118:2:2013:MsgBody}OEMProvisioningCert */
-	{5, 70},
-	/* qnameID == 200: {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReq */
-	{5, 71},
-	/* qnameID == 201: {urn:iso:15118:2:2013:MsgBody}PaymentDetailsReqType */
-	{5, 72},
-	/* qnameID == 202: {urn:iso:15118:2:2013:MsgBody}PaymentDetailsRes */
-	{5, 73},
-	/* qnameID == 203: {urn:iso:15118:2:2013:MsgBody}PaymentDetailsResType */
-	{5, 74},
-	/* qnameID == 204: {urn:iso:15118:2:2013:MsgBody}PaymentOptionList */
-	{5, 75},
-	/* qnameID == 205: {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReq */
-	{5, 76},
-	/* qnameID == 206: {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionReqType */
-	{5, 77},
-	/* qnameID == 207: {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionRes */
-	{5, 78},
-	/* qnameID == 208: {urn:iso:15118:2:2013:MsgBody}PaymentServiceSelectionResType */
-	{5, 79},
-	/* qnameID == 209: {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReq */
-	{5, 80},
-	/* qnameID == 210: {urn:iso:15118:2:2013:MsgBody}PowerDeliveryReqType */
-	{5, 81},
-	/* qnameID == 211: {urn:iso:15118:2:2013:MsgBody}PowerDeliveryRes */
-	{5, 82},
-	/* qnameID == 212: {urn:iso:15118:2:2013:MsgBody}PowerDeliveryResType */
-	{5, 83},
-	/* qnameID == 213: {urn:iso:15118:2:2013:MsgBody}PreChargeReq */
-	{5, 84},
-	/* qnameID == 214: {urn:iso:15118:2:2013:MsgBody}PreChargeReqType */
-	{5, 85},
-	/* qnameID == 215: {urn:iso:15118:2:2013:MsgBody}PreChargeRes */
-	{5, 86},
-	/* qnameID == 216: {urn:iso:15118:2:2013:MsgBody}PreChargeResType */
-	{5, 87},
-	/* qnameID == 217: {urn:iso:15118:2:2013:MsgBody}ReceiptRequired */
-	{5, 88},
-	/* qnameID == 218: {urn:iso:15118:2:2013:MsgBody}RemainingTimeToBulkSoC */
-	{5, 89},
-	/* qnameID == 219: {urn:iso:15118:2:2013:MsgBody}RemainingTimeToFullSoC */
-	{5, 90},
-	/* qnameID == 220: {urn:iso:15118:2:2013:MsgBody}RequestedEnergyTransferMode */
-	{5, 91},
-	/* qnameID == 221: {urn:iso:15118:2:2013:MsgBody}ResponseCode */
-	{5, 92},
-	/* qnameID == 222: {urn:iso:15118:2:2013:MsgBody}RetryCounter */
-	{5, 93},
-	/* qnameID == 223: {urn:iso:15118:2:2013:MsgBody}SAProvisioningCertificateChain */
-	{5, 94},
-	/* qnameID == 224: {urn:iso:15118:2:2013:MsgBody}SAScheduleTupleID */
-	{5, 95},
-	/* qnameID == 225: {urn:iso:15118:2:2013:MsgBody}SelectedPaymentOption */
-	{5, 96},
-	/* qnameID == 226: {urn:iso:15118:2:2013:MsgBody}SelectedServiceList */
-	{5, 97},
-	/* qnameID == 227: {urn:iso:15118:2:2013:MsgBody}ServiceCategory */
-	{5, 98},
-	/* qnameID == 228: {urn:iso:15118:2:2013:MsgBody}ServiceDetailReq */
-	{5, 99},
-	/* qnameID == 229: {urn:iso:15118:2:2013:MsgBody}ServiceDetailReqType */
-	{5, 100},
-	/* qnameID == 230: {urn:iso:15118:2:2013:MsgBody}ServiceDetailRes */
-	{5, 101},
-	/* qnameID == 231: {urn:iso:15118:2:2013:MsgBody}ServiceDetailResType */
-	{5, 102},
-	/* qnameID == 232: {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReq */
-	{5, 103},
-	/* qnameID == 233: {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryReqType */
-	{5, 104},
-	/* qnameID == 234: {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryRes */
-	{5, 105},
-	/* qnameID == 235: {urn:iso:15118:2:2013:MsgBody}ServiceDiscoveryResType */
-	{5, 106},
-	/* qnameID == 236: {urn:iso:15118:2:2013:MsgBody}ServiceID */
-	{5, 107},
-	/* qnameID == 237: {urn:iso:15118:2:2013:MsgBody}ServiceList */
-	{5, 108},
-	/* qnameID == 238: {urn:iso:15118:2:2013:MsgBody}ServiceParameterList */
-	{5, 109},
-	/* qnameID == 239: {urn:iso:15118:2:2013:MsgBody}ServiceScope */
-	{5, 110},
-	/* qnameID == 240: {urn:iso:15118:2:2013:MsgBody}SessionID */
-	{5, 111},
-	/* qnameID == 241: {urn:iso:15118:2:2013:MsgBody}SessionSetupReq */
-	{5, 112},
-	/* qnameID == 242: {urn:iso:15118:2:2013:MsgBody}SessionSetupReqType */
-	{5, 113},
-	/* qnameID == 243: {urn:iso:15118:2:2013:MsgBody}SessionSetupRes */
-	{5, 114},
-	/* qnameID == 244: {urn:iso:15118:2:2013:MsgBody}SessionSetupResType */
-	{5, 115},
-	/* qnameID == 245: {urn:iso:15118:2:2013:MsgBody}SessionStopReq */
-	{5, 116},
-	/* qnameID == 246: {urn:iso:15118:2:2013:MsgBody}SessionStopReqType */
-	{5, 117},
-	/* qnameID == 247: {urn:iso:15118:2:2013:MsgBody}SessionStopRes */
-	{5, 118},
-	/* qnameID == 248: {urn:iso:15118:2:2013:MsgBody}SessionStopResType */
-	{5, 119},
-	/* qnameID == 249: {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReq */
-	{5, 120},
-	/* qnameID == 250: {urn:iso:15118:2:2013:MsgBody}WeldingDetectionReqType */
-	{5, 121},
-	/* qnameID == 251: {urn:iso:15118:2:2013:MsgBody}WeldingDetectionRes */
-	{5, 122},
-	/* qnameID == 252: {urn:iso:15118:2:2013:MsgBody}WeldingDetectionResType */
-	{5, 123},
-	/* qnameID == 253: {urn:iso:15118:2:2013:MsgBody}eMAID */
-	{5, 124},
-	/* qnameID == 254: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameter */
-	{6, 0},
-	/* qnameID == 255: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVChargeParameterType */
-	{6, 1},
-	/* qnameID == 256: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameter */
-	{6, 2},
-	/* qnameID == 257: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEChargeParameterType */
-	{6, 3},
-	/* qnameID == 258: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatus */
-	{6, 4},
-	/* qnameID == 259: {urn:iso:15118:2:2013:MsgDataTypes}AC_EVSEStatusType */
-	{6, 5},
-	/* qnameID == 260: {urn:iso:15118:2:2013:MsgDataTypes}BulkChargingComplete */
-	{6, 6},
-	/* qnameID == 261: {urn:iso:15118:2:2013:MsgDataTypes}BulkSOC */
-	{6, 7},
-	/* qnameID == 262: {urn:iso:15118:2:2013:MsgDataTypes}Certificate */
-	{6, 8},
-	/* qnameID == 263: {urn:iso:15118:2:2013:MsgDataTypes}CertificateChainType */
-	{6, 9},
-	/* qnameID == 264: {urn:iso:15118:2:2013:MsgDataTypes}ChargeServiceType */
-	{6, 10},
-	/* qnameID == 265: {urn:iso:15118:2:2013:MsgDataTypes}ChargingComplete */
-	{6, 11},
-	/* qnameID == 266: {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxNumberOfPhasesInUse */
-	{6, 12},
-	/* qnameID == 267: {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryMaxPower */
-	{6, 13},
-	/* qnameID == 268: {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileEntryStart */
-	{6, 14},
-	/* qnameID == 269: {urn:iso:15118:2:2013:MsgDataTypes}ChargingProfileType */
-	{6, 15},
-	/* qnameID == 270: {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCost */
-	{6, 16},
-	/* qnameID == 271: {urn:iso:15118:2:2013:MsgDataTypes}ConsumptionCostType */
-	{6, 17},
-	/* qnameID == 272: {urn:iso:15118:2:2013:MsgDataTypes}ContractSignatureEncryptedPrivateKeyType */
-	{6, 18},
-	/* qnameID == 273: {urn:iso:15118:2:2013:MsgDataTypes}Cost */
-	{6, 19},
-	/* qnameID == 274: {urn:iso:15118:2:2013:MsgDataTypes}CostType */
-	{6, 20},
-	/* qnameID == 275: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameter */
-	{6, 21},
-	/* qnameID == 276: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVChargeParameterType */
-	{6, 22},
-	/* qnameID == 277: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVErrorCodeType */
-	{6, 23},
-	/* qnameID == 278: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameter */
-	{6, 24},
-	/* qnameID == 279: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVPowerDeliveryParameterType */
-	{6, 25},
-	/* qnameID == 280: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameter */
-	{6, 26},
-	/* qnameID == 281: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEChargeParameterType */
-	{6, 27},
-	/* qnameID == 282: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatus */
-	{6, 28},
-	/* qnameID == 283: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusCodeType */
-	{6, 29},
-	/* qnameID == 284: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVSEStatusType */
-	{6, 30},
-	/* qnameID == 285: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatus */
-	{6, 31},
-	/* qnameID == 286: {urn:iso:15118:2:2013:MsgDataTypes}DC_EVStatusType */
-	{6, 32},
-	/* qnameID == 287: {urn:iso:15118:2:2013:MsgDataTypes}DepartureTime */
-	{6, 33},
-	/* qnameID == 288: {urn:iso:15118:2:2013:MsgDataTypes}DiffieHellmanPublickeyType */
-	{6, 34},
-	/* qnameID == 289: {urn:iso:15118:2:2013:MsgDataTypes}EAmount */
-	{6, 35},
-	/* qnameID == 290: {urn:iso:15118:2:2013:MsgDataTypes}EMAIDType */
-	{6, 36},
-	/* qnameID == 291: {urn:iso:15118:2:2013:MsgDataTypes}EPriceLevel */
-	{6, 37},
-	/* qnameID == 292: {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameter */
-	{6, 38},
-	/* qnameID == 293: {urn:iso:15118:2:2013:MsgDataTypes}EVChargeParameterType */
-	{6, 39},
-	/* qnameID == 294: {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyCapacity */
-	{6, 40},
-	/* qnameID == 295: {urn:iso:15118:2:2013:MsgDataTypes}EVEnergyRequest */
-	{6, 41},
-	/* qnameID == 296: {urn:iso:15118:2:2013:MsgDataTypes}EVErrorCode */
-	{6, 42},
-	/* qnameID == 297: {urn:iso:15118:2:2013:MsgDataTypes}EVMaxCurrent */
-	{6, 43},
-	/* qnameID == 298: {urn:iso:15118:2:2013:MsgDataTypes}EVMaxVoltage */
-	{6, 44},
-	/* qnameID == 299: {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumCurrentLimit */
-	{6, 45},
-	/* qnameID == 300: {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumPowerLimit */
-	{6, 46},
-	/* qnameID == 301: {urn:iso:15118:2:2013:MsgDataTypes}EVMaximumVoltageLimit */
-	{6, 47},
-	/* qnameID == 302: {urn:iso:15118:2:2013:MsgDataTypes}EVMinCurrent */
-	{6, 48},
-	/* qnameID == 303: {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameter */
-	{6, 49},
-	/* qnameID == 304: {urn:iso:15118:2:2013:MsgDataTypes}EVPowerDeliveryParameterType */
-	{6, 50},
-	/* qnameID == 305: {urn:iso:15118:2:2013:MsgDataTypes}EVRESSSOC */
-	{6, 51},
-	/* qnameID == 306: {urn:iso:15118:2:2013:MsgDataTypes}EVReady */
-	{6, 52},
-	/* qnameID == 307: {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameter */
-	{6, 53},
-	/* qnameID == 308: {urn:iso:15118:2:2013:MsgDataTypes}EVSEChargeParameterType */
-	{6, 54},
-	/* qnameID == 309: {urn:iso:15118:2:2013:MsgDataTypes}EVSECurrentRegulationTolerance */
-	{6, 55},
-	/* qnameID == 310: {urn:iso:15118:2:2013:MsgDataTypes}EVSEEnergyToBeDelivered */
-	{6, 56},
-	/* qnameID == 311: {urn:iso:15118:2:2013:MsgDataTypes}EVSEIsolationStatus */
-	{6, 57},
-	/* qnameID == 312: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaxCurrent */
-	{6, 58},
-	/* qnameID == 313: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumCurrentLimit */
-	{6, 59},
-	/* qnameID == 314: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumPowerLimit */
-	{6, 60},
-	/* qnameID == 315: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMaximumVoltageLimit */
-	{6, 61},
-	/* qnameID == 316: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumCurrentLimit */
-	{6, 62},
-	/* qnameID == 317: {urn:iso:15118:2:2013:MsgDataTypes}EVSEMinimumVoltageLimit */
-	{6, 63},
-	/* qnameID == 318: {urn:iso:15118:2:2013:MsgDataTypes}EVSENominalVoltage */
-	{6, 64},
-	/* qnameID == 319: {urn:iso:15118:2:2013:MsgDataTypes}EVSENotification */
-	{6, 65},
-	/* qnameID == 320: {urn:iso:15118:2:2013:MsgDataTypes}EVSENotificationType */
-	{6, 66},
-	/* qnameID == 321: {urn:iso:15118:2:2013:MsgDataTypes}EVSEPeakCurrentRipple */
-	{6, 67},
-	/* qnameID == 322: {urn:iso:15118:2:2013:MsgDataTypes}EVSEProcessingType */
-	{6, 68},
-	/* qnameID == 323: {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatus */
-	{6, 69},
-	/* qnameID == 324: {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusCode */
-	{6, 70},
-	/* qnameID == 325: {urn:iso:15118:2:2013:MsgDataTypes}EVSEStatusType */
-	{6, 71},
-	/* qnameID == 326: {urn:iso:15118:2:2013:MsgDataTypes}EVStatus */
-	{6, 72},
-	/* qnameID == 327: {urn:iso:15118:2:2013:MsgDataTypes}EVStatusType */
-	{6, 73},
-	/* qnameID == 328: {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferMode */
-	{6, 74},
-	/* qnameID == 329: {urn:iso:15118:2:2013:MsgDataTypes}EnergyTransferModeType */
-	{6, 75},
-	/* qnameID == 330: {urn:iso:15118:2:2013:MsgDataTypes}Entry */
-	{6, 76},
-	/* qnameID == 331: {urn:iso:15118:2:2013:MsgDataTypes}EntryType */
-	{6, 77},
-	/* qnameID == 332: {urn:iso:15118:2:2013:MsgDataTypes}FaultCode */
-	{6, 78},
-	/* qnameID == 333: {urn:iso:15118:2:2013:MsgDataTypes}FaultMsg */
-	{6, 79},
-	/* qnameID == 334: {urn:iso:15118:2:2013:MsgDataTypes}FreeService */
-	{6, 80},
-	/* qnameID == 335: {urn:iso:15118:2:2013:MsgDataTypes}FullSOC */
-	{6, 81},
-	/* qnameID == 336: {urn:iso:15118:2:2013:MsgDataTypes}Id */
-	{6, 82},
-	/* qnameID == 337: {urn:iso:15118:2:2013:MsgDataTypes}IntervalType */
-	{6, 83},
-	/* qnameID == 338: {urn:iso:15118:2:2013:MsgDataTypes}ListOfRootCertificateIDsType */
-	{6, 84},
-	/* qnameID == 339: {urn:iso:15118:2:2013:MsgDataTypes}MeterID */
-	{6, 85},
-	/* qnameID == 340: {urn:iso:15118:2:2013:MsgDataTypes}MeterInfoType */
-	{6, 86},
-	/* qnameID == 341: {urn:iso:15118:2:2013:MsgDataTypes}MeterReading */
-	{6, 87},
-	/* qnameID == 342: {urn:iso:15118:2:2013:MsgDataTypes}MeterStatus */
-	{6, 88},
-	/* qnameID == 343: {urn:iso:15118:2:2013:MsgDataTypes}Multiplier */
-	{6, 89},
-	/* qnameID == 344: {urn:iso:15118:2:2013:MsgDataTypes}Name */
-	{6, 90},
-	/* qnameID == 345: {urn:iso:15118:2:2013:MsgDataTypes}NotificationMaxDelay */
-	{6, 91},
-	/* qnameID == 346: {urn:iso:15118:2:2013:MsgDataTypes}NotificationType */
-	{6, 92},
-	/* qnameID == 347: {urn:iso:15118:2:2013:MsgDataTypes}NumEPriceLevels */
-	{6, 93},
-	/* qnameID == 348: {urn:iso:15118:2:2013:MsgDataTypes}PMax */
-	{6, 94},
-	/* qnameID == 349: {urn:iso:15118:2:2013:MsgDataTypes}PMaxSchedule */
-	{6, 95},
-	/* qnameID == 350: {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntry */
-	{6, 96},
-	/* qnameID == 351: {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleEntryType */
-	{6, 97},
-	/* qnameID == 352: {urn:iso:15118:2:2013:MsgDataTypes}PMaxScheduleType */
-	{6, 98},
-	/* qnameID == 353: {urn:iso:15118:2:2013:MsgDataTypes}Parameter */
-	{6, 99},
-	/* qnameID == 354: {urn:iso:15118:2:2013:MsgDataTypes}ParameterSet */
-	{6, 100},
-	/* qnameID == 355: {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetID */
-	{6, 101},
-	/* qnameID == 356: {urn:iso:15118:2:2013:MsgDataTypes}ParameterSetType */
-	{6, 102},
-	/* qnameID == 357: {urn:iso:15118:2:2013:MsgDataTypes}ParameterType */
-	{6, 103},
-	/* qnameID == 358: {urn:iso:15118:2:2013:MsgDataTypes}PaymentOption */
-	{6, 104},
-	/* qnameID == 359: {urn:iso:15118:2:2013:MsgDataTypes}PaymentOptionListType */
-	{6, 105},
-	/* qnameID == 360: {urn:iso:15118:2:2013:MsgDataTypes}PhysicalValueType */
-	{6, 106},
-	/* qnameID == 361: {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntry */
-	{6, 107},
-	/* qnameID == 362: {urn:iso:15118:2:2013:MsgDataTypes}ProfileEntryType */
-	{6, 108},
-	/* qnameID == 363: {urn:iso:15118:2:2013:MsgDataTypes}RCD */
-	{6, 109},
-	/* qnameID == 364: {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeInterval */
-	{6, 110},
-	/* qnameID == 365: {urn:iso:15118:2:2013:MsgDataTypes}RelativeTimeIntervalType */
-	{6, 111},
-	/* qnameID == 366: {urn:iso:15118:2:2013:MsgDataTypes}RootCertificateID */
-	{6, 112},
-	/* qnameID == 367: {urn:iso:15118:2:2013:MsgDataTypes}SAIDType */
-	{6, 113},
-	/* qnameID == 368: {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleList */
-	{6, 114},
-	/* qnameID == 369: {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleListType */
-	{6, 115},
-	/* qnameID == 370: {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTuple */
-	{6, 116},
-	/* qnameID == 371: {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleID */
-	{6, 117},
-	/* qnameID == 372: {urn:iso:15118:2:2013:MsgDataTypes}SAScheduleTupleType */
-	{6, 118},
-	/* qnameID == 373: {urn:iso:15118:2:2013:MsgDataTypes}SASchedules */
-	{6, 119},
-	/* qnameID == 374: {urn:iso:15118:2:2013:MsgDataTypes}SASchedulesType */
-	{6, 120},
-	/* qnameID == 375: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariff */
-	{6, 121},
-	/* qnameID == 376: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffDescription */
-	{6, 122},
-	/* qnameID == 377: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntry */
-	{6, 123},
-	/* qnameID == 378: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffEntryType */
-	{6, 124},
-	/* qnameID == 379: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffID */
-	{6, 125},
-	/* qnameID == 380: {urn:iso:15118:2:2013:MsgDataTypes}SalesTariffType */
-	{6, 126},
-	/* qnameID == 381: {urn:iso:15118:2:2013:MsgDataTypes}SelectedService */
-	{6, 127},
-	/* qnameID == 382: {urn:iso:15118:2:2013:MsgDataTypes}SelectedServiceListType */
-	{6, 128},
-	/* qnameID == 383: {urn:iso:15118:2:2013:MsgDataTypes}SelectedServiceType */
-	{6, 129},
-	/* qnameID == 384: {urn:iso:15118:2:2013:MsgDataTypes}Service */
-	{6, 130},
-	/* qnameID == 385: {urn:iso:15118:2:2013:MsgDataTypes}ServiceCategory */
-	{6, 131},
-	/* qnameID == 386: {urn:iso:15118:2:2013:MsgDataTypes}ServiceID */
-	{6, 132},
-	/* qnameID == 387: {urn:iso:15118:2:2013:MsgDataTypes}ServiceListType */
-	{6, 133},
-	/* qnameID == 388: {urn:iso:15118:2:2013:MsgDataTypes}ServiceName */
-	{6, 134},
-	/* qnameID == 389: {urn:iso:15118:2:2013:MsgDataTypes}ServiceParameterListType */
-	{6, 135},
-	/* qnameID == 390: {urn:iso:15118:2:2013:MsgDataTypes}ServiceScope */
-	{6, 136},
-	/* qnameID == 391: {urn:iso:15118:2:2013:MsgDataTypes}ServiceType */
-	{6, 137},
-	/* qnameID == 392: {urn:iso:15118:2:2013:MsgDataTypes}SigMeterReading */
-	{6, 138},
-	/* qnameID == 393: {urn:iso:15118:2:2013:MsgDataTypes}SubCertificates */
-	{6, 139},
-	/* qnameID == 394: {urn:iso:15118:2:2013:MsgDataTypes}SubCertificatesType */
-	{6, 140},
-	/* qnameID == 395: {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferMode */
-	{6, 141},
-	/* qnameID == 396: {urn:iso:15118:2:2013:MsgDataTypes}SupportedEnergyTransferModeType */
-	{6, 142},
-	/* qnameID == 397: {urn:iso:15118:2:2013:MsgDataTypes}TMeter */
-	{6, 143},
-	/* qnameID == 398: {urn:iso:15118:2:2013:MsgDataTypes}TimeInterval */
-	{6, 144},
-	/* qnameID == 399: {urn:iso:15118:2:2013:MsgDataTypes}Unit */
-	{6, 145},
-	/* qnameID == 400: {urn:iso:15118:2:2013:MsgDataTypes}Value */
-	{6, 146},
-	/* qnameID == 401: {urn:iso:15118:2:2013:MsgDataTypes}amount */
-	{6, 147},
-	/* qnameID == 402: {urn:iso:15118:2:2013:MsgDataTypes}amountMultiplier */
-	{6, 148},
-	/* qnameID == 403: {urn:iso:15118:2:2013:MsgDataTypes}boolValue */
-	{6, 149},
-	/* qnameID == 404: {urn:iso:15118:2:2013:MsgDataTypes}byteValue */
-	{6, 150},
-	/* qnameID == 405: {urn:iso:15118:2:2013:MsgDataTypes}certificateType */
-	{6, 151},
-	/* qnameID == 406: {urn:iso:15118:2:2013:MsgDataTypes}chargeProgressType */
-	{6, 152},
-	/* qnameID == 407: {urn:iso:15118:2:2013:MsgDataTypes}chargingSessionType */
-	{6, 153},
-	/* qnameID == 408: {urn:iso:15118:2:2013:MsgDataTypes}costKind */
-	{6, 154},
-	/* qnameID == 409: {urn:iso:15118:2:2013:MsgDataTypes}costKindType */
-	{6, 155},
-	/* qnameID == 410: {urn:iso:15118:2:2013:MsgDataTypes}dHpublickeyType */
-	{6, 156},
-	/* qnameID == 411: {urn:iso:15118:2:2013:MsgDataTypes}duration */
-	{6, 157},
-	/* qnameID == 412: {urn:iso:15118:2:2013:MsgDataTypes}eMAIDType */
-	{6, 158},
-	/* qnameID == 413: {urn:iso:15118:2:2013:MsgDataTypes}evccIDType */
-	{6, 159},
-	/* qnameID == 414: {urn:iso:15118:2:2013:MsgDataTypes}evseIDType */
-	{6, 160},
-	/* qnameID == 415: {urn:iso:15118:2:2013:MsgDataTypes}faultCodeType */
-	{6, 161},
-	/* qnameID == 416: {urn:iso:15118:2:2013:MsgDataTypes}faultMsgType */
-	{6, 162},
-	/* qnameID == 417: {urn:iso:15118:2:2013:MsgDataTypes}genChallengeType */
-	{6, 163},
-	/* qnameID == 418: {urn:iso:15118:2:2013:MsgDataTypes}intValue */
-	{6, 164},
-	/* qnameID == 419: {urn:iso:15118:2:2013:MsgDataTypes}isolationLevelType */
-	{6, 165},
-	/* qnameID == 420: {urn:iso:15118:2:2013:MsgDataTypes}maxNumPhasesType */
-	{6, 166},
-	/* qnameID == 421: {urn:iso:15118:2:2013:MsgDataTypes}meterIDType */
-	{6, 167},
-	/* qnameID == 422: {urn:iso:15118:2:2013:MsgDataTypes}meterStatusType */
-	{6, 168},
-	/* qnameID == 423: {urn:iso:15118:2:2013:MsgDataTypes}paymentOptionType */
-	{6, 169},
-	/* qnameID == 424: {urn:iso:15118:2:2013:MsgDataTypes}percentValueType */
-	{6, 170},
-	/* qnameID == 425: {urn:iso:15118:2:2013:MsgDataTypes}physicalValue */
-	{6, 171},
-	/* qnameID == 426: {urn:iso:15118:2:2013:MsgDataTypes}privateKeyType */
-	{6, 172},
-	/* qnameID == 427: {urn:iso:15118:2:2013:MsgDataTypes}responseCodeType */
-	{6, 173},
-	/* qnameID == 428: {urn:iso:15118:2:2013:MsgDataTypes}serviceCategoryType */
-	{6, 174},
-	/* qnameID == 429: {urn:iso:15118:2:2013:MsgDataTypes}serviceIDType */
-	{6, 175},
-	/* qnameID == 430: {urn:iso:15118:2:2013:MsgDataTypes}serviceNameType */
-	{6, 176},
-	/* qnameID == 431: {urn:iso:15118:2:2013:MsgDataTypes}serviceScopeType */
-	{6, 177},
-	/* qnameID == 432: {urn:iso:15118:2:2013:MsgDataTypes}sessionIDType */
-	{6, 178},
-	/* qnameID == 433: {urn:iso:15118:2:2013:MsgDataTypes}shortValue */
-	{6, 179},
-	/* qnameID == 434: {urn:iso:15118:2:2013:MsgDataTypes}sigMeterReadingType */
-	{6, 180},
-	/* qnameID == 435: {urn:iso:15118:2:2013:MsgDataTypes}start */
-	{6, 181},
-	/* qnameID == 436: {urn:iso:15118:2:2013:MsgDataTypes}startValue */
-	{6, 182},
-	/* qnameID == 437: {urn:iso:15118:2:2013:MsgDataTypes}stringValue */
-	{6, 183},
-	/* qnameID == 438: {urn:iso:15118:2:2013:MsgDataTypes}tariffDescriptionType */
-	{6, 184},
-	/* qnameID == 439: {urn:iso:15118:2:2013:MsgDataTypes}unitMultiplierType */
-	{6, 185},
-	/* qnameID == 440: {urn:iso:15118:2:2013:MsgDataTypes}unitSymbolType */
-	{6, 186},
-	/* qnameID == 441: {urn:iso:15118:2:2013:MsgDataTypes}valueType */
-	{6, 187},
-	/* qnameID == 442: {urn:iso:15118:2:2013:MsgDef}Body */
-	{7, 0},
-	/* qnameID == 443: {urn:iso:15118:2:2013:MsgDef}Header */
-	{7, 1},
-	/* qnameID == 444: {urn:iso:15118:2:2013:MsgDef}V2G_Message */
-	{7, 2},
-	/* qnameID == 445: {urn:iso:15118:2:2013:MsgHeader}MessageHeaderType */
-	{8, 0},
-	/* qnameID == 446: {urn:iso:15118:2:2013:MsgHeader}Notification */
-	{8, 1},
-	/* qnameID == 447: {urn:iso:15118:2:2013:MsgHeader}SessionID */
-	{8, 2}
-
-};
-
-
-int exiv2gGetEQName(exi_state_t* state, uint16_t qnameID, uint16_t* namespaceURI, uint16_t* localPart) {
-	int errn = 0;
-	/* EXI_v2gNUMBER_OF_QNAMES */
-	if (qnameID < state->nextQNameID) {
-		*namespaceURI = qnames[qnameID].namespaceURI;
-		*localPart = qnames[qnameID].localPart;
-	} else {
-		errn = EXI_ERROR_OUT_OF_BOUNDS;
-	}
-	return errn;
-}
-
-
-int exiv2gGetQNameID(exi_state_t* state, uint16_t namespaceURI, uint16_t localPart, uint16_t* qnameID) {
-	uint16_t i;
-	int errn = EXI_ERROR_OUT_OF_BOUNDS;
-	/* TODO Do something more efficient than just walk over the entire list */
-	/* EXI_v2gNUMBER_OF_QNAMES */
-	for(i=0; i<state->nextQNameID && errn != 0; i++) {
-		if(qnames[i].localPart == localPart && qnames[i].namespaceURI == namespaceURI) {
-			*qnameID = i;
-			errn = 0;
-		}
-	}
-
-	return errn;
-}
-
-
-int exiv2gAddEQName(exi_state_t* state, uint16_t* qnameID, uint16_t namespaceURI, uint16_t localPart) {
-	int errn = 0;
-	if(state->nextQNameID < (EXI_v2gMAX_NUMBER_OF_QNAMES -1)) {
-		/* store IDs */
-		qnames[state->nextQNameID].namespaceURI = namespaceURI;
-		qnames[state->nextQNameID].localPart = localPart;
-		/* increment counter */
-		*qnameID = state->nextQNameID++;
-	} else {
-		errn = EXI_ERROR_OUT_OF_BOUNDS;
-	}
-
-
-	return errn;
-}
-
-
-#endif
-

+ 318 - 166
src/service/v2g_dataTypes.c

@@ -1,25 +1,25 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -44,7 +44,8 @@ static  void init_faultMsgType(struct faultMsgType* type)
 }
 
 static  void init_NotificationType(struct NotificationType* type)
-{			
+{		
+	init_faultMsgType(&(type->FaultMsg));	
 	type->isused.FaultMsg=0;
 
 }
@@ -55,6 +56,24 @@ static  void init_service_string(struct service_string* type)
 
 }
 
+static  void init_CanonicalizationMethodType(struct CanonicalizationMethodType* type)
+{	
+	init_service_string(&(type->attr_Algorithm));
+
+}
+
+static  void init_SignatureMethodType(struct SignatureMethodType* type)
+{	
+	init_service_string(&(type->attr_Algorithm));
+
+}
+
+static  void init_DigestMethodType(struct DigestMethodType* type)
+{	
+	init_service_string(&(type->attr_Algorithm));
+
+}
+
 static  void init_DigestValueType(struct DigestValueType* type)
 {	
 	type->arraylen.data=0;
@@ -62,43 +81,79 @@ static  void init_DigestValueType(struct DigestValueType* type)
 }
 
 static  void init_ReferenceType(struct ReferenceType* type)
-{		
-	type->isused.attr_Id=0;		
-	type->isused.attr_Type=0;		
-	type->isused.attr_URI=0;		
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_service_string(&(type->attr_URI));	
+	type->isused.attr_URI=0;	
+	init_service_string(&(type->attr_Type));	
+	type->isused.attr_Type=0;	
+	init_DigestMethodType(&(type->DigestMethod));	
+	init_DigestValueType(&(type->DigestValue));
 
 }
 
 static  void init_SignedInfoType(struct SignedInfoType* type)
 {
-	int i_loop;
-			
-	type->isused.attr_Id=0;			
-	for(i_loop=0; i_loop<2;i_loop++)
-	{
-		init_ReferenceType(&(type->Reference[i_loop]));
-	}
-	
-	type->arraylen.Reference=0;
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_CanonicalizationMethodType(&(type->CanonicalizationMethod));	
+	init_SignatureMethodType(&(type->SignatureMethod));	
+	init_ReferenceType(&(type->Reference[0]));
 
+	type->arraylen.Reference=0;
 }
 
 static  void init_SignatureValueType(struct SignatureValueType* type)
-{		
-	type->isused.attr_Id=0;
+{	
+	type->arraylen.data=0;
+
+}
+
+static  void init_X509IssuerSerialType(struct X509IssuerSerialType* type)
+{	
+	init_service_string(&(type->X509IssuerName));	
+
+}
+
+static  void init_service_byte(struct service_byte* type)
+{	
+	type->arraylen.data=0;
+
+}
+
+static  void init_X509DataType(struct X509DataType* type)
+{	
+	init_X509IssuerSerialType(&(type->X509IssuerSerial));	
+	init_service_byte(&(type->X509SKI));	
+	init_service_string(&(type->X509SubjectName));	
+	init_service_byte(&(type->X509Certificate));	
+	init_service_byte(&(type->X509CRL));
+
+}
+
+static  void init_KeyInfoType(struct KeyInfoType* type)
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_X509DataType(&(type->X509Data));
 
 }
 
 static  void init_SignatureType(struct SignatureType* type)
-{		
+{	
+	init_service_string(&(type->attr_Id));	
 	type->isused.attr_Id=0;	
 	init_SignedInfoType(&(type->SignedInfo));	
-	init_SignatureValueType(&(type->SignatureValue));
+	init_SignatureValueType(&(type->SignatureValue));	
+	init_KeyInfoType(&(type->KeyInfo));	
+	type->isused.KeyInfo=0;
 
 }
 
 static  void init_MessageHeaderType(struct MessageHeaderType* type)
-{		
+{	
+	init_sessionIDType(&(type->SessionID));	
 	init_NotificationType(&(type->Notification));	
 	type->isused.Notification=0;		
 	type->isused.Signature=0;
@@ -111,6 +166,12 @@ static  void init_evccIDType(struct evccIDType* type)
 
 }
 
+static  void init_SessionSetupReqType(struct SessionSetupReqType* type)
+{	
+	init_evccIDType(&(type->EVCCID));
+
+}
+
 static  void init_evseIDType(struct evseIDType* type)
 {	
 	type->arraylen.data=0;
@@ -118,8 +179,9 @@ static  void init_evseIDType(struct evseIDType* type)
 }
 
 static  void init_SessionSetupResType(struct SessionSetupResType* type)
-{				
-	type->isused.EVSETimeStamp=0;
+{		
+	init_evseIDType(&(type->EVSEID));		
+	type->isused.DateTimeNow=0;
 
 }
 
@@ -130,16 +192,16 @@ static  void init_serviceScopeType(struct serviceScopeType* type)
 }
 
 static  void init_ServiceDiscoveryReqType(struct ServiceDiscoveryReqType* type)
-{		
+{	
+	init_serviceScopeType(&(type->ServiceScope));	
 	type->isused.ServiceScope=0;		
 	type->isused.ServiceCategory=0;
 
 }
 
-static  void init_PaymentOptionListType(struct PaymentOptionListType* type)
+static  void init_PaymentOptionsType(struct PaymentOptionsType* type)
 {
 
-		
 	type->arraylen.PaymentOption=0;
 
 }
@@ -150,33 +212,32 @@ static  void init_serviceNameType(struct serviceNameType* type)
 
 }
 
-static  void init_SupportedEnergyTransferModeType(struct SupportedEnergyTransferModeType* type)
-{
-		
-	type->arraylen.EnergyTransferMode=0;
+static  void init_ServiceTagType(struct ServiceTagType* type)
+{		
+	init_serviceNameType(&(type->ServiceName));	
+	type->isused.ServiceName=0;		
+	init_serviceScopeType(&(type->ServiceScope));	
+	type->isused.ServiceScope=0;
 
 }
 
-static  void init_ChargeServiceType(struct ChargeServiceType* type)
-{			
-	type->isused.ServiceName=0;			
-	type->isused.ServiceScope=0;		
-	init_SupportedEnergyTransferModeType(&(type->SupportedEnergyTransferMode));
+static  void init_ServiceChargeType(struct ServiceChargeType* type)
+{	
+	init_ServiceTagType(&(type->ServiceTag));		
 
 }
 
 static  void init_ServiceType(struct ServiceType* type)
-{			
-	type->isused.ServiceName=0;			
-	type->isused.ServiceScope=0;	
+{	
+	init_ServiceTagType(&(type->ServiceTag));	
 
 }
 
-static  void init_ServiceListType(struct ServiceListType* type)
+static  void init_ServiceTagListType(struct ServiceTagListType* type)
 {
 	int i_loop;
 		
-	for(i_loop=0; i_loop<8;i_loop++)
+	for(i_loop=0; i_loop<3;i_loop++)
 	{
 		init_ServiceType(&(type->Service[i_loop]));
 	}
@@ -185,23 +246,27 @@ static  void init_ServiceListType(struct ServiceListType* type)
 
 }
 
-static  void init_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type)
+static void init_ServiceDiscoveryResType(struct ServiceDiscoveryResType* type)
 {		
-	init_PaymentOptionListType(&(type->PaymentOptionList));	
-	init_ChargeServiceType(&(type->ChargeService));	
-	init_ServiceListType(&(type->ServiceList));	
+	init_PaymentOptionsType(&(type->PaymentOptions));	
+	init_ServiceChargeType(&(type->ChargeService));	
+	init_ServiceTagListType(&(type->ServiceList));	
 	type->isused.ServiceList=0;
 
 }
 
-static  void init_ParameterType(struct ParameterType* type)
+static  void init_PhysicalValueType(struct PhysicalValueType* type)
 {			
-	type->isused.boolValue=0;		
-	type->isused.byteValue=0;		
-	type->isused.shortValue=0;		
-	type->isused.intValue=0;		
-	type->isused.physicalValue=0;		
-	type->isused.stringValue=0;
+	type->isused.Unit=0;	
+
+}
+
+static  void init_ParameterType(struct ParameterType* type)
+{	
+	init_service_string(&(type->attr_Name));	
+	init_service_string(&(type->attr_ValueType));					
+	init_PhysicalValueType(&(type->physicalValue));	
+	init_service_string(&(type->stringValue));
 
 }
 
@@ -209,7 +274,7 @@ static  void init_ParameterSetType(struct ParameterSetType* type)
 {
 	int i_loop;
 			
-	for(i_loop=0; i_loop<8;i_loop++)
+	for(i_loop=0; i_loop<2;i_loop++)
 	{
 		init_ParameterType(&(type->Parameter[i_loop]));
 	}
@@ -222,7 +287,7 @@ static  void init_ServiceParameterListType(struct ServiceParameterListType* type
 {
 	int i_loop;
 		
-	for(i_loop=0; i_loop<3;i_loop++)
+	for(i_loop=0; i_loop<2;i_loop++)
 	{
 		init_ParameterSetType(&(type->ParameterSet[i_loop]));
 	}
@@ -248,7 +313,7 @@ static  void init_SelectedServiceListType(struct SelectedServiceListType* type)
 {
 	int i_loop;
 		
-	for(i_loop=0; i_loop<16;i_loop++)
+	for(i_loop=0; i_loop<2;i_loop++)
 	{
 		init_SelectedServiceType(&(type->SelectedService[i_loop]));
 	}
@@ -257,13 +322,13 @@ static  void init_SelectedServiceListType(struct SelectedServiceListType* type)
 
 }
 
-static  void init_PaymentServiceSelectionReqType(struct PaymentServiceSelectionReqType* type)
+static  void init_ServicePaymentSelectionReqType(struct ServicePaymentSelectionReqType* type)
 {		
 	init_SelectedServiceListType(&(type->SelectedServiceList));
 
 }
 
-static  void init_eMAIDType(struct eMAIDType* type)
+static  void init_contractIDType(struct contractIDType* type)
 {	
 	type->arraylen.data=0;
 
@@ -277,22 +342,28 @@ static  void init_certificateType(struct certificateType* type)
 
 static  void init_SubCertificatesType(struct SubCertificatesType* type)
 {
-
+	int i_loop;
 		
+	for(i_loop=0; i_loop<4;i_loop++)
+	{
+		init_certificateType(&(type->Certificate[i_loop]));
+	}
+	
 	type->arraylen.Certificate=0;
 
 }
 
 static  void init_CertificateChainType(struct CertificateChainType* type)
-{		
-	type->isused.attr_Id=0;		
+{	
+	init_certificateType(&(type->Certificate));	
 	init_SubCertificatesType(&(type->SubCertificates));	
 	type->isused.SubCertificates=0;
 
 }
 
 static  void init_PaymentDetailsReqType(struct PaymentDetailsReqType* type)
-{		
+{	
+	init_contractIDType(&(type->ContractID));	
 	init_CertificateChainType(&(type->ContractSignatureCertChain));
 
 }
@@ -303,24 +374,47 @@ static  void init_genChallengeType(struct genChallengeType* type)
 
 }
 
-static  void init_AuthorizationReqType(struct AuthorizationReqType* type)
+static  void init_PaymentDetailsResType(struct PaymentDetailsResType* type)
 {		
-	type->isused.attr_Id=0;		
+	init_genChallengeType(&(type->GenChallenge));	
+
+}
+
+static  void init_ContractAuthenticationReqType(struct ContractAuthenticationReqType* type)
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_genChallengeType(&(type->GenChallenge));	
 	type->isused.GenChallenge=0;
 
 }
 
 static  void init_AC_EVChargeParameterType(struct AC_EVChargeParameterType* type)
 {		
-	type->isused.DepartureTime=0;				
+	init_PhysicalValueType(&(type->EAmount));	
+	init_PhysicalValueType(&(type->EVMaxVoltage));	
+	init_PhysicalValueType(&(type->EVMaxCurrent));	
+	init_PhysicalValueType(&(type->EVMinCurrent));
+
+}
+
+static  void init_DC_EVStatusType(struct DC_EVStatusType* type)
+{			
+	type->isused.EVCabinConditioning=0;		
+	type->isused.EVRESSConditioning=0;		
 
 }
 
 static  void init_DC_EVChargeParameterType(struct DC_EVChargeParameterType* type)
-{		
-	type->isused.DepartureTime=0;				
-	type->isused.EVMaximumPowerLimit=0;			
-	type->isused.EVEnergyCapacity=0;		
+{	
+	init_DC_EVStatusType(&(type->DC_EVStatus));	
+	init_PhysicalValueType(&(type->EVMaximumCurrentLimit));	
+	init_PhysicalValueType(&(type->EVMaximumPowerLimit));	
+	type->isused.EVMaximumPowerLimit=0;	
+	init_PhysicalValueType(&(type->EVMaximumVoltageLimit));	
+	init_PhysicalValueType(&(type->EVEnergyCapacity));	
+	type->isused.EVEnergyCapacity=0;	
+	init_PhysicalValueType(&(type->EVEnergyRequest));	
 	type->isused.EVEnergyRequest=0;		
 	type->isused.FullSOC=0;		
 	type->isused.BulkSOC=0;
@@ -328,8 +422,7 @@ static  void init_DC_EVChargeParameterType(struct DC_EVChargeParameterType* type
 }
 
 static  void init_ChargeParameterDiscoveryReqType(struct ChargeParameterDiscoveryReqType* type)
-{		
-	type->isused.MaxEntriesSAScheduleTuple=0;			
+{			
 	type->isused.AC_EVChargeParameter=0;		
 	type->isused.DC_EVChargeParameter=0;
 
@@ -350,8 +443,8 @@ static  void init_PMaxScheduleEntryType(struct PMaxScheduleEntryType* type)
 static  void init_PMaxScheduleType(struct PMaxScheduleType* type)
 {
 	int i_loop;
-		
-	for(i_loop=0; i_loop<48;i_loop++)
+			
+	for(i_loop=0; i_loop<12;i_loop++)
 	{
 		init_PMaxScheduleEntryType(&(type->PMaxScheduleEntry[i_loop]));
 	}
@@ -376,12 +469,13 @@ static  void init_ConsumptionCostType(struct ConsumptionCostType* type)
 {
 	int i_loop;
 			
-	for(i_loop=0; i_loop<3;i_loop++)
+	for(i_loop=0; i_loop<2;i_loop++)
 	{
 		init_CostType(&(type->Cost[i_loop]));
 	}
 	
-	type->arraylen.Cost=0;
+	type->arraylen.Cost=0;	
+	type->isused.Cost=0;
 
 }
 
@@ -390,8 +484,7 @@ static  void init_SalesTariffEntryType(struct SalesTariffEntryType* type)
 	int i_loop;
 		
 	init_RelativeTimeIntervalType(&(type->RelativeTimeInterval));		
-	type->isused.EPriceLevel=0;	
-	for(i_loop=0; i_loop<3;i_loop++)
+	for(i_loop=0; i_loop<2;i_loop++)
 	{
 		init_ConsumptionCostType(&(type->ConsumptionCost[i_loop]));
 	}
@@ -404,11 +497,11 @@ static  void init_SalesTariffEntryType(struct SalesTariffEntryType* type)
 static  void init_SalesTariffType(struct SalesTariffType* type)
 {
 	int i_loop;
-			
-	type->isused.attr_Id=0;			
+		
+	init_service_string(&(type->attr_Id));		
+	init_tariffDescriptionType(&(type->SalesTariffDescription));	
 	type->isused.SalesTariffDescription=0;		
-	type->isused.NumEPriceLevels=0;	
-	for(i_loop=0; i_loop<24;i_loop++)
+	for(i_loop=0; i_loop<12;i_loop++)
 	{
 		init_SalesTariffEntryType(&(type->SalesTariffEntry[i_loop]));
 	}
@@ -438,59 +531,60 @@ static  void init_SAScheduleListType(struct SAScheduleListType* type)
 }
 
 static  void init_AC_EVSEChargeParameterType(struct AC_EVSEChargeParameterType* type)
-{			
+{		
+	init_PhysicalValueType(&(type->EVSEMaxVoltage));	
+	init_PhysicalValueType(&(type->EVSEMaxCurrent));	
+	init_PhysicalValueType(&(type->EVSEMinCurrent));
 
 }
 
 static  void init_DC_EVSEStatusType(struct DC_EVSEStatusType* type)
-{				
-	type->isused.EVSEIsolationStatus=0;	
+{		
+	type->isused.EVSEIsolationStatus=0;			
 
 }
 
 static  void init_DC_EVSEChargeParameterType(struct DC_EVSEChargeParameterType* type)
 {	
-	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));							
-	type->isused.EVSECurrentRegulationTolerance=0;			
+	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));	
+	init_PhysicalValueType(&(type->EVSEMaximumCurrentLimit));	
+	init_PhysicalValueType(&(type->EVSEMaximumPowerLimit));	
+	type->isused.EVSEMaximumPowerLimit=0;	
+	init_PhysicalValueType(&(type->EVSEMaximumVoltageLimit));	
+	init_PhysicalValueType(&(type->EVSEMinimumCurrentLimit));	
+	init_PhysicalValueType(&(type->EVSEMinimumVoltageLimit));	
+	init_PhysicalValueType(&(type->EVSECurrentRegulationTolerance));	
+	type->isused.EVSECurrentRegulationTolerance=0;	
+	init_PhysicalValueType(&(type->EVSEPeakCurrentRipple));	
+	init_PhysicalValueType(&(type->EVSEEnergyToBeDelivered));	
 	type->isused.EVSEEnergyToBeDelivered=0;
 
 }
 
 static  void init_ChargeParameterDiscoveryResType(struct ChargeParameterDiscoveryResType* type)
-{				
-	type->isused.SAScheduleList=0;		
+{			
+	init_SAScheduleListType(&(type->SAScheduleList));		
 	type->isused.AC_EVSEChargeParameter=0;		
 	type->isused.DC_EVSEChargeParameter=0;
 
 }
 
-static  void init_ProfileEntryType(struct ProfileEntryType* type)
-{				
-	type->isused.ChargingProfileEntryMaxNumberOfPhasesInUse=0;
-
-}
-
 static  void init_ChargingProfileType(struct ChargingProfileType* type)
 {
-	int i_loop;
-		
-	for(i_loop=0; i_loop<24;i_loop++)
-	{
-		init_ProfileEntryType(&(type->ProfileEntry[i_loop]));
-	}
-	
+
 	type->arraylen.ProfileEntry=0;
 
 }
 
 static  void init_DC_EVPowerDeliveryParameterType(struct DC_EVPowerDeliveryParameterType* type)
-{			
+{	
+	init_DC_EVStatusType(&(type->DC_EVStatus));		
 	type->isused.BulkChargingComplete=0;	
 
 }
 
 static  void init_PowerDeliveryReqType(struct PowerDeliveryReqType* type)
-{			
+{		
 	init_ChargingProfileType(&(type->ChargingProfile));	
 	type->isused.ChargingProfile=0;		
 	type->isused.DC_EVPowerDeliveryParameter=0;
@@ -517,76 +611,117 @@ static  void init_sigMeterReadingType(struct sigMeterReadingType* type)
 }
 
 static  void init_MeterInfoType(struct MeterInfoType* type)
-{			
-	type->isused.MeterReading=0;		
+{	
+	init_meterIDType(&(type->MeterID));	
+	init_PhysicalValueType(&(type->MeterReading));	
+	type->isused.MeterReading=0;	
+	init_sigMeterReadingType(&(type->SigMeterReading));	
 	type->isused.SigMeterReading=0;		
 	type->isused.MeterStatus=0;		
 	type->isused.TMeter=0;
 
 }
 
-static  void init_MeteringReceiptReqType(struct MeteringReceiptReqType* type)
+static  void init_ChargingStatusResType(struct ChargingStatusResType* type)
 {		
-	type->isused.attr_Id=0;			
+	init_evseIDType(&(type->EVSEID));		
+	init_PhysicalValueType(&(type->EVSEMaxCurrent));	
+	type->isused.EVSEMaxCurrent=0;	
+	init_MeterInfoType(&(type->MeterInfo));	
+	type->isused.MeterInfo=0;		
+
+}
+
+static  void init_MeteringReceiptReqType(struct MeteringReceiptReqType* type)
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_sessionIDType(&(type->SessionID));		
 	type->isused.SAScheduleTupleID=0;	
 	init_MeterInfoType(&(type->MeterInfo));
 
 }
 
 static  void init_MeteringReceiptResType(struct MeteringReceiptResType* type)
-{			
-	type->isused.AC_EVSEStatus=0;		
-	type->isused.DC_EVSEStatus=0;
+{		
+
+}
+
+static  void init_rootCertificateIDType(struct rootCertificateIDType* type)
+{	
+	type->arraylen.data=0;
 
 }
 
 static  void init_ListOfRootCertificateIDsType(struct ListOfRootCertificateIDsType* type)
 {
-
+	int i_loop;
 		
+	for(i_loop=0; i_loop<20;i_loop++)
+	{
+		init_rootCertificateIDType(&(type->RootCertificateID[i_loop]));
+	}
+	
 	type->arraylen.RootCertificateID=0;
 
 }
 
+static  void init_dHParamsType(struct dHParamsType* type)
+{	
+	type->arraylen.data=0;
+
+}
+
 static  void init_CertificateUpdateReqType(struct CertificateUpdateReqType* type)
-{		
-	init_CertificateChainType(&(type->ContractSignatureCertChain));		
-	init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs));
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_CertificateChainType(&(type->ContractSignatureCertChain));	
+	init_contractIDType(&(type->ContractID));	
+	init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs));	
+	init_dHParamsType(&(type->DHParams));
 
 }
 
-static  void init_CertificateUpdateResType(struct CertificateUpdateResType* type)
-{		
-	init_CertificateChainType(&(type->SAProvisioningCertificateChain));	
-	init_CertificateChainType(&(type->ContractSignatureCertChain));					
-	type->isused.RetryCounter=0;
+static  void init_privateKeyType(struct privateKeyType* type)
+{	
+	type->arraylen.data=0;
 
 }
 
-static  void init_CertificateInstallationReqType(struct CertificateInstallationReqType* type)
-{			
-	init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs));
+static  void init_CertificateUpdateResType(struct CertificateUpdateResType* type)
+{	
+	init_service_string(&(type->attr_Id));		
+	init_CertificateChainType(&(type->ContractSignatureCertChain));	
+	init_privateKeyType(&(type->ContractSignatureEncryptedPrivateKey));	
+	init_dHParamsType(&(type->DHParams));	
+	init_contractIDType(&(type->ContractID));	
 
 }
 
-static  void init_CertificateInstallationResType(struct CertificateInstallationResType* type)
-{		
-	init_CertificateChainType(&(type->SAProvisioningCertificateChain));	
-	init_CertificateChainType(&(type->ContractSignatureCertChain));			
+static  void init_CertificateInstallationReqType(struct CertificateInstallationReqType* type)
+{	
+	init_service_string(&(type->attr_Id));	
+	type->isused.attr_Id=0;	
+	init_certificateType(&(type->OEMProvisioningCert));	
+	init_ListOfRootCertificateIDsType(&(type->ListOfRootCertificateIDs));	
+	init_dHParamsType(&(type->DHParams));
 
 }
 
-static  void init_ChargingStatusResType(struct ChargingStatusResType* type)
-{					
-	type->isused.EVSEMaxCurrent=0;	
-	init_MeterInfoType(&(type->MeterInfo));	
-	type->isused.MeterInfo=0;		
-	type->isused.ReceiptRequired=0;	
+static  void init_CertificateInstallationResType(struct CertificateInstallationResType* type)
+{	
+	init_service_string(&(type->attr_Id));		
+	init_CertificateChainType(&(type->ContractSignatureCertChain));	
+	init_privateKeyType(&(type->ContractSignatureEncryptedPrivateKey));	
+	init_dHParamsType(&(type->DHParams));	
+	init_contractIDType(&(type->ContractID));
 
 }
 
 static  void init_CableCheckReqType(struct CableCheckReqType* type)
 {	
+	init_DC_EVStatusType(&(type->DC_EVStatus));
 
 }
 
@@ -597,47 +732,63 @@ static  void init_CableCheckResType(struct CableCheckResType* type)
 }
 
 static  void init_PreChargeReqType(struct PreChargeReqType* type)
-{			
+{	
+	init_DC_EVStatusType(&(type->DC_EVStatus));	
+	init_PhysicalValueType(&(type->EVTargetVoltage));	
+	init_PhysicalValueType(&(type->EVTargetCurrent));
 
 }
 
 static  void init_PreChargeResType(struct PreChargeResType* type)
 {		
 	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));	
+	init_PhysicalValueType(&(type->EVSEPresentVoltage));
 
 }
 
 static  void init_CurrentDemandReqType(struct CurrentDemandReqType* type)
-{				
-	type->isused.EVMaximumVoltageLimit=0;		
-	type->isused.EVMaximumCurrentLimit=0;		
+{	
+	init_DC_EVStatusType(&(type->DC_EVStatus));	
+	init_PhysicalValueType(&(type->EVTargetCurrent));	
+	init_PhysicalValueType(&(type->EVMaximumVoltageLimit));	
+	type->isused.EVMaximumVoltageLimit=0;	
+	init_PhysicalValueType(&(type->EVMaximumCurrentLimit));	
+	type->isused.EVMaximumCurrentLimit=0;	
+	init_PhysicalValueType(&(type->EVMaximumPowerLimit));	
 	type->isused.EVMaximumPowerLimit=0;		
-	type->isused.BulkChargingComplete=0;			
-	type->isused.RemainingTimeToFullSoC=0;		
+	type->isused.BulkChargingComplete=0;		
+	init_PhysicalValueType(&(type->RemainingTimeToFullSoC));	
+	type->isused.RemainingTimeToFullSoC=0;	
+	init_PhysicalValueType(&(type->RemainingTimeToBulkSoC));	
 	type->isused.RemainingTimeToBulkSoC=0;	
+	init_PhysicalValueType(&(type->EVTargetVoltage));
 
 }
 
 static  void init_CurrentDemandResType(struct CurrentDemandResType* type)
 {		
-	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));							
-	type->isused.EVSEMaximumVoltageLimit=0;		
-	type->isused.EVSEMaximumCurrentLimit=0;		
-	type->isused.EVSEMaximumPowerLimit=0;			
-	init_MeterInfoType(&(type->MeterInfo));	
-	type->isused.MeterInfo=0;		
-	type->isused.ReceiptRequired=0;
+	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));	
+	init_PhysicalValueType(&(type->EVSEPresentVoltage));	
+	init_PhysicalValueType(&(type->EVSEPresentCurrent));				
+	init_PhysicalValueType(&(type->EVSEMaximumVoltageLimit));	
+	type->isused.EVSEMaximumVoltageLimit=0;	
+	init_PhysicalValueType(&(type->EVSEMaximumCurrentLimit));	
+	type->isused.EVSEMaximumCurrentLimit=0;	
+	init_PhysicalValueType(&(type->EVSEMaximumPowerLimit));	
+	type->isused.EVSEMaximumPowerLimit=0;
 
 }
 
 static  void init_WeldingDetectionReqType(struct WeldingDetectionReqType* type)
 {	
+	init_DC_EVStatusType(&(type->DC_EVStatus));
 
 }
 
 static  void init_WeldingDetectionResType(struct WeldingDetectionResType* type)
 {		
 	init_DC_EVSEStatusType(&(type->DC_EVSEStatus));	
+	init_PhysicalValueType(&(type->EVSEPresentVoltage));
 
 }
 
@@ -649,16 +800,18 @@ static  void init_BodyType(struct BodyType* type)
 	type->isused.ServiceDiscoveryRes=0;		
 	type->isused.ServiceDetailReq=0;		
 	type->isused.ServiceDetailRes=0;		
-	type->isused.PaymentServiceSelectionReq=0;		
-	type->isused.PaymentServiceSelectionRes=0;		
+	type->isused.ServicePaymentSelectionReq=0;		
+	type->isused.ServicePaymentSelectionRes=0;		
 	type->isused.PaymentDetailsReq=0;		
 	type->isused.PaymentDetailsRes=0;		
-	type->isused.AuthorizationReq=0;		
-	type->isused.AuthorizationRes=0;		
+	type->isused.ContractAuthenticationReq=0;		
+	type->isused.ContractAuthenticationRes=0;		
 	type->isused.ChargeParameterDiscoveryReq=0;		
 	type->isused.ChargeParameterDiscoveryRes=0;		
 	type->isused.PowerDeliveryReq=0;		
 	type->isused.PowerDeliveryRes=0;		
+	type->isused.ChargingStatusReq=0;		
+	type->isused.ChargingStatusRes=0;		
 	type->isused.MeteringReceiptReq=0;		
 	type->isused.MeteringReceiptRes=0;		
 	type->isused.SessionStopReq=0;		
@@ -667,8 +820,6 @@ static  void init_BodyType(struct BodyType* type)
 	type->isused.CertificateUpdateRes=0;		
 	type->isused.CertificateInstallationReq=0;		
 	type->isused.CertificateInstallationRes=0;		
-	type->isused.ChargingStatusReq=0;		
-	type->isused.ChargingStatusRes=0;		
 	type->isused.CableCheckReq=0;		
 	type->isused.CableCheckRes=0;		
 	type->isused.PreChargeReq=0;		
@@ -686,7 +837,8 @@ static  void init_AnonType_V2G_Message(struct AnonType_V2G_Message* type)
 
 }
 
-static  void init_EXIDocumentType(struct EXIDocumentType* type)
+static void init_EXIDocumentType(struct EXIDocumentType* type)
 {	
 	init_AnonType_V2G_Message(&(type->V2G_Message));
+
 }

Datei-Diff unterdrückt, da er zu groß ist
+ 248 - 229
src/service/v2g_dataTypes.h


+ 4 - 4
src/service/v2g_service.h

@@ -17,8 +17,8 @@
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  ********************************************************************/
@@ -66,13 +66,13 @@ struct EXIService
 	uint16_t transportHeaderOffset;
 };
 
-
-/* define error codes  */
+/* define error codes */
 #define EXI_NON_VALID_MESSAGE 0x01
 #define EXI_SERIALIZATION_FAILED 0x02
 #define EXI_DESERIALIZATION_FAILED 0x03
 #define EXI_DATATYPE_FAILED 0x04
 #define EXI_VALUE_RANGE_FAILED 0x05
+#define EXI_SERVICE_CALL_FAILED 0x06
 
 #define EXI_UNKNOWN_ERROR 0xFF
 

+ 2 - 2
src/service/v2g_serviceClientDataTransmitter.h

@@ -18,8 +18,8 @@
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  ********************************************************************/

Datei-Diff unterdrückt, da er zu groß ist
+ 159 - 374
src/service/v2g_serviceClientStubs.c


+ 34 - 36
src/service/v2g_serviceClientStubs.h

@@ -1,25 +1,26 @@
-/*
- * Copyright (C) 2007-2013 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.
- * 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/>.
+
+
+/*
+ * Copyright (C) 2007-2012 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/>.
  */
 
 /*******************************************************************
  *
- * @author Sebastian.Kaebisch@siemens.com
- * @version 0.8
+ * @author Sebastian.Kaebisch.EXT@siemens.com
+ * @version 0.7
  * @contact Joerg.Heuer@siemens.com
  *
  * <p>Code generated by EXISeGen</p>
@@ -40,6 +41,8 @@ extern "C" {
  #include "v2g_serviceClientStubs.h"
 
 
+
+
 enum responseMessages
 {
 	 SESSIONSETUPRES,
@@ -48,11 +51,11 @@ enum responseMessages
 
 	 SERVICEDETAILRES,
 
-	 PAYMENTSERVICESELECTIONRES,
+	 SERVICEPAYMENTSELECTIONRES,
 
 	 PAYMENTDETAILSRES,
 
-	 AUTHORIZATIONRES,
+	 CONTRACTAUTHENTICATIONRES,
 
 	 CHARGEPARAMETERDISCOVERYRES,
 
@@ -75,7 +78,6 @@ enum responseMessages
 	 WELDINGDETECTIONRES,
 
 	 SESSIONSTOPRES
-
 };
  
 /**  
@@ -115,13 +117,13 @@ enum responseMessages
 
 	
 /**  
- * \brief   Prepares the remote paymentServiceSelection call
+ * \brief   Prepares the remote servicePaymentSelection call
  * \param	service  struct EXIService* Service data structure (has to be initialized before)
  * \param	header   struct MessageHeaderType* Header data structure
- * \param	params   struct PaymentServiceSelectionReqType* Request data for the server (has to be set up before)
- * \param	result   struct PaymentServiceSelectionResType* Contains the response data from the server 
+ * \param	params   struct ServicePaymentSelectionReqType* Request data for the server (has to be set up before)
+ * \param	result   struct ServicePaymentSelectionResType* Contains the response data from the server 
  * \return  0 = 0K; -1 = ERROR */
-	int prepare_paymentServiceSelection(struct EXIService* service, struct MessageHeaderType* header, struct PaymentServiceSelectionReqType* params, struct PaymentServiceSelectionResType* result);
+	int prepare_servicePaymentSelection(struct EXIService* service, struct MessageHeaderType* header, struct ServicePaymentSelectionReqType* params, struct ServicePaymentSelectionResType* result);
 
  
 
@@ -139,13 +141,13 @@ enum responseMessages
 
 	
 /**  
- * \brief   Prepares the remote authorization call
+ * \brief   Prepares the remote contractAuthentication call
  * \param	service  struct EXIService* Service data structure (has to be initialized before)
  * \param	header   struct MessageHeaderType* Header data structure
- * \param	params   struct AuthorizationReqType* Request data for the server (has to be set up before)
- * \param	result   struct AuthorizationResType* Contains the response data from the server 
+ * \param	params   struct ContractAuthenticationReqType* Request data for the server (has to be set up before)
+ * \param	result   struct ContractAuthenticationResType* Contains the response data from the server 
  * \return  0 = 0K; -1 = ERROR */
-	int prepare_authorization(struct EXIService* service, struct MessageHeaderType* header, struct AuthorizationReqType* params, struct AuthorizationResType* result);
+	int prepare_contractAuthentication(struct EXIService* service, struct MessageHeaderType* header, struct ContractAuthenticationReqType* params, struct ContractAuthenticationResType* result);
 
  
 
@@ -273,10 +275,9 @@ enum responseMessages
  * \brief   Prepares the remote sessionStop call
  * \param	service  struct EXIService* Service data structure (has to be initialized before)
  * \param	header   struct MessageHeaderType* Header data structure
- * \param	params   struct SessionStopReqType* Request data for the server (has to be set up before)
- * \param	result   struct SessionStopResType* Contains the response data from the server 
+  * \param	result   struct SessionStopResType* Contains the response data from the server 
  * \return  0 = 0K; -1 = ERROR */
-	int prepare_sessionStop(struct EXIService* service, struct MessageHeaderType* header, struct SessionStopReqType* params, struct SessionStopResType* result);
+	int prepare_sessionStop(struct EXIService* service, struct MessageHeaderType* header, struct SessionStopResType* result);
 
  
 
@@ -289,7 +290,7 @@ enum responseMessages
  * \param	respMsg   enum responseMessages* contains the name of the response message 
   * \param	result   struct SessionStopResType* Contains the response data from the server 
  * \return  0 = 0K; 0 != ERROR */ 
-int determineResponseMessage(struct EXIService* service, enum responseMessages* respMsg);
+int determineResponseMesssage(struct EXIService* service, enum responseMessages* respMsg);
 
 
 
@@ -312,9 +313,6 @@ int init_v2gServiceClient(struct EXIService* service, exi_bytes_t service_bytes,
 
  
  
-
- 
- 
 #endif
 
 #ifdef __cplusplus

Datei-Diff unterdrückt, da er zu groß ist
+ 371 - 185
src/service/v2g_serviceDataSerialization.c


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.