Browse Source

Tag release OpenV2G 0.7

sebastiankb 11 năm trước cách đây
mục cha
commit
303cdfa3fe
100 tập tin đã thay đổi với 9029 bổ sung8201 xóa
  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

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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);
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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.

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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>
- *
- *
  ********************************************************************/
 
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1325
src/codec/v2gEXICoder.c


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 947
src/codec/v2gEXIDecoder.c


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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));
+
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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
  *
  ********************************************************************/

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 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

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 371 - 185
src/service/v2g_serviceDataSerialization.c


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác